模块结构图.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文档。上传文档
查看更多
模块结构图.ppt

第7章 结构化系统设计 本章主要内容 系统设计的任务 总体设计 结构化设计的概念、基本原则 从数据流图导出结构图 详细设计 代码设计 输出设计 输入设计 人机对话设计 模块详细设计 数据库设计、网络设计 系统设计说明书 7.2.1 模块的概念 模块(Module)一词使用很广泛。通常对应于用一个名字就可以调用的一段程序语句(子程序或函数) 模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性。 7.2.2 模块结构图 结构图(Structured Chart)描述系统的模块结构及模块间的联系 结构图中的主要成分有: 模块:用长方形表示 调用:从一个模块指向另一模块的箭头表示前一个模块调用后一个模块。有循环调用和条件调用 数据:用带圆圈的小箭头表示从一个模块传递给另一模块的数据(有实义) 控制信息:带涂黑圆圈的小箭头表示一个模块传送给另一模块的控制信息 简单的模块结构图 模块设计的度量标准 为了衡量模块的相对独立性,提出了模块间的耦合(Coupling)与模块的内聚(Cohesion)两个标准 耦合:模块和模块之间的联系程度 内聚:模块内部各元素之间的联系程度 设计目标: 模块内的联系越紧越好 模块间的联系越少越好 为什么? 7.2.3 模块的耦合 double CalculateAvg() { int n; double total, average, value; scanf(“输入个数:\n”, n); total = sum(n); average=total/n; return(average); } 两个模块之间存在联系 影响耦合度的因素 如果使用模块A需要了解模块B,那么A和B是耦合的。影响模块间耦合程度有三方面的因素: 联系方式--模块间通过什么方式联系 来往信息的作用--模块间来往信息作什么用 数量--模块间来往信息的多少。 模块联系方式 直接引用:一个模块直接存取另一个模块的某些信息,例如全程变量、FORTRAN的common量、C语言的extern量、共享的通信区等 。也称为公共环境耦合(common environment coupling) 降低这种耦合程度的办法是使数据局部化,即使用局部变量 过程语句调用:一个模块调用另一个模块,所有数据来往都以参数或返回值方式传递并使用 来往信息的作用 模块间的来往信息可以作数据用,也可以作控制信息用 来往信息的数量 模块间传递的信息量越大,它们之间的耦合程度越高。 一个模块最好只了解它确实需要使用的数据,而完全不知道其他数据的存在(独立性好) 耦合的类型 根据以上因素,对耦合分类如下: 数据耦合:采用子程序调用,调用模块将需要进行处理的数据传递给被调模块。数据耦合是不可避免的。 标记耦合:如果调用模块将整个数据记录传递给被调模块,而被调模块只使用了部分数据项,则称为标记耦合或特征耦合。 控制耦合:一个模块将控制信息传递给另一个模块,以控制被调模块的内部处理逻辑。(可以分解) 公共环境耦合:如果两个模块共享同一全局数据,称为公共耦合。 内容耦合:两个模块之间的内部属性有直接关联,也称病态耦合。(某些GOTO语句) 减低耦合的设计原则 结构化设计要求模块间的耦合程度尽可能小。 为此应: 用过程语句调用其它模块 模块间的参数作数据用 模块间的参数尽可能少 7.2.4 模块的内聚 double CalculateAvg() { int n; double total, average, value; scanf(“input value:”, value); while value=0.0 { n=n+1; total=total+value; scanf(“\ninput value:”, value); } average=total/n; return(average); } 模块内部各元素(变量、语句)之间存在联系 内聚的好处 模块的内聚反映模块内部联系的紧密程度。 一个模块只需要做好一件事情,不要过分关心其它任务。 高内聚性的好处是可以提高程序的可靠性。 有一个调查表明,50%的强内聚性子程序是没有错误的,而只有 18%的弱内聚性子程序才是无错的,弱内聚性子程序的出错机会要比强内聚性出错机会高 6 倍,而修正成本则要高 19 倍。摘自《代码大全》 内聚的类型 模块的内聚可以分以下七类: 1、偶然内聚(coincidental cohesion) 2、逻辑内聚(Logical cohesion) 3、时间内聚(temporal cohesion) 4、步骤内聚

文档评论(0)

只做精品 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档