资源描述
*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章 软件概要设计,4.1,软件概要设计的基本任务,4.2,软件设计的基本原理,4.3,软件结构优化准则,4.4,面向数据流的设计方法,4.5,基于,IDEF,O,图的设计方法,4.6,表示软件结构的另一种图形工具,HIPO,图,第,4,章 软件概要设计,返回主目录,1,4.1,软件概要设计的基本任务,4.1.1,基本任务,1.,设计软件系统结构(简称软件结构,),(1),采用某种设计方法,将一个复杂的系统按功能划分成模块。,(2),确定每个模块的功能。,(3),确定模块之间的调用关系。,(4),确定模块之间的接口,即模块之间传递的信息。,(5),评价模块结构的质量。,2,软件结构的设计是以模块为基础的。,软件结构的设计是概要设计关键的一步,直接影响到详细设计与编码的工作。,软件系统的质量及整体特性都在软件结构的设计中决定。,2.,数据结构及数据库设计,1),数据结构的设计,2),数据库的设计:概念设计、逻辑设计、物理设计。,数据库的“概念设计”与“逻辑设计”分别对应于系统开发中的“需求分析”与“概要设计”,而数据库的“物理设计”与模块的“详细设计”相对应。,3,3,.,编写概要设计文档,编写概要设计文档的内容如下:,(1),概要设计说明书。,(2),数据库设计说明书。,(3),用户手册。,(4),修订测试计划。,4,.,评审,4.1.2,软件概要设计文档,4,4.2,软件设计的基本原理,4.2.1,模块化,模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数和子程序等。,模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。,每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。,5,模块化的依据:,设问题,x,表示它的复杂性函数为,C(x),解决它所需的工作量函数为,E(x),。,对于问题,P1,和,P2,;,C(P1+P2),C(P1)+C(P2),E(P1+P2),E(P1)+E(P2),在划分模块时,模块数目要适度并减少接口的代价,提高模块的独立性。,图,4.1,模块与开发软件成本,6,4.2.2,抽象,抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同特性而暂不考虑它的细节,不考虑其他因素。,4.2.3,信息隐蔽,所谓信息隐蔽,是指在设计和确定模块时,使得一个模块内包含的信息,(,过程或数据,),,对于不需要这些信息的其他模块来说,是不能访问的。,有效的模块化通过定义一组相互独立的模块来实现,这些独立的模块彼此之间仅仅交换那些为了完成系统功能所必需的信息,而将那些自身的实现细节与数据“隐藏”起来。,7,4.2.4,模块独立性,模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。,只有符合和遵守模块化、抽象及信息隐蔽这些软件工程基本原理,才能得到高度独立的模块。,良好的模块独立性能使开发的软件具有较高的质量。由于模块独立性强,信息隐藏性能好,并完成独立的功能,且它的可理解性、可维护性及可测试性好,必然导致软件的可靠性高。另外,接口简单、功能独立的模块易开发,且可并行工作,有效地提高了软件的生产率。,8,模块独立性度量的两个定性标准,耦合性和内聚性。,1.,耦合性,(Coupling),耦合性也称块间联系,指软件系统结构中各模块间相互联系紧密程度的一种度量。,模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。,模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。,9,模块的耦合性由低到高有以下,6,种类型:,(1),无直接耦合:指两个模块之间没有直接的关系。这种耦合性最弱,模块独立性最高。,(2),数据耦合:指两个模块之间有调用关系,传递的是简单的数据值。这种耦合程度较低,模块的独立性较高。,(3),标记耦合:指两个模块之间传递的是数据结构的地址,如高级语言中的数组名、记录名和文件名等这些名字即为标记。标记耦合是不可避免的。,(4),控制耦合:指一个模块调用另一个模块时,传递的是控制变量,(,如开关、标志等,),,被调模块通过该控制变量的值有选择地执行块内某一功能。通常将控制耦合改变为数据耦合。,10,(5),公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。公共数据环境可以是全程变量或数据结构等。,公共耦合有两种情况:松散的公共耦合;紧密的公共耦合。,(6),内容耦合:是最高程度的耦合,也是最差的耦合。,模,块化设计的目标:提高模块独立性、建立模块间尽可能松散的系统。,为了降低模块间的耦合度,可采取以下几点措施:,(1),在耦合方式,上降低模块间接口的复杂性。,(2),在传递信息类型上尽量使用数据耦合,避免控制耦合,慎用或有控制地使用公共耦合。,11,2.,内聚性,(Cohesion),内聚性也称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素,(,语句之间、程序段之间,),联系的越紧密,则它的内聚性就越高。,内聚性从低到高有以下几种类型:,(1),偶然内聚:指一个模块内的各处理元素之间没有任何联系。是最差的内聚情况。,(2),逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。内聚性较差。,(3),时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。时间内聚比逻辑内聚程度高。,12,(4),通信内聚:指模块内所有处理元素都在同一个数据结构上操作,(,有时称之为信息内聚,),,或者指各处理使用相同的输入数据或者产生相同的输出数据。通信内聚的模块内聚性较高,可达到信息隐藏。,(5),顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入。,(6),功能内聚:是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性。,13,4.3,软件结构优化准则,4.3.1,软件结构图,软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。,软件结构往往用树状或网状结构的图形来表示。,结构图的主要内容有:,(1),模块。,(2),模块的控制关系。,(3),模块间的信息传递。,(4),两个附加符号:表示模块有选择调用或循环调用。,14,4.3,选择调用和循环调用的表示,(a),选择调用;,(b),循环调用,图,4.2,模块间的控制关系及信息传递,15,(5),结构图的形态特征。结构图的形态特征包括:,深度,:指结构图控制的层次,也是模块的层数。,宽度,:指一层中最大的模块个数。,扇出:,一个模块直接下属模块的个数。,图,4.4,结构图示例,16,扇入:,指一个模块直接上属模块的个数,如图,3.4,所示,模块,T,的扇入为,4,。,(6),画结构图应注意的事项如下:,同一名字的模块在结构图中仅出现一次。,调用关系只能从上到下。,不严格表示模块的调用次序,习惯上从左到右。,17,4.3.2,软件结构设计优化准则,1.,模块独立性准则,划分模块时,,尽量做到高内聚,低耦合,保持模块相对独立性,,并以此原则优化初始的软件结构。,2.,控制范围与作用范围之间的准则,一个模块的作用范围应在其控制范围之内,且条件判定所在的模块应与受其影响的模块在层次上尽量靠近。,一个模块的作用范围指受该模块内一个判定影响的所有模块的集合。一个模块的控制范围指模块本身以及其所有下属模块,(,直接或间接从属于它的模块,),的集合。,18,图,4.5,模块的判定作用范围,(a),差的结构图;,(b),不理想的结构图;,(c),理想的结构图,如果在设计过程中,发现模块作用范围不在其控制范围之内,可以用以下方法加以改进:,(1),上移判断点。,(2),下移受判断影响的模块。,19,3.,软件结构的形态特征准则,软件结构的深度、宽度、扇入及扇出应适当。,4.,模块的大小准则,在考虑模块的独立性同时,为了增加可理解性,模块的大小最好在,50150,条语句左右,,便于人们阅读与研究。,5.,模块的接口准则,模块的接口要简单、清晰及含义明确,便于理解,易于实现、测试与维护。,20,4.4,面向数据流的设计方法,4.4.1,数据流的类型,1.,变换型数据流图,变换型的,DFD,是由输入、变换(或称处理)和输出三部分组成,,如图,4-6,所示。,变换型数据处理的工作过程一般分为取得数据、变换数据和给出数据。这三步体现了变换型,DFD,的基本思想。,变换是系统的主加工,变换输入端的数据流为系统的,逻辑输入,,输出端为,逻辑输出,。而直接从外部设备输入的数据称为,物理输入,,反之称为,物理输出。变换型的,DFD,是一个顺序结构。,21,图,4-6,变换型,DFD,22,2.,事务型的数据流图,若某个加工将它的输入流分离成许多发散的数据流,形成许多平行的加工路径,并根据输入的值选择其中一个路径来执行,这种特征的,DFD,称为事务型的数据流图,这个加工称为事务处理中心,,如图,4-7,所示。,图,4-7,事务型,DFD,23,4.4.2,设计过程,结构化设计方法的过程如下,:,(,1,)精化,DFD,。,(,2,)确定,DFD,类型。,(,3,)分解上层模块,设计中下层模块结构。,(,4,)根据优化准则对软件结构求精。,(,5,)描述模块功能、接口及全局数据结构。,(,6,)复查,如果有错,转(,2,)修改完善,否则进入详细设计。,24,4.4.3,变换分析设计,当,DFD,具有较明显的变换特征时,则按照下列步骤设计。,1.,确定,DFD,中的变换中心、逻辑输入和逻辑输出,2.,设计软件结构的顶层和第一层,变换结构,变换中心确定以后,就相当于决定了主模块的位置,这就是软件结构的顶层,如图,8.14,所示。其功能是主要完成所有模块的控制,它的名称是系统名称,以体现完成整个系统的功能。主模块确定之后,设计软件结构的第一层。第一层至少要有输入、输出和变换三种功能的模块。,25,图,8.14,变换分析设计举例,26,3.,设计中、下层模块,对第一层的输入、变换及输出模块自顶向下、逐层分解。,1),输入模块的下属模块的设计,每个输入模块可以设计成两个下属模块:一个接收,一个转换。用类似的方法一直分解下去,直到物理输入端。,2),输出模块的下属模块的设计,每个输出模块可以设计成两个下属模块:一个转换,一个发送,一直到物理输出端。,3),变换模块的下属模块的设计,根据,DFD,中变换中心的组成情况,按照模块独立性的原则来组织其结构,一般对,DFD,中,每个基本加工建立一个功能模块。,27,4.,设计的优化,(1),输入部分的求精:对每个物理输入设置专门模块,以体现系统的外部接口;其他输入模块并非真正输入,当它与转换数据的模块都很简单时,可将它们合并成一个模块。,(2),输出部分的求精:为每个物理输出设置专门模块,同时注意把相同或类似的物理输出模块合并在一起,以减低耦合度。,(3),变换部分的求精:根据设计准则,对模块进行合并或调整。,28,4.4.4,事务分析设计,对于具有事务型特征的,DFD,,,则采用事务分析的设计方法。结合图,4-9,,说明该方法的设计过程。,1,)确定,DFD,中的事务中心和加工路径,当,DFD,中的某个加工具有明显地将一个输入数据流分解成多个发散的输出数据流时,该加工就是事务中心。从事务中心辐射出去的数据流为各个加工路径。,2,)设计软件结构的顶层和第一层,事务结构,设计一个顶层模块,它是一个主模块,有两个功能,一是接收数据,二是根据事务类型调度相应的处理模块。事务型软件结构应包括接收分支和发送分支两个部分。,29,图,4.9,事务分析设计举例,30,(1),接收分支:负责接收数据,它的设计与变换型,DFD,的输入部分设计方法相同。,(2),发送分支:通常包含一个调度模块,它控制管理所有的下层的事务处理模块。当事务类型不多时,调度模块可与主模块合并。,3,)事务结构中、下层模块的设计、优化等工作同变换结构。,31,4.4.5,综合型数据流图与分层数据流图映射成软件结构的设计,1.,综合,DFD,的映射,一个大型系统的,DFD,中,既有变换流,又有事务流,属于综合的数据流图,其软件结构设计方法如下:,(1),确定,DFD,整体上的类型。,(2),标出局部的,DFD,范围,确定其类型。,(3),按整体和局部的,DFD,特征,设计出软件结构。,2.,分层,DFD,的映射,(,1,)主图是变换型,子图是事务型,见图,4-10,。,(,2,)主图是事务型,子图是变换型,见图,4-11,。,32,图,4-10,主图变换型,子图事务型,33,图,4-11,主图事务型,子图变换型,34,4.4.6 SD,方法应用示例(参见教材),4.4.7,设计的后处理,(,1,)为每个模块写一份处理说明。,(,2,)为每个模块提供一份接口说明。,为清晰易读,对以上两个说明可用设计阶段常采用的图形工具,IPO,图来表示。,(,3,)数据结构说明。,(,4,)给出设计约束或限制。,(,5,)进行设计评审。,(,6,)设计优化,。,35,4.5,基于,IDEF,0,图的设计方法,基于,IDEF,0,图的设计也是结构化设计技术之一,它以系统的功能模型和信息结构为基础设计系统的软件结构。,对于某一层的,IDEF,0,图按以下方法转换:,(1),找出该层,IDEF,0,图的父图,搞清父、子图之间的输入,/,输出、控制关系。,(2),以父图的活动为上层模块,子图中的活动为下层模块,画出系统的单层结构图。,(3),根据,IDEF,0,图各个活动的输入,/,输出数据、控制信息及数据库的结构、数据项定义等,确定模块的接口。,(4),综合所有层次的结构图,得到系统初始的软件结构图。,(5),根据软件结构的优化准则进行精化。,36,HIPO,图,(Hierarchy Plus Input/Processing/Output),是表示软件系统结构的工具。它既可以描述软件总的模块层次结构,H,图,(,层次图,),,又可以,描述每个模块输入,/,输出数据、处理功能及模块调用的详细情况,IPO,图。,HIPO,图以模块分解的层次性以及模块内部输入、处理及输出三大基本部分为基础建立的。当然,绘制,HIPO,图同样要遵循软件设计的基本原理。,1.HIPO,图的,H,图,2.IPO,图,4.6,表示软件结构的图形工具,HIPO,图,37,图,4-13,销售管理系统的,H,图,38,图,4-14,确定能否供货模块的,IPO,图,39,
展开阅读全文