软件设计基础的.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件设计基础的

软件工程; 是后续开发步骤及软件维护工作的基础。 如果没有设计,只能建立一个不稳定的系统结构;软 件 工 程;7.1.1 软件设计过程;7.1.2 抽象与逐步求精;抽象1: 该CAD软件系统配有与绘图员进行可视化通信的图 形界面,能用鼠标代替绘图工具画各种直线和曲线; 能完成所有几何计算以及所有截面视图和辅助视图的 设计。图形设计的结果保存在图形文件中,图形文件 可以包含几何的、正文的和其他各种补充设计信息。 ;数据对象: TYPE drawing IS STRUCTURE DEFINED number IS STRING LENTH(12); geometry DEFINED… notes IS STRING LENTH(256); bom DEFINED… END drawing TYPE;; 逐步求精;7.1.3 模块化与信息隐藏; 有人说,模块化是为了使一个复杂的大型程序能被人的智力所管理,软件应该具备的唯一属性。如果一个大型程序仅由一个模块组成??它将很难被入所理解。下面根据人类解决问题的一般规律,论证上面的结论。 设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量(时间)。对于两个问题Pl和P2,如果 C(P1)>C(P2) 即P1比P2复杂,显然 E(PI)>E(P2) 即问题越复杂,所需的工作量越大。 根据人类解决一般问题的经验,另一个有趣的规律是 C(P1十P2)>C(PI)十C(P2) 也就是说,如果一个问题由Pl和P2两个问题组合而成那么它的复杂程序大于分别考虑每个问题时的复杂程度之和。 综上所述,得到下面的不等式 E(Pl十P2)>E(PI)十E(P2) ; 这个不等式导致“各个击破”的结论——把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。 由上面的不等式似乎还能得出下述结论:如果无限地分割软件,最后为了开发软件而需要的工作量也就小得可以忽略了。事实上,还有另一个因素在起作用,从而使得上述结论不能成立。 参看上图,当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本(工作量)确实减少了;但是,随着模块数目增加,设计模块问接口所需要的工作量也将增加。根据这两个因素,得出了图中的总成本曲线。每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小。 虽然目前我们还不能精确地决定M的数值,但是在考虑模块化的时候总成本曲线确实是有用的指南。 ;;信息隐藏;模块独立性(Module independence) 好设计的关键:每个模块完成一个相对独立的子功能, 并且与其它模块间的接口简单。;为什么模块的独立性很重要呢?主要有两条理由:第一,有效的模块化(即具有独立的模块)的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化,当许多人分工合作开发同一个软件时,这个优点尤其重要。第二,独立的模块比较容易测试相维护。这是因为相对说来,修改设计和程序需要的工作量比较小,错误传播范围小,需要扩充功能时能够“插入”模块。总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节。;独立性的度量:耦合(Coupling)内聚(Cohesion);内聚标志一个模块内各个元素被此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。 设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但是,低内聚很坏,不要使用。;低级内聚度(3个);一个模块完成的诸任务逻辑上相关 ;如果一个模块包含的诸任务必须在同一时间段内执行。例如一个初始化模块;在偶然内聚的模块中,各种元素之间没有实质性联系,很可能在一种应用场合需要修改这个模块,在另一种应用场合又不允许这种修改,从而陷入困境。事实上,偶然内聚的模块出现修改错误的概率比其他类型的模块高得多。 在逻辑内聚的模块中,不同功能混在一起,合用部分程序代码,即使局部功能的修改有时也会影响全局。因此.这类模块的修改也比较困难。 时间关系在一定程度上反映了程序的某些实质,所以时间内聚比逻辑内聚好一些。 这三种内聚为低内聚。 ;中级内聚度(2个);模块中各成分都将对数据结构的同一区域进行操作,即如果模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通信内聚。 ;高级级内聚度(2个);模块内所有成分形成一个整体, 完成单个功能;; 耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的

文档评论(0)

ayangjiayu5 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档