欢迎来到天天文库
浏览记录
ID:58699473
大小:1.07 MB
页数:128页
时间:2020-10-04
《第5章软件设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章软件设计5.1软件设计中的基本概念和原理5.2体系结构设计概述5.3面向数据流的体系结构设计方法5.4详细设计概述5.5面向数据流的详细设计方法5.6面向数据结构的设计方法5.7小结5.1软件设计中的基本概念和原理1.模块化所谓模块,是指具有相对独立性的,由数据说明、执行语句等程序对象构成的集合。程序中的每个模块都需要单独命名,通过名字可实现对指定模块的访问。在高级语言中,模块具体表现为函数、子程序、过程等。一个模块具有输入/输出(接口)、功能、内部数据和程序代码四个特征。输入/输出用于实现模块与其他模块间的数据传送,即向模块传入所需的原始数据及从模
2、块传出得到的结果数据。功能指模块所完成的工作。模块的输入/输出和功能构成了模块的外部特征。内部数据是指仅能在模块内部使用的局部量。程序代码用于描述实现模块功能的具体方法和步骤。模块的内部数据和程序代码反映的是模块的内部特征。模块化是指将整个程序划分为若干个模块,每个模块用于实现一个特定的功能。划分模块对于解决大型复杂的问题是非常必要的,可以大大降低解决问题的难度。为了说明这一点,我们可对问题复杂性、开发工作量和模块数之间的关系进行以下推理。首先,我们设C(x)为问题x所对应的复杂度函数,E(x)为解决问题x所需要的工作量函数。对于两个问题P1和P2,如果:
3、C(P1)>C(P2)即问题P1的复杂度比P2高,则显然有:E(P1)>E(P2)即解决问题P1比P2所需的工作量大。在人们解决问题的过程中,发现存在有另一个有趣的规律:C(P1+P2)>C(P1)+C(P2)即解决由多个问题复合而成的大问题的复杂度大于单独解决各个问题的复杂度之和。也就是说,对于一个复杂问题,将其分解成多个小问题分别解决比较容易。由此我们可以推出:E(P1+P2)>E(P1)+E(P2)即将复杂问题分解成若干个小问题,各个击破,所需要的工作量小于直接解决复杂问题所需的工作量。根据上面的推理,我们可以得到这样一个结论,模块化可以降低解决问题
4、的复杂度,从而降低软件开发的工作量。但是不是模块划分得越多越好呢?虽然增加程序中的模块数可以降低开发每个模块的工作量,但同时却增加了设计模块接口的工作量。通过图5.1所示的模块数与软件开发成本的关系图中可以看出,当划分的模块数处于最小成本区时,开发软件的总成本最低。虽然目前还不能得到模块数M的精确取值,但总成本曲线对我们进行模块划分具有重要的指导意义。模块化不但可以降低软件开发的难度,而且可以使程序结构清晰,增加易读性和易修改性。此外,模块化还有利于提高代码的可重用性及团队合作开发大型软件的可行性。图5.1模块数与软件开发成本2.模块独立性1)耦合性耦合性
5、是对一个软件结构内部不同模块间联系紧密程度的度量指标。模块间的联系越紧密,耦合性就越高,模块的独立性也就越低。由于模块间的联系是通过模块接口实现的,因此,模块耦合性的高低主要取决于模块接口的复杂程度、调用模块的方式以及通过模块接口的数据。模块间的耦合性主要可划分为如下几种类型。(1)数据耦合。若两个模块之间仅通过模块参数交换信息,且交换的信息全部为简单数据,则称这种耦合为数据耦合。数据耦合的耦合性最低,通常软件中都包含有数据耦合。数据耦合的例子如下所示:sum(inta,intb){intc;c=a+b;return(c);}main(){intx,y;p
6、rintf("x+y=%d",sum(x,y));}/*主函数与sum函数之间即为数据耦合关系*/…(2)公共耦合。若两个或多个模块通过引用公共数据相互联系,则称这种耦合为公共耦合。例如,在程序中定义了全局变量,并在多个模块中对全局变量进行了引用,则引用全局变量的多个模块间就具有了公共耦合关系。FORTRAN语言中使用的common语句也会在多个模块间建立公共耦合关系。公共耦合的复杂度随着耦合的模块个数的增加而显著增加。在程序设计中,若两个模块间需要交换的数据较多,仅通过参数传递难以实现时,可以考虑采用公共耦合完成,但一定注意尽量降低公共耦合的程度。(3)
7、控制耦合。若模块之间交换的信息中包含有控制信息(尽管有时控制信息是以数据的形式出现的),则称这种耦合为控制耦合。控制耦合是中等程度的耦合,它会增加程序的复杂性。控制耦合的例子如下所示:voidoutput(flag){if(flag)printf("OK!");elseprintf("NO!");}main(){intflag;output(flag);}/*主函数与output函数之间即为控制耦合关系*/…(4)内容耦合。若一个模块对另一模块中的内容(包括数据和程序段)进行了直接的引用甚至修改,或通过非正常入口进入到另一模块内部,或一个模块具有多个入口,
8、或两个模块共享一部分代码,则称模块间的这种耦合为内容耦合。内容耦合
此文档下载收益归作者所有