软件设计基本概念要点.pptVIP

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件设计基本概念要点

2. 模块规模应该适中 经验表明,一个模块的规模不应过大,最好能写在一页纸内。通常规定50~100行语句,最多不超过500行。数字只能作为参考,根本问题是要保证模块的独立性。 过大的模块往往是由于分解不充分,但是进一步分解必须符合问题结构,一般说来,分解后不应该降低模块独立性。 过小的模块开销大于有效操作,而且模块数目过多将使系统接口复杂。 3. 深度、宽度、扇出和扇入都应适当 深度:软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。 宽度:软件结构内同一个层次上的模块总数的最大值。 扇出:一个模块直接控制(调用)的模块数目。 扇入:有多少个上级模块直接调用它。 4. 模块的作用域应该在控制域之内 模块的作用域:定义为受该模块内一个判定影响的所有模块的集合。 模块的控制域:是这个模块本身以及所有直接或间接从属于它的模块的集合。 在一个设计得很好的系统中,所有受判定影响的模块应该都从属于做出判定的那个模块,最好局限于做出判定的那个模块本身及它的直属下级模块。 解决方案: 把模块A中的判定移到模块M中; 把模块G移到模块A下面,作为他的下级模块。 5. 力争降低模块接口的复杂程度 模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。 例:解一元二次方程的函数 QUAD_ROOT(TBL,X) 其中数组TBL传送方程的系数 数组X送回求得的根 QUAD_ROOT(A,B,C,ROOT1,ROOT2) 6. 设计单入口单出口的模块 警告软件工程师不要使模块间出现内容耦合。当从顶部进入模块并且从底部退出来时,软件是比较容易理解的,因此也是比较容易维护的。 7. 模块功能应该可以预测 模块的功能应该能够预测,但也要防止模块功能过分局限。 功能可预测:如果一个模块可以当做一个黑盒子,只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。 * * 模块独立程度的两个定性标准度量: 耦合衡量不同模块彼此间互相依赖(连接)的紧密程度。耦合要低,即每个模块和其他模块之间的关系要简单; 内聚衡量一个模块内部各个元素彼此结合的紧密程度。内聚要高,每个模块完成一个相对独立的特定子功能。 1. 耦合 耦合:是对一个软件结构内不同模块之间互连程度的度量。 要求:在软件设计中应该追求尽可能松散耦合的系统。 可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很多了解; 模块间联系简单,发生在一处的错误传播到整个系统的可能性就很小; 模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。 耦合程度的度量: (1) 非直接耦合/完全独立(no direct coupling) 如果两个模块中的每一个都能独立地工作而不需要另一个模块的存在,那么它们完全独立。 在一个软件系统中不可能所有模块之间都没有任何连接。 (2) 数据耦合(data coupling) 如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。 评价: 系统中至少必须存在这种耦合。一般说来,一个系统内可以只包含数据耦合。 数据耦合是理想的目标。 维护更容易,对一个模块的修改不会是另一个模块产生退化错误。 (3) 控制耦合(control coupling) 如果两个模块彼此间传递的信息中有控制信息,这种耦合称为控制耦合。 评价: 控制耦合往往是多余的,把模块适当分解之后通常可以用数据耦合代替它。 被调用的模块需知道调用模块的内部结构和逻辑,降低了重用的可能性 。 (4) 特征耦合(stamp coupling) 当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合。 评价: 被调用的模块可使用的数据多于它确实需要的数据,这将导致对数据的访问失去控制,从而给计算机犯罪提供了机会。 无论何时把指针作为参数进行传递,都应该仔细检查该耦合。 (5) 公共环境耦合(common coupling) 当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合。公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等等。 公共环境耦合的类型: 一个模块往公共环境送数据,另一个模块从公共环境取数据。数据耦合的一种形式,是比较松散的耦合。 两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介于数据耦合和控制耦合之间。 例: while(global_variable==0) { if (argument_xyz25) module_3(); else module_4(); } 评价: 与结构化编程矛盾,生成的代码完

文档评论(0)

2299972 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档