版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-4-24信息工程学院1主讲:龙亚主讲:龙亚第四章 概要设计2022-4-24信息工程学院2一、教学目的一、教学目的v1掌握软件总体设计的目的、任务,掌握软件总体设计的掌握软件总体设计的目的、任务,掌握软件总体设计的过程、设计原理和启发规则过程、设计原理和启发规则v2掌握描述软件结构的工具以及面向数据流的设计方法。掌握描述软件结构的工具以及面向数据流的设计方法。能够将具体的数据流图的转换为软件的结构图,即变换分析能够将具体的数据流图的转换为软件的结构图,即变换分析技术和事务分析技术。技术和事务分析技术。 二、教学重点二、教学重点v1软件设计的过程,原理及启发规则;软件设计的过程,原理及
2、启发规则;v2面向数据流的设计方法;面向数据流的设计方法;三、教学难点三、教学难点v1软件设计的原理,启发规则;软件设计的原理,启发规则;v2面向数据流的设计方法;面向数据流的设计方法;2022-4-24信息工程学院3v4.1 软件设计概述软件设计概述v4.2 软件设计的基本原则软件设计的基本原则v4.3 概要设计的任务和步骤概要设计的任务和步骤v4.4 软件结构图软件结构图v4.5 结构化设计方法结构化设计方法v4.6数据设计数据设计v4.7接口设计接口设计v4.8概要设计说明书概要设计说明书v4.9案例案例主要内容2022-4-24信息工程学院44.1 软件设计概述软件设计概述v软件开发阶
3、段由设计、编码和测试三个基本活动组成软件开发阶段由设计、编码和测试三个基本活动组成, ,其中其中“设计活动设计活动”是是 获取高质量、低耗费、易维护软件最重要获取高质量、低耗费、易维护软件最重要的一个环节的一个环节. .v需求分析阶段获得的需求规格说明书包括对欲实现系统的信需求分析阶段获得的需求规格说明书包括对欲实现系统的信息、功能和行为方面的描述,息、功能和行为方面的描述, 这是软件设计的基础。这是软件设计的基础。v软件设计是软件工程的重要阶段。软件设计过程是对程序结软件设计是软件工程的重要阶段。软件设计过程是对程序结构、数据结构和过程细节逐步求精、复审并编制文档的过程。构、数据结构和过程细
4、节逐步求精、复审并编制文档的过程。v概要设计是根据需求确定软件和数据的总体框架。概要设计是根据需求确定软件和数据的总体框架。2022-4-24信息工程学院5软件设计的重要性软件设计的重要性v软件设计是把需求转化为软件系统的最重要的环节,软件设计是把需求转化为软件系统的最重要的环节,其优劣在根本上决定了软件系统的质量,重要性表其优劣在根本上决定了软件系统的质量,重要性表现在以下两个方面:现在以下两个方面:软件设计是开发阶段最重要的步骤,是软件质量软件设计是开发阶段最重要的步骤,是软件质量得以保证的关键。得以保证的关键。软件设计是将用户要求准确地转化为最终的软件软件设计是将用户要求准确地转化为最终
5、的软件产品的唯一途径。产品的唯一途径。2022-4-24信息工程学院6软件设计的任务v软件设计也可看作将需求规格说明逐步转换为软件软件设计也可看作将需求规格说明逐步转换为软件源代码的过程源代码的过程v从工程管理的角度从工程管理的角度看,看,软件设计可分为概要设计和软件设计可分为概要设计和详细设计两大步骤详细设计两大步骤概要设计概要设计是根据需求确定软件和数据的总体框架是根据需求确定软件和数据的总体框架详细设计详细设计是将其进一步精化成软件的算法表示和是将其进一步精化成软件的算法表示和数据结构数据结构v概要设计和详细设计由若干活动组成,除总体结构概要设计和详细设计由若干活动组成,除总体结构设计、
6、数据结构设计和过程设计外,许多现代应用设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独立的界面设计活动软件,还包括一个独立的界面设计活动2022-4-24信息工程学院7v概要设计的基本目的就是回答概要设计的基本目的就是回答“概括地说,系统应该如何实概括地说,系统应该如何实现?现?”这个问题,因此,概要设计又称为总体设计或初步设计。这个问题,因此,概要设计又称为总体设计或初步设计。v概要设计的必要性:可以站在全局高度上,花较少成本,从较概要设计的必要性:可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,抽象的层次上分析对比多种可能的系统实现方
7、案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。出较高质量的软件系统。v通过这个阶段的工作将划分出组成系统的物理元素通过这个阶段的工作将划分出组成系统的物理元素程序、程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。软件设计的任务软件设计的任务2022-4-24信息工程学院8v总体设计阶段的另一项重要任务是设计软件的结构,即将软总
8、体设计阶段的另一项重要任务是设计软件的结构,即将软件需求转化为数据结构和软件的系统结构件需求转化为数据结构和软件的系统结构,也就是要确定系也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。设计软件结构的具体任务是:将一个复杂系统按功能关系。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据
9、库的设计。显然,概要设计确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。建立的是目标系统的逻辑模型,与计算机无关。v概要设计主要完成以下任务概要设计主要完成以下任务:制定规范制定规范;软件系统结构的总体软件系统结构的总体设计设计;数据设计数据设计;概要设计评审概要设计评审.2022-4-24信息工程学院9v详细设计详细设计:对结构进行细化,得到软件包的详细的数对结构进行细化,得到软件包的详细的数据结构和算法。对概要设计过程中给出的各种结构据结构和算法。对概要设计过程中给出的各种结构成分进行详细的加工,得到在程序细节上非常接近成分进行详细的加工,得到
10、在程序细节上非常接近于源程序的软件表示。于源程序的软件表示。v详细设计需要完成的工作是:确定软件各个组成部详细设计需要完成的工作是:确定软件各个组成部分内的算法以及各部分的内部数据组织;选定某种分内的算法以及各部分的内部数据组织;选定某种过程的表达形式来描述各种算法;用户界面设计;过程的表达形式来描述各种算法;用户界面设计;编写详细设计文档;进行详细设计的评审。编写详细设计文档;进行详细设计的评审。2022-4-24信息工程学院10软件设计的策略v1、简单、简单-复杂复杂-简单简单v2、软件复用技术、软件复用技术v3、模块化概念、模块化概念2022-4-24信息工程学院114.2 软件设计的基
11、本原则软件设计的基本原则v 模块化模块化v 抽抽 象象v 逐步求精逐步求精v 信息隐藏和局部化信息隐藏和局部化v 模块独立模块独立2022-4-24信息工程学院12v模块化模块化模块是由边界元素限定的相邻程序元素的序列,模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。过程、函数、而且有一个总体标识符代表它。过程、函数、子程序和宏等,都可作为模块。面向对象方法子程序和宏等,都可作为模块。面向对象方法学中的对象是模块,对象内的方法(或称为服学中的对象是模块,对象内的方法(或称为服务)也是模块。务)也是模块。模块是构成程序的基本构件。模块是构成程序的基本构件。2022-4-24
12、信息工程学院13模块化就是把程序划分成独立命名且可独立访问模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满集成起来构成一个整体,可以完成指定的功能满足用户的需求。足用户的需求。2022-4-24信息工程学院14模块化的思想:即把软件划分为可独立命名和模块化的思想:即把软件划分为可独立命名和编址的部件,每个部件称为一个模块,当把所编址的部件,每个部件称为一个模块,当把所有的模块组装到一起时,便可获得满足问题需有的模块组装到一起时,便可获得满足问题需要的一个解。要的一个解。模块化
13、是软件惟一能使程序获得智能化管理的模块化是软件惟一能使程序获得智能化管理的一个属性。完全由一个模块构成的程序,由于一个属性。完全由一个模块构成的程序,由于控制路径错综复杂,变量被远距离引用等,使控制路径错综复杂,变量被远距离引用等,使得它难于掌握。得它难于掌握。2022-4-24信息工程学院15v模块具有三个基本属性模块具有三个基本属性功能功能模块实现的功能模块实现的功能逻辑逻辑描述模块内部怎么做描述模块内部怎么做状态状态模块使用时的环境和条件模块使用时的环境和条件2022-4-24信息工程学院16v模块的特征模块的特征外部特征外部特征模块的名字、参数等模块的名字、参数等内部特征内部特征完成模
14、块功能的程序代码和模块内完成模块功能的程序代码和模块内部数据部数据v模块化,即把软件按照规定原则,划分为一个个模块化,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件。模块较小的,相互独立的但又相互关联的部件。模块化实际上是系统分解和抽象的过程化实际上是系统分解和抽象的过程v软件总体结构体现了模块化思想软件总体结构体现了模块化思想2022-4-24信息工程学院17v用函数用函数C(X)定义了问题定义了问题X已被觉察到的复杂性,函数已被觉察到的复杂性,函数E(X)定义了求解问题定义了求解问题X所要求的工作量(时间)。所要求的工作量(时间)。 对于两个问题对于两个问题P1和和
15、P2,如果,如果 C(P1) C(P2)则则E(P1) E(P2)2022-4-24信息工程学院18因为解决一个复杂问题总比解决一个简单问题耗费多。因为解决一个复杂问题总比解决一个简单问题耗费多。而且:而且: C(P1+P2) C(P1)+C(P2)即由即由P1、P2组合而成的问题的复杂性往往比考虑单组合而成的问题的复杂性往往比考虑单个问题复杂性的和更大。个问题复杂性的和更大。因此:因此:E(P1+P2) E(P1)+E(P2),即一个问题分割成,即一个问题分割成若干小个可管理的小问题后更易于求解。若干小个可管理的小问题后更易于求解。2022-4-24信息工程学院19这种这种“分而治之分而治之
16、”的思想提供了模块化的理论依据:的思想提供了模块化的理论依据:把复杂问题分解成许多容易解决的小问题,则原把复杂问题分解成许多容易解决的小问题,则原来复杂的问题也就容易解决了来复杂的问题也就容易解决了如果无限地分割软件,最后为了开发软件而需要的如果无限地分割软件,最后为了开发软件而需要的工作量也就小得可以忽略了。?工作量也就小得可以忽略了。?随着模块数目增加,设计模块间接口所需要的随着模块数目增加,设计模块间接口所需要的工作量也将增加。工作量也将增加。2022-4-24信息工程学院20模块化和软件成本图2022-4-24信息工程学院21v模块化的优点:模块化的优点:1、采用模块化原理可以使软件结
17、构清晰,不仅容、采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。易设计也容易阅读和理解。2、因为程序错误通常局限在有关的模块及它们之、因为程序错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,间的接口中,所以模块化使软件容易测试和调试,因而有助于提高软件的可靠性。因而有助于提高软件的可靠性。2022-4-24信息工程学院223、因为变动往往只涉及少数几个模块,所以模块化、因为变动往往只涉及少数几个模块,所以模块化能提高软件的可修改性。能提高软件的可修改性。4、模块化也有助于软件开发工程的组织管理,一个、模块化也有助于软件开发工程的组织管理,一个复杂的大
18、型程序可以由许多程序员分工编写不同的复杂的大型程序可以由许多程序员分工编写不同的模块,并且可以进一步分配技术熟练的程序员编写模块,并且可以进一步分配技术熟练的程序员编写困难的模块。困难的模块。2022-4-24信息工程学院23v理想的模块理想的模块每个模块只解决一个问题每个模块只解决一个问题每个模块的功能应该明确,使人容易理解每个模块的功能应该明确,使人容易理解模块之间的联结关系简单,具有独立性模块之间的联结关系简单,具有独立性v用理想模块构建的系统,容易使人理解,易于编用理想模块构建的系统,容易使人理解,易于编程,易于测试,易于修改和维护程,易于测试,易于修改和维护v对用户来说,其感兴趣的是
19、模块的功能,而不必对用户来说,其感兴趣的是模块的功能,而不必理解模块内部的结构和原理理解模块内部的结构和原理2022-4-24信息工程学院24v抽象:抽象:l“抽象抽象”是一个心理学概念,是一个心理学概念,人类在认识复杂现人类在认识复杂现象的过程中使用的最强有力的思维工具是象的过程中使用的最强有力的思维工具是抽象。抽象。它要求人们将注意力集中在某一层次上考虑问题,它要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。即把相似的方面集中而忽略那些低层次的细节。即把相似的方面集中和概括起来,暂时忽略它们之间的差异,就是抽和概括起来,暂时忽略它们之间的差异,就是抽象。象。 - 就是抽出
20、事物的就是抽出事物的本质特性(共性),本质特性(共性),而暂而暂时不考虑它们的细节。时不考虑它们的细节。v处理复杂系统的惟一有效的方法是用处理复杂系统的惟一有效的方法是用层次层次的方式的方式构造和分析它。构造和分析它。2022-4-24信息工程学院25l在抽象的最高层次使用问题环境的语言,以概括的在抽象的最高层次使用问题环境的语言,以概括的方式叙述问题的解法;在较低抽象层次采用更过程方式叙述问题的解法;在较低抽象层次采用更过程化的方法,把面向问题的术语和面向实现的术语结化的方法,把面向问题的术语和面向实现的术语结合起来叙述问题的解法;最后在最低的抽象层次用合起来叙述问题的解法;最后在最低的抽象
21、层次用可直接实现的方式叙述问题的解法。可直接实现的方式叙述问题的解法。2022-4-24信息工程学院26v软件工程过程的每一步都是对较高一级抽象的解软件工程过程的每一步都是对较高一级抽象的解做一次较具体化的描述。做一次较具体化的描述。 在在可行性研究阶段可行性研究阶段,软件作为系统的一个完整部,软件作为系统的一个完整部件;在件;在需求分析期间需求分析期间,软件解法是使用在问题环,软件解法是使用在问题环境内熟悉的方式描述的;当境内熟悉的方式描述的;当由总体设计向详细设由总体设计向详细设计过渡时计过渡时,抽象的程度也就随之减少了;最后,抽象的程度也就随之减少了;最后,当源程序写出来以后当源程序写出
22、来以后,也就达到了抽象的最低层。,也就达到了抽象的最低层。2022-4-24信息工程学院27v抽象分为过程抽象和数据抽象:抽象分为过程抽象和数据抽象:过程抽象过程抽象把完成一个特定功能的动作序列抽象为一把完成一个特定功能的动作序列抽象为一个过程名和参数表,以后通过指定过程名和实际个过程名和参数表,以后通过指定过程名和实际参数调用此过程;参数调用此过程;数据抽象数据抽象把一个数据抽象的定义(或描述)抽象为把一个数据抽象的定义(或描述)抽象为一个数据类型名。用此类型名可定义多个具有相一个数据类型名。用此类型名可定义多个具有相同性质的数据对象。同性质的数据对象。2022-4-24信息工程学院28v例
23、:考虑适用于低级例:考虑适用于低级CAD的图形软件包。的图形软件包。抽象抽象I 该该CAD软件系统配有能与绘图员进行可视化软件系统配有能与绘图员进行可视化通信的图形界面,能用鼠标代替绘图工具,画各通信的图形界面,能用鼠标代替绘图工具,画各种直线和曲线;能完成所有几何计算以及所有截种直线和曲线;能完成所有几何计算以及所有截面视图和辅助视图的设计。图形设计的结果存在面视图和辅助视图的设计。图形设计的结果存在图形文件中,图形文件可包含几何的、正文的和图形文件中,图形文件可包含几何的、正文的和其他各种补充设计信息。其他各种补充设计信息。显而易见,在这一抽象级别上,问题的解用问题域显而易见,在这一抽象级
24、别上,问题的解用问题域本身的术语描述。本身的术语描述。2022-4-24信息工程学院29抽象抽象II CAD 软件任务;软件任务; 用户界面任务;用户界面任务; 创建二维图形任务;创建二维图形任务; 显示图形任务;显示图形任务; 管理图形文件任务;管理图形文件任务; end CAD.2022-4-24信息工程学院30在这一抽象级别上,给出了组成在这一抽象级别上,给出了组成CAD软件任务的所有软件任务的所有主要的子任务,尽管术语已与问题域有所不同,但主要的子任务,尽管术语已与问题域有所不同,但仍然不是实现用的语言。仍然不是实现用的语言。抽象抽象III就可以给出初步的过程性表示,继续抽象下去就可以
25、给出初步的过程性表示,继续抽象下去直致产生源代码。直致产生源代码。2022-4-24信息工程学院31v分解(逐步求精):分解(逐步求精):v逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术(例如,规格说明技术,设计和实现技术)的基础。v逐步求精定义为:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。”2022-4-24信息工程学院32v逐步求精最初是由逐步求精最初是由Niklaus Wirth提出的一种自顶向下的设提出的一种自顶向下的设计策略。计策略。 他本人的概括说明如下:他本人的概括说明如下:v我们对付复杂问题的最重要的办法是抽象,因此,对一个复我们对付复杂问题的最
26、重要的办法是抽象,因此,对一个复杂的问题不应该立刻用计算机指令、数字和逻辑符号来表示,杂的问题不应该立刻用计算机指令、数字和逻辑符号来表示,而应该用较自然的抽象语句来表示,从而得出抽象程序。抽而应该用较自然的抽象语句来表示,从而得出抽象程序。抽象程序对抽象的数据进行某些特定的运算并用某些合适的记象程序对抽象的数据进行某些特定的运算并用某些合适的记号(可能是自然语言)来表示。对抽象程序做进一步的分解,号(可能是自然语言)来表示。对抽象程序做进一步的分解,并进入下一个抽象层次,这样的精细化过程一直进行下去,并进入下一个抽象层次,这样的精细化过程一直进行下去,直到程序能被计算机接受为止。这时的程序可
27、能是用某种高直到程序能被计算机接受为止。这时的程序可能是用某种高级语言或机器指令书写的。级语言或机器指令书写的。2022-4-24信息工程学院33v逐步求精的思想:针对某个功能的宏观描述,用逐逐步求精的思想:针对某个功能的宏观描述,用逐步求精的方法不断地分解,逐步确立过程细节,直步求精的方法不断地分解,逐步确立过程细节,直至该功能用程序语言描述的算法实现为止。因为求至该功能用程序语言描述的算法实现为止。因为求精的每一步都是用更为详细的描述代上一层次的抽精的每一步都是用更为详细的描述代上一层次的抽象描述,所以在整个设计过程中产生的,具有不同象描述,所以在整个设计过程中产生的,具有不同详细程序的各
28、种描述,组成了系统的层次结构。层详细程序的各种描述,组成了系统的层次结构。层次结构的上一层是下一层的抽象,下一层是上一层次结构的上一层是下一层的抽象,下一层是上一层的求精。的求精。2022-4-24信息工程学院34v在过程求精的同时自然伴随着数据的求精,无论是在过程求精的同时自然伴随着数据的求精,无论是过程还是数据,每个求精步骤都蕴含着某些设计决过程还是数据,每个求精步骤都蕴含着某些设计决策,因此设计人员必须掌握一些基本的准则和各种策,因此设计人员必须掌握一些基本的准则和各种可能的候选方法。可能的候选方法。2022-4-24信息工程学院35v抽象与求精是一对互补的概念。抽象与求精是一对互补的概
29、念。v抽象使得设计者能够说明过程和数据,同时抽象使得设计者能够说明过程和数据,同时 却忽略低层细节。事实上,可以把抽象看作却忽略低层细节。事实上,可以把抽象看作是一种通过忽略多余的细节同时强调有关的是一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法。细节,而实现逐步求精的方法。v求精则帮助设计者在设计过程中逐步揭示出求精则帮助设计者在设计过程中逐步揭示出低层细节。低层细节。v这两个概念都有助于设计者在设计演化过程这两个概念都有助于设计者在设计演化过程中创造出完整的设计模型。中创造出完整的设计模型。2022-4-24信息工程学院36v信息隐藏和局部化:信息隐藏和局部化:信息隐藏的原
30、理:应该这样设计和确定模块,使信息隐藏的原理:应该这样设计和确定模块,使得一个模块内包含的信息得一个模块内包含的信息(过程和数据过程和数据)对于不需对于不需要这些信息的模块来说,是不能访问的。要这些信息的模块来说,是不能访问的。 每个模块只完成一个相对独立的特定功能;模块每个模块只完成一个相对独立的特定功能;模块之间仅仅交换那些完成系统功能必须交换的信息,之间仅仅交换那些完成系统功能必须交换的信息,即模块应该独立。即模块应该独立。v如果在测试期间和以后的软件维护期间需要修改软如果在测试期间和以后的软件维护期间需要修改软件,那么使用信息隐藏原理作为模块化系统设计的件,那么使用信息隐藏原理作为模块
31、化系统设计的标准就会带来极大好处。标准就会带来极大好处。2022-4-24信息工程学院37v采用信息隐藏原理指导模块设计的好处:它不仅采用信息隐藏原理指导模块设计的好处:它不仅支持模块的并行开发,而且还可以减少测试和后支持模块的并行开发,而且还可以减少测试和后期维护的工作量。因为测试和维护阶段不可避免期维护的工作量。因为测试和维护阶段不可避免地要修改设计和代码,模块对大多数数据和过程地要修改设计和代码,模块对大多数数据和过程处理细节的危险期可以养活错误向外传播。此外,处理细节的危险期可以养活错误向外传播。此外,整个系统欲扩充功能亦只需整个系统欲扩充功能亦只需“插入插入”新模块,原新模块,原有的
32、多数模块无须改动。有的多数模块无须改动。2022-4-24信息工程学院38局部化是指把一些关系密切的软件元素物理地局部化是指把一些关系密切的软件元素物理地放得彼此靠近。在模块中使用局部化数据元素放得彼此靠近。在模块中使用局部化数据元素是局部化的一个例子。是局部化的一个例子。实际上,应该隐藏的不是有关模块的一切信息,实际上,应该隐藏的不是有关模块的一切信息,而是模块的实现细节。因此,有人主张把这条而是模块的实现细节。因此,有人主张把这条原理称为原理称为“细节隐藏细节隐藏”2022-4-24信息工程学院39v模块独立模块独立模块独立性是软件系统中每个模块只涉及软件要模块独立性是软件系统中每个模块只
33、涉及软件要求的具体子功能,而和软件系统中其他的模块接求的具体子功能,而和软件系统中其他的模块接口是简单的。口是简单的。模块独立的概念是模块化、抽象、信息隐蔽和局模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。部化概念的直接结果。开发具有独立功能而且和其他模块之间没有过多开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。的相互作用的模块,就可以做到模块独立。2022-4-24信息工程学院40v模块独立的含义:模块独立的含义:v模块完成独立的功能,与其他模块的接口简单;模块完成独立的功能,与其他模块的接口简单;v符合信息隐蔽和信息局部化原则;符合信息隐蔽
34、和信息局部化原则;v模块间关连和依赖程度尽可能小。模块间关连和依赖程度尽可能小。2022-4-24信息工程学院41模块独立性的重要性模块独立性的重要性u(1)具有独立的模块的软件比较容易开发出来。)具有独立的模块的软件比较容易开发出来。这是由于能够分割功能而且接口可以简化,当许多这是由于能够分割功能而且接口可以简化,当许多人分工合作开发同一个软件时,这个优点尤其重要。人分工合作开发同一个软件时,这个优点尤其重要。u(2)独立的模块比较容易测试和维护。这是因为)独立的模块比较容易测试和维护。这是因为相对说来,修改设计和程序需要的工作量比较小,相对说来,修改设计和程序需要的工作量比较小,错误传播范
35、围小,需要扩充功能时能够错误传播范围小,需要扩充功能时能够“插入插入”模模块。总之,模块独立是优秀设计的关键,而设计又块。总之,模块独立是优秀设计的关键,而设计又是决定软件质量的关键环节。是决定软件质量的关键环节。总之,模块独立是设计好坏的关键!2022-4-24信息工程学院42v模块的独立程度可以由两个定性标准度量,这两个模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模间互相依赖(连接)的紧密程度;内聚衡量一个模块内各个元素彼此结合的紧密程序。它是信息隐藏块内各个元
36、素彼此结合的紧密程序。它是信息隐藏和局部化概念的自然扩展。和局部化概念的自然扩展。2022-4-24信息工程学院43v耦合耦合也称块间联系。指软件系统结构中各模块间相也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。紧密,其耦合性就越强,模块的独立性则越差。耦合是对一个软件结构内不同模块之间互连程耦合是对一个软件结构内不同模块之间互连程度的度量。度的度量。2022-4-24信息工程学院44耦合强弱取决于模块间接口的复杂程度,进入耦合强弱取决于模块间接口的复杂程度,进入或调用个模块的位
37、置以及通过界面传送数据的或调用个模块的位置以及通过界面传送数据的多少等。多少等。在软件设计中应该追求尽可能松散耦合的系统。在软件设计中应该追求尽可能松散耦合的系统。因为对这类系统中任一模块的设计、测试和维因为对这类系统中任一模块的设计、测试和维护相对独立,由于模块间联系较少,错误在模护相对独立,由于模块间联系较少,错误在模块间传播的可能性也随之变小。模块间的耦合块间传播的可能性也随之变小。模块间的耦合程度直接影响系统的可理解性、可测试性、可程度直接影响系统的可理解性、可测试性、可靠性和可维护性。靠性和可维护性。2022-4-24信息工程学院45耦合性耦合性耦合性模块独立性模块独立性数据耦合数据
38、耦合控制耦合控制耦合公共环境耦合公共环境耦合内容耦合内容耦合特征耦合特征耦合外部耦合外部耦合非直接耦合非直接耦合2022-4-24信息工程学院46非直接耦合v两个模块没有直接关系两个模块没有直接关系( (模块模块1 1和模块和模块2)2),它们之,它们之间的联系完全是通过主模块的控制和调用来实现,间的联系完全是通过主模块的控制和调用来实现,非直接耦合是模块独立性最强的非直接耦合是模块独立性最强的模块模块1模块模块2模块模块3模块模块4主模块主模块2022-4-24信息工程学院47数据耦合v一模块调用另一模块时,彼此之间是通过简单数一模块调用另一模块时,彼此之间是通过简单数据参数据参数( (不是
39、控制参数、公共数据结构和外部变不是控制参数、公共数据结构和外部变量量) )来交换输入、输出信息。属松散耦合来交换输入、输出信息。属松散耦合开发票开发票计算水费计算水费单价单价数量数量金额金额2022-4-24信息工程学院48特征耦合特征耦合v如两个模块之间是如两个模块之间是通过传递数据结构通过传递数据结构( (不是简单数不是简单数据,而是记录、数组等据,而是记录、数组等) )加以联系加以联系,或,或都与一个数都与一个数据结构有关系据结构有关系, , 则称这两个模块间存在特征偶合则称这两个模块间存在特征偶合。计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费电费电费住户
40、情况住户情况“住户情况住户情况”是一个数据结构是一个数据结构, ,图中模块都与此数据结构有关。图中模块都与此数据结构有关。“计算水费计算水费”和和“计算电费计算电费”本无关本无关, ,由于引用了此数据结构产由于引用了此数据结构产生依赖关系生依赖关系, ,它们之间就是特征偶合。它们之间就是特征偶合。2022-4-24信息工程学院49特征耦合特征耦合v将特征耦合改为数据耦合将特征耦合改为数据耦合:计算水电费计算水电费计算水费计算水费计算电费计算电费本月用水量本月用水量水费水费电费电费本月用电量本月用电量2022-4-24信息工程学院50控制耦合控制耦合v一模块向下属模块一模块向下属模块传递的信息控
41、制了被调用模块的内部传递的信息控制了被调用模块的内部逻辑逻辑。如开关量、标志、名称等控制决策的变量,控制。如开关量、标志、名称等控制决策的变量,控制选择了被调用模块的功能选择了被调用模块的功能AFlagF1F2FnFlag.B2022-4-24信息工程学院51控制耦合举例控制耦合举例-1PROC A() /调用调用B,使用其功能,使用其功能1 B(x,y,1) /调用调用B,使用其功能,使用其功能2 B(x,y,2)PROC B(a,b,flag)do casecase flag=1功能功能1case flag=2功能功能2 endcase2022-4-24信息工程学院52控制耦合举例控制耦合
42、举例-2A A计算平均分计算平均分或最高分或最高分B B平均平均/ /最高最高( (控制信号控制信号) )成绩成绩读入分数读入分数输出结果输出结果计算平均分计算平均分计算最高分计算最高分平均平均/ /最高最高? ?B B2022-4-24信息工程学院53控制耦合控制耦合v控制耦合控制耦合增加增加了了理解理解和和编程编程的的复杂性复杂性,调用模块,调用模块必须知道必须知道被调模块的被调模块的内部逻辑内部逻辑,增加了模块间的,增加了模块间的相互依赖关系相互依赖关系v去除模块间控制耦合的方法去除模块间控制耦合的方法将被调用模块内的判定上移到调将被调用模块内的判定上移到调 用模块中进行用模块中进行被调
43、用模块分解成若干单一功能模块被调用模块分解成若干单一功能模块2022-4-24信息工程学院54控制耦合控制耦合修改控制耦合为数据耦合:修改控制耦合为数据耦合:A A计算平均分计算平均分B1B1平均成绩计算最高分计算最高分B2B2最高成绩2022-4-24信息工程学院55外部耦合外部耦合v一组模块均与同一外部环境关联一组模块均与同一外部环境关联( (例如例如,I/O,I/O模块与模块与特定的设备、格式和通信协议相关联特定的设备、格式和通信协议相关联),),它们之间便它们之间便存在外部耦合。存在外部耦合。v外部偶合必不可少外部偶合必不可少, ,但这种模块数目应尽量少。但这种模块数目应尽量少。202
44、2-4-24信息工程学院56公共环境耦合公共环境耦合公共数据区公共数据区CBq组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。q其中,公共数据区指: 全局数据结构 共享的通讯区 内存的公共覆盖区等2022-4-24信息工程学院57公共环境耦合公共环境耦合v公共耦合的复杂程度随耦合模块的个数增多而显著增公共耦合的复杂程度随耦合模块的个数增多而显著增加。若只有两个模块间存在公共数据环境,则公共耦加。若只有两个模块间存在公共数据环境,则公共耦合有两种情况,松散公共耦合和紧密公共耦合。合有两种情况,松散公共耦合和紧密公共耦合。AB公共数据区公共数据区AB公共数据区公共数据区a. 松散公共耦
45、合松散公共耦合b.紧密公共耦合紧密公共耦合2022-4-24信息工程学院58公共环境耦合存在的问题v软件可理解性降低软件可理解性降低v诊断错误困难诊断错误困难v软件可维护性差软件可维护性差v软件可靠性差软件可靠性差v公共数据区及全程变量无保护措施公共数据区及全程变量无保护措施 慎用公共数据区和全程变量!2022-4-24信息工程学院59内容耦合v如果发生下列情形之一,两模块之间就产生了内容耦合:如果发生下列情形之一,两模块之间就产生了内容耦合:一个模块直接访问另一模块的内部数据;一个模块直接访问另一模块的内部数据;一个模块不通过正常入口转到另一模块的内部;一个模块不通过正常入口转到另一模块的内
46、部;两个模块有部分程序代码重叠;两个模块有部分程序代码重叠;一个模块有多个入口。一个模块有多个入口。一模块直接访问另一模一模块直接访问另一模块的内部信息块的内部信息 ( (程序代程序代码或数据码或数据)ABAB模块模块代码重叠代码重叠Entry1 Entry1 多入口多入口模块模块2022-4-24信息工程学院60v耦合是影响软件复杂程度的一个重要因素。应该耦合是影响软件复杂程度的一个重要因素。应该采取下述设计原则:采取下述设计原则:尽量使用数据耦合,尽量使用数据耦合,少用控制耦合和特征耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,限制公共环境耦合的范围,完全不用内容耦合。完全不用内容
47、耦合。2022-4-24信息工程学院61v耦合强度,依赖于以下几个因素:耦合强度,依赖于以下几个因素:v(1)一个模块对另一个模块的调用;)一个模块对另一个模块的调用;v(2)一个模块向另一个模块传递的数据量;)一个模块向另一个模块传递的数据量;v(3)一个模块施加到另一个模块的控制的多少;)一个模块施加到另一个模块的控制的多少;v(4)模块之间接口的复杂程度。)模块之间接口的复杂程度。2022-4-24信息工程学院62v内聚内聚: 内聚的概念是内聚的概念是Constantine、Yourdon、Stevens等等人提出的,内聚也称块内联系。指模块的功能强度人提出的,内聚也称块内联系。指模块的
48、功能强度的度量,即一个模块内部各个元素彼此结合的紧密的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。模块内元素联系越紧密,内聚性越高。程度的度量。模块内元素联系越紧密,内聚性越高。 v内聚标志一个模块内各个元素彼此结合的紧密程度,内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。理想内聚它是信息隐藏和局部化概念的自然扩展。理想内聚的模块只做一件事情。的模块只做一件事情。v设计时应该力求做到高内聚,通常中等程度的内聚设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;但也是可以采用的,而且效果和高内聚相差不多;但是,低内聚
49、很坏,不要使用。是,低内聚很坏,不要使用。2022-4-24信息工程学院63v内聚和耦合是密切相关的,模块内的高内聚往往内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。内聚和耦合都是进行模意味着模块间的松耦合。内聚和耦合都是进行模块化设计的有力工具。块化设计的有力工具。v但是实践表明内聚更重要,应该把更多注意力集但是实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上。中到提高模块的内聚程度上。2022-4-24信息工程学院64内聚性的类型内聚性的类型 低低 偶然内聚偶然内聚 内内 逻辑内聚逻辑内聚 聚聚 时间内聚时间内聚 性性 过程内聚过程内聚 通信内聚通信内聚 信
50、息内聚信息内聚 高高 功能内聚功能内聚模模块块独独立立性性弱弱( (功能分散功能分散) )强强( (功能单一功能单一) )2022-4-24信息工程学院65偶然内聚偶然内聚v含义:模块内各部分之间没有联系,或者即使有含义:模块内各部分之间没有联系,或者即使有联系,这种联系也很松散。联系,这种联系也很松散。v如:如:A A、B B两个模块含有相同的一段代码两个模块含有相同的一段代码C C,程序员,程序员为了节约内存,而将为了节约内存,而将A A、B B放在同一模块内,以共放在同一模块内,以共享享C C,模块,模块ABAB即为偶然内聚。即为偶然内聚。缺点:可理解性差, 可修改性差CCABCAB20
51、22-4-24信息工程学院66偶然内聚举例ABCMMOVE O TO RREAD FILE FMOVE S TO T模块模块M中的三个任务没有任何联系中的三个任务没有任何联系2022-4-24信息工程学院67逻辑内聚把几种相关的功能把几种相关的功能(逻辑上相似的功能逻辑上相似的功能)组合在一模块内组合在一模块内,每每次调用时,由传给模次调用时,由传给模块的块的判定参数判定参数来来确定确定该模块应该模块应执行哪一个执行哪一个功能。功能。!逻辑内聚导致模块间的控制耦合被被调调用用模模块块调用模块调用模块判定判定读读一一个个记记录录写写一一个个记记录录2022-4-24信息工程学院68ABCEFGA
52、BCEFGA1B1C1EFG模块内部逻辑E、F、G逻辑功能相似,组成新模块EFG缺点:缺点:增强了耦合程度增强了耦合程度( (控制耦合控制耦合) ); 不易修改,效率低不易修改,效率低公用代码段公用代码段2022-4-24信息工程学院69时间内聚v这种模块大多为多功能模块,但模块内的各这种模块大多为多功能模块,但模块内的各个个功能的执行与时间有关功能的执行与时间有关,通常要求所有功,通常要求所有功能必须在同一时间内执行,这些功能只能必须在同一时间内执行,这些功能只因时因时间因素关联间因素关联在一起。在一起。v例如:系统初始化模块、系统结束模块、紧例如:系统初始化模块、系统结束模块、紧急故障处理
53、模块等均是时间性内聚模块急故障处理模块等均是时间性内聚模块. .2022-4-24信息工程学院70过程内聚v模块内各处理成分相关,且必须以特定次模块内各处理成分相关,且必须以特定次序执行。序执行。v使用流程图作为工具设计程序时,把流程使用流程图作为工具设计程序时,把流程图中的某一部分划出来组成模块,就得到图中的某一部分划出来组成模块,就得到过程内聚模块。例如,把流程图中的循环过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。这三个模块都是过程内聚模块。2022-4-24信息工程学院71读入读入成绩单成绩单
54、读入并审查读入并审查成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩统计并打印统计并打印成绩单成绩单2022-4-24信息工程学院72通信内通信内聚聚v如果一个模块内各功能部分如果一个模块内各功能部分使用了相同的输入使用了相同的输入数数据,或据,或产生了相同的输出产生了相同的输出结果,则称之为通信内结果,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来聚模块。通常,通信内聚模块是通过数据流图来定义的。定义的。打印打印报告报告A打印打印报告报告B打印打印报告报告C计算计算A计算计算B保保存存学生信息学生信息2022-4-24信息工程学院73通信内聚模块例通信内聚模块例产生
55、工资产生工资报表报表计算平均计算平均工资工资职工工资记职工工资记录录职工工资报职工工资报表表平均工资平均工资产生职工工资报表并计算平均工资模块2022-4-24信息工程学院74A结果结果B结果结果文件文件读文件读文件打印打印检验结果检验结果计算计算A计算计算B读卡片读卡片文件文件合并合并修改修改文件文件A/B卡片卡片A/B数据数据新新文文件件获得获得A/B数据数据加工记录加工记录2022-4-24信息工程学院75信息内聚信息内聚v模块完成模块完成多个功能多个功能,各功能,各功能都在同一数据结都在同一数据结构上操作构上操作,每一功能有唯一的入口点。,每一功能有唯一的入口点。v这个模块将根据不同的
56、要求,确定该执行哪这个模块将根据不同的要求,确定该执行哪个功能。如下面图,由于这个模块的所有功个功能。如下面图,由于这个模块的所有功能都基于同一个数据结构能都基于同一个数据结构( (符号表符号表) ),因此,因此,它是一个信息内聚模块。它是一个信息内聚模块。2022-4-24信息工程学院76信息内聚符符 号号 表表查找查找登录登录删除删除修改修改2022-4-24信息工程学院77功能内聚v一个模块中各个部分都是完成某一具体功能一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,部分都是为了完成
57、一项具体功能而协同工作,紧密联系,不可分割。紧密联系,不可分割。v内聚性最强!内聚性最强!2022-4-24信息工程学院78v上述七种内聚的优劣评分,将得到如下结果:上述七种内聚的优劣评分,将得到如下结果:功能内聚功能内聚10分分时间内聚时间内聚3分分顺序内聚顺序内聚9分分逻辑内聚逻辑内聚1分分通信内聚通信内聚7分分偶然内聚偶然内聚0分分过程内聚过程内聚5分分2022-4-24信息工程学院794.3 概要设计的任务和步骤v1系统分析员审查软件计划、软件需求分析提系统分析员审查软件计划、软件需求分析提供的文档,提出候选的最佳推荐方案,用系统流供的文档,提出候选的最佳推荐方案,用系统流程图,组成系
58、统物理元素清单,成本效益分析,程图,组成系统物理元素清单,成本效益分析,系统的进度计划,供专家审定,审定后进入设计。系统的进度计划,供专家审定,审定后进入设计。v2确定模块结构,划分功能模块,将软件功能确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。确定测试方法与策略。2022-4-24信息工程学院80v3编写概要设计说明书,用户手册,测试计划,选用相编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述
59、软件结构,结构图是经常使用的软件关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则,例如模描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。块划分独立性原则,信息隐蔽原则等。v4概要设计后转入详细设计(又称过程设计,算法设概要设计后转入详细设计(又称过程设计,算法设计),其主要任务,根据概要设计提供的文档,确定每一计),其主要任务,根据概要设计提供的文档,确定每一个模块的算法,内部的数据组织,选定工具清晰正确表达个模块的算法,内部的数据组织,选定工具清晰正确表达算法。编写详细设计说明书,详细测试用例与计划用到算法。编写
60、详细设计说明书,详细测试用例与计划用到如何确定程序的复杂程度的程序图,算法流程图的表述工如何确定程序的复杂程度的程序图,算法流程图的表述工具,如具,如PAD图,图,N-S图等。图等。2022-4-24信息工程学院81v概要设计过程通常由两个主要阶段组成:概要设计过程通常由两个主要阶段组成:- 系统设计阶段,确定系统的具体实现方案;系统设计阶段,确定系统的具体实现方案;- 结构设计阶段,确定软件结构。结构设计阶段,确定软件结构。2022-4-24信息工程学院82典型设计过程v1. 设想供选择的方案设想供选择的方案:在总体设计阶段分析员应该:在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年四川天府文化职业学院单招职业技能考试题库含答案详解【培优】
- 2025年黑龙江省齐齐哈尔市高职单招职业技能考试题库及完整答案详解(网校专用)
- 2024年南充技师学院顺庆高职部单招职业技能考试题库带答案详解(培优)
- 2024年祁连远达职业学院高职单招职业适应性测试考试题库附答案详解【培优A卷】
- 2025年贵州省六盘水市高职单招职业技能考试题库含完整答案详解【有一套】
- 2027年广西工业职业学院高职单招职业技能考试模拟试卷附答案详解(能力提升)
- 2024年西安数字经济职业学院单招职业技能考试模拟试卷附答案详解(达标题)
- 2027年天山数字学院高职单招职业技能考试模拟试卷含完整答案详解(必刷)
- 2025年河北渤海技师学院高职高职单招职业技能考试题库附答案详解(突破训练)
- 2026年唐山技师学院高职部高职单招职业技能考试题库附答案详解【A卷】
- 店长保密协议书
- 展馆安全总结讲解
- 宫外孕超声诊断
- 赠予林地协议书模板
- 国际胰腺病学会急性胰腺炎修订指南(2025年)解读课件
- 销售领导力培训课件
- 家用空气净化器除异味宠物适配推广方案
- GB/T 45942-2025填充矿物油的电气设备溶解气体分析(DGA)在电气设备工厂试验中的应用
- 早癌筛查教学课件
- 重症医学科护理进修回院汇报
- FZ-T64103-2023矿用聚酯纤维柔性假顶网
评论
0/150
提交评论