第6章 软件设计精选PPT.ppt
《第6章 软件设计精选PPT.ppt》由会员分享,可在线阅读,更多相关《第6章 软件设计精选PPT.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章 软件设计第1页,本讲稿共53页二、软件设计的基本原理1、模块化模块化是指将程序划分成多个模块,每个模块完成一个子功能。模块:又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合。例如高级语言中的过程、函数、子程序等都可作为模块。模块化是软件的一个重要属性。模块化的特性提供了人们处理复杂的问题的一种方法,同时也使得软件能够被有效地管理。第2页,本讲稿共53页模块的性质:(1)简明性,简单易懂,易于实现(2)完整性,可以实现一个完整的功能,同时可以被单独地编程、测试等。(3)独立性,理想的模块相互之间是独立的,有很少的联系,对外只保留接口,改变其内容结构不会地外部程序产生影响。第3
2、页,本讲稿共53页有两个函数:C(x)表示问题x的复杂程度;E(x)表示解决问题x所需要的工作量(时间)。对于两个问题P1和P2,如果:C(P1)C(P2)则:E(P1)E(P2)另一个特性是:C(P1P2)C(P1)C(P2)根据前面的结论,我们可以得出下面的不等式:E(P1P2)E(P1)E(P2)这个不等式表明:单独解决问题P1和P2所需的工作量之和,比把P1和P2合起来作为一个问题来解决时所需的工作量要少。这种“分而治之”的思想提供了模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。第4页,本讲稿共53页模块化和软件成本的关系各模块成本之和应用模块化设计方
3、法可以将程序分解为适当的模块数目,以使总的开发成本最小。还可以将难的模块分给熟练的程序员。第5页,本讲稿共53页2、抽象我们在考虑问题时,集中考虑和当前问题有关的方面,而忽略和当前问题无关的方面,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。软件工程过程的每一步,都是对软件解法的抽象层次的一次细化。在可行性研究阶段,软件被看作是一个完整的系统部分;在需求分析期间,我们使用在问题环境中熟悉的术语来描述软件的解法;当我们由总体设计阶段转入详细设计阶段时,抽象的程度进一步减少;最后,当源程序写出来时,也就达到了抽象的最低层。第6页,本讲稿共53页3、逐步求精所谓逐步求精是指为集
4、中精力解决主要问题而尽量推迟对问题细节的考虑。原因:一个人在任何时候都只能把注意力集中在(72)个知识块上。第7页,本讲稿共53页4、信息隐藏信息隐藏原理认为:模块所包含的信息(过程和数据)对于其他模块来说应该是隐藏的。也就是说,模块应当被这样规定和设计,使得包含在模块中的信息(过程或数据)对于其它不需要这些信息的模块来说,是不能访问的,或者说是“不可见”的。信息隐藏对于软件的测试与维护都有很大的好处。因为对于软件的其它部分来说,绝大多数数据和过程都是隐藏的,这样,在修改期间由于疏忽而引入的错误所造成的影响就可以局限在一个或几个模块内部,不至波及到软件的其他部分。第8页,本讲稿共53页四、软件
5、的度量软件的度量主要指模块内程序的复杂性。它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。同时它也是软件可理解性的另一种度量。减少程序复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少。(1)代码行度量法 度量程序的复杂性,最简单的方法就是统计程序的源代码行数。此方法基于两个前提:程序复杂性随着程序规模的增加不均衡地增长;控制程序规模的方法最好是采用分而治之的办法。将一个大程序分解成若干个简单的可理解的程序段。第9页,本讲稿共53页(2)HalsteadHalstead方法(霍尔斯特德)Halstead方法采用以下一组基本的度
6、量值,这些度量值通常在程序产生之后得出。实际的Halstead长度设N1为程序中实际出现的运算符总次数,N2为程序中实际出现的操作数总次数,n1表示程序中不同运算符(包括保留字)的个数,n2表示程序中不同运算对象的个数。N为程序长度,其中 N=N1+N2。第10页,本讲稿共53页词汇量 n=n1+n2程序量V=(N1+N2)log2(n1+n2)Halstead方法经常用来预测程序中的错误,认为程序中可能存在的差错应与程序的容量成正比。预测公式为B=(N1+N2)log2(n1+n2)3000第11页,本讲稿共53页(3)McCabe度量法(麦凯布)McCabe度量法是一种基于程序控制流的复杂
7、性度量方法。McCabe定义的程序复杂性度量值又称环路复杂度,它基于一个程序模块的程序图中环路的个数。如果把程序流程图中每个处理符号都退化成一个结点,原来联结不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序图,也叫做流图。计算有向图G的环路复杂性的公式有如下三种方法:(1)环形复杂度等于流图中区域数。(2)流图中的环形复杂度V(G)mn2其中,m是图G中有向弧个数,n是图G中结点个数。(3)流图G的环形复杂度V(G)P1,其中P是判定结点的数目。第12页,本讲稿共53页12364578总边数为11,节点数为9,所以环形复杂度为11924区域数为4,判定结点有3,所以它们的
8、环形复杂度都是412,34、567891011第13页,本讲稿共53页五、软件设计的基本原理1、抽象与求精2、模块化和信息隐藏3、模块独立性第14页,本讲稿共53页模块独立性为了降低软件的复杂性,提高可理解性,可维护性,必须把系统划分为多个模块,但模块不能任意划分,应尽量保持其独立性,模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。模块独立性概念是模块化、抽象及信息隐藏等原理的产物。模块的独立性可由两个标准来度量,它们是耦合和内聚,所谓的内聚性是指一个模块内各个元素彼此结合的紧密程度。而耦合是指各模块之间相互联系的紧密程度。第15页,本讲稿共53页内聚度
9、(又叫内聚性)所谓内聚性是指一个模块内各个元素彼此结合的紧密程度。内聚一般可分为如下几种:偶然内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,顺序内聚,功能内聚。偶然内聚,是指模块各处元素之间没有任何联系,逻辑内聚,是指模块内执行几个逻辑上相邻的功能,通过参数决定该模块完成哪个功能,如产生各种类型错误的信息输出放在一个模块,即一个单入口多功能模块。时间内聚,是指把需要同时执行的动作组合在一起形成的模块,比如可以将初始化语句放到一个模块。第16页,本讲稿共53页过程内聚,是指一个模块内的处理元素是相关的,而且必须以特定次序执行,这个模块完成特定的功能。通信内聚,是指模块各部分都紧密相关于同一数据(
10、或数据结构)。即所有的元素都使用同一个输入数据或产生同一个输出数据。顺序内聚,是指模块内各处理元素密切相关于同一功能,且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。功能内聚,是指模块内所有的元素共同完成一个功能,缺一不可。在系统设计时设法提高系统的内聚程度,而降低系统的耦合程度。第17页,本讲稿共53页1、耦合耦合:软件结构中各个模块之间相互关联程度的度量。常见的耦合:(1)非直接耦合(2)数据耦合(3)控制耦合(4)特征耦合(5)公共耦合(6)内容耦合设计原则:尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。第18页,本讲稿共53页非直接耦合,是指模块之间没
11、有直接的关系。数据耦合,是指模块之间有调用关系,但传递的只是简单的数据,例如高级语言里面的数据值等。控制耦合,是指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调用模块根据该控制变量有选择地执行块内某一功能,所以被调用模块内应该有多种功能,至于执行哪一功能被执行,要受调用模块的控制。特征耦合,是指将整个数据结构作为参数传递,但是被调用模块只需要其中的一部分数据。第19页,本讲稿共53页公共耦合:是指通过一个公共数据环境相互作用的那些模块的耦合,这些公共数据环境可以是全局变量或数据结构,共享内存区等。内容耦合:如果出现以下情况之一,则为内容耦合(1)一个模块访问另一个模块的内部
12、数据。(2)一个模块不通过正常入口而转到另一个模块。(3)两个模块有一部分代码重叠。(4)一个模块有多个入口。设计原则:尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。第20页,本讲稿共53页六、软件设计过程中的几条规则1、提高模块的独立性,提高模块的内聚程度而降低模块的耦合程度。2、模块规模应该适中,模块太大,则不容易理解,而模块太小,则接口太复杂。3、深度,宽度,扇出和扇入适当。所谓深度是指软件结构中控制的层数。而宽度是指软件结构内同一个层次上的模块总数的最大值。扇出是指一个模块直接调用的模块总数。扇入是指有多少个上级模块调用该模块。第21页,本讲稿共53页4、模块的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 软件设计精选PPT 软件设计 精选 PPT
限制150内