文档详情

结构化系统设计

cn****1
实名认证
店铺
PPT
993.50KB
约95页
文档ID:603611791
结构化系统设计_第1页
1/95

单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,7,章 结构化系统设计,蒙 华,,本章主要内容,结构化方法,系统设计的任务,总体设计:软件结构及各组成成分(子系统或模块之间的相互关系),结构化设计的概念、基本原则,从数据流图导出结构图,结构化设计,代码设计,输入、输出及人机对话设计,模块详细设计,数据库设计、网络设计,系统设计说明书,7.1,结构化方法概述,结构化方法的主要思想:,(,1,)软件是有组织、有结构的逻辑实体,其结构为自顶向下的,形式,(,2,)软件由程序和数据组成,其结构呈现三层组织形式,即系,统、子系统、功能模块,/,数据体,(,3,)软件结构中的各部分既独立又关联,从分析到设计,转换,现实领域的各种需求,计算机领域的具体实现,7.2,系统设计的任务和标准,系统设计的任务,总体设计和详细设计,系统总体设计是把总任务分解成为许多基本的、具体的任务,将系统划分为模块,决定每个模块的功能、模块的调用关系,决定模块的界面,即模块间的数据传递,设计就是要回答“怎么做”,完成技术实现方案的制定,即信息系统的物理模型,一个逻辑模型,可以提出多个物理模型,根据物理模型进行实施,得到最终的物理系统,标准:,信息系统的功能:,是否满足用户的需求,系统的效率:,响应时间、操作的方便性,系统的可靠性:,抗干扰能力、故障恢复,系统的工作质量:,准确性、使用效果,系统的可变更性:,修改和维护的难易程度,系统的经济性:,系统收益与支出比,(1),对一个复杂的系统,应用自顶向下、逐步求精的方法予以分解和化简。

2),强调采用模块化的设计方法,并有一组基本设计策略,(3),采用结构图作为模块设计的工具结构化系统设计的特点:,信息系统的可变更性,统计表示:在信息系统的整个生命周期中,系统维护成本占总,成本的,80%,左右因此,可变更性是衡量信息系统设计的重要指标结构简单,系统各组成元素分工明确,易于理解,元素之间的关系清晰简洁,软件设计方法:,结构化设计(,SD,)、面向对象设计(,JSD,方法)、,面向对象的设计方法(,OOD,方法),7.2.1,模块化的基本思想,结构化设计方法是基于模块化、自顶向下逐步细化、结构化,程序设计等技术发展起来使用模块化一定程度上能够简化系统结,构,使系统容易修改和理解具体做法:,把整个软件划分为部分,其中每一部分的功能简单明确,即,程序模块(可以是子过程或函数),划分模块工作按层次进行,上层模块调用下层模块,每一个模块应尽可能独立,模块间的调用接口要阐明(模块名称、输入数据、输出数据),(一)模块的概念,模块,(Module),通常对应于用一个名字就可以调用的一段程序语句,(子程序或函数),模块具有输入和输出、逻辑功能、运行程序、内部数据四种属性模块数量和软件成本的关系如下图所示,接口成本,成本,模块数量,单元模块成本,软件总成本,模块设计的度量标准,为了衡量模块的相对独立性,提出了模块间的耦合,(Coupling),与模块的内聚,(Cohesion),两个标准,耦合:模块和模块之间的联系程度,内聚:模块内部各元素之间的联系程度,设计目标:低耦合、高内聚,模块内的联系越紧越好,模块间的联系越少越好,(二)系统模块设计原则,1,、模块之间的耦合原则,-,模块之间的联系,-,模块的耦合方式,-,几种耦合的比较,2,、模块的内聚性原则,3,、模块的分解原则,4,、模块的扇入和扇出原则,1,、影响耦合度的因素,如果使用模块,A,需要了解模块,B,,那么,A,和,B,是耦合的。

影,响模块间耦合程度有三方面的因素:模块接口的复杂程,度、调用模块的方式、通过模块接口的数据联系方式模块间通过什么方式联系,来往信息的作用模块间来往信息作什么用,数量模块间来往信息的多少混合,控制,数据,用过程 直接引用,语句调用,少,多,数量,方式,作用,0,离坐标原点越远,耦合程度越高,-,耦合的方式,根据以上因素,对耦合分类如下:,数据耦合:,采用子程序调用,调用模块将需要进行处,理的数据传递给被调模块标记耦合:,两个模块接口参数包含相同内部结构控制耦合:,一个模块将控制信息传递给另一个模块,,以控制被调模块的内部处理逻辑可以分解),公共耦合:,如果两个模块共享同一公用数据,称为公,共耦合内容耦合:,两个模块之间的内部属性有直接关联,也,称病态耦合某些,GOTO,语句),数据耦合,标记耦合,如果两个模块之间不仅存在着调用和被调用关系,两个模块接口的参数包含相同的内部结构,模块之间存在着数据通信,模块之间的通信方式是数据传递或称参数交换,两个模块通过传递数据结构,(,不是简单数据,而是记录、数组等,),加以联系高级语言的数组名,记录名,文件名等即为标记,其实传递的是这个数据结构的地址,.,数据耦合,sum(int a,int b),int c;,c=a+b;,return(c);,main(),int x,y;,printf(“x+y=%d”,sum(x,y),控制耦合,模块之间交换信息中包含有控制信息(有时控制信息以数据的形式出现),void output(flag),if(flag)printf(“ok!”);,else printf(“no!”);,main(),int flag;,output(flag);,公共耦合,如果两个或多个模块都和同一个公用数据域有关,1),系统可理解性降低,(,模块间存在错综复杂的连系,),(2),系统可维护性差,(,修改变量名或属性困难,),(3),系统可靠性差,(,公共数据区及全程变量无保护措施,),慎用公共数据区和全程变量,!,模块,B,、,E,和模块,C,之间存在着公共耦合,当需要修改,公共数据时,,与之相关的,所有模块可能,都要进行修改,内容耦合,-,若一个模块访问另一个模块的内容(包括数据和程序段)进行了直接的引用甚至修改;,-,或通过非正常入口进入到另一模块内部;,-,或一个模块有多个入口;,-,或两个模块共享一部分代码;,-,几种耦合的比较,系统设计模块之间的联结原则,尽量采用较低的耦合形式(简单耦合和数据耦合),减少控制耦合,必要时使用公共耦合,但一定要将数据控制在最少,绝对不能采用内容耦合,2,、,模块的内聚,模块的内聚反映模块内部联系的紧密程度。

高内聚性的好处是可以提高程序的可靠性有一个调查表明,,50,的强内聚性子程序是没有错误的,而只,有,18,的弱内聚性子程序才是无错的,弱内聚性子程序的出错机,会要比强内聚性出错机会高,6,倍,而修正成本则要高,19,倍模块的组合形式,功能,顺序,通信,过程,暂时,逻辑,偶然组合,模块组合形式的判断,模块组合形式的比较,功能组合,-,功能内聚,顺序组合,-,顺序内聚,一个模块内部的各个组成部分的处理动作全都为执行同一个功能而存在,一个模块内部的各个组成部分执行的几个处理动作具有这样的特征,前一个处理动作所产生的输出数据是下一个处理动作的输入数据,功能组合内聚性最高例“解一个方程”,“,求平方根”,“,计算利息”,顺序组合模块的内聚性较高,例:“输入并验证理货单”;,维护起来不如功能内聚方便,要修改模块中的一个功能,会影响到同一个模块中的其他功能,通信组合,-,通信内聚,过程组合,-,过程内聚,一个模块内部的各个组成部分的处理动作都使用相同的输入数据,或,一个模块内部的各个组成部分的处理动作都产生相同输出数据,一个模块内部的各个组成部分的处理动作各不相同,彼此没有什么关系,它们受同一个控制流支配,决定它们的执行顺序,内聚性低于顺序组合模块,内聚性较低,暂时组合,-,暂时内聚,逻辑组合,-,逻辑内聚,一个模块内部的各个组成部分处理动作和时间有关,。

处理动作须在特定时间内完成,一个模块内部的各个组成部分的处理动作在逻辑上相似,但功能却彼此不同或无关,内聚性低,例如:程序设计中的初始化模块内聚性低,,把编辑各种输入数据的功能放在一个模块中又如出错处理工作模块调用错误处理模块,将错误号作为控制参数传入;出错处理模块根据不同的错误号执行相应的操作,偶然组合,-,偶然内聚,一个模块内部的各个组成部分的处理动作彼此没有任何关系,它们是根据设计人员的个人喜好而随意混合在一起的,无内聚性,比如显示期末成绩通知:,读入学号,读取成绩,取不及格科目,取科目补考安排,显示数据,判断留退级,顺序内聚,例如:一个模块用于计算高于平均分的人数,步骤是先循环累计总分,然后计算得到平均分,最后循环统计高于平均分的人数有步骤的先后,而且前一个步骤的结果要用于后一步骤的运算中,通信内聚,上图中有两个工作:,按配件编号查询“数据存储”,获得单价按配件编号查询“数据存储”,获得库存量这两个处理动作都使用相同的输入数据,称为通讯内聚,模块组合判断树,该模块只执行一个功能吗?,功能组合,否,模块内各组成部分关系如何?,数据流,否,是,顺序组合,通信组合,否,是,过程组合,暂时组合,否,是,逻辑组合,偶然组合,控制流,两者皆非,是,次序重要吗?,逻辑相似吗?,次序重要吗?,耦合和内聚的关系,二者就像连体兄弟,存在紧密相关的关系:,模块内的高内聚往往意味着模块间的松耦合,反之,低内聚一般会带来紧耦合,松耦合,作为软件设计的军规之一。

各部分的关联越少意味着你在测试,集成,维护的时候可以轻松不止一点点高内聚,也就是说一个类特别是一个方法应该专注于一件事作用范围与控制范围,一个判断的作用范围,是所有这样的模块的集合,这些模块内含有依赖于这个判断结果的处理或称影响范围一个模块的控制范围,是指它本身及其所有下属模块的集合D,计算总工资,C,计算职工工资,B,计算临时工工资,A,计算工资,模块,A,的控制范围是:,A,、,B,、,C,、,D,假如判定出现在模块,A,,该判断的作用范围是:,A,B,、,C,、,D,不受影响,有些处理的执行受判断的影响由此引出判断的作用范围,(,或称影响范围,),这一概念模块的作用域是指模块中判定的作用范围,它是指所有受这个判定影响的模块如果模块中含有受判定影响的操作,则该模块在这个判定的作用范围之中如果模块执行与否取决于判定的结果,则该模块及其直接或间接调用的模块均在这个判定的作用范围之中模块的控制域是指模块本身及其直接或间接调用的模块如果模块的作用域不在控制域之内,则会增加模块间数据的传递量,使模块间出现控制耦合模块的控制范围:本身及其所有下级模块模块的判断作用范围:被判断调用的模块模块设计中模块控制域与作用域的设计原则:,1.,对于任何一个内部存在判断调用的模块,它的判断作用的范围应该是其控制范围的一个子集。

2.,存在判断调用的模块,所在层次不要与那些属于判断作用范围的模块所在的层次相隔太远4,、模块的扇入和扇出原则,模块的扇出,模块扇出的原则,模块的扇入,模块的扇入原则,模块扇出扇入总原则,模块的扇出(,Fan_Out,),模块的扇出表达了一个模块对它的直属下级模块的控制范围模,块扇出系数是指其直属下级模块的个数扇出原则:,-,模块的扇出直接影响着系统的宽度,-,模块的扇出过大,控制与协调困难,模块的聚合可能较低,-,模块的扇出过小,说明上下级模块或本身过大,应进行分解,-,一个系统的平均扇出系数通常是,3,至,4,,一般不应超过,7,A,B,C,C1,C3,B1,C2,A,的扇出系数为,2,B,的扇出系数为,1,C,的扇出系数为,3,模块的扇入(,Fan_In,),模块的扇出表达了一个模块与其的直属上级模块的关系,模块的扇入系数是指其直接上级模块的个数,A,的扇出系数为,3,B,的扇出系数为,2,F,的扇入系数为,2,A,B,C,F,H,E,G,D,模块的扇入、扇出原则,模块的扇入说明系统的通用情况,扇入系数越大,表明共享该模块的上级模块数目越多,通用性越强(通用性强,维护方便),片面追求高扇入可能使得模块的独立性降低,高扇入:扇入就是指被其它类或方法引用。

下载提示
相似文档
正为您匹配相似的精品文档