《第6章信息系统的总体设计精选文档.ppt》由会员分享,可在线阅读,更多相关《第6章信息系统的总体设计精选文档.ppt(64页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第6章信息系统的总章信息系统的总体设计体设计本讲稿第一页,共六十四页教学内容教学内容 系统设计的基本原理包括模块化设计原理、抽象系统设计的基本原理包括模块化设计原理、抽象原理、信息隐蔽和局部化原理、逐步求精原理、模块原理、信息隐蔽和局部化原理、逐步求精原理、模块独立性原理;系统设计的优化规则;总体设计的目的、独立性原理;系统设计的优化规则;总体设计的目的、任务、文档、评审以及图形工具;面向数据流的总体任务、文档、评审以及图形工具;面向数据流的总体设计方法设计方法结构化设计方法的过程。结构化设计方法的过程。教学要求教学要求 1 1熟练掌握:模块独立性原理的衡量标准:内聚熟练掌握:模块独立性原理
2、的衡量标准:内聚和耦合;系统设计的优化规则;结构化设计方法中的和耦合;系统设计的优化规则;结构化设计方法中的变换分析过程。变换分析过程。2 2一般掌握:模块化设计原理、逐步求精原理;一般掌握:模块化设计原理、逐步求精原理;总体设计的目的、任务以及图形工具;结构化设计方总体设计的目的、任务以及图形工具;结构化设计方法中的事务分析及混合结构分析过程。法中的事务分析及混合结构分析过程。3 3了解:抽象原理、信息隐蔽和局部化原理;总了解:抽象原理、信息隐蔽和局部化原理;总体设计的文档和评审。体设计的文档和评审。2本讲稿第二页,共六十四页 6.1 系统设计的基本原理和优化规则系统设计的基本原理和优化规则
3、 6.1.1 系统设计的基本原理系统设计的基本原理 在系统设计过程中应该遵循一些基本原理,包括:在系统设计过程中应该遵循一些基本原理,包括:模块化设计原理、抽象原理、模块化设计原理、抽象原理、信息隐蔽和局部化原理信息隐蔽和局部化原理、逐步求精原理、模块独立性原理等。逐步求精原理、模块独立性原理等。1模块化设计原理模块化设计原理 所所谓谓模模块块是是指指具具有有相相对对独独立立性性的的,由由数数据据说说明明、执执行行语语句句等等程程序序对对象象构构成成的的集集合合。程程序序中中的的每每个个模模块块都需要单独命名,通过名字可实现对指定模块的访问。都需要单独命名,通过名字可实现对指定模块的访问。模块
4、化是指将整个程序划分为若干个模块,每个模块化是指将整个程序划分为若干个模块,每个模块用于实现一个特定的功能。划分模块对于解决大模块用于实现一个特定的功能。划分模块对于解决大型复杂的问题是非常必要的,可以大大降低解决问题型复杂的问题是非常必要的,可以大大降低解决问题的难度。的难度。3本讲稿第三页,共六十四页 为为了了说说明明这这一一点点,可可对对问问题题复复杂杂性性、开开发发工工作作量量和和模模块块数数之之间间的的关关系系进进行行以以下下推推理理。首首先先,设设C(x)为为问问题题x所所对对应应的的复复杂杂度度函函数数,E(x)为为解解决决问问题题x所所需需要要的的工工作作量量函函数数。对对于两
5、个问题于两个问题P1和和P2,如果:,如果:C(P1)C(P2)即问题即问题P1的复杂度比的复杂度比P2高,则显然有:高,则显然有:E(P1)E(P2)即解决问题即解决问题P1比比P2所需的工作量大。所需的工作量大。在人们解决问题的过程中,发现存在有另一个有趣的规律:在人们解决问题的过程中,发现存在有另一个有趣的规律:C(P1+P2)C(P1)+C(P2)即即解解决决由由多多个个问问题题复复合合而而成成的的大大问问题题的的复复杂杂度度大大于于单单独独解解决决各各个个问问题题的的复复杂杂度度之之和和。也也就就是是说说,对对于于一一个个复复杂杂问问题题,将将其其分分解解成成多多个小问题来分别解决比
6、较容易。由此可以推出:个小问题来分别解决比较容易。由此可以推出:E(P1+P2)E(P1)+E(P2)即即将将复复杂杂问问题题分分解解成成若若干干个个小小问问题题,各各个个击击破破,所需要的工作量小于直接解决复杂问题所需的工作量。所需要的工作量小于直接解决复杂问题所需的工作量。根据上面的推理,可以得到这样一个结论:模块化可以降低解决问题的复杂度,根据上面的推理,可以得到这样一个结论:模块化可以降低解决问题的复杂度,从而降低系统开发的工作量。从而降低系统开发的工作量。4本讲稿第四页,共六十四页但但是是不不是是模模块块划划分分得得越越多多越越好好呢呢?虽虽然然增增加加程程序序中中的的模模块块数数可
7、可以以降降低低开开发发每每个个模模块块的的工工作作量量,但但同同时时却却增增加加了了设设计计模模块块接接口口的的工工作作量量。如如图图6-1所所示示表表达达了了模模块块数数与与系系统统开开发发成成本本之之间间的的关关系系,可可以以看看出出当当划划分分的的模模块块数数处处于于最最小小成成本本区区时时,开开发发系系统统的的总总成成本本最最低低。虽虽然然目目前前还还不不能能精精确确地地算算出出M M的的数数值值,但但是是在在考考虑虑程程序序模模块块化化的的时时候候,总总成成本本曲曲线线确确实实是是有有用用的的指指南南。下下面面即即将将介介绍绍的的模模块独立性原理和启发规则,可以在一定程度上帮助决定合
8、适的模块数目。块独立性原理和启发规则,可以在一定程度上帮助决定合适的模块数目。图图6-1模块数与系统开发成本模块数与系统开发成本 5本讲稿第五页,共六十四页 采用模块化设计原理可以带来以下好处。采用模块化设计原理可以带来以下好处。(1)模模块块化化使使系系统统结结构构清清晰晰,容容易易设设计计也也容容易易阅阅读读和理解。和理解。(2)程程序序错错误误通通常常局局限限在在有有关关的的模模块块及及它它们们之之间间的的接接口口中中,所所以以模模块块化化能能使使系系统统容容易易测测试试和和调调试试,从从而而有助于提高系统的可靠性。有助于提高系统的可靠性。(3)系系统统的的变变动动往往往往只只涉涉及及少
9、少数数几几个个模模块块,所所以以模模块化还能够提高系统的可修改性。块化还能够提高系统的可修改性。(4)模模块块化化使使得得一一个个复复杂杂的的大大型型程程序序可可以以由由许许多多程程序序员员分分工工编编写写,并并且且可可以以进进一一步步分分配配技技术术熟熟练练的的程程序序员编写困难的模块,有助于系统开发工程的组织管理。员编写困难的模块,有助于系统开发工程的组织管理。(5)模块化还有利于提高程序代码的可重用性。)模块化还有利于提高程序代码的可重用性。6本讲稿第六页,共六十四页 2抽象原理抽象原理抽象是人类在解决复杂问题时经常采用的一种思维抽象是人类在解决复杂问题时经常采用的一种思维方式,它是指将
10、现实世界中具有共性的一类事物的相似方式,它是指将现实世界中具有共性的一类事物的相似的、本质的方面集中概括起来,而暂时忽略它们之间的的、本质的方面集中概括起来,而暂时忽略它们之间的细节差异。在系统开发中运用抽象的概念,可以将复杂细节差异。在系统开发中运用抽象的概念,可以将复杂问题的求解过程分层,在不同的抽象层上实现难度的分问题的求解过程分层,在不同的抽象层上实现难度的分解。在抽象级别较高的层次上,可以将琐碎的细节信息解。在抽象级别较高的层次上,可以将琐碎的细节信息暂时隐藏起来,以利于解决系统中的全局性的问题。暂时隐藏起来,以利于解决系统中的全局性的问题。结构化程序设计中自顶向下、逐步求精的模块划
11、分结构化程序设计中自顶向下、逐步求精的模块划分思想正是人类思维中运用抽象方法解决复杂问题的体现。思想正是人类思维中运用抽象方法解决复杂问题的体现。系统结构中顶层的模块抽象级别最高,控制并协调系统系统结构中顶层的模块抽象级别最高,控制并协调系统的主要功能且影响全局;系统结构中位于底层的模块抽的主要功能且影响全局;系统结构中位于底层的模块抽象级别最低,具体实现数据的处理过程。采用自顶向下、象级别最低,具体实现数据的处理过程。采用自顶向下、由抽象到具体的思维方式,不但降低了系统开发中每个由抽象到具体的思维方式,不但降低了系统开发中每个阶段的工作难度,简化了系统的设计和实现过程,还有阶段的工作难度,简
12、化了系统的设计和实现过程,还有助于提高系统的可读性、可测试性和可维护性。此外,助于提高系统的可读性、可测试性和可维护性。此外,在程序设计中运用抽象的方法还能够提高代码的可重用在程序设计中运用抽象的方法还能够提高代码的可重用性。性。7本讲稿第七页,共六十四页 3信息隐蔽和局部化原理信息隐蔽和局部化原理应应用用模模块块化化设设计计原原理理时时,自自然然会会产产生生的的一一个个问问题题是是:“为为了了得得到到最最好好的的一一组组模模块块,应应该该怎怎样样分分解解系系统统呢呢?”信信息息隐隐蔽蔽原原理理指指出出:应应该该这这样样设设计计和和确确定定模模块块,使使得得一一个个模模块块内内包包含含的的信信
13、息息(过过程程和和数数据据)对对于于不不需需要要这这些些信信息息的的模模块块来来说说,是是不不能能访访问问的的。这这一一原原理理是是由由D.L.Parnas在在1972年年提提出出的的,也也就就是是说说有有效效的的模模块块化化可可以以通通过过一一组组独独立立的的模模块块来来实实现现,这这些些独独立立的的模模块块彼彼此此间间仅仅仅仅交交换换那那些些为为了了完完成成系系统统功功能能而而必必须须交交换换的的信信息息。这这一一指指导导思思想想的的目目的的是是为为了了提提高高模模块块的的独独立立性性,即即当当修修改改或或维维护护模模块块时时减减少少把把一一个个模模块块的的错错误误扩扩散散到到其其他他模模
14、块块中中去去的的机机会会。因因此此,信信息息隐隐蔽蔽简简化化了了系系统统结结构构的的复复杂杂度度,提提供供了了程程序序模块设计标准化的可能性。模块设计标准化的可能性。局部化的概念和信息隐蔽概念密切相关。局部化是局部化的概念和信息隐蔽概念密切相关。局部化是指把一些关系密切的系统元素物理地放的比较近,严格指把一些关系密切的系统元素物理地放的比较近,严格控制数据对象可以访问的范围。在模块中使用局部数据控制数据对象可以访问的范围。在模块中使用局部数据元素就是局部化的一个例子。显然,局部化有助于实现元素就是局部化的一个例子。显然,局部化有助于实现信息隐蔽。信息隐蔽。8本讲稿第八页,共六十四页 4逐步求精
15、原理逐步求精原理 逐逐步步求求精精是是人人类类解解决决复复杂杂问问题题时时采采用用的的基基本本方方法法,也也是是许许多多软软件件工工程程技技术术(例例如如,规规格格说说明明技技术术,设设计计和和实实现现技技术术)的的基基础础。可可以以把把逐逐步步求求精精定定义义为为:“为为了了能能集集中中精精力力解解决决主主要要问问题题而而尽尽量量推推迟迟对对问问题题细细节节的的考考虑虑。”逐步求精之所以如此重要,是因为人类的认知过程逐步求精之所以如此重要,是因为人类的认知过程遵守遵守Miller法则:一个人在任何时候都只能把注意力集中法则:一个人在任何时候都只能把注意力集中在(在(72)个知识块上。但是,在
16、开发系统的过程中,软)个知识块上。但是,在开发系统的过程中,软件工程师在一段时间内需要考虑的知识块数远远多于件工程师在一段时间内需要考虑的知识块数远远多于7。例如,一个程序通常不止使用例如,一个程序通常不止使用7个数据,一个用户也往往个数据,一个用户也往往有不止有不止7个方面的需求。逐步求精方法的强大作用就在于,个方面的需求。逐步求精方法的强大作用就在于,它能帮助软件工程师把精力集中在与当前开发阶段最相它能帮助软件工程师把精力集中在与当前开发阶段最相关的那些方面上,而忽略那些对整体解决方案来说虽然关的那些方面上,而忽略那些对整体解决方案来说虽然是必要的,然而目前还不需要考虑的细节,这些细节将是
17、必要的,然而目前还不需要考虑的细节,这些细节将留到以后再考虑。留到以后再考虑。Miller法则是人类智力的基本局限,我法则是人类智力的基本局限,我们不可能战胜自己的自然本性,只能接受这个事实,承们不可能战胜自己的自然本性,只能接受这个事实,承认自身的局限性,并在这个前提下尽我们的最大努力工认自身的局限性,并在这个前提下尽我们的最大努力工作。作。9本讲稿第九页,共六十四页5模块独立性原理模块独立性原理模模块块独独立立性性概概括括了了把把系系统统划划分分为为模模块块时时要要遵遵守守的的准准则则,也也是是判判断断模模块块构构造造是是不不是是合合理理的的标标准准。模模块块独独立立性性是是指指每每个个模
18、模块块只只完完成成系系统统要要求求的的独独立立的的子子功功能能,并且与其他模块的联系最少且接口简单。并且与其他模块的联系最少且接口简单。模模块块独独立立性性可可以以从从两两个个方方面面来来衡衡量量:模模块块本本身身的的内内聚聚和和模模块块之之间间的的耦耦合合。前前者者反反映映的的是是模模块块内内部部各各个个成成分分之之间间的的联联系系,所所以以也也称称块块内内联联系系;后后者者反反映映的的是是一一个个模模块块与与其其他他模模块块之之间间的的联联系系,所所以以又又称称块块间间联联系系。模模块块的的独独立立性性越越高高,则则块块内内联联系系越越强强,块块间间联联系系越越弱弱,因此必须尽可能得设计出
19、高内聚低耦合的模块。因此必须尽可能得设计出高内聚低耦合的模块。10本讲稿第十页,共六十四页1)内聚)内聚模模块块的的内内聚聚是是指指模模块块内内部部各各成成分分间间联联系系的的紧紧密密程程度度。一一个个模模块块内内部部各各成成分分之之间间的的联联系系越越紧紧密密,该该模模块块独独立立性性越越高高。按按照由弱到强的顺序,把模块的内聚分为照由弱到强的顺序,把模块的内聚分为7种类型,如图种类型,如图6-2所示。所示。图图6-2内聚强度的划分内聚强度的划分11本讲稿第十一页,共六十四页 (1 1)偶然性偶然性内聚内聚 当当几几个个模模块块内内正正好好有有一一段段代代码码是是相相同同的的,将将它它们们抽
20、抽取取出出来来形形成成单单独独的的模模块块,即即偶偶然然性性内内聚聚模模块块。例例如如几几个个模模块块都都要要执执行行“读读A A”的的操操作作,为为避避免免重重复复书书写写而而将将这这些些操操作作汇汇成成一一个个模模块块。偶偶然然性性内内聚聚是是内内聚聚程程度度最最低低的的一一种种,具具有有偶偶然然性性内内聚聚的的模模块块独独立立性性差差,不不容容易易理理解解和和修修改改,会会给给系系统统开开发发带带来来很很大大的的困困扰扰,出出错错的的机机率率要要比比其其他他类类型型的的模模块块大大得得多多,因因此此在系统设计时应尽量避免。在系统设计时应尽量避免。12本讲稿第十二页,共六十四页(2)逻辑性
21、内聚)逻辑性内聚逻逻辑辑性性内内聚聚指指模模块块内内执执行行几几个个逻逻辑辑上上相相似似的的功功能能,通通过过参参数数确确定定该该模模块块完完成成哪哪一一个个功功能能。如如将将产产生生各各种种类类型型错错误误的的信信息息输输出出放放在在一一个个模模块块,或或将将从从不不同同设设备备上上的的输输入入放放在在一一个个模模块块,形形成成一一种种单单入入口口多多功功能能模模块块。这这种种模模块块内内聚聚程程度度有有所所提提高高,各各部部分分之之间间在在功功能能上上有有相相互互关关系系,但但不不易易修修改改,因因为为当当某某个个调调用用模模块块要要求求修修改改此此模模块块公公用用代代码码时时,而而另另一
22、一些些调调用用模模块块又又不不要要求求修修改改。另另外外,调调用用时时需需要要进进行行控控制制参参数数的的传传递递,造造成成模模块块间间的的控控制制耦耦合合,而而且且在在调调用用此此模块时,不用的部分也占据了主存,从而降低了系统效率。模块时,不用的部分也占据了主存,从而降低了系统效率。13本讲稿第十三页,共六十四页(3)时间性内聚)时间性内聚若若一一个个模模块块包包含含了了需需要要在在同同一一时时间间段段中中执执行行的的多多个个任任务务,则则称称该该模模块块的的内内聚聚为为时时间间性性内内聚聚。例例如如,将将多多个个变变量量的的初初始始化化放放在在同同一一个个模模块块中中实实现现,或或将将需需
23、要要同同时时使使用用的的多多个个库库文文件件的的打打开开操操作作放放在在同同一一个个模模块块中中,都都会会产产生生时时间间性性内内聚聚的的模模块块。由由于于时时间间性性内内聚聚模模块块中中的的各各个个部部分分在在时时间间上上的的联联系系,其其内内聚聚程程度度比比逻逻辑辑性性内内聚聚高高一一些些。但但这这样样的的模模块块往往往往会会和和其其他他相相关关模块有着紧密的联系,因而会造成耦合性的增加。模块有着紧密的联系,因而会造成耦合性的增加。(4)过程性内聚)过程性内聚当当一一个个模模块块中中包包含含的的一一组组任任务务必必须须按按照照某某一一特特定定的的次次序序执执行行时时,就就称称为为过过程程性
24、性内内聚聚模模块块。如如用用高高斯斯消消去去法法解解线线形形方方程程组组的的流流程程为为:建建立立方方程程组组系系数数矩矩阵阵高高斯斯消消去去回回代代,将将其纳入一个模块中就形成了一个过程性内聚模块。其纳入一个模块中就形成了一个过程性内聚模块。14本讲稿第十四页,共六十四页(5)通信性内聚)通信性内聚如果一个模块内各功能部分都使用了相同的输入数据,如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信性内聚模块。如或产生了相同的输出数据,则称之为通信性内聚模块。如一个模块完成一个模块完成“建表建表”、“查表查表”两部分功能,都使用同两部分功能,都使用同一数据结构一
25、数据结构名字表;又如一个模块完成生产日报表、名字表;又如一个模块完成生产日报表、周报表和月报表,都使用同一数据周报表和月报表,都使用同一数据日产量。通信性内日产量。通信性内聚的模块各部分都紧密相关于同一数据聚的模块各部分都紧密相关于同一数据(或者数据结构或者数据结构),所以内聚性要高于前几种类型。同时,如果把某一数据结所以内聚性要高于前几种类型。同时,如果把某一数据结构、文件及设备等操作都放在一个模块内,可达到信息隐构、文件及设备等操作都放在一个模块内,可达到信息隐藏的作用。藏的作用。15本讲稿第十五页,共六十四页 (6 6)顺序性内聚顺序性内聚若一个模块中的各个部分都与同一个功能密切相若一个
26、模块中的各个部分都与同一个功能密切相关,并且必须按照先后顺序执行关,并且必须按照先后顺序执行(通常前一个部分的输通常前一个部分的输出数据就是后一个部分的输入数据出数据就是后一个部分的输入数据),则称该模块的内,则称该模块的内聚为顺序性内聚。例如,在一个处理学生成绩的模块聚为顺序性内聚。例如,在一个处理学生成绩的模块中,前一个部分根据成绩统计出及格的学生人数,后中,前一个部分根据成绩统计出及格的学生人数,后一个部分根据及格人数计算出学生的及格率。由于顺一个部分根据及格人数计算出学生的及格率。由于顺序性内聚模块中的各个部分在功能和执行顺序上都密序性内聚模块中的各个部分在功能和执行顺序上都密切相关,
27、因此内聚程度很高且易于理解。切相关,因此内聚程度很高且易于理解。16本讲稿第十六页,共六十四页 (7 7)功能)功能性性内聚内聚 一个模块中各个部分都是为了完成某一具体功能一个模块中各个部分都是为了完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可为了完成一项具体功能而协同工作,紧密联系,不可分割的,则称该模块为功能性内聚模块。如分割的,则称该模块为功能性内聚模块。如“求一组求一组数的最大值数的最大值”这样一个单一功能的模块。功能性内聚这样一个单一功能的模块。功能性内聚是所有内聚中内聚程度最
28、高的一种,功能性内聚的模是所有内聚中内聚程度最高的一种,功能性内聚的模块易理解、易修改,有利于实现模块的重用,从而提块易理解、易修改,有利于实现模块的重用,从而提高了系统开发的效率。高了系统开发的效率。17本讲稿第十七页,共六十四页综上所述,综上所述,对于内聚应该采取这样的设对于内聚应该采取这样的设计原则:计原则:禁用偶然性禁用偶然性内聚和逻辑内聚和逻辑性性内聚,限制内聚,限制使用时间使用时间性性内聚,少用过程内聚,少用过程性性内聚和内聚和通信性内通信性内聚,提倡使用顺序性内聚和聚,提倡使用顺序性内聚和功能功能性性内聚。内聚。18本讲稿第十八页,共六十四页 2 2)耦合)耦合模模块块的的耦耦合
29、合是是指指模模块块之之间间相相互互联联系系的的程程度度。相相互互联联系系复复杂杂的的模模块块耦耦合合度度强强,模模块块独独立立性性低低;相相互互联联系系简简单单的的模模块块耦耦合合度度弱弱,模模块块独独立立性性高高。按按照照由由弱弱到到强强的顺序,把的顺序,把模块的模块的耦合也耦合也分为分为7 7种类型,如图种类型,如图6-36-3所示。所示。图图6-3耦合强度的划分耦合强度的划分19本讲稿第十九页,共六十四页 (1 1)非直接耦合)非直接耦合 非非直直接接耦耦合合是是指指两两个个模模块块之之间间没没有有直直接接关关系系,相相互互之之间间没没有有信信息息传传递递,它它们们之之间间的的联联系系完
30、完全全是是通通过过主主模模块块的的控控制制和和调调用用来来实实现现的的。因因此此,模模块块间间的的这这种种耦耦合性最弱,但模块独立性最高。合性最弱,但模块独立性最高。(2 2)数据耦合)数据耦合 数数据据耦耦合合是是指指若若两两个个模模块块之之间间仅仅通通过过模模块块参参数数交交换换信信息息,且且交交换换的的信信息息全全部部为为简简单单数数据据信信息息,相相当当于于高高级级语语言言中中的的值值传传递递,则则称称这这种种耦耦合合为为数数据据耦耦合合。数数据据耦耦合合的的耦耦合合程程度度较较低低,模模块块的的独独立立性性较较高高。通通常常软软件系统中都包含有数据耦合。件系统中都包含有数据耦合。20
31、本讲稿第二十页,共六十四页(3)特征耦合)特征耦合特特征征耦耦合合是是指指两两个个模模块块之之间间传传递递的的是是数数据据结结构构。其其实实模模块块间间传传递递的的是是这这个个数数据据结结构构的的地地址址,两两个个模模块块必必须须清清楚楚这这些些数数据据结结构构,并并按按要要求求对对其其进进行行操操作作,这这样样就就降降低低了了可可理理解解性性。可可采采用用“信信息息隐隐蔽蔽”的的方方法法,把把该该数数据据结结构构以以及及在在其其上上的的操操作作全全部部集集中中在在一一个个模模块块,就就可可消消除除这这种种耦耦合合,但但有有时时因因为为还还有有其其他他功功能能的的缘缘故故,特征耦合往往是不可避
32、免的。特征耦合往往是不可避免的。(4)控制耦合)控制耦合控控制制耦耦合合是是指指一一个个模模块块调调用用另另一一个个模模块块时时,传传递递的的是是控控制制变变量量(如如开开关关、标标志志等等),被被调调模模块块通通过过该该控控制制变变量量的的值值有有选选择择地地执执行行块块内内某某一一功功能能。因因此此被被调调模模块块内内应应具具有有多多个个功功能能,哪哪个个功功能能起起作作用用受受其其调调用用模模块块的的控控制制。控控制制耦耦合合增增加加了了理理解解、编编程程及及修修改改的的复复杂杂性性,调调用用模模块块必必须须知知道道被被调调模模块块内内部部的的逻逻辑辑关关系系,即即被被调调模模块块处处理
33、理细细节节不不能能“信信息息隐隐藏藏”,从从而而降降低低了了模模块块的的独立性。独立性。21本讲稿第二十一页,共六十四页 (5 5)外部耦合)外部耦合 外部耦合外部耦合是指是指一组模块访问同一个全局变量。一组模块访问同一个全局变量。(6 6)公共耦合)公共耦合 公公共共耦耦合合是是指指一一组组模模块块访访问问同同一一个个全全局局性性数数据据结结构构。如如果果在在模模块块之之间间共共享享的的数数据据很很多多,且且通通过过参参数数的的传传递递很很不不方方便便时时,才才使使用用公公共共耦耦合合,因因为为公公共共耦耦合合会会引起以下问题:引起以下问题:耦耦合合的的复复杂杂程程度度随随模模块块的的个个数
34、数增增加加而而增增加加,无无法法控控制制各各个个模模块块对对公公共共数数据据的的存存取取,若若某某个个模模块块有有错错,可可通通过过公公共共区区将将错错误误延延伸伸到到其其他他模模块块,则则会会影影响响到到系系统的可靠性。统的可靠性。使使系系统统的的可可维维护护性性变变差差。若若某某一一模模块块修修改改了了公公共区的数据,则会影响到与此有关的所有模块。共区的数据,则会影响到与此有关的所有模块。降低了系统的可理解性。因为各个模块使用公降低了系统的可理解性。因为各个模块使用公共区的数据,使用方式往往是隐含的,某些数据被哪共区的数据,使用方式往往是隐含的,某些数据被哪些模块共享,不易很快搞清。些模块
35、共享,不易很快搞清。22本讲稿第二十二页,共六十四页 (7 7)内容耦合)内容耦合 如如果果发发生生下下列列情情形形,两两个个模模块块之之间间就就发发生生了了内内容容耦合。耦合。l l一个模块可以直接访问另一个模块的内部数据;一个模块可以直接访问另一个模块的内部数据;l l一个模块不通过正常入口转到另一模块内部;一个模块不通过正常入口转到另一模块内部;l l两两个个模模块块有有一一部部分分程程序序代代码码重重叠叠(只只可可能能出出现现在汇编语言中在汇编语言中);l l一个模块有多个入口。一个模块有多个入口。内容耦合是最高程度的耦合,也是最差的耦合。内容耦合是最高程度的耦合,也是最差的耦合。它会
36、使因模块间的联系过于紧密而对后期的开发和维它会使因模块间的联系过于紧密而对后期的开发和维护工作带来很大的麻烦。护工作带来很大的麻烦。23本讲稿第二十三页,共六十四页综上所述,综上所述,对于耦合应该采取这样的对于耦合应该采取这样的设计原则:尽量使用非直接耦合、数据耦设计原则:尽量使用非直接耦合、数据耦合和特征耦合,少用控制耦合和外部耦合,合和特征耦合,少用控制耦合和外部耦合,限制公共耦合,完全不用内容耦合。限制公共耦合,完全不用内容耦合。24本讲稿第二十四页,共六十四页 2.模块的作用域应处于其控制域范围之内模块的作用域应处于其控制域范围之内 模模块块的的作作用用域域是是指指受受该该模模块块内内
37、一一个个判判定定条条件件影影响响的的所所有有模模块块范范围围;模模块块的的控控制制域域是是指指该该模模块块本本身身以以及及所所有有该该模模块块的的下下属属模模块块(包包括括该该模模块块可可以以直直接接调调用用的的下下级级模模块块和和可可以以间间接接调调用用的的更更下下层层的的模模块块)。例例如如,如如图图6-4所所示示,模模块块C的的控控制制域域为为模模块块C、E和和F;若若在在模模块块C中中存存在在一一个个对对模模块块D、E和和F均均有有影影响响的的判判定定条条件件,即即模模块块C的的作作用用域域为为模模块块C、D、E和和F(图图中中带带阴阴影影的的模模块块),则则显显然然模模块块C的的作作
38、用用域域超超出出了了其其控控制制域域。由由于于模模块块D在在模模块块C的的作作用用域域中中,因因此此模模块块C对对模模块块D的的控控制制信信息息必必然然要要通通过过上上级级模模块块B进进行行传传递递,这这样样不不但但会会增增加加模模块块间间的的耦耦合合性性,而而且且会会给给模模块块的的维维护护和和修修改改带带来来麻麻烦烦(若若要要修修改改模模块块C,可可能能会会对对不不在在它它控控制制域域中中的的模模块块D造造成成影影响响)。因因此此,系系统统设设计计时时应应使使各各个个模模块块的的作作用用域域处于其控制域范围之内。处于其控制域范围之内。25本讲稿第二十五页,共六十四页 若发现不符合此设计原则
39、的模块,可通过下面的方法进行改进:若发现不符合此设计原则的模块,可通过下面的方法进行改进:将将判判定定位位置置上上移移。如如将将图图6-46-4中中的的模模块块C C中中的的判判定定条条件件上上移移到到上上级级模模块块B B中中或将模块或将模块C C整个合并到模块整个合并到模块B B中。中。将将超超出出作作用用域域的的模模块块下下移移。如如将将图图6-46-4中中的的模模块块D D移移至至模模块块C C的下一层上,使模块的下一层上,使模块D D处于模块处于模块C C的控制域中的控制域中 。图图6-4 6-4 模块的作用域和控制域模块的作用域和控制域 26本讲稿第二十六页,共六十四页 3.3.系
40、统结构中的深度和宽度不宜过大系统结构中的深度和宽度不宜过大 所所谓谓深深度度是是指指系系统统体体系系结结构构中中控控制制的的层层数数,它它能能够够粗粗略略地地反反映映出出软软件件系系统统的的规规模模和和复复杂杂程程度度;所所谓谓宽宽度度是是指指系系统统体体系系结结构构内内同同一一层层次次上上模模块块个个数数的的最最大大值值,通通常常宽宽度度越越大大的的系系统统越越复复杂杂。例例如如,在在如如图图6-56-5所所示示的的系统结构图中,深度为系统结构图中,深度为5 5,宽度为,宽度为8 8。图图6-5 6-5 系统结构图示例系统结构图示例27本讲稿第二十七页,共六十四页 4模块应具有高扇入和适当的
41、扇出模块应具有高扇入和适当的扇出 对一模块来说,扇入是指有多少上级模块直接调用它,如图对一模块来说,扇入是指有多少上级模块直接调用它,如图6-6(a)所示,模块所示,模块M的扇入数为的扇入数为n;扇出是指一个模块可以直接调用的;扇出是指一个模块可以直接调用的下级模块数,如图下级模块数,如图6-6(b)所示,模块所示,模块M的扇出数为的扇出数为k。模块的扇入越。模块的扇入越大,则说明共享该模块的上级模块数越多,或者说该模块在程序中的大,则说明共享该模块的上级模块数越多,或者说该模块在程序中的重用性越高;而对于扇出,根据实践经验,在设计良好的典型系统中,重用性越高;而对于扇出,根据实践经验,在设计
42、良好的典型系统中,模块的平均扇出通常为模块的平均扇出通常为34。(a)扇入扇入 (b)扇出扇出图图6-6 模块的扇入和扇出模块的扇入和扇出 28本讲稿第二十八页,共六十四页 5.保持适中的模块规模和复杂度保持适中的模块规模和复杂度 程程序序中中模模块块的的规规模模过过大大,会会降降低低程程序序的的可可读读性性;而而模模块块规规模模过过小小,势势必必会会导导致致程程序序中中的的模模块块数数目目过过多多,增增加加接接口口的的复复杂杂性性。对对于于模模块块的的适适当当规规模模并并没没有有严严格格的的规规定定,但但普普遍遍的的观观点点是是模模块块中中的的语语句句数数最最好好保保持持在在50150条条语
43、语句句左左右右,可可以以用用12页页打打印印纸纸打打印印,便便于于人人们们阅阅读读与与研研究究。为为了了使使模模块块的的规规模模适适中中,在在保保证证模模块块独独立立性性的的前前提提下下,可可对对程程序序中中规规模模过过小小的的模模块块进进行合并或对规模过大的模块进行分解。行合并或对规模过大的模块进行分解。模块的复杂度的限制是基于模块的复杂度的限制是基于McCade复杂度度量方复杂度度量方法提出的,该方法是计算由程序流程图得到的程序图法提出的,该方法是计算由程序流程图得到的程序图中的环的个数中的环的个数V(G),实践表明),实践表明V(G)10是模块是模块规模和复杂度的合理上限,关于模块的复杂
44、度将会在规模和复杂度的合理上限,关于模块的复杂度将会在第七章介绍。第七章介绍。29本讲稿第二十九页,共六十四页 6.降低模块接口的复杂度降低模块接口的复杂度 复杂的模块接口是导致系统出现错误的主要原因复杂的模块接口是导致系统出现错误的主要原因之一,因此在系统设计中应尽量使模块接口简单清晰。之一,因此在系统设计中应尽量使模块接口简单清晰。降低模块的接口复杂度,可以提高系统的可读性,减降低模块的接口复杂度,可以提高系统的可读性,减少出现错误的可能性,并有利于系统的测试和维护。少出现错误的可能性,并有利于系统的测试和维护。例如,求一元二次方程的根模块例如,求一元二次方程的根模块QUAD_ROOT(T
45、BL,X),其中其中TBL和和X分别是系数组参分别是系数组参数和根数组参数,就不如将接口的参数简单化,模块数和根数组参数,就不如将接口的参数简单化,模块变为变为QUAD_ROOT(A,B,C,X1,X2),这样容易理,这样容易理解还不容易发生传递错误。解还不容易发生传递错误。30本讲稿第三十页,共六十四页 7设计单入口单出口的模块设计单入口单出口的模块 这这条条规规则则告告诫诫软软件件工工程程师师不不要要使使模模块块间间出出现现内内容容耦耦合合,设设计计出出的的每每一一个个模模块块都都应应该该只只有有一一个个入入口口一一个个出出口口,不不要要随随便便使使用用GOTO语语句句。当当控控制制流流从
46、从顶顶部部进进入入模模块块并并且且从从底底部部退退出出来来时时,系系统统是是比比较较容容易易理理解解的的,因此也是比较容易维护的。因此也是比较容易维护的。8模块功能应该可以预测模块功能应该可以预测 要求设计出来的模块的功能应该能够预测,但也要求设计出来的模块的功能应该能够预测,但也要防止模块功能过分局限。要防止模块功能过分局限。31本讲稿第三十一页,共六十四页 6.2 总体设计概述总体设计概述 6.2.1 总体设计的目的和任务总体设计的目的和任务 总总体体设设计计的的基基本本目目的的就就是是回回答答“概概括括地地说说,系系统统应应该该如如何何实实现现?”这这个个问问题题,因因此此,总总体体设设
47、计计又又称称为为概概要设计或初步设计。要设计或初步设计。总体设计的基本任务包括:总体设计的基本任务包括:1.设计软件系统结构设计软件系统结构(简称软件结构简称软件结构)2.数据结构及数据库设计数据结构及数据库设计 3.编写总体设计文档编写总体设计文档 4.评审评审32本讲稿第三十二页,共六十四页 6.2.2 总体设计说明书总体设计说明书 总总体体设设计计说说明明书书是是总总体体设设计计阶阶段段结结束束时时提提交交的的技技术文档,它的主要内容如下:术文档,它的主要内容如下:(1)引言:编写目的、背景、定义和参考资料。引言:编写目的、背景、定义和参考资料。(2)总总体体设设计计:需需求求规规定定、
48、运运行行环环境境、基基本本设设计计概概念、处理流程和结构。念、处理流程和结构。(3)接接口口设设计计:用用户户接接口口、外外部部接接口口和和内内部部接接口口。(4)运运行行设设计计:运运行行模模块块的的组组合合、运运行行控控制制和和运运行行时时间。间。(5)系统数据结构设计:逻辑结构设计、物理结构系统数据结构设计:逻辑结构设计、物理结构设计、数据结构与程序的关系。设计、数据结构与程序的关系。(6)系统出错处理设计:出错信息、补救措施和系系统出错处理设计:出错信息、补救措施和系统恢复设计。统恢复设计。33本讲稿第三十三页,共六十四页 6.2.3 总体设计的评审总体设计的评审 总体设计完成之后必须
49、提交评审,总体设计评审包括的内容有:总体设计完成之后必须提交评审,总体设计评审包括的内容有:(1)可可追追溯溯性性:确确认认该该设设计计是是否否覆覆盖盖了了所所有有已已确确定定的的系系统统需需求求,系系统统每每一成份是否可追溯到某一项需求;一成份是否可追溯到某一项需求;(2)接接口口:确确认认该该系系统统的的内内部部接接口口与与外外部部接接口口是是否否已已经经明明确确定定义义。模模块块是否满足高内聚和低耦合的要求,模块作用范围是否在其控制范围之内;是否满足高内聚和低耦合的要求,模块作用范围是否在其控制范围之内;(3)风险:确认该设计在现有技术条件下和预算范围内是否能按时实现;)风险:确认该设计
50、在现有技术条件下和预算范围内是否能按时实现;(4)实用性:确认该设计对于需求的解决方案是否实用;)实用性:确认该设计对于需求的解决方案是否实用;(5)技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达;)技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达;(6)可维护性:确认该设计是否考虑了方便未来的维护;)可维护性:确认该设计是否考虑了方便未来的维护;(7)质量:确认该设计是否表现出良好的质量特征;)质量:确认该设计是否表现出良好的质量特征;(8)各各种种选选择择方方案案:看看是是否否考考虑虑过过其其它它方方案案,比比较较各各种种选选择择方方案案的的标准是什么;标准是什么;(9)