软件工程方法_第1页
软件工程方法_第2页
软件工程方法_第3页
软件工程方法_第4页
软件工程方法_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程方法 2 内容提要 结构化分析 设计和程序设计基于数据流图的结构化分析基于数据流分析的结构化设计方法详细设计面向对象的方法面向对象的概念面向对象的分析 设计和编码 1 结构化分析 4 1 1结构化分析与数据流图 结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法数据流图描绘系统的逻辑模型 图中无具体的物理元素 只是描绘信息在系统中流动和处理的情况数据流图可以作为计算机人员与客户之间的通信工具软件设计的出发点 System data function 5 1 2数据流图符号 1 6 1 2数据流图符号 2 7 1 3数据流图画法 1 数据流与程序流程图中用箭头表示的控制流有本质不同在数据流图中应描绘所有可能的数据流向 而不应该描绘出现某个数据流的条件处理并不一定是一个程序 可以代表一系列程序 单个程序或者程序的一个模块 甚至人工处理过程一个数据存储也并不一定是一个文件 它可以表示一个文件 文件的一部分 数据库的元素或记录的一部分等等通常在数据流图中忽略出错处理 也不包括如打开文件 关闭文件之类的内务处理数据流图的要点是描绘 做什么 而不是 怎么做 8 1 3数据流图画法 2 重复元素的画法有时数据的源点和终点相同数据存储有时也要重复 为了表示方便 代表同一事物的同样符号在图中出现在n个地方 则在这个符号的一个角上画n 1条短斜线做标记 9 1 3数据流图画法 3 命名为数据流 或数据存储 命名名字应代表整个数据流 或数据存储 的内容 而不是仅仅反映它的某些成分不要使用空洞的 缺乏具体含义的名字 如 数据 信息 输入 之类 如果在为某个数据流 或数据存储 起名字时遇到了困难 则可能是因为数据流图分解不恰当造成的 应该试试重新分解 看是否能克服这个困难 10 1 3数据流图画法 4 为处理命名通常先为数据流命名 然后再为与之相关联的处理命名名字应该反映整个处理的功能 而不是一部分名字最好由一个具体的及物动词 再加上一个具体的宾语构成通常名字中仅包括一个动词 如果必须用两个动词才能描述清楚 可能分成两个处理更恰当如果再为某个处理命名时遇到困难 则可能是发现了分解不当的迹象 应该重新分解数据源点 终点是目标系统的外围环境 采用它们在问题域中习惯使用的名字 如 采购员 仓库管理员 等 11 1 4层次数据流图 1 为了表达数据处理过程的数据加工情况 需要采用层次结构的数据流图 按照系统的层次结构进行逐步分解 并以分层的数据流图反映这种结构关系 能清楚地表达和容易理解整个系统 12 1 4层次数据流图 2 在多层数据流图中 顶层流图仅包含一个加工 它代表被开发系统 它的输入流是该系统的输入数据 输出流是系统所输出数据底层流图是指其加工不需再做分解的数据流图 它处在最底层中间层流图则表示对其上层父图的细化 它的每一加工可能继续细化 形成子图 13 1 5数据流图例子 1 商店业务处理系统 14 1 5数据流图例子 2 这个数据流图只是一个高层的系统逻辑模型 它反映了目标系统要实现的功能数据流图绘制步骤首先确定系统的输入和输出根据商店业务 画出顶层数据流图 以反映最主要业务处理流程经过分析 商店业务处理的主要功能应当有销售 采购 会计三大项 主要数据流输入的源点和输出终点是顾客和供应商 然后从输入端开始 根据商店业务工作流程 画出数据流流经的各加工框 逐步画到输出端 得到第一层数据流图 15 1 5数据流图例子 3 第一层数据流图 16 1 5数据流图例子 4 对销售进行细化 客户提出要求 根据商品名册编辑订单判断数据库中是否有该客户 如果没有要进行登记 根据商品库存进行订单检查如果有货 则下订单如果无货 产生暂存订单 通知采购部门订货 当货品到达后 采购部门发到货通知 此时 与暂存订单相对比 如果有货了 则下订单给会计部门发收款单 会计部门将据此开收据 同时 修改库存将发货票和收据返回给客户编写销售历史经理可以查询库存 17 1 5数据流图例子 5 加细每一个加工框销售细化 18 1 5数据流图例子 6 采购细化 19 1 6数据流图原则 1 数据流图上所有图形符号只限于前述四种基本图形元素数据流图的主图必须包括前述四种基本元素 缺一不可数据流图的主图上的数据流必须封闭在外部实体之间每个加工至少有一个输入数据流和一个输出数据流在数据流图中 需按层给加工框编号 编号表明该加工所处层次及上下层的亲子关系 20 1 6数据流图原则 2 规定任何一个数据流子图必须与它上一层的一个加工对应 两者的输入数据流和输出数据流必须一致 此即父图与子图的平衡可以在数据流图中加入物质流 帮助用户理解数据流图图上每个元素都必须有名字数据流图中不可夹带控制流初画时可以忽略琐碎的细节 以集中精力于主要数据流 2 结构化设计 22 基本思想 DFD SystemHierarchyDataFlow的分类 变换流 TransformFlow 事实上所有信息流都可归结为变换流 2 1数据流分类 1 23 事务流 TransactionFlow T Calloneoftheseveralsubroutinesdependingonthetypeoftheincomingtransactionrequest 当信息流具有明显的 发射中心 时 可归结为事务流 2 1数据流分类 2 24 2 分析设计 变换分析例 汽车数字仪表板的设计 功能 通过模 数转换实现传感器和微处理机接口 在发光二极管面板上显示数据 指示每小时英里数 mph 行驶的里程 每加仑油行驶的英里数 mpg 等等 指示加速或减速 如果车速超过55mph 则发出警告铃声 2 2面向数据流的设计方法 1 25 第一步 DFD的分界 先分出I P O三块 2 2面向数据流的设计方法 2 26 一般问题的一级分解方法 2 2面向数据流的设计方法 3 27 第二步 映射 2 2面向数据流的设计方法 4 28 例 2 2面向数据流的设计方法 5 29 第三步 修改 本着高内聚 低耦合的原则 例 精化后的数字仪表板系统的软件结构 注 每个模块应附一简要说明描述 进出该模块的信息 接口描述 模块内部的信息 过程陈述 包括主要判定点及任务等 对约束和特殊特点的简短讨论 2 2面向数据流的设计方法 6 30 事务分析 2 2面向数据流的设计方法 7 31 3 SD的总体过程 优化的前题是 Getittowork thenmakeitfast 2 3结构化设计过程 3 结构化编码 33 3 1结构化编码 结构程序设计的特点 自顶向下逐步求精 具有单入 单出的控制结构 取消GOTO语句 工具程序流程图 ProgramFlowChart 盒图 BoxDiagram PAD ProblemAnalysisDiagram 34 本质上是功能分解 以实现功能的过程为中心 而用户的需求变化主要是针对功能的 这就使基于过程的设计不易被理解 且功能变化往往引起结构变化较大 稳定性不好 系统有明确的边界定义 且系统结构依赖于系统边界的定义 这样的系统不易扩充和修改 数据与操作分开处理 可能造成软构件对具体应用环境的依赖 可重用性 reusability 较差 4 结构化技术的缺点 5 面向对象方法学 36 杭州 北京 Message Sendbymethod 对象Object Object 数据Attribute Attributes location employee 操作Method Methods send sell 注意 Object内部的attributes不允许外部用户直接改动 只有当它提供了相应的服务method时 用户才能通过发送message来提请它执行 我想把邮局搬到我家门口 多加几个邮递员 24小时都开门 对不起 本邮局不提供此类服务 唉 那就先送束花吧 Post office Send request payment 5 1面向对象方法学概念 1 37 尽可能模拟人类习惯的思维方式 即问题域与求解域在结构上尽可能一致 与传统方法相反 OOM以数据或信息为主线 把数据和处理结合构成统一体 对象 程序不再是一系列工作在数据上的函数集合 而是相互协作又彼此独立的对象的集合 5 1面向对象方法学概念 2 38 5 2面向对象思想的起源 维特跟斯坦是本世纪乃至人类哲学史上最伟大的哲学家之一 他生前只于1922年出版了一本著作 逻辑哲学论 TractatusLogico Philosophicus 在该书中 他阐述了一种世界观 或者说一种认识世界的观点 这种观点 在六七十年后的今天 终于由一种哲学思想沉淀到技术的层面上来 成为计算机业界的宠儿 这就是 OO Object Oriented 面向对象 39 5 3OOM的四要素 1 对象 世界由对象构成对象是面向对象开发模式的基本成份 每个对象可用它本身的一组属性和它可以执行的一组操作来定义 属性一般只能通过执行对象的操作来改变 操作又称为方法或服务 它描述了对象执行的功能 若通过消息传递 还可以为其它对象使用 40 5 3OOM的四要素 2 类 物以类聚类是一组具有相同数据结构和相同操作的对象的集合 类的定义包括一组数据属性和在数据上的一组合法操作 类定义可以视为一个具有类似特性与共同行为的对象的模板 可用来产生对象 在一个类中 每个对象都是类的实例 Instance 它们都可使用类中提供的函数 对象的状态则包含在它的实例变量 即实例的属性中 41 例 classPost office private loc typelocation emp typeemployee public voidsend req typerequest money typepayment voidsell intgoods money typepayment main Post officeMy PO req typeMy request money typeMy payment My PO Send My request My payment 42 继承 世界的相似性与多样性继承 inheritance 类可分层 下层子类与上层父类有相同特征 称为继承 继承是使用已存在的定义做为基础建立新定义的技术 新类的定义可以是既存类所声明的数据和新类所增加的声明的组合 新类复用既存的定义 而不要求修改继承类 既存类可当做基类来引用 则新类相应地可当做派生类来引用 5 3OOM的四要素 3 43 44 使用继承设计一个新类 可以视为描述一个新的对象集 它是既存类所描述对象集的子集合 这个新的子集合可以认为是既存类的一个特殊化 Quadrilateral类是Polygon类的特殊化 Quadrilateral是限制为四条边的多边形 我们还可以进一步地把类Quadrilateral特殊化为Rectangle 45 类Quadrilateral的界面可以等同于类Polygon的界面 而Rectangle类的界面又与Quadrilateral类的界面相同 新类的界面还可以被看做是既存类界面的一个扩充界面 例如 从一个既存的车辆类派生的四轮驱动车类可能不仅是车辆类子集合定义的特殊化 而且还可能在新类的界面中引入新的能力 46 47 在类的继承层次中 Quadrilateral的实际参数可以替换Polygon的形式参数 类Quadrilateral的界面与类Polygon的界面是相容的Quadrilateral的界面可响应Polygon界面的所有消息 48 5 3OOM的四要素 4 消息 合作之道消息 message 对象间只能通过发送消息进行联系 外界不能处理对象的内部数据 只能通过消息请求它进行处理 如果它提供相应消息的话 消息是一个对象与另一个对象的通信单元 是要求某个对象执行类中定义的某个操作的规格说明 发送给一个对象的消息定义了一个方法名和一个参数表 可能是空的 并指定某一个对象 一个对象接收的消息则调用消息中指定的方法 并将形式参数与参数表中相应的值结合起来 49 OOM Object Class Inheritance Communicationwithmessages 50 传统方法 面向过程设计 以计算为核心 数据与操作分离 不易理解OOM 以object为核心 强调对现实概念的模拟而不强调算法 面向对象方法学的基本原则 是按照人们习惯的思维方式建立问题域的模型 开发出尽可能直观 自然地表现求解方法的软件系统 Class 由特殊到一般的归纳 induction Inheritance 由一般到特殊的演绎 deduction 5 4方法比较 1 51 传统方法 结构依赖于功能 不稳定 OOM 以object模拟实体 需求变化不会引起结构的整体变化 因为实体相对稳定 故系统也相应稳定 传统方法 通过建立标准函数库来重用软构件 但标准函数缺少必要的 柔性 难以适应不同场合的不同需要 OOM 一个class所有的instances都可重用它的代码 由inheritance派生出的新的class可重用其父类的代码 并且可以修改 扩充而不影响其父类的使用 5 4方法比较 2 52 传统方法 可维护性是最令人头痛的问题 OOM 从以下几方面改善了可维护性 稳定性好 软件功能需求的变化不牵动全局 只需局部修改 Class独立性强 只要修改不涉及class的对外接口 则内部修改完全不影响外部调用 Inheritance和多态性 polymorphism 使其很容易被修改和扩充 容易理解 容易测试 调试 有这一条就什么都好办了 这一点还可商榷 5 4方法比较 3 53 OOM并不是减少了开发时间 而是通过提高可重用性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论