《软件工程 第5章总体设计.ppt》由会员分享,可在线阅读,更多相关《软件工程 第5章总体设计.ppt(98页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程软件工程Software Engineering2022年12月22日1广东工业大学计算机学院第第5章章 总体设计总体设计o本章内容:本章内容:o5.1 软件设计的重要性软件设计的重要性o5.2 设计过程设计过程o5.3 软件总体设计软件总体设计o5.4 设计基本原理设计基本原理o5.5 体系结构设计体系结构设计o5.6 结构化设计结构化设计o5.7 软件结构优化软件结构优化2022/12/222广东工业大学计算机学院o5.1 软件设计的重要性软件设计的重要性 o软件设计处于软件工程过程的技术核心地位。软件设计处于软件工程过程的技术核心地位。2022/12/223广东工业大学计算机学院
2、o在设计中所作的决策将最终影响软件实现的成功与在设计中所作的决策将最终影响软件实现的成功与否、也影响软件维护的难易程度。所以,在软件设否、也影响软件维护的难易程度。所以,在软件设计过程中的这些决策是开发阶段非常关键的一步。计过程中的这些决策是开发阶段非常关键的一步。o软件设计的重要性还反映在质量(软件设计的重要性还反映在质量(quality)上。)上。2022/12/224广东工业大学计算机学院2022/12/225广东工业大学计算机学院5.2 设计过程设计过程 o软件设计是一个把需求转换为软件表达式的过程。软件设计是一个把需求转换为软件表达式的过程。o从软件工程的角度讲是分为总体设计和详细设
3、计。从软件工程的角度讲是分为总体设计和详细设计。总体设计主要是把需求转换为数据结构和软件体系总体设计主要是把需求转换为数据结构和软件体系结构,而详细设计主要集中在体系结构表达式的细结构,而详细设计主要集中在体系结构表达式的细化,从而产生详细的数据结构和软件的算法表达式。化,从而产生详细的数据结构和软件的算法表达式。2022/12/226广东工业大学计算机学院o总体设计和详细设计除了必须有先进的设计技术外,总体设计和详细设计除了必须有先进的设计技术外,还要有同步的管理技术支持。还要有同步的管理技术支持。2022/12/227广东工业大学计算机学院o软件设计原则:软件设计原则:o1)设计应当模块化
4、()设计应当模块化(modular),也就是说,),也就是说,软件应被逻辑地划分为能完成特定功能和子功能的软件应被逻辑地划分为能完成特定功能和子功能的构件。构件。o(2)设计应形成具有独立功能特征的模块(如子)设计应形成具有独立功能特征的模块(如子程序或过程)。程序或过程)。o(3)设计应使模块之间和与外部环境之间接口的)设计应使模块之间和与外部环境之间接口的复杂性尽量地减少。复杂性尽量地减少。2022/12/228广东工业大学计算机学院o(4)设计应该有一个分层的组织结构,这样人们)设计应该有一个分层的组织结构,这样人们可对软件各个构件进行理性的控制。可对软件各个构件进行理性的控制。o(5)
5、设计应有性质不同的可区分的数据和过程表)设计应有性质不同的可区分的数据和过程表达式。达式。o(6)设计应利用软件需求分析中得到的信息和可)设计应利用软件需求分析中得到的信息和可重复的方法。重复的方法。2022/12/229广东工业大学计算机学院5.3 软件总体设计软件总体设计o1.软件系统结构设计软件系统结构设计o(1)采用某种设计方法,将一个复杂的系统按功)采用某种设计方法,将一个复杂的系统按功能划分成模块。能划分成模块。o(2)确定每个模块的功能。)确定每个模块的功能。o(3)确定模块之间的调用关系。)确定模块之间的调用关系。o(4)确定模块之间的接口,即模块之间传递的信)确定模块之间的接
6、口,即模块之间传递的信息。息。o(5)评价模块结构的质量。)评价模块结构的质量。2022/12/2210广东工业大学计算机学院o2.数据结构及数据库设计数据结构及数据库设计o1)数据结构的设计o根据需求分析阶段对系统数据的组成、操作约束和根据需求分析阶段对系统数据的组成、操作约束和数据之间的关系的描述,确定数据结构特性。数据之间的关系的描述,确定数据结构特性。2022/12/2211广东工业大学计算机学院o2)数据库的设计o一般的软件系统都有数据的存储,存储要借助数据一般的软件系统都有数据的存储,存储要借助数据库技术。数据库的设计是指数据存储文件的设计。库技术。数据库的设计是指数据存储文件的设
7、计。设计包括以下三个方面:设计包括以下三个方面:o(1)概念设计。)概念设计。o(2)逻辑设计。)逻辑设计。o(3)物理设计。)物理设计。2022/12/2212广东工业大学计算机学院o3.网络系统设计网络系统设计o如果采用的是网络环境,则要进行网络系统的设计。如果采用的是网络环境,则要进行网络系统的设计。要分析网络负荷与容量,遵照网络系统设计原则,要分析网络负荷与容量,遵照网络系统设计原则,确定网络系统的需求。要进行网络结构设计,选择确定网络系统的需求。要进行网络结构设计,选择好网络操作系统,确定网络系统配置,制定网络拓好网络操作系统,确定网络系统配置,制定网络拓扑结构。扑结构。2022/1
8、2/2213广东工业大学计算机学院o4.软件总体设计文档软件总体设计文档o总体设计说明书是总体设计阶段结束时提交的技术总体设计说明书是总体设计阶段结束时提交的技术文档。按国标文档。按国标GB857688的的计算机软件产品计算机软件产品开发文件编制指南开发文件编制指南规定,软件设计文档可分为规定,软件设计文档可分为“总体设计说明书总体设计说明书”、“详细设计说明书详细设计说明书”和和“数据库数据库设计说明书设计说明书”。这些文档的内容与格式请参考有关。这些文档的内容与格式请参考有关资料。资料。2022/12/2214广东工业大学计算机学院o5.评审评审o在该阶段,对设计部分是否完整地实现了需求中
9、规在该阶段,对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性、关键定的功能、性能等要求,设计方案的可行性、关键的处理及内外部接口定义正确性、有效性以及各部的处理及内外部接口定义正确性、有效性以及各部分之间的一致性等,都一一进行评审。分之间的一致性等,都一一进行评审。2022/12/2215广东工业大学计算机学院5.4 设计基本原理设计基本原理 o软件设计要回答下列问题:软件设计要回答下列问题:o(1)使用什么样的准则才能把软件划分成为各个)使用什么样的准则才能把软件划分成为各个单独的构件?单独的构件?o(2)怎样把功能或数据结构的细节从软件概念表)怎样把功能或数据结构的
10、细节从软件概念表达式中分离出来?达式中分离出来?o(3)定义软件设计的技术质量有统一的准则吗?)定义软件设计的技术质量有统一的准则吗?2022/12/2216广东工业大学计算机学院5.4.1 抽象抽象 o抽象是认识复杂现象过程中使用的思维工具,即抽抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同特性而暂不考虑它的细节,不考出事物本质的共同特性而暂不考虑它的细节,不考虑其他因素。虑其他因素。o随着对抽象不同层次的展开,过程抽象随着对抽象不同层次的展开,过程抽象(Procedural Abstraction)和数据抽象)和数据抽象(Data Abstraction)就建立了。)就建立了
11、。2022/12/2217广东工业大学计算机学院5.4.2 细化细化 o逐步细化是一种自顶向下的设计策略。程序的体系逐步细化是一种自顶向下的设计策略。程序的体系结构开发是由过程细节层次不断地细化而成的。分结构开发是由过程细节层次不断地细化而成的。分层的开发则是以逐步的方式由分解一个宏功能直到层的开发则是以逐步的方式由分解一个宏功能直到获得编程语言语句。获得编程语言语句。o细化实际上是一个详细描述的过程。在高层抽象定细化实际上是一个详细描述的过程。在高层抽象定义时,从功能说明或信息描述开始,就是说明功能义时,从功能说明或信息描述开始,就是说明功能或信息的概念,而不给出功能内部的工作细节或信或信息
12、的概念,而不给出功能内部的工作细节或信息的内部结构。细化则是设计者在原始说明的基础息的内部结构。细化则是设计者在原始说明的基础上进行详细说明,随着不断的细化(详细说明)给上进行详细说明,随着不断的细化(详细说明)给出更多的细节。出更多的细节。2022/12/2218广东工业大学计算机学院5.4.3 模块化模块化 o模块具有以下几种基本属性:模块具有以下几种基本属性:o(1)接口:指模块的输入与输出。)接口:指模块的输入与输出。o(2)功能:指模块实现什么功能。)功能:指模块实现什么功能。o(3)逻辑:描述内部如何实现要求的功能及所需)逻辑:描述内部如何实现要求的功能及所需的数据。的数据。o(4
13、)状态:指该模块的运行环境,即模块的调用)状态:指该模块的运行环境,即模块的调用与被调用关系。与被调用关系。2022/12/2219广东工业大学计算机学院o模块化是指解决一个复杂问题时自顶向下逐层把软模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。成为一个整体,完成整个系统所要求的功能。2022/12/2220广东工业大学计算机学院o问题复杂性与工作量关系问题复杂性与工作量关系o设问题
14、设问题x,表示它的复杂性函数为,表示它的复杂性函数为C(x),解决它所,解决它所需的工作量函数为需的工作量函数为E(x)。对于问题。对于问题P1和和P2;如;如果:果:oC(P1)C(P2)o即即P1比比P2复杂,那么:复杂,那么:oE(P1)E(P2)o即问题越复杂,所需要的工作量越大。即问题越复杂,所需要的工作量越大。2022/12/2221广东工业大学计算机学院o根据解决一般问题的经验,规律为:根据解决一般问题的经验,规律为:oC(P1+P2)C(P1)+C(P2)o即一个问题同问题组合而成的复杂度大于分别考虑即一个问题同问题组合而成的复杂度大于分别考虑每个问题的复杂度之和。这样,可以推
15、出:每个问题的复杂度之和。这样,可以推出:oE(P1+P2)E(P1)+E(P2)o所得结果对于模块化和软件具有重要的意义。那么,所得结果对于模块化和软件具有重要的意义。那么,从上面所得的不等式是否可以得出这样的结论:从上面所得的不等式是否可以得出这样的结论:o如果把软件无限细分,那么最后开发软件所需要的如果把软件无限细分,那么最后开发软件所需要的工作量就小得可以忽略了。但是,事实上,影响软工作量就小得可以忽略了。但是,事实上,影响软件开发工作量的因素还有许多件开发工作量的因素还有许多 2022/12/2222广东工业大学计算机学院o模块数目与软件成本模块数目与软件成本 2022/12/222
16、3广东工业大学计算机学院5.4.4 软件体系结构软件体系结构 o软件总体设计的主要任务就是软件结构的设计。软软件总体设计的主要任务就是软件结构的设计。软件体系结构(件体系结构(software architecture)包含了)包含了计算机程序的两个重要特性:计算机程序的两个重要特性:o(1)过程构件(模块)的层次结构。)过程构件(模块)的层次结构。o(2)数据结构。)数据结构。2022/12/2224广东工业大学计算机学院o结构化演化结构化演化 2022/12/2225广东工业大学计算机学院o不同结构不同结构 2022/12/2226广东工业大学计算机学院5.4.5 程序结构程序结构 o程序
17、结构(程序结构(program structure)给出了程序)给出了程序构件(模块)的组织(通常叫分层),这种组织包构件(模块)的组织(通常叫分层),这种组织包含了控制的层次。它们不给出软件的过程方面,如含了控制的层次。它们不给出软件的过程方面,如过程的序列、决策的出现或次序,或操作的重复等。过程的序列、决策的出现或次序,或操作的重复等。2022/12/2227广东工业大学计算机学院o结构专用名词结构专用名词 2022/12/2228广东工业大学计算机学院5.4.6 数据结构数据结构 o在软件体系结构的表达式中,数据结构与程序结构在软件体系结构的表达式中,数据结构与程序结构同样重要。数据结构
18、决定信息的组织、存取方法、同样重要。数据结构决定信息的组织、存取方法、结合的程度,以及可选的处理方法。结合的程度,以及可选的处理方法。2022/12/2229广东工业大学计算机学院o典型的数据结构典型的数据结构 2022/12/2230广东工业大学计算机学院o当组织标量项作为一列或连接的组时,就形成一个当组织标量项作为一列或连接的组时,就形成一个顺序向量(顺序向量(sequential vector)。向量是数据)。向量是数据结构中最常用的。可看下面这个结构中最常用的。可看下面这个C语言程序段的例语言程序段的例子:子:oint aa100;ooprocedure ps(int aa;int n
19、;int sum)o int i;o2022/12/2231广东工业大学计算机学院osum=0;o for(i=1;i=n;i+)o sum=sum+aai;o;ooo例子中定义例子中定义aa为为100个标量整数项的顺序向量。个标量整数项的顺序向量。在过程在过程ps中标引中标引aa的每个元素的存储,这样数据的每个元素的存储,这样数据结构的每个元素都可按定义的顺序引用。结构的每个元素都可按定义的顺序引用。2022/12/2232广东工业大学计算机学院5.4.7 软件过程软件过程 o软件过程(软件过程(software procedure),则侧重于),则侧重于每一个单独模块的处理细节研究。过程必
20、须提供精每一个单独模块的处理细节研究。过程必须提供精确的事件的顺序、确切的抉择点、重复的操作,以确的事件的顺序、确切的抉择点、重复的操作,以及数据的组织与结构处理规格说明。及数据的组织与结构处理规格说明。2022/12/2233广东工业大学计算机学院o一个模块内的过程一个模块内的过程 2022/12/2234广东工业大学计算机学院o过程的分层过程的分层 2022/12/2235广东工业大学计算机学院5.5 体系结构设计体系结构设计 o软件体系结构设计(软件体系结构设计(architectural design)的)的主要目标是设计一个模块化的程序结构。体系结构主要目标是设计一个模块化的程序结构
21、。体系结构设计融合了程序结构和数据结构,接口定义能使数设计融合了程序结构和数据结构,接口定义能使数据流经程序。要给出各个模块之间的控制关系。据流经程序。要给出各个模块之间的控制关系。2022/12/2236广东工业大学计算机学院5.5.1 软件结构图软件结构图 o软件结构图是软件系统的模块层次结构,反映了整软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。个系统的功能实现,即将来程序的控制层次体系。o软件结构往往用树状或网状结构的图形来表示。软件结构往往用树状或网状结构的图形来表示。o1.模块模块o用方框表示,并用名字标识该模块,名字应体现该用方框表示,并
22、用名字标识该模块,名字应体现该模块的功能。模块的功能。o2.模块的控制关系模块的控制关系o两个模块间用单向箭头或直线连接起来表示它们的两个模块间用单向箭头或直线连接起来表示它们的控制关系。控制关系。2022/12/2237广东工业大学计算机学院o3.模块间的信息传递模块间的信息传递o模块间还经常用带注释的短箭头表示模块调用过程模块间还经常用带注释的短箭头表示模块调用过程中来回传递的信息。中来回传递的信息。o模块间的控制关系及信息传递模块间的控制关系及信息传递 2022/12/2238广东工业大学计算机学院o4.两个附加符号两个附加符号o表示模块有选择调用或循环调用表示模块有选择调用或循环调用
23、2022/12/2239广东工业大学计算机学院o5.结构图的形态特征结构图的形态特征 2022/12/2240广东工业大学计算机学院o结构图的形态特征包括:结构图的形态特征包括:o(1)深度:指结构图控制的层次,即模块的层数。)深度:指结构图控制的层次,即模块的层数。o(2)宽度:指一层中最大的模块个数。)宽度:指一层中最大的模块个数。o(3)扇出:指一个模块直接下属模块的个数。)扇出:指一个模块直接下属模块的个数。o(4)扇入:指一个模块直接上属模块的个数。)扇入:指一个模块直接上属模块的个数。2022/12/2241广东工业大学计算机学院o6.画结构图应注意的事项画结构图应注意的事项o(1
24、)同一名字的模块在结构图中仅出现一次。)同一名字的模块在结构图中仅出现一次。o(2)调用关系只能从上到下。)调用关系只能从上到下。o(3)不严格表示模块的调用次序,习惯上从左到)不严格表示模块的调用次序,习惯上从左到右。右。2022/12/2242广东工业大学计算机学院5.5.2 模块的大小模块的大小 o前面在讨论模块设计的原理时,已经知道一个系统前面在讨论模块设计的原理时,已经知道一个系统应当由若干个模块构成。其目的是为了降低系统的应当由若干个模块构成。其目的是为了降低系统的复杂度。复杂度。o模块设计的准则不应该是语句的多少,而应当是模模块设计的准则不应该是语句的多少,而应当是模块是否是一个
25、独立的功能。块是否是一个独立的功能。2022/12/2243广东工业大学计算机学院5.5.3 扇出和扇入与深度和宽度扇出和扇入与深度和宽度o由结构图的形态特征可以知道,一个系统的大小和由结构图的形态特征可以知道,一个系统的大小和系统的复杂程度在一定程度上可以用深度和宽度表系统的复杂程度在一定程度上可以用深度和宽度表示。示。o大量的系统研究表明,认为高层模块应有较高的扇大量的系统研究表明,认为高层模块应有较高的扇出,低层模块特别是底层模块应有较高的扇入。扇出,低层模块特别是底层模块应有较高的扇入。扇入越大,表示该模块被更多的上级模块共享。多个入越大,表示该模块被更多的上级模块共享。多个扇入入口相
26、同,这就避免了程序的重复,因此希望扇入入口相同,这就避免了程序的重复,因此希望扇入高一点。但过多又可能是把许多不相关的功能扇入高一点。但过多又可能是把许多不相关的功能硬凑在一起,形成通用模块,这样的模块必然是低硬凑在一起,形成通用模块,这样的模块必然是低聚合的。聚合的。2022/12/2244广东工业大学计算机学院扇出实际上是对问题解的分解扇出实际上是对问题解的分解 2022/12/2245广东工业大学计算机学院2022/12/2246广东工业大学计算机学院5.5.4 模块的耦合模块的耦合 o耦合(耦合(Coupling)表示软件结构内不同模块彼此)表示软件结构内不同模块彼此之间相互依赖(连接
27、)的紧密程度,是衡量软件模之间相互依赖(连接)的紧密程度,是衡量软件模块结构质量好坏的度量,是对模块独立性的直接衡块结构质量好坏的度量,是对模块独立性的直接衡量指标。量指标。o耦合强弱取决于模块间接口的复杂程度,进入或访耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。问一个模块的点,以及通过接口的数据。2022/12/2247广东工业大学计算机学院1.数据耦合数据耦合o如果两个模块彼此间通过参数交换信息,而且交换如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。的信息仅仅是数据,那么这种耦合称为数据耦合。o数据耦合是低耦合。
28、系统中必须存在这种耦合,因数据耦合是低耦合。系统中必须存在这种耦合,因为只有当某些模块的输出数据作为另一些模块的输为只有当某些模块的输出数据作为另一些模块的输入数据时,系统才能完成有价值的功能。入数据时,系统才能完成有价值的功能。2022/12/2248广东工业大学计算机学院2.控制耦合控制耦合o如果传递的信息中有控制信息,则这种耦合称为控如果传递的信息中有控制信息,则这种耦合称为控制耦合。控制耦合是中等程度的耦合,它增加了系制耦合。控制耦合是中等程度的耦合,它增加了系统的复杂程度。统的复杂程度。o控制耦合往往是多余的,在把模块适当分解之后通控制耦合往往是多余的,在把模块适当分解之后通常可以用
29、数据耦合代替它。常可以用数据耦合代替它。2022/12/2249广东工业大学计算机学院2022/12/2250广东工业大学计算机学院o3.公共环境耦合公共环境耦合 o当两个或多个模块通过一个公共数据环境相互作用当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合(即公用耦时,它们之间的耦合称为公共环境耦合(即公用耦合)。合)。o公共环境耦合的复杂程度随耦合的模块个数而变化,公共环境耦合的复杂程度随耦合的模块个数而变化,当耦合的模块个数增加时复杂程度显著增加。当耦合的模块个数增加时复杂程度显著增加。2022/12/2251广东工业大学计算机学院o松散的公用耦合松散的公用
30、耦合 2022/12/2252广东工业大学计算机学院o紧密的公用耦合紧密的公用耦合 2022/12/2253广东工业大学计算机学院o(1)一个模块往公共环境送数据,另一个模块从)一个模块往公共环境送数据,另一个模块从公共环境取数据。这是数据耦合的一种形式,是比公共环境取数据。这是数据耦合的一种形式,是比较松散的耦合。较松散的耦合。o(2)两个模块都既往公共环境送数据又从里面取)两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介于数据耦合和控制耦数据,这种耦合比较紧密,介于数据耦合和控制耦合之间。合之间。2022/12/2254广东工业大学计算机学院o4.内容耦合内容耦合o最高程度
31、的耦合是内容耦合。最高程度的耦合是内容耦合。2022/12/2255广东工业大学计算机学院o(1)一个模块访问另一个模块的内部数据;)一个模块访问另一个模块的内部数据;o(2)一个模块不通过正常入口而转到另一个模块)一个模块不通过正常入口而转到另一个模块的内部;的内部;o(3)两个模块有一部分程度代码重叠(只可能出)两个模块有一部分程度代码重叠(只可能出现在汇编程序中);现在汇编程序中);o(4)一个模块有多个入口(这表明一个模块有几)一个模块有多个入口(这表明一个模块有几种功能)。种功能)。2022/12/2256广东工业大学计算机学院o应该坚决避免使用内容耦合。事实上许多高级程序应该坚决避
32、免使用内容耦合。事实上许多高级程序设计语言已经设计成不允许在程序中出现任何形式设计语言已经设计成不允许在程序中出现任何形式的内容耦合。的内容耦合。o总之,耦合是影响模块结构和软件复杂程度的一个总之,耦合是影响模块结构和软件复杂程度的一个重要因素,应该采用如下设计原则:尽量使用数据重要因素,应该采用如下设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合,完全不耦合,少用控制耦合,限制公共环境耦合,完全不用内容耦合。用内容耦合。2022/12/2257广东工业大学计算机学院5.5.5 模块的内聚模块的内聚 o内聚标志一个模块内各个元素彼此结合的紧密程度,内聚标志一个模块内各个元素彼此结合的
33、紧密程度,它是信息隐蔽和局部化概念的自然扩展。简单地说,它是信息隐蔽和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。理想内聚的模块只做一件事情。o1.功能内聚功能内聚o如果模块内所有处理元素属于一个整体,完成一个如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。功能内聚是最高程单一的功能,则称为功能内聚。功能内聚是最高程度的内聚。度的内聚。2022/12/2258广东工业大学计算机学院o2.信息内聚信息内聚o信息内聚模块能完成多种功能,各个功能都在同一信息内聚模块能完成多种功能,各个功能都在同一数据结构上操作,每一项功能有一个惟一的入口点数据结构上操作,每一
34、项功能有一个惟一的入口点。2022/12/2259广东工业大学计算机学院o3.通信内聚通信内聚o如果一个模块中所有处理元素都使用同一个输入数如果一个模块中所有处理元素都使用同一个输入数据和(或)产生同一个输出数据,称为通信内聚据和(或)产生同一个输出数据,称为通信内聚(Communicational Cohesion)。)。2022/12/2260广东工业大学计算机学院o4.过程内聚过程内聚 o如果一个模块内部的处理元素是相关的,而且必须如果一个模块内部的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。以特定次序执行,则称为过程内聚。o过程内聚与顺序内聚的区别主要在于:顺序内聚中过程
35、内聚与顺序内聚的区别主要在于:顺序内聚中是数据流从一个处理元流到另一个处理元,而过程是数据流从一个处理元流到另一个处理元,而过程内聚中是控制流从一个动作流向另一个动作。内聚中是控制流从一个动作流向另一个动作。2022/12/2261广东工业大学计算机学院o5.逻辑内聚逻辑内聚o如果一个模块完成的任务在逻辑上属于相同或相似如果一个模块完成的任务在逻辑上属于相同或相似的一类,称为逻辑内聚(的一类,称为逻辑内聚(Logical Cohesion)。)。2022/12/2262广东工业大学计算机学院o6.时间内聚时间内聚o如果一个模块包含的任务必须在同一段时间内执行,如果一个模块包含的任务必须在同一段
36、时间内执行,就叫时间内聚。就叫时间内聚。2022/12/2263广东工业大学计算机学院o7.偶然内聚偶然内聚o如果一个模块完成一组任务,这些任务彼此间即使如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫做偶然内聚。有关系,关系也是很松散的,就叫做偶然内聚。2022/12/2264广东工业大学计算机学院5.5.6 结构设计的一般准则结构设计的一般准则 o1.模块独立性准则模块独立性准则 o(1)如果若干模块之间耦合强度过高,每个模块)如果若干模块之间耦合强度过高,每个模块内功能不复杂,可将它们合并,以减少信息的传递内功能不复杂,可将它们合并,以减少信息的传递和公共区的引
37、用。和公共区的引用。o(2)若有多个相关模块,应对它们的功能进行分)若有多个相关模块,应对它们的功能进行分析,消去重复功能。析,消去重复功能。2022/12/2265广东工业大学计算机学院2022/12/2266广东工业大学计算机学院o2.软件结构的形态特征准则软件结构的形态特征准则o软件结构的深度、宽度、扇入及扇出应适当。软件结构的深度、宽度、扇入及扇出应适当。o3.模块的大小准则模块的大小准则o在考虑模块独立性的同时,为了增加可理解性,模在考虑模块独立性的同时,为了增加可理解性,模块的大小最好在块的大小最好在50150条语句左右,可以用条语句左右,可以用12页打印纸打印,便于人们阅读与研究
38、。页打印纸打印,便于人们阅读与研究。2022/12/2267广东工业大学计算机学院o4.模块的接口准则模块的接口准则o模块的接口要简单、清晰及含义明确,便于理解,模块的接口要简单、清晰及含义明确,便于理解,易于实现、测试与维护。易于实现、测试与维护。o模块接口的复杂性是软件发生错误的一个重要原因。模块接口的复杂性是软件发生错误的一个重要原因。因此,设计模块接口时,应尽量使传递的信息简单因此,设计模块接口时,应尽量使传递的信息简单并与模块的功能一致。并与模块的功能一致。2022/12/2268广东工业大学计算机学院5.5.7 模块的作用域与控制域模块的作用域与控制域 o一个模块的作用范围应在其控
39、制范畴之内,且条件一个模块的作用范围应在其控制范畴之内,且条件判定所在的模块应与受影响的模块在层次上尽量靠判定所在的模块应与受影响的模块在层次上尽量靠近。近。o如果在设计过程中,发现模块作用范围不在其控制如果在设计过程中,发现模块作用范围不在其控制范围之内,可用以下方法加以改进:范围之内,可用以下方法加以改进:o(1)上移判断点。使该判断的层次升高,以扩大)上移判断点。使该判断的层次升高,以扩大它的控制范围。它的控制范围。o(2)下移受判断影响的模块。将受判断影响的模)下移受判断影响的模块。将受判断影响的模块下移到判断所在模块的控制范围内。块下移到判断所在模块的控制范围内。2022/12/22
40、69广东工业大学计算机学院 图5-28 模块示意图1 图5-29 模块示意图2 图5-30 模块示意图32022/12/2270广东工业大学计算机学院5.6 结构化设计结构化设计 o5.6.1 数据流的类型数据流的类型o1.变换型数据流图变换型数据流图o根据信息系统的模型,信息一般是以外部形式进入根据信息系统的模型,信息一般是以外部形式进入系统,通过系统处理后,然后离开系统。从其过程系统,通过系统处理后,然后离开系统。从其过程可以得出,变换流的数据流图是一个线性结构。可以得出,变换流的数据流图是一个线性结构。o变换型的数据流是由输入、变换(或称处理)和输变换型的数据流是由输入、变换(或称处理)
41、和输出三部分组成出三部分组成。2022/12/2271广东工业大学计算机学院o变换型数据流图变换型数据流图 图5-31 变换型数据流图 2022/12/2272广东工业大学计算机学院o2.事务型数据流图事务型数据流图o基本系统模型意味着变换流。因此,原则上可以讲基本系统模型意味着变换流。因此,原则上可以讲所有的信息流都可以归结为这一类。所有的信息流都可以归结为这一类。图5-32 事务型数据流图2022/12/2273广东工业大学计算机学院o图中的处理图中的处理T称为事务中心,它完成下述任务:称为事务中心,它完成下述任务:o(1)接收输入数据。)接收输入数据。o(2)分析每个事务,确定其类型。)
42、分析每个事务,确定其类型。o(3)根据事务选择一条活动通路。)根据事务选择一条活动通路。2022/12/2274广东工业大学计算机学院5.6.2 过程步骤过程步骤 o结构化设计方法转换的步骤:结构化设计方法转换的步骤:o(1)数据流图:把数据流图转换成软件结构图前,)数据流图:把数据流图转换成软件结构图前,设计人员要参照规范说明书,仔细地研究分析数据设计人员要参照规范说明书,仔细地研究分析数据流图并参照数据字典,认真理解其中的有关元素,流图并参照数据字典,认真理解其中的有关元素,检查有无遗漏或不合理之处,进行必要的修改。检查有无遗漏或不合理之处,进行必要的修改。o(2)确定数据流图类型:通常将
43、系统的数据流图)确定数据流图类型:通常将系统的数据流图视为变换流。视为变换流。2022/12/2275广东工业大学计算机学院o(3)找出变换中心:输入流是一条路径,经过这)找出变换中心:输入流是一条路径,经过这条路径数据从外部形式转换为内部形式。输出流则条路径数据从外部形式转换为内部形式。输出流则相反,从内部形式转换为外部形式。相反,从内部形式转换为外部形式。o(4)第一层分解:如果是变换流,要把数据流图)第一层分解:如果是变换流,要把数据流图映射为一种输入、变换、输出的特殊结构。映射为一种输入、变换、输出的特殊结构。o(5)第二层分解:这一步的任务是把数据流图中)第二层分解:这一步的任务是把
44、数据流图中的各个变换映射成为相应的模块。的各个变换映射成为相应的模块。2022/12/2276广东工业大学计算机学院o(6)根据优化准则对软件结构求精。)根据优化准则对软件结构求精。o(7)描述模块功能、接口及全局数据结构。)描述模块功能、接口及全局数据结构。o(8)复查,如果有错,转步骤()复查,如果有错,转步骤(2)修改完善,)修改完善,否则进入详细设计。否则进入详细设计。2022/12/2277广东工业大学计算机学院5.6.3 变换分析设计变换分析设计 o变换流的设计是将数据流图到程序结构图的转换。变换流的设计是将数据流图到程序结构图的转换。当数据流图具有较明显的变换特征时,则按照下列当
45、数据流图具有较明显的变换特征时,则按照下列步骤设计。步骤设计。o1.确定数据流图中的变换中心、逻辑输入和逻辑确定数据流图中的变换中心、逻辑输入和逻辑输出。输出。o 2.设计软件结构的顶层和第一层。设计软件结构的顶层和第一层。2022/12/2278广东工业大学计算机学院图5-33 变换分析设计举例2022/12/2279广东工业大学计算机学院o3.设计中、下层模块。设计中、下层模块。o1)输入模块的下属模块的设计)输入模块的下属模块的设计 o2)输出模块的下属模块的设计)输出模块的下属模块的设计 o3)变换模块的下属模块的设计)变换模块的下属模块的设计 2022/12/2280广东工业大学计算
46、机学院o4.设计的优化设计的优化o(1)输入部分的求精)输入部分的求精o(2)输出部分的求精)输出部分的求精 o(3)变换部分的求精)变换部分的求精 2022/12/2281广东工业大学计算机学院5.6.4 事务分析设计事务分析设计 o事务流的设计是从事务数据流图到程序结构的变换。事务流的设计是从事务数据流图到程序结构的变换。对于具有事务型特征的数据流图,则采用事务分析对于具有事务型特征的数据流图,则采用事务分析的设计方法。的设计方法。o(1)确定数据流图中的事务中心和加工路径。)确定数据流图中的事务中心和加工路径。o当数据流图中的某个加工具有明显地将一个输入数当数据流图中的某个加工具有明显地
47、将一个输入数据流分解成多个发散的输出数据流时,该加工就是据流分解成多个发散的输出数据流时,该加工就是事务中心。从事务中心辐射出去的数据流为各个加事务中心。从事务中心辐射出去的数据流为各个加工路径。工路径。2022/12/2282广东工业大学计算机学院o(2)设计软件结构的顶层和第一层。)设计软件结构的顶层和第一层。o事务处理中心和事务处理路径确定后,就可以确定事务处理中心和事务处理路径确定后,就可以确定它们的软件结构。它们的软件结构。o(3)进行事务结构中、下层模块的设计、优化等)进行事务结构中、下层模块的设计、优化等工作。工作。2022/12/2283广东工业大学计算机学院图5-34 事务分
48、析设计举例2022/12/2284广东工业大学计算机学院5.6.5 混合流设计混合流设计 o1.混合数据流图的映射混合数据流图的映射o一般中型以上的系统的数据流图中,都会既有变换一般中型以上的系统的数据流图中,都会既有变换流,又有事务流。这就是所谓的混合的数据流图,流,又有事务流。这就是所谓的混合的数据流图,其软件结构设计方法一般采用以变换流为主,事务其软件结构设计方法一般采用以变换流为主,事务流为辅的方法。流为辅的方法。o(1)确定数据流图整体上的类型。)确定数据流图整体上的类型。o(2)标出局部的数据流图范围,确定其类型。)标出局部的数据流图范围,确定其类型。o(3)按整体和局部的数据流图
49、特征,设计出软件)按整体和局部的数据流图特征,设计出软件结构。结构。2022/12/2285广东工业大学计算机学院o2.分层数据流图的映射分层数据流图的映射o对于一个复杂问题的数据流图结果,往往是分层的。对于一个复杂问题的数据流图结果,往往是分层的。那么对于分层的数据流图映射成软件结构图也应该那么对于分层的数据流图映射成软件结构图也应该是分层的。是分层的。o(2022/12/2286广东工业大学计算机学院1)主图是变换型,子图是事务型)主图是变换型,子图是事务型 图5-35 主图变换型,子图事务型2022/12/2287广东工业大学计算机学院(2)主图是事务型,子图是变换型)主图是事务型,子图
50、是变换型图5-36 主图事务型,子图变换型 2022/12/2288广东工业大学计算机学院5.6.6 结构化设计方法应用示例结构化设计方法应用示例图5-37 销售管理系统软件结构图2022/12/2289广东工业大学计算机学院图5-38 子图12022/12/2290广东工业大学计算机学院o5.6.7 设计的后期处理设计的后期处理 o由设计的工作流程可知,经过变换分析或事务分析由设计的工作流程可知,经过变换分析或事务分析设计,形成软件结构,对于这个结构除了设计文档设计,形成软件结构,对于这个结构除了设计文档作为系统设计的补充外,还要对结构进行优化和改作为系统设计的补充外,还要对结构进行优化和改