第6章 软件设计的.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文档。上传文档
查看更多
第6章 软件设计的

第6章 软件设计;二、软件设计的基本原理   1、模块化   模块化是指将程序划分成多个模块,每个模块完成一个子功能。   模块:又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合。例如高级语言中的过程、函数、子程序等都可作为模块。   模块化是软件的一个重要属性。模块化的特性提供了人们处理复杂的问题的一种方法,同时也使得软件能够被有效地管理。   ;模块的性质: (1)简明性,简单易懂,易于实现 (2)完整性,可以实现一个完整的功能,同时可以被单独地编程、测试等。 (3)独立性,理想的模块相互之间是独立的,有很少的联系,对外只保留接口,改变其内容结构不会地外部程序产生影响。;  有两个函数:C(x)表示问题x的复杂程度;E(x)表示解决问题x所需要的工作量(时间)。   对于两个问题P1和P2,如果:C(P1)>C(P2)   则:E(P1)>E(P2) 另一个特性是:C(P1+P2)>C(P1)+C(P2) 根据前面的结论,我们可以得出下面的不等式: E(P1+P2)>E(P1)+E(P2) 这个不等式表明:单独解决问题P1和P2所需的工作量之和,比把P1和P2合起来作为一个问题来解决时所需的工作量要少。 这种“分而治之”的思想提供了模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。 ;模块化和软件成本的关系;2、抽象   我们在考虑问题时,集中考虑和当前问题有关的方面,而忽略和当前问题无关的方面,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。   软件工程过程的每一步,都是对软件解法的抽象层次的一次细化。在可行性研究阶段,软件被看作是一个完整的系统部分;在需求分析期间,我们使用在问题环境中熟悉的术语来描述软件的解法;当我们由总体设计阶段转入详细设计阶段时,抽象的程度进一步减少;最后,当源程序写出来时,也就达到了抽象的最低层。 ;3、逐步求精   所谓逐步求精是指为集中精力解决主要问题而尽量推迟对问题细节的考虑。   原因:一个人在任何时候都只能把注意力集中在(7±2)个知识块上。;4、信息隐藏     信息隐藏原理认为:模块所包含的信息(过程和数据)对于其他模块来说应该是隐藏的。也就是说,模块应当被这样规定和设计,使得包含在模块中的信息(过程或数据)对于其它不需要这些信息的模块来说,是不能访问的,或者说是“不可见”的。   信息隐藏对于软件的测试与维护都有很大的好处。因为对于软件的其它部分来说,绝大多数数据和过程都是隐藏的,这样,在修改期间由于疏忽而引入的错误所造成的影响就可以局限在一个或几个模块内部,不至波及到软件的其他部分。 ;四、 软件的度量  软件的度量主要指模块内程序的复杂性。它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。同时它也是软件可理解性的另一种度量。  减少程序复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少。 (1) 代码行度量法 度量程序的复杂性,最简单的方法就是统计程序的源代码行数。此方法基于两个前提:  程序复杂性随着程序规模的增加不均衡地增长;  控制程序规模的方法最好是采用分而治之的办法。将一个大程序分解成若干个简单的可理解的程序段。 ;(2) Halstead方法(霍尔斯特德)  Halstead方法采用以下一组基本的度量值,这些度量值通常在程序产生之后得出。 ① 实际的Halstead长度  设 N1为程序中实际出现的运算符总次数, N2为程序中实际出现的操作数总次数, n1表示程序中不同运算符(包括保留字)的个数, n2表示程序中不同运算对象的个数。 N为程序长度,其中 N = N1 + N2。 ;词汇量 n=n1+n2 程序量 V=(N1 + N2)log2(n1+n2); ;1;五、软件设计的基本原理 1、抽象与求精 2、模块化和信息隐藏 3、模块独立性;模块独立性   为了降低软件的复杂性,提高可理解性,可维护性,必须把系统划分为多个模块,但模块不能任意划分,应尽量保持其独立性,模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。模块独立性概念是模块化、抽象及信息隐藏等原理的产物。   模块的独立性可由两个标准来度量,它们是耦合和内聚,所谓的内聚性是指一个模块内各个元素彼此结合的紧密程度。而耦合是指各模块之间相互联系的紧密程度。;内聚度(又叫内聚性) 所谓内聚性是指一个模块内各个元素彼此结合的紧密程度。   内聚一般可分为如下几种:偶然内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,顺序内聚,功能内聚。   偶然内聚,是指模块各处元素之间没有任何联系,   逻辑内聚,是指模块内执行几

文档评论(0)

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

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

1亿VIP精品文档

相关文档