软件模块化的设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件设计的任务 问题结构(软件需求) 软件结构; 从软件需求规格说明书出发,形成软件的具体设计方案。 1.软件的总体结构主要回答的问题 软件的组成部分 软件的层次关系 模块的内部处理逻辑 模块之间的界面 3. 软件设计分为两个阶段: (1)概要设计(总体设计) 确定软件的结构以及各组成成分(子系统或模块) 之间的相互关系。 (2)详细设计 确定模块内部的算法和数据结构,产生描述各模 块程序过程的详细文档。 §5.2 软件设计的基本概念 1.模块化 2.抽象与细化 3.信息隐蔽 4.软件复用 1.模块化 模块 模块是具有一定功能的可以用名词调用的程序语句集合,如: 独立的汇编程序 Pascal过程 概要设计的基本概念 将系统划分成模块 决定每个模块的功能 决定模块的调用关系 决定模块的界面,即模块间传递的数据 2. 抽象(Abstraction)与细化 抽象:解决问题时只考虑与问题有关的方面,不考虑与问题无关的方面。即抽出事物的本质特性 而不考虑细节。 抽象(Abstraction) 抽象原则应用举例 Windows NT一体化的I/O系统设计 细化:即分解。 在逐步细化中,特别强调这种分解的“逐步”性质,即每一部分仅较其前一部增加“少量”的细节。这样,在相邻两部之间就只有微小的变化,不难验证它们的内容是否等效。 3.信息隐蔽(Information Hiding) 信息隐蔽的含义:有效的模块化可以通过定义一 组独立模块来实现,这些模块相互之间只交流软件 功能必需的信息。 换句话说:模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。 §5.3 模块化设计 1.分解 2.模块独立性 内聚 耦合 自顶向下与自底向上设计 模块化(Modularity) 1.分解 "各个击破"理论 模块数与开发工作量的关系 2. 模块的独立性 模块独立性的概念 模块完成独立的功能 符合信息隐蔽和信息局部化原则 模块间关连和依赖程度尽量小 模块独立性的度量 模块独立性取决于模块的内部和外部特征。 SD方法提出的定性的度量标准: 模块自身的内聚性 模块之间的耦合性 2. 模块独立性的度量之一:内聚性 一个模块内部各成分之间相互关联的强度 设计目标:高内聚(一模块的所有成分都直接参与 并且对于完成同一功能来说都是最基本的) 模块的内聚性类型:   低 巧合内聚 内 逻辑内聚 聚 时间内聚 性 过程内聚      通信内聚 信息内聚 高 功能内聚 (4) 过程内聚 模块内各处理成分相关,且必须以特定次序执行。 (5) 通信内聚 模块内各部分使用相同的输入数据,或产生 相同的输出结果。 (6)信息内聚 信息内聚指模块完成多个功能,各个功能都在同一数据结构上操作,每个功能有唯一入口。如对同一个数据库的“查找—添加—删除—修改”模块。 (7) 功能内聚 模块仅包括为完成某个功能所必须的所有成分。 ( 模块所有成分共同完成一个功能,缺一不可 ) 内聚性最强 功能内聚模块 模块独立性的度量之二: 耦合性是模块间相互依赖程度的度量,耦合的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。 耦合性越高,模块独立性越弱 耦合强度依赖的因素: 一模块对另一模块的引用 一模块向另一模块传递的数据量 一模块施加到另一模块的控制的数量 模块间接口的复杂程度 模块间耦合的类型: 低 非直接耦合 耦 数据耦合 合 标志耦合 性 控制耦合 外部耦合 公共耦合 高 内容耦合 (1) 非直接耦合 两个模块没有直接关系(模快1和模快2),模块独立性最强。 (2) 数据耦合 一模块调用另一模块时,被调用模块的输入、 输出都是简单的数据,属松散耦合。 数据耦合举例 数据耦合举例 (3) 标记耦合(特征耦合) 如两个模块通过传递数据结构(不是简单数据, 而是记录、数组等)加以联系,或都与一个数据 结构有关系, 则称这两个模块间存在标记偶合。 标记耦合举例 (4) 控制耦合 一模块通过开关量、标志、名字等控制信息, 明显地控制另一模块的功能。 控制耦合举例 控制耦合举例 控制耦合增加了理解和编程的复杂性,调用模块 必须知道被调模块的内部逻辑,增加了相互依赖。 去除模块间控制耦合的方法: (1)将被调用模块内的判定上移到调用模块中进行; (2)被调用模块分解成若干单一功能模块。 改控

文档评论(0)

134****9146 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档