- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CH4 概要设计 经典软件工程PPT 教学课件
99-5-5 Software Engineering 第一章 软件和软件工程 软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构 2.软件的总体结构主要回答的问题 软件的组成部分 软件的层次关系 模块的内部处理逻辑 模块之间的界面 3. 软件设计的问题 5. 软件设计分为两个阶段: (1)概要设计(总体设计) 确定软件的结构以及各组成成分 (子系统或模块)之间的相互关系。 (2)详细设计 确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。 软件设计任务 从工程管理的角度来看,软件设计分两步完成。 概要设计,将软件需求转化为数据结构和软件的系统结构。 详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。 软 件 工 程 §5.1 设计过程 开始考虑“How”,但仍属高层设计(确定黑盒关系) 1、设想供选择的方案 2、选择合理的方案 3、确定最佳方案: ? 从DFD出发进行任务分解,不同的划分方法即对应不同的方案。每个合理的方案应配备下列4份资料: ⑴系统流程图 ⑵组成系统的物理元素清单 ⑶成本/效益分析 ⑷进度计划 选择最佳方案并制定详细的实现计划 4、功能分解 §1. 概要设计的过程 5、结构设计 —— 模块化思想: 将DFD细化,至每个子功能都明白易懂;每个模块完成一个子功能;每层模块合成一个高一级的功能。 §5.2 软件设计原理 1、模块化原理: 经验1:E(P1+P2)E(P1)+E(P2) 经验2: 模块化概念 模块:又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合。例如高级语言中的过程、函数、子程序等都可作为模块 模块化是软件的一个重要属性。模块化的特性提供了人们处理复杂的问题的一种方法,同时也使得软件能够被有效地管理。 模块化 (Modularity) 模块化是好的软件设计的一个基本准则 高层模块 从整体上把握 问题,隐蔽细节 复杂问题 较小问题 分解 可减小解题所需的总的工作 2. 软件结构度量术语 模块化和软件成本 §2. 软件设计原则 2、抽象: 忽略细节,分层理解问题,自顶向下层层加细。 §2. 软件设计原则 3、信息隐蔽(Information hiding)与局部化 每一个模块的实现细节对于其他模块来说是隐蔽的,模块中所包括的信息不允许其他不需要这些信息的模块调用。 信息隐蔽对于软件的测试与维护都有很大的好处。因为对于软件的其它部分来说,绝大多数数据和过程都是隐蔽的,这样,在修改期间由于疏忽而引入的错误所造成的影响就可以局限在一个或几个模块内部,不至波及到软件的其他部分。 局部化就是将一些关系密切的软件元素物理地放得彼此靠近。 §2. 软件设计原则 4、模块独立性(Module independence) * 好设计的关键:每个模块完成一个相对独立的子功能,并且与其它模块间的接口简单。 §2. 软件设计原则 ⑴ 耦合(Coupling) §2. 软件设计原则 例1:A访问C的内部数据或不通过正常入口而转入C的内部。 §2. 软件设计原则 例2:部分代码重叠(常出现在汇编程序中) §2. 软件设计原则 ? 公共耦合 (Common coupling):几个模块共享一个数据区域 §2. 软件设计原则 ?控制耦合(Control coupling):一个模块通过传递控制信息来控制另一个模块 数据耦合(Data coupling): 只有数据在模块之间进行交换 原则:尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合。 §2. 软件设计原则 ? 低内聚: ?偶然内聚(Coincidental cohesion) 模块中任务没有多大关系 §2. 软件设计原则 ? 时间内聚(Temporal cohesion):模块内的功能在同一时间段内完成 例如:系统的初始化 问题:不同功能混在一个模块中,有时共用部分编码,使局部功能的修改牵动全局。 §2. 软件设计原则 ? 通信内聚(Communicational cohesion):模块中所有元素都用同一个输入数据或产生同一个输出数据 例如:从同一磁带上读取不相干的数据 —— 可能破坏独立性。 §2. 软件设计原则 ? 耦合、内聚与模块独立性的关系: §5. 3 结构设计原则(启发原则) 结构设计原则 2. 模块规模适中:
原创力文档


文档评论(0)