第3章软件设计原理.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文档。上传文档
查看更多
软件设计的任务 软件设计的步骤 软件设计的模块化思想 软件设计的原则;基本原理; 同一问题的不同的计算机解决方案往往来源于不同的设计方法和不同的设计习惯,一般来说,不能简单的判定哪一种设计方法和设计习惯的优劣,需要根据软件设计的目标,再结合有关理论和原则进行综合的评价。;实际工作的误区;3.1 软件设计的任务;设计阶段的任务;开发阶段的信息流;软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构;在软件设计阶段,通常有两种设计思路。 早期软件开发人员根据以往的设计经验,先找一个类似的软件系统作为参考,然后从中选出系统的关键部分,进行仿照设计,再让系统的其余部分的设计去适应它们。这种从一个局部开始,逐渐扩展到整个系统的设计方法,通常称为“自底向上”设计(bottom-up design)。 由底向上设计是早期软件规模较小时的设计思想。随着软件规模的增长这种方法的缺点就暴露出来。现在在设计大型软件时,普遍采用了“自顶向下,逐步求精(top-down design)”的设计方法。采用这种方法时,软件开发人员首先对所设计的系统要有一个全面的理解,然后从顶层开始逐层向下分解,直至系统的所有模块都小到易于掌握为止。;两种设计思路的比较;软件设计步骤;概要设计;详细设计;详细设计就是要在总体设计阶段成果的基础上,考虑如何实现定义的软件系统,直到对系统中的每个模块给出足够详细的过程描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。因此,详细设计的结果基本上决定了最终的程序代码质量。;考虑程序代码的质量,程序的“读者”有两个:计算机和人。在软件的生命周期中,设计测试方案、诊断程序错误、修改和改进程序等等都必须首先读懂程序。实际上对于长期使用软件系统而言,人读程序的时间可能比写程序的时间还要长得多。因此,衡量程序的质量不仅要看它的逻辑是否正确,性能是否满足要求,更主要的是要看它是否容易阅读和理解。详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简???易懂。结构化程序设计技术是实现上述目标的关键技术,因此是详细设计的逻辑基础。;设计复审(design review);设计复审主要考虑的问题 软件结构能否满足需求? 结构的形态是否合理? 层次是否清晰? 模块的划分是否遵循模块化和信息隐蔽的思想? 系统的人机界面、各模块的接口及出错处理是否恰当? 模块的设计能否满足功能与性能要求? 选择的算法与数据结构是够合理,能否适应编程语言,等等。;设计复审(design review);3.3 软件设计的模块化思想;软件设计的基本概念;在计算机软件领域,模块化的概念已经被推崇了四十年。目前,几乎所有的软件体系结构都体现了模块化的思想,即把软件划分为可独立命名和编址的部件,每个部件称为一个模块,每个模块完成一个子功能,当把所有模块组装到一起成为一个整体时,便可以完成指定的功能。模块是数据说明、可执行语句等程序对象的集合,它是单独命名的而且可通过名字来访问。例如,过程、函数、子程序、宏等等都可作为模块。而模块化就是把程序划分成若干个模块,各个击破。(模块是具有一定功能的可以用名词调用的程序语句集合);首先,让我们考察一下通过观察人类求解问题的过程所获得的结论。 假设函数C(X)定义了问题X的复杂性,函数E(X)定义了求解问题X所需要的工作量(按时间计),对于问题P1和P2,如果 C(P1)C(P2) (3.1a) 则 E(P1)E(P2) (3.1b) 上述结论说明解决一个复杂问题要比解决一个简单问题花费更多的工作量。;人类求解问题的实践同时揭示了另一个有趣的性质: C (P1+P2)C (P1)+C (P2) (3.2a) 也就是说,由P1、P2组合而成的问题的复杂性往往比单个问题复杂性之和更大。由3.1两式可得 E (P1+P2)E (P1)+E (P2) (3.2b);3.3.1 模块化;3.3.1 模块化;它说明,对于一个给定的问题,当模块总数增加时,每个模块的规模将减小,开发单个模块需要的成本(工作量)却是减少了;但随着模块数目增加,设计模块接口所需代价却将增加,致使软件总耗费呈现一抛物线。因为,实际上,模块的大小与模块的复杂性直接成正比,模块划小了,每个模块的复杂性下降,成本下降;但是增加了模块之间接口的复杂性。所以对每个问题都存在着某个最佳模块数目,它能使得软件成本最小。如果模块数目为M时将获得最小开发成本,那么模块数在M附近选择,就能避免模块分割的过度或不足。;采用模块化原理的优点: 可以使软件结构清晰,容

文档评论(0)

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

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

1亿VIP精品文档

相关文档