- 1、本文档共142页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 事务流映射 * * 用户交互子系统的一级分解 * * 步骤六 分解并精化事务结构以及每条动作路径所对应的结构。 图9.18给出了各条动作路径映射后的程序结构。 步骤七 使用启发式设计策略,精化所得程序结构雏形,改良软件质量。 这一步骤与变换分析法相同。 * * 用户交互子系统的程序结构雏形 * * 5.2.4 启发式设计策略 变换分析和事务分析的最后一个步骤都是运用启发式策略对程序结构雏形进行优化,以提高软件设计的整体质量。 启发式设计策略是人们从长期的大量软件开发过程中积累总结的经验。 * * 启发式设计策略 (1)改造程序结构,减小耦合度,提高内聚度。 应从增强模块独立性的角度,对程序结构雏形的模块进行分解或合并,力求降低耦合度,提高内聚度。 (2)改造程序结构,减少高扇出,在增加程序深度的前提下追求高扇入。 * * 典型的程序结构 设计良好的软件结构通常顶层扇出比较高,中层扇出较少,底层又高扇入到公共的实用模块中去。 * * 尽可能减少高扇出结构,随着深度增大扇入。如果一个模块的扇出数过大,就意味着该模块过分复杂,需要协调和控制过多的下属模块。应当适当增加中间层次的控制模块。 * * (3)改造程序结构,使任一模块的作用域在其控制域之内。 模块作用域指,受该模块内部判定影响的所有模块; 模块控制域为其所有下层模块。 图9.20根据这一原则改造前后的两个程序结构。 * * 模块的作用范围应在控制范围之内 模块的控制范围包括它本身及其所有的从属模块。 模块的作用范围是指模块内一个判定的作用范围,凡是受这个判定影响的所有模块都属于这个判定的作用范围。 如果一个判定的作用范围包含在这个判定所在模块的控制范围之内,则这种结构是简单的,否则,它的结构是不简单的。 * * * * 图(a)模块A的控制范围为模块A,B,C,D,E,F,G.模块C的控制范围为模块C,F,G.作用范围都在控制范围之内 图(b)表明作用范围不在控制范围之内(G为判定) 图(c)表明作用范围不在控制范围之内,但G判定所在模块TOP所处层次较高,需要经过不必要的信号传输,增加了数据的传送量 图(d)表明作用范围不在控制范围之内,只有一个判定分支有一个不必要的穿越 * * 图(e)是一个较好的结构,所有受一个判定影响的模块应该都从属于该判定所在的模块,表明作用范围在控制范围之内 如在设计过程中,发现作用范围不在控制域内,可采用如下办法把作用范围移到控制作用之内: 将判定所在模块合并到父模块中,使判定处于较高层次 将受判定影响的模块下移到控制范围内 将判定上移到层次较高的位置 * * (4)改造程序结构,减少界面的复杂性和冗余程度,提高协调性。 (5)模块功能应该可预言,避免对模块施加过多限制。 (6)改造程序结构,追求单入口单出口的模块。 (7)为满足设计或可移植性的要求,把某些软件用包(Package)封装起来。 * * 无论是采用变换分析法还是事务分析法,获得程序结构后,必须开发一系列辅助文档,作为软件总体设计的组成部分。 ①陈述每个模块的处理过程; ②描述每个模块的界面; ③根据数据字典定义局部和全局数据结构; ④综述设计中所有限制(Limitations)和限定(Restrictions); ⑤对概要设计进行复审; ⑥对设计进行优化。 * * 5.2.5 设计优化原则 软件设计人员应牢记,一个不能工作的“最佳设计 ”没有任何实际意义。 努力追求的设计应该是既满足功能和性能的要求,又符合一般软件设计原理和上述种种启发式设计原则。 对软件结构的修改越早越好。人们把软件总体结构设计与详细过程设计分开正是为了尽早优化结构。有时,甚至可以并行地开发若干个软件结构,通过评比,求得“最佳”结果。 简洁的程序结构容易调试、容易维护。优化设计时,只要不违反模块化原则,应该使用尽可能少的模块;只要满足信息要求,应该使用尽可能简单的数据结构。 * * 对时间复杂性有特殊要求的应用,优化过程一直要延续到详细设计乃至编码阶段。采取下述对策: ①在先不考虑时间复杂性的情况下,设计并精化软件结构; ②借用CASE工具模拟分析运行时的性能,找出低效部分 ③详细设计时对最耗时的模块仔细推敲,以便减少时间开销; ④用高级语言编程; ⑤对大量占用CPU资源的模块必要时用低级语言(依赖于机器)重新编码,以便提高效率。 设计优化遵守的格言是,“先让它干起来,再让它快起来”。 * * 谢谢 * * * 除标准循环构件外,此PDL还提供了NEXT和EXIT两种语句,旨在支持受限方式退出循环。EXIT将控制转到其所在循环后的第一个语句,NEXT强迫本次循环结束,新一轮循环开始。若外层循环带
文档评论(0)