- 1、本文档共89页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图5.15 第二级分解的方法 图5.16 未经精化的输入结构 图5.17 未经精化的变换结构 图5.18 未经精化的输出结构 图5.19 精化后的数字仪表板系统的软件结构 “一个不能工作的‘最佳设计’的价值是值得怀疑的”?开发能够满足所有功能和性能要求,并按设计原理和启发式设计规则衡量是值得接收的软件。 可以导出不同的软件结构,然后对它们进行评价和比较,力求得到“最好”的结果。应在设计的早期阶段尽量对软件结构进行精化。 5.5.5 设计优化 设计优化应力求做到在有效的模块化的前提下使用最少量的模块,以及在能够满足信息要求的前提下使用最简单的数据结构。 对于时间是决定性因素的场合,下述方法对软件进行优化是合理的: (1)在不考虑时间因素的前提下开发并精化软件结构; (2)在详细设计阶段选出最耗费时间的那些模块,仔细地设计它们的处理过程(算法),以求提高效率; 5.5.5 设计优化 (3) 使用高级程序设计语言编写程序; (4) 在软件中孤立出那些大量占用处理机资源的模块; (5) 必要时重新设计或用依赖于机器的语言重写上述大量占用资源的模块的代码,以求提高效率。 上述优化方法遵守了一句格言:“先使它能工作,然后再使它快起来。” 5.5.5 设计优化 总体设计阶段主要由两个小阶段组成。 首先需要进行系统设计,从数据流图出发设想完成系统功能的若干种合理的物理方案,分析员应该仔细分析比较这些方案,并且和用户共同选定一个最佳方案。 然后进行软件结构设计,确定软件由哪些模块组成以及这些模块之间的动态调用关系。 层次图和结构图是描绘软件结构的常用工具。 作业:P114 T3(选择其中两道)、T4、T5 5.6 小结及作业 * 设计出软件的初步结构以后,应该审查分析这个结构,通过模块分解或合并,力求降低耦合提高内聚。 例如,多个模块公有的一个子功能可以独立成一个模块,由这些模块调用;有时可以通过分解或合并模块以减少控制信息的传递及对全程数据的引用,并且降低接口的复杂程度。 1. 改进软件结构提高模块独立性 经验表明,一个模块的规模不应过大,最好能写在一页纸内(通常不超过60行语句)。有人从心理学角度研究得知,当一个模块包含的语句数超过30以后,模块的可理解程度迅速下降。 过小的模块开销大于有效操作,而且模块数目过多将使系统接口复杂。 2. 模块规模应该适中 3. 深度、宽度、扇出和扇入都应适当 顶层 1层 2层 A B C D E F G H I J K L M N 深度 扇入为2 扇出为3 扇入为3 3层 4层 宽度 宽度 宽度 软件结构示意图 有关指标: ⑴深度:表示软件结构中从顶层模块到最底层模块的层数。 ⑵宽度:表示控制的总分布。 ⑶扇出数:指一个模块直接控制下属的模块个数。 ⑷扇入数:指一个模块的直接上属模块个数。 一个好的软件结构的形态准则是:顶部宽度小,中部宽度大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。 软件的层次结构 模块的作用域定义为受该模块内一个判定影响的所有模块的集合。 模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。 如图所示,模块A的控制域是A、B、C、D、E、F等模块的集合,它的控制域应在其中。 4. 模块的作用域应该在控制域之内 模块接口复杂是软件发生错误的一个主要原因。 接口复杂或不一致(即看起来传递的数据之间没有联系),是紧耦合或低内聚的征兆,应该重新分析这个模块的独立性。 5. 力争降低模块接口的复杂程度 这条启发式规则警告不要使模块间出现内容耦合。 6. 设计单入口单出口的模块 7. 模块功能应该可以预测 如果模块输入的数据相同,就产生同样的输出,这个模块的功能就是可以预测的。 同时要控制模块的功能过分局限,使用范围过分狭窄。 7. 模块功能应该可以预测 模块的功能应该能够预测,但也要防止模块功能过分局限。 如果一个模块可以当做一个黑盒子,也就是说,只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。带有内部“存储器”的模块的功能可能是不可预测的,因为它的输出可能取决于内部存储器(例如某个标记)的状态。由于内部存储器对于上级模块而言是不可见的,所以这样的模块既不易理解又难于测试和维护。 5.4.1 层次图和HIPO图 层次图用来描绘软件的层次结构。 5.4 描绘软件结构的图形工具 层次图不同于第3.7节中介绍的描绘数据结构的层次方框图,层次图中的一个矩形框代表一个模块,方框间的连线表示调用关系而不像层次方框图那样表示组成关系。 图5.3 正文加工系统的层次图 HIPO图是“层次图加输入/处理/输出图”的英文缩
文档评论(0)