软件工程中的结构化设计.ppt
《软件工程中的结构化设计.ppt》由会员分享,可在线阅读,更多相关《软件工程中的结构化设计.ppt(124页珍藏版)》请在三一办公上搜索。
1、,第四章 结构化设计,对软件进行需求分析和建模后,便开始了软件设计,需求规格说明是软件设计的重要输入,它为软件设计提供了基础。软件设计过程是将需求规格说明转化为软件实现方案的过程。软件设计包括概要设计和详细设计,本章则主要介绍软件概要设计和详细设计的过程。,结构化设计原理模块独立启发规则表示软件结构的图形工具,面向数据流的设计方法人机界面设计过程设计,4.1 结构化设计概述,任务:回答How to do?阶段划分:概要设计、详细设计主要内容:体系结构设计数据设计接口设计过程设计结构化设计模型与结构化分析模型的关系:软件设计必须依据对软件的需求分析来进行的,而结构化分析的结果为结构化设计提供了最
2、基本的输入信息。,软件开发阶段的信息流,编码,测试,设计,4.2 软件设计的概念和原理,模块化抽象逐步求精信息隐藏,1.模块化,模块(Modular):独立命名,可独立访问的具有一定功能的一段程序。模块化设计(Modular Design):按适当的原则把软件划分为一个个较小的、相关而又相对独立的模块。每个模块可独立开发、测试,最后组装成完整的软件。在结构化方法中,过程、函数和子程序等都可作为模块;在面向对象方法中,对象是模块,对象内的方法也是模块。模块分解并不是越小越好。,理想模块,理想模块的特点:只解决一个问题。功能都应该明确,使人容易理解。理想模块之间的连接关系简单,具有独立性。由理想模
3、块构成的系统,容易使人理解,易于编程,易于测试,易于修改和维护。对用户来说,其感兴趣的是模块的功能,而不必去理解模块内部的结构和原理。,模块分解(Decomposition),E(P1+P2)E(P1)+E(P2),设:C(x)为复杂程度函数 E(x)为决定解决问题x所需的工作量(时间)函数,如果:C(P1)C(P2),则:E(P1)E(P2),C(P1+P2)C(P1)+C(P2),奇妙的数字 7+2,人类信息处理能力的限度,软件工程基本定理,C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2),软件工程基本定理,有关模块化,模块化考虑因素:模块数目怎样定义一个给定大
4、小的模块评价模块系统设计方法的标准:可分解性、可组装性、可理解性、连续性、保护性模块化的优点:易阅读和理解,可靠性,可修改性,2.抽象(Abstraction),抽象即提取出本质而暂不考虑细节。是认识复杂现象过程中使用的思维工具。在进行软件设计时,抽象与逐步求精、模块化密切相关,可提高软件的可理解性。高层次抽象使用问题环境的语言,以概括的方式叙述问题的解决。较低层次抽象更过程化的方法面向问题+面向实现术语结合最低层次抽象直接实现的方式叙述问题的解法。,3.逐步求精,细化为了集中精力解决主要问题而尽量推迟对问题细节的考虑。软件工程过程的每一步都是对软件解法的抽象层次的一次精化。求精是帮助设计者在
5、设计过程中提示出低层细节。,4.信息隐藏(Information Hiding),又称数据封装(Data Encapculation)指在设计和确定模块时,使得一个模块内包含的信息(过程和数据),对于不需要这些信息的其他模块来说,是不可访问的。为软件系统的修改、测试及以后的维护都带来好处目的为了提高模块的独立性。,栈stack,4.3 模块独立性(Module Independence),模块独立性:是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块接口是简单的。模块完成独立的功能符合信息隐蔽和信息局部化原理模块间关连和依赖程度尽量小两个定性的度量标准:耦合性:模块之间
6、的依赖程度。取决于接口的复杂性、调用的方式及传递的信息。内聚性:模块内部各成分之间的关联程度。,1.耦合(Coupling),耦合性:是程序结构中各个模块之间相互关联的度量。取决于各个模块之间接口的复杂程序、调用模块的方式以及哪些信息通过接口。耦合性越高,模块独立性越弱。,低,高,弱,强,耦合性,模块独立性,非直接耦合(Nondirect Coupling),非直接耦合:模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。这种耦合的模块独立性最强。例如下图中,模块1和2是非直接耦合,数据耦合(Data Coupling),数据耦合:在两个模块间往返传递的只有数据(或变量或
7、记录或文件),这种耦合称数据耦合。在模块间只有数据传输,模块接口简单。在不可避免的耦合中是耦合力最低的,也是较理想的耦合。如:编程语言中的传值函数。,标记耦合(Stamp Coupling),标记耦合(又称特征耦合):指两个模块之间传递的是数据结构(如记录、数组等)。其实传递的是这个数据结构的地址。两个模块必须清楚这些数据结构,并按要求对其进行操作,这样就降低了可理解性。如:住户详情中包含了“本月用电量”和“本月用水量”,将标记耦合改为数据耦合,控制耦合(Control Coupling),控制耦合:如果一个模块通过传送控制信息(开发、标志、名字等),明显地控制选择另一模块的功能就是控制耦合。
8、病态耦合,B,控制耦合举例,去除模块间控制耦合的方法,去除模块间控制耦合的方法:将被调用模块内的判定上移到调用模块中进行;被调用模块分解成若干单一功能模块。,将控制耦合改为数据耦合又例,外部耦合,外部耦合:当模块受外部环境的约束时就会发生外部耦合。例如:I/O模块与特定设备,格式与通信协议相关联。外部耦合必不可少,但这种模块数目应尽量少。,公共耦合(Common Coupling),公共耦合:允许两个以上模块引用或访问同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:全局数据结构共享通讯区内存公共覆盖区等,公共耦合存在的问题,公共耦合存在的问题:软件可理解性降低(模块间存在错综复
9、杂的联系)软件可维护性差(修改变量名或属性困难)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!,内容耦合(Content Coupling),内容耦合:当一个模块使用另一个模块内部的数据或信息时,或者转移进入另一个模块中时,产生模块间内容耦合。最不好的耦合形式!发生内容耦合的情形:模块直接访问另一模块的内部数据模块不通过正常入口转到另一模块内两模块有一部分代码重叠(只可能出现在汇编语言中)一模块有多个入口,如何降低模块间耦合度,如模块必须存在耦合,应采取下述设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,坚决避免使用内容耦合。降低模块间接口的复杂性实
10、际上,开始时两个模块之间的耦合不只是一种类型,而是多种类型的混合。这就要求设计人员按照实际情况进行分析、比较和分析,逐步加以改进,以提高模块的独立性。,接口复杂性与耦合类型的关系,内聚(Cohesion),内聚性:衡量一个模块内各个元素彼此结合的紧密程度。设计目标:高内聚(一个模块的所有成分都直接参与并且对于完成同一功能来说都是最基本的),低,高,强功能单一,弱功能分散,内聚性,模块独立性,偶然内聚,偶然内聚:一个模块完成一组任务,任务之间的关系很松散。缺点:可理解性差,可修改性差。例如下图中,M模块中的三个语句没有任何联系。,逻辑内聚,逻辑内聚:这种模块把几种功能组合在一起,每次被调用时,则
11、由传递给模块的判定参数来确定该模块应执行哪一种功能。,被调用模块,缺点:增强了耦合程度(控制耦合),不易修改,效率低。,逻辑内聚,时间内聚,时间内聚:模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。如:初始化系统模块、系统结束模块、紧急故障处理模块等,过程内聚,过程内聚:一个模块内各处理成分的动作各不相同,但它们都受一个控制流的支配,且决定了它们的执行次序。,高斯消去法解题流程,通信内聚,通信内聚:模块中的所有元素都使用相同输入数据,和/或产生相同输出数据。通常,通信内聚模块是通过数据流图来定义的。例如:,通信内聚举例,产生职工工资报表并计算平均工资模块,顺序内聚,顺序内聚
12、:一个模块能完成多个操作,前一个操作处理的输出数据是下一个操作处理的输入数据,模块中各成份的工作是有次序的,各成份的关系也较紧密,则称为顺序内聚。,功能内聚,功能内聚:一个模块内的所有成分的处理动作全部为完成某个功能,且只执行一个功能,缺一不可,称为功能内聚。如:计算实发工资,打印发票等是最高程度的内聚。有利于实现软件的重用,从而提高软件开发的效率。,耦合、内聚与模块独立性关系,内聚和耦合密切相关,同其它模块强耦合的模块意味着弱内聚,强内聚模块意味着与其它模块间松散耦合。设计目标:力争强内聚、弱耦合。二者都反映模块独立性的良好程度。耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。
13、,4.5 表示软件结构的图形工具,层次图HIPO图结构图,1.层次图,层次图(H图)描绘软件的层次结构。用矩形框表示一个模块,连线表示模块之间的调用关系。适于在自顶向下设计软件的过程中使用。,2.HIPO图,HIPO图Hierarchy Plus Input/Processing/Output是一种描述系统结构和模块内部处理功能的工具(技术)。由H图和IPO图两部分构成。H图描述了整个系统的设计结构以及各类模块之间的关系,IPO图描述了某个特定模块内部的处理过程和输入/输出关系。在H图里除了最顶层的方框之外,每个方框都加了编号。和H图中每个方框相对应,应该有一张IPO图描绘这个方框代表的模块的
14、处理过程。,IPO图示例,3.结构图,结构图(Structured Chart,SC)是精确表达模块结构的图形表示工具。作为软件设计文档的一部分,清楚地反映出软件模块间的层次调用关系和模块之间的联系。,结构图中的主要内容,SC图中的主要内容:模块用矩形框表示,框内注明模块的名字或主要功能模块的调用关系和接口用箭头(或直线)表示调用次序为上层调用下层同层按照数据传递关系确定模块间的信息传递数据信息或控制信息尾端带有空心圆的短箭头表示数据信息尾端还有实心圆的短箭头表示控制信息,结构图中的四种模块,在系统结构图中有四种类型的模块:传入模块传出模块变换模块,即加工模块协调模块 在一个好的SC图中,协调
15、模块应在较高层出现。,逻辑输入数据流,逻辑输出数据流,变换数据流,结构图中两个附加符号,选择调用,循环调用,结构图的形态特征,结构图的形态特征:深度、宽度、扇入、扇出,结构图举例,原子模块,结构化设计,目的:使程序的结构尽可能反映要解决的问题的结构。任务:完成目标系统的系统结构图。本质:将需求分析阶段所产生的DFD转换成SC图。,4.6 面向数据流的设计方法,基于数据流的设计方法可以很方便地将数据流图中表示的数据流映射成软件结构。其设计过程描述如下:复查并精化数据流图。确定数据流图中数据流的类型。导出初始的软件结构图。逐级分解。精化软件结构。导出接口描述和全局数据结构。,从DFD导出SC图的步
16、骤,DFD的两种类型,信息流(DFD)的两种类型:变换型DFD线型事务型DFD扇型有一个明显的事务中心,它接受一项事务,根据该事务的特点和性质,选择分配一个适当的处理单元,然后输出结果。,事务型DFD,1.变换分析,Transform Analysis是将具有变换型的DFD图导出SC图。基本步骤:在数据流图上区分系统的逻辑输入、逻辑输出和变换中心部分,并标出它们的分界。进行一级分解,设计系统模块结构的顶层和第一层。进行二级分解,设计输入、输出和中心变换部分的中、下层模块。,(1)在DFD上标出逻辑输入、逻辑输出和变换中心的分界,变换中心,c,e 逻辑输入,w,u 逻辑输出,-具有变换型数据流图
17、,(2)完成第一级分解,Mc,MA,MT,ME,C,e,C,e,U,w,U,w,顶层,第一层,第一级分解后的结构图,(2)完成第一级分解,第一级分解后的结构图(另一种画法),(3)完成第二级分解:自顶向下分解,设计出每个分支(输入、变换、输出)的中、下层模块,(3)完成第二级分解(续),MA,对逻辑输入的分解,C,E,B,A,D,逻辑输入模块的调用与执行过程,(3)完成第二级分解(续),对输出的分解,对变换中心加工的分解,(4)获得完整的SC图,运用变换分析方法建立系统的SC图时需注意以下几点:,模块设计的次序时,应遵循对一个模块的全部直接下属模块都设计完成后,再转向另一个模块的下层模块的设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 中的 结构 设计
链接地址:https://www.31ppt.com/p-6434207.html