第6章信息系统的总体设计课件.ppt

上传人(卖家):三亚风情 文档编号:2271855 上传时间:2022-03-28 格式:PPT 页数:65 大小:1.08MB
下载 相关 举报
第6章信息系统的总体设计课件.ppt_第1页
第1页 / 共65页
第6章信息系统的总体设计课件.ppt_第2页
第2页 / 共65页
第6章信息系统的总体设计课件.ppt_第3页
第3页 / 共65页
第6章信息系统的总体设计课件.ppt_第4页
第4页 / 共65页
第6章信息系统的总体设计课件.ppt_第5页
第5页 / 共65页
点击查看更多>>
资源描述

1、信息系统分析与设计1教学内容教学内容 系统设计的基本原理包括模块化设计原理、抽象系统设计的基本原理包括模块化设计原理、抽象原理、信息隐蔽和局部化原理、逐步求精原理、模块原理、信息隐蔽和局部化原理、逐步求精原理、模块独立性原理;系统设计的优化规则;总体设计的目的、独立性原理;系统设计的优化规则;总体设计的目的、任务、文档、评审以及图形工具;面向数据流的总体任务、文档、评审以及图形工具;面向数据流的总体设计方法设计方法结构化设计方法的过程。结构化设计方法的过程。教学要求教学要求 1 1熟练掌握:模块独立性原理的衡量标准:内聚熟练掌握:模块独立性原理的衡量标准:内聚和耦合;系统设计的优化规则;结构化

2、设计方法中的和耦合;系统设计的优化规则;结构化设计方法中的变换分析过程。变换分析过程。 2 2一般掌握:模块化设计原理、逐步求精原理;一般掌握:模块化设计原理、逐步求精原理;总体设计的目的、任务以及图形工具;结构化设计方总体设计的目的、任务以及图形工具;结构化设计方法中的事务分析及混合结构分析过程。法中的事务分析及混合结构分析过程。 3 3了解:抽象原理、信息隐蔽和局部化原理;总了解:抽象原理、信息隐蔽和局部化原理;总体设计的文档和评审。体设计的文档和评审。信息系统分析与设计2 6.1 系统设计的基本原理和优化规则系统设计的基本原理和优化规则 6.1.1 系统设计的基本原理系统设计的基本原理

3、在系统设计过程中应该遵循一些基本原理,包括:在系统设计过程中应该遵循一些基本原理,包括:模块化设计原理、抽象原理、模块化设计原理、抽象原理、信息隐蔽和局部化原理信息隐蔽和局部化原理、逐步求精原理、模块独立性原理等。逐步求精原理、模块独立性原理等。 1模块化设计原理模块化设计原理 所谓模块是指具有相对独立性的,由数据说明、所谓模块是指具有相对独立性的,由数据说明、执行语句等程序对象构成的集合。程序中的每个模块执行语句等程序对象构成的集合。程序中的每个模块都需要单独命名,通过名字可实现对指定模块的访问。都需要单独命名,通过名字可实现对指定模块的访问。 模块化是指将整个程序划分为若干个模块,每个模块

4、化是指将整个程序划分为若干个模块,每个模块用于实现一个特定的功能。划分模块对于解决大模块用于实现一个特定的功能。划分模块对于解决大型复杂的问题是非常必要的,可以大大降低解决问题型复杂的问题是非常必要的,可以大大降低解决问题的难度。的难度。 信息系统分析与设计3 为了说明这一点,可对问题复杂性、开发工作量和模块数之间的关系为了说明这一点,可对问题复杂性、开发工作量和模块数之间的关系进行以下推理。首先,设进行以下推理。首先,设C(x)为问题为问题x所对应的复杂度函数,所对应的复杂度函数,E(x)为解决问为解决问题题x所需要的工作量函数。对于两个问题所需要的工作量函数。对于两个问题P1和和P2,如果

5、:,如果: 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、时减少把一个模块的错误扩散到其他模块中去的机会。因减少把一个模块的错误扩散到其他模块中去的机会。因此,信息隐蔽简化了系统结构的复杂度,提供了程序模此,信息隐蔽简化了系统结构的复杂度,提供了程序模块设计标准化的可能性。块设计标准化的可能性。 局部化的概念和信息隐蔽概念密切相关。局部化是局部化的概念和信息隐蔽概念密切相关。局部化是指把一些关系密切的系统元素物理地放的比较近,严格指把一些关系密切的系统元素物理地放的比较近,严格控制数据对象可以访问的范围。在模块中使用局部数据控制数据对象可以访问的范围。在模块中使用局部数据元素就是局部化的一个例子。显然,局部化有助于实现元素就是局部化的一个例子。显然,

15、局部化有助于实现信息隐蔽。信息隐蔽。 信息系统分析与设计8 4逐步求精原理逐步求精原理 逐步求精是人类解决复杂问题时采用的基本方法,逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术(例如,规格说明技术,设计和也是许多软件工程技术(例如,规格说明技术,设计和实现技术)的基础。可以把逐步求精定义为:实现技术)的基础。可以把逐步求精定义为:“为了能为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。集中精力解决主要问题而尽量推迟对问题细节的考虑。” 逐步求精之所以如此重要,是因为人类的认知过程逐步求精之所以如此重要,是因为人类的认知过程遵守遵守Miller法则:一个人在任何时候都只

16、能把注意力集中法则:一个人在任何时候都只能把注意力集中在(在(72)个知识块上。但是,在开发系统的过程中,)个知识块上。但是,在开发系统的过程中,软件工程师在一段时间内需要考虑的知识块数远远多于软件工程师在一段时间内需要考虑的知识块数远远多于7。例如,一个程序通常不止使用例如,一个程序通常不止使用7个数据,一个用户也往往个数据,一个用户也往往有不止有不止7个方面的需求。逐步求精方法的强大作用就在于,个方面的需求。逐步求精方法的强大作用就在于,它能帮助软件工程师把精力集中在与当前开发阶段最相它能帮助软件工程师把精力集中在与当前开发阶段最相关的那些方面上,而忽略那些对整体解决方案来说虽然关的那些方

17、面上,而忽略那些对整体解决方案来说虽然是必要的,然而目前还不需要考虑的细节,这些细节将是必要的,然而目前还不需要考虑的细节,这些细节将留到以后再考虑。留到以后再考虑。Miller法则是人类智力的基本局限,我法则是人类智力的基本局限,我们不可能战胜自己的自然本性,只能接受这个事实,承们不可能战胜自己的自然本性,只能接受这个事实,承认自身的局限性,并在这个前提下尽我们的最大努力工认自身的局限性,并在这个前提下尽我们的最大努力工作。作。 信息系统分析与设计9 5模块独立性原理模块独立性原理 模块独立性概括了把系统划分为模块时要遵守的模块独立性概括了把系统划分为模块时要遵守的准则,也是判断模块构造是不

18、是合理的标准。模块独准则,也是判断模块构造是不是合理的标准。模块独立性是指每个模块只完成系统要求的独立的子功能,立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。并且与其他模块的联系最少且接口简单。 模块独立性可以从两个方面来衡量:模块本身的模块独立性可以从两个方面来衡量:模块本身的内聚和模块之间的耦合。前者反映的是模块内部各个内聚和模块之间的耦合。前者反映的是模块内部各个成分之间的联系,所以也称块内联系;后者反映的是成分之间的联系,所以也称块内联系;后者反映的是一个模块与其他模块之间的联系,所以又称块间联系。一个模块与其他模块之间的联系,所以又称块间联系。模块

19、的独立性越高,则块内联系越强,块间联系越弱,模块的独立性越高,则块内联系越强,块间联系越弱,因此必须尽可能得设计出高内聚低耦合的模块。因此必须尽可能得设计出高内聚低耦合的模块。 信息系统分析与设计10 1)内聚)内聚 模块的内聚是指模块内部各成分间联系的紧密程模块的内聚是指模块内部各成分间联系的紧密程度。一个模块内部各成分之间的联系越紧密,该模块度。一个模块内部各成分之间的联系越紧密,该模块独立性越高。按照由弱到强的顺序,把模块的内聚分独立性越高。按照由弱到强的顺序,把模块的内聚分为为7种类型,如图种类型,如图6-2所示。所示。图图6-2 内聚强度的划分内聚强度的划分信息系统分析与设计11 (

20、1 1)偶然性偶然性内聚内聚 当几个模块内正好有一段代码是相同的,当几个模块内正好有一段代码是相同的,将它们抽取出来形成单独的模块,即将它们抽取出来形成单独的模块,即偶然性偶然性内内聚模块。例如几个模块都要执行聚模块。例如几个模块都要执行“读读A”A”的操作,的操作,为避免重复书写而将这些操作汇成一个模块。为避免重复书写而将这些操作汇成一个模块。偶然性内聚是内聚程度最低的一种,具有偶然偶然性内聚是内聚程度最低的一种,具有偶然性内聚的性内聚的模块独立性差,不容易理解模块独立性差,不容易理解和修改和修改,会给系统开发带来很大的困扰,出错的机率要会给系统开发带来很大的困扰,出错的机率要比其他类型的模

21、块大得多,因此在系统设计时比其他类型的模块大得多,因此在系统设计时应尽量避免。应尽量避免。 信息系统分析与设计12 (2)逻辑性内聚)逻辑性内聚 逻辑性内聚指模块内执行几个逻辑上相似的功能,逻辑性内聚指模块内执行几个逻辑上相似的功能, 通通过参数确定该模块完成哪一个功能。如将产生各种类型错过参数确定该模块完成哪一个功能。如将产生各种类型错误的信息输出放在一个模块,或将从不同设备上的输入放误的信息输出放在一个模块,或将从不同设备上的输入放在一个模块,形成一种单入口多功能模块。这种模块内聚在一个模块,形成一种单入口多功能模块。这种模块内聚程度有所提高,各部分之间在功能上有相互关系,但不易程度有所提

22、高,各部分之间在功能上有相互关系,但不易修改,因为当某个调用模块要求修改此模块公用代码时,修改,因为当某个调用模块要求修改此模块公用代码时,而另一些调用模块又不要求修改。另外,调用时需要进行而另一些调用模块又不要求修改。另外,调用时需要进行控制参数的传递,造成模块间的控制耦合,而且在调用此控制参数的传递,造成模块间的控制耦合,而且在调用此模块时,不用的部分也占据了主存,从而降低了系统效率。模块时,不用的部分也占据了主存,从而降低了系统效率。 信息系统分析与设计13 (3)时间性内聚)时间性内聚 若一个模块包含了需要在同一时间段中执行的多个任务,若一个模块包含了需要在同一时间段中执行的多个任务,

23、则称该模块的内聚为时间性内聚。例如,将多个变量的初始则称该模块的内聚为时间性内聚。例如,将多个变量的初始化放在同一个模块中实现,或将需要同时使用的多个库文件化放在同一个模块中实现,或将需要同时使用的多个库文件的打开操作放在同一个模块中,都会产生时间性内聚的模块。的打开操作放在同一个模块中,都会产生时间性内聚的模块。由于时间性内聚模块中的各个部分在时间上的联系,其内聚由于时间性内聚模块中的各个部分在时间上的联系,其内聚程度比逻辑性内聚高一些。但这样的模块往往会和其他相关程度比逻辑性内聚高一些。但这样的模块往往会和其他相关模块有着紧密的联系,因而会造成耦合性的增加。模块有着紧密的联系,因而会造成耦

24、合性的增加。 (4)过程性内聚)过程性内聚 当一个模块中包含的一组任务必须按照某一特定的次序当一个模块中包含的一组任务必须按照某一特定的次序执行时,就称为过程性内聚模块。如用高斯消去法解线形方执行时,就称为过程性内聚模块。如用高斯消去法解线形方程组的流程为:建立方程组系数矩阵程组的流程为:建立方程组系数矩阵高斯消去高斯消去回代,将回代,将其纳入一个模块中就形成了一个过程性内聚模块。其纳入一个模块中就形成了一个过程性内聚模块。 信息系统分析与设计14 (5)通信性内聚)通信性内聚 如果一个模块内各功能部分都使用了相同的输入数据,如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数

25、据,则称之为通信性内聚模块。如或产生了相同的输出数据,则称之为通信性内聚模块。如一个模块完成一个模块完成“建表建表”、“查表查表”两部分功能,都使用同两部分功能,都使用同一数据结构一数据结构名字表;又如一个模块完成生产日报表、名字表;又如一个模块完成生产日报表、 周报表和月报表,都使用同一数据周报表和月报表,都使用同一数据日产量。通信性内日产量。通信性内聚的模块各部分都紧密相关于同一数据聚的模块各部分都紧密相关于同一数据(或者数据结构或者数据结构),所以内聚性要高于前几种类型。同时,如果把某一数据结所以内聚性要高于前几种类型。同时,如果把某一数据结构、文件及设备等操作都放在一个模块内,可达到信

26、息隐构、文件及设备等操作都放在一个模块内,可达到信息隐藏的作用。藏的作用。 信息系统分析与设计15 (6 6)顺序性内聚顺序性内聚 若一个模块中的各个部分都与同一个功能密切相若一个模块中的各个部分都与同一个功能密切相关,并且必须按照先后顺序执行关,并且必须按照先后顺序执行( (通常前一个部分的输通常前一个部分的输出数据就是后一个部分的输入数据出数据就是后一个部分的输入数据) ),则称该模块的内,则称该模块的内聚为顺序性内聚。例如,在一个处理学生成绩的模块聚为顺序性内聚。例如,在一个处理学生成绩的模块中,前一个部分根据成绩统计出及格的学生人数,后中,前一个部分根据成绩统计出及格的学生人数,后一个

27、部分根据及格人数计算出学生的及格率。由于顺一个部分根据及格人数计算出学生的及格率。由于顺序性内聚模块中的各个部分在功能和执行顺序上都密序性内聚模块中的各个部分在功能和执行顺序上都密切相关,因此内聚程度很高且易于理解。切相关,因此内聚程度很高且易于理解。 信息系统分析与设计16 (7 7)功能)功能性性内聚内聚 一个模块中各个部分都是为了完成某一具体功能一个模块中各个部分都是为了完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可为了完成一项具体功能而协同工作,紧密联系,不可分割的,则称该模块为

28、功能性内聚模块。如分割的,则称该模块为功能性内聚模块。如“求一组求一组数的最大值数的最大值”这样一个单一功能的模块。功能性内聚这样一个单一功能的模块。功能性内聚是所有内聚中内聚程度最高的一种,功能性内聚的模是所有内聚中内聚程度最高的一种,功能性内聚的模块易理解、易修改,有利于实现模块的重用,从而提块易理解、易修改,有利于实现模块的重用,从而提高了系统开发的效率。高了系统开发的效率。 信息系统分析与设计17 综上所述,综上所述,对于内聚应该采取这样的对于内聚应该采取这样的设计原则:设计原则:禁用偶然性禁用偶然性内聚和逻辑内聚和逻辑性性内聚,内聚,限制使用时间限制使用时间性性内聚,少用过程内聚,少

29、用过程性性内聚和内聚和通信性内聚,提倡使用顺序性内聚和通信性内聚,提倡使用顺序性内聚和功能功能性性内聚。内聚。 信息系统分析与设计18 2 2)耦合)耦合 模块的耦合是指模块之间相互联系的程度。相互模块的耦合是指模块之间相互联系的程度。相互联系复杂的模块耦合度强,模块独立性低;相互联系联系复杂的模块耦合度强,模块独立性低;相互联系简单的模块耦合度弱,模块独立性高。按照由弱到强简单的模块耦合度弱,模块独立性高。按照由弱到强的顺序,把的顺序,把模块的模块的耦合也耦合也分为分为7 7种类型,如图种类型,如图6-36-3所示。所示。图图6-3 耦合强度的划分耦合强度的划分信息系统分析与设计19 (1

30、1)非直接耦合)非直接耦合 非直接耦合非直接耦合是指是指两个模块之间没有直接关系,相两个模块之间没有直接关系,相互之间没有信息传递,它们之间的联系完全是通过主互之间没有信息传递,它们之间的联系完全是通过主模块的控制和调用来实现的。模块的控制和调用来实现的。因此,模块间的这种耦因此,模块间的这种耦合性最弱,但模块独立性最高。合性最弱,但模块独立性最高。 (2 2)数据耦合)数据耦合 数据耦合是指若两个模块之间仅通过模块参数交数据耦合是指若两个模块之间仅通过模块参数交换信息,且交换的信息全部为简单数据信息,相当于换信息,且交换的信息全部为简单数据信息,相当于高级语言中的值传递,则称这种耦合为数据耦

31、合。数高级语言中的值传递,则称这种耦合为数据耦合。数据耦合的耦合程度较低,模块的独立性较高。通常软据耦合的耦合程度较低,模块的独立性较高。通常软件系统中都包含有数据耦合。件系统中都包含有数据耦合。信息系统分析与设计20 (3)特征耦合)特征耦合 特征耦合是指两个模块之间传递的是数据结构。特征耦合是指两个模块之间传递的是数据结构。其实模块间传递的是这个数据结构的地址,两个模块其实模块间传递的是这个数据结构的地址,两个模块必须清楚这些数据结构,并按要求对其进行操作,这必须清楚这些数据结构,并按要求对其进行操作,这样就降低了可理解性。可采用样就降低了可理解性。可采用“信息隐蔽信息隐蔽”的方法,的方法

32、,把该数据结构以及在其上的操作全部集中在一个模块,把该数据结构以及在其上的操作全部集中在一个模块,就可消除这种耦合,但有时因为还有其他功能的缘故,就可消除这种耦合,但有时因为还有其他功能的缘故,特征耦合往往是不可避免的。特征耦合往往是不可避免的。 (4)控制耦合)控制耦合 控制耦合是指一个模块调用另一个模块时,传递控制耦合是指一个模块调用另一个模块时,传递的是控制变量的是控制变量(如开关、如开关、 标志等标志等),被调模块通过该控,被调模块通过该控制变量的值有选择地执行块内某一功能。制变量的值有选择地执行块内某一功能。 因此被调模因此被调模块内应具有多个功能,哪个功能起作用受其调用模块块内应具

33、有多个功能,哪个功能起作用受其调用模块的控制。控制耦合增加了理解、编程及修改的复杂性,的控制。控制耦合增加了理解、编程及修改的复杂性,调用模块必须知道被调模块内部的逻辑关系,即被调调用模块必须知道被调模块内部的逻辑关系,即被调模块处理细节不能模块处理细节不能“信息隐藏信息隐藏”,从而降低了模块的,从而降低了模块的独立性。独立性。 信息系统分析与设计21 (5 5)外部耦合)外部耦合 外部耦合外部耦合是指是指一组模块访问同一个全局变量。一组模块访问同一个全局变量。 (6 6)公共耦合)公共耦合 公共耦合是指一组模块访问同一个全局性数据结公共耦合是指一组模块访问同一个全局性数据结构。如果在模块之间

34、共享的数据很多,且通过参数的构。如果在模块之间共享的数据很多,且通过参数的传递很不方便时,才使用公共耦合,因为公共耦合会传递很不方便时,才使用公共耦合,因为公共耦合会引起以下问题:引起以下问题: 耦合的复杂程度随模块的个数增加而增加,无耦合的复杂程度随模块的个数增加而增加,无法控制各个模块对公共数据的存取,若某个模块有错,法控制各个模块对公共数据的存取,若某个模块有错,可通过公共区将错误延伸到其他模块,可通过公共区将错误延伸到其他模块, 则会影响到系则会影响到系统的可靠性。统的可靠性。 使系统的可维护性变差。若某一模块修改了公使系统的可维护性变差。若某一模块修改了公共区的数据,则会影响到与此有

35、关的所有模块。共区的数据,则会影响到与此有关的所有模块。 降低了系统的可理解性。因为各个模块使用公降低了系统的可理解性。因为各个模块使用公共区的数据,使用方式往往是隐含的,某些数据被哪共区的数据,使用方式往往是隐含的,某些数据被哪些模块共享,不易很快搞清。些模块共享,不易很快搞清。 信息系统分析与设计22 (7 7)内容耦合)内容耦合 如果发生下列情形,两个模块之间就发生了内容如果发生下列情形,两个模块之间就发生了内容耦合。耦合。 l l 一个模块可以直接访问另一个模块的内部数据;一个模块可以直接访问另一个模块的内部数据; l l 一个模块不通过正常入口转到另一模块内部;一个模块不通过正常入口

36、转到另一模块内部; l l 两个模块有一部分程序代码重叠两个模块有一部分程序代码重叠( (只可能出现在只可能出现在汇编语言中汇编语言中) ); l l 一个模块有多个入口。一个模块有多个入口。 内容耦合是最高程度的耦合,也是最差的耦合。内容耦合是最高程度的耦合,也是最差的耦合。它会使因模块间的联系过于紧密而对后期的开发和维它会使因模块间的联系过于紧密而对后期的开发和维护工作带来很大的麻烦。护工作带来很大的麻烦。 信息系统分析与设计23 综上所述,综上所述,对于耦合应该采取这样对于耦合应该采取这样的设计原则:尽量使用非直接耦合、数的设计原则:尽量使用非直接耦合、数据耦合和特征耦合,少用控制耦合和

37、外据耦合和特征耦合,少用控制耦合和外部耦合,限制公共耦合,完全不用内容部耦合,限制公共耦合,完全不用内容耦合。耦合。 信息系统分析与设计24 2. 模块的作用域应处于其控制域范围之内模块的作用域应处于其控制域范围之内 模块的作用域是指受该模块内一个判定条件影响模块的作用域是指受该模块内一个判定条件影响的所有模块范围;模块的控制域是指该模块本身以及的所有模块范围;模块的控制域是指该模块本身以及所有该模块的下属模块所有该模块的下属模块(包括该模块可以直接调用的下包括该模块可以直接调用的下级模块和可以间接调用的更下层的模块级模块和可以间接调用的更下层的模块)。例如,如图。例如,如图6-4所示,模块所

38、示,模块C的控制域为模块的控制域为模块C、E和和F;若在模块;若在模块C中存在一个对模块中存在一个对模块D、E和和F均有影响的判定条件,均有影响的判定条件,即模块即模块C的作用域为模块的作用域为模块C、D、E和和F(图中带阴影的图中带阴影的模块模块),则显然模块,则显然模块C的作用域超出了其控制域。由于的作用域超出了其控制域。由于模块模块D在模块在模块C的作用域中,因此模块的作用域中,因此模块C对模块对模块D的控的控制信息必然要通过上级模块制信息必然要通过上级模块B进行传递,这样不但会进行传递,这样不但会增加模块间的耦合性,而且会给模块的维护和修改带增加模块间的耦合性,而且会给模块的维护和修改

39、带来麻烦来麻烦(若要修改模块若要修改模块C,可能会对不在它控制域中的,可能会对不在它控制域中的模块模块D造成影响造成影响)。因此,系统设计时应使各个模块的。因此,系统设计时应使各个模块的作用域处于其控制域范围之内。作用域处于其控制域范围之内。 信息系统分析与设计25 若发现不符合此设计原则的模块,可通过下面的方法进行改若发现不符合此设计原则的模块,可通过下面的方法进行改进:进: 将判定位置上移。如将图将判定位置上移。如将图6-46-4中的模块中的模块C C中的判定条件上中的判定条件上移到上级模块移到上级模块B B中或将模块中或将模块C C整个合并到模块整个合并到模块B B中。中。 将超出作用域

40、的模块下移。如将图将超出作用域的模块下移。如将图6-46-4中的模块中的模块D D移至模移至模块块C C的下一层上,使模块的下一层上,使模块D D处于模块处于模块C C的控制域中的控制域中 。图图6-4 6-4 模块的作用域和控制域模块的作用域和控制域 信息系统分析与设计26 3.3. 系统结构中的深度和宽度不宜过大系统结构中的深度和宽度不宜过大 所谓深度是指系统体系结构中控制的层数,它能所谓深度是指系统体系结构中控制的层数,它能够粗略地反映出软件系统的规模和复杂程度;所谓宽够粗略地反映出软件系统的规模和复杂程度;所谓宽度是指系统体系结构内同一层次上模块个数的最大值,度是指系统体系结构内同一层

41、次上模块个数的最大值,通常宽度越大的系统越复杂。例如,在如图通常宽度越大的系统越复杂。例如,在如图6-56-5所示的所示的系统结构图中,深度为系统结构图中,深度为5 5,宽度为,宽度为8 8。 图图6-5 6-5 系统结构图示例系统结构图示例信息系统分析与设计27 4模块应具有高扇入和适当的扇出模块应具有高扇入和适当的扇出 对一模块来说,扇入是指有多少上级模块直接调用它,如图对一模块来说,扇入是指有多少上级模块直接调用它,如图6-6(a)所示,模块所示,模块M的扇入数为的扇入数为n;扇出是指一个模块可以直接调;扇出是指一个模块可以直接调用的下级模块数,如图用的下级模块数,如图6-6(b)所示,

42、模块所示,模块M的扇出数为的扇出数为k。模块的。模块的扇入越大,则说明共享该模块的上级模块数越多,或者说该模块扇入越大,则说明共享该模块的上级模块数越多,或者说该模块在程序中的重用性越高;而对于扇出,根据实践经验,在设计良在程序中的重用性越高;而对于扇出,根据实践经验,在设计良好的典型系统中,模块的平均扇出通常为好的典型系统中,模块的平均扇出通常为34。 (a) 扇入扇入 (b) 扇出扇出图图6-6 模块的扇入和扇出模块的扇入和扇出 信息系统分析与设计28 5. 保持适中的模块规模和复杂度保持适中的模块规模和复杂度 程序中模块的规模过大,会降低程序的可读性;程序中模块的规模过大,会降低程序的可

43、读性;而模块规模过小,势必会导致程序中的模块数目过多,而模块规模过小,势必会导致程序中的模块数目过多,增加接口的复杂性。对于模块的适当规模并没有严格增加接口的复杂性。对于模块的适当规模并没有严格的规定,但普遍的观点是模块中的语句数最好保持在的规定,但普遍的观点是模块中的语句数最好保持在50150条语句左右,可以用条语句左右,可以用12页打印纸打印,便页打印纸打印,便于人们阅读与研究。为了使模块的规模适中,在保证于人们阅读与研究。为了使模块的规模适中,在保证模块独立性的前提下,可对程序中规模过小的模块进模块独立性的前提下,可对程序中规模过小的模块进行合并或对规模过大的模块进行分解。行合并或对规模

44、过大的模块进行分解。 模块的复杂度的限制是基于模块的复杂度的限制是基于McCade复杂度度量复杂度度量方法提出的,该方法是计算由程序流程图得到的程序方法提出的,该方法是计算由程序流程图得到的程序图中的环的个数图中的环的个数V(G),实践表明),实践表明V(G)10是模是模块规模和复杂度的合理上限,关于模块的复杂度将会块规模和复杂度的合理上限,关于模块的复杂度将会在第七章介绍。在第七章介绍。 信息系统分析与设计29 6. 降低模块接口的复杂度降低模块接口的复杂度 复杂的模块接口是导致系统出现错误的主要原因复杂的模块接口是导致系统出现错误的主要原因之一,因此在系统设计中应尽量使模块接口简单清晰。之

45、一,因此在系统设计中应尽量使模块接口简单清晰。降低模块的接口复杂度,可以提高系统的可读性,减降低模块的接口复杂度,可以提高系统的可读性,减少出现错误的可能性,并有利于系统的测试和维护。少出现错误的可能性,并有利于系统的测试和维护。例如,求一元二次方程的根模块例如,求一元二次方程的根模块QUAD_ROOT(TBL,X),其中其中TBL和和X分别是系数组参分别是系数组参数和根数组参数,就不如将接口的参数简单化,模块数和根数组参数,就不如将接口的参数简单化,模块变为变为QUAD_ROOT(A,B,C,X1,X2),这样容易理,这样容易理解还不容易发生传递错误。解还不容易发生传递错误。 信息系统分析与

46、设计30 7设计单入口单出口的模块设计单入口单出口的模块 这条规则告诫软件工程师不要使模块间出现内容这条规则告诫软件工程师不要使模块间出现内容耦合,设计出的每一个模块都应该只有一个入口一个耦合,设计出的每一个模块都应该只有一个入口一个出口,不要随便使用出口,不要随便使用GOTO语句。当控制流从顶部进语句。当控制流从顶部进入模块并且从底部退出来时,系统是比较容易理解的,入模块并且从底部退出来时,系统是比较容易理解的,因此也是比较容易维护的。因此也是比较容易维护的。 8模块功能应该可以预测模块功能应该可以预测 要求设计出来的模块的功能应该能够预测,但也要求设计出来的模块的功能应该能够预测,但也要防

47、止模块功能过分局限。要防止模块功能过分局限。 信息系统分析与设计31 6.2 总体设计概述总体设计概述 6.2.1 总体设计的目的和任务总体设计的目的和任务 总体设计的基本目的就是回答总体设计的基本目的就是回答“概括地说,系统概括地说,系统应该如何实现应该如何实现?”这个问题,因此,总体设计又称为概这个问题,因此,总体设计又称为概要设计或初步设计。要设计或初步设计。 总体设计的基本任务包括:总体设计的基本任务包括: 1. 设计软件系统结构设计软件系统结构(简称软件结构简称软件结构) 2. 数据结构及数据库设计数据结构及数据库设计 3. 编写总体设计文档编写总体设计文档 4. 评审评审信息系统分

48、析与设计32 6.2.2 总体设计说明书总体设计说明书 总体设计说明书是总体设计阶段结束时提交的技总体设计说明书是总体设计阶段结束时提交的技术文档,它的主要内容如下:术文档,它的主要内容如下: (1) 引言:编写目的、背景、定义和参考资料。引言:编写目的、背景、定义和参考资料。 (2) 总体设计:需求规定、运行环境、基本设计概总体设计:需求规定、运行环境、基本设计概念、处理流程和结构。念、处理流程和结构。 (3) 接口设计:用户接口、外部接口和内部接口。接口设计:用户接口、外部接口和内部接口。 (4) 运行设计:运行模块的组合、运行控制和运行运行设计:运行模块的组合、运行控制和运行时间。时间。

49、 (5) 系统数据结构设计:逻辑结构设计、物理结构系统数据结构设计:逻辑结构设计、物理结构设计、数据结构与程序的关系。设计、数据结构与程序的关系。 (6) 系统出错处理设计:出错信息、补救措施和系系统出错处理设计:出错信息、补救措施和系统恢复设计。统恢复设计。 信息系统分析与设计33 6.2.3 总体设计的评审总体设计的评审 总体设计完成之后必须提交评审,总体设计评审包括的内容总体设计完成之后必须提交评审,总体设计评审包括的内容有:有: (1)可追溯性:确认该设计是否覆盖了所有已确定的系统需)可追溯性:确认该设计是否覆盖了所有已确定的系统需求,系统每一成份是否可追溯到某一项需求;求,系统每一成

50、份是否可追溯到某一项需求; (2)接口:确认该系统的内部接口与外部接口是否已经明确)接口:确认该系统的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求,模块作用范围是否定义。模块是否满足高内聚和低耦合的要求,模块作用范围是否在其控制范围之内;在其控制范围之内; (3)风险:确认该设计在现有技术条件下和预算范围内是否)风险:确认该设计在现有技术条件下和预算范围内是否能按时实现;能按时实现; (4)实用性:确认该设计对于需求的解决方案是否实用;)实用性:确认该设计对于需求的解决方案是否实用; (5)技术清晰度:确认该设计是否以一种易于翻译成代码的)技术清晰度:确认该设计是否以一

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第6章信息系统的总体设计课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|