收藏 分销(赏)

软件工程中的结构化设计.pptx

上传人:人****来 文档编号:4289475 上传时间:2024-09-03 格式:PPTX 页数:124 大小:2.15MB
下载 相关 举报
软件工程中的结构化设计.pptx_第1页
第1页 / 共124页
软件工程中的结构化设计.pptx_第2页
第2页 / 共124页
软件工程中的结构化设计.pptx_第3页
第3页 / 共124页
软件工程中的结构化设计.pptx_第4页
第4页 / 共124页
软件工程中的结构化设计.pptx_第5页
第5页 / 共124页
点击查看更多>>
资源描述

1、第四章第四章 结构化设计结构化设计 对软件进行需求分析和建模后,便开始了软件设对软件进行需求分析和建模后,便开始了软件设计,需求规格说明是软件设计的重要输入,它为软件计,需求规格说明是软件设计的重要输入,它为软件设计提供了基础。设计提供了基础。软件设计过程是将需求规格说明转化为软件实现软件设计过程是将需求规格说明转化为软件实现方案的过程方案的过程。软件设计包括。软件设计包括概要设计概要设计和和详细设计详细设计,本,本章则主要介绍软件概要设计和详细设计的过程。章则主要介绍软件概要设计和详细设计的过程。结构化设计原理结构化设计原理模块独立模块独立启发规则启发规则表示软件结构的图形工具表示软件结构的

2、图形工具面向数据流的设计方法面向数据流的设计方法人机界面设计人机界面设计过程设计过程设计4.1 结构化设计概述结构化设计概述任务任务:回答:回答How to do?阶段划分阶段划分:概要设计、详细设计:概要设计、详细设计主要内容主要内容:体系结构设计体系结构设计数据设计数据设计接口设计接口设计过程设计过程设计结构化设计模型与结构化分析模型的结构化设计模型与结构化分析模型的关系关系:软件设计必须依据对软件的需求分析来进行的,而软件设计必须依据对软件的需求分析来进行的,而结构化分析的结果为结构化设计提供了最基本的输结构化分析的结果为结构化设计提供了最基本的输入信息。入信息。软件开发阶段的信息流软件

3、开发阶段的信息流编码编码测试测试设计设计信息描述信息描述功能描述功能描述行为描述行为描述其他需求其他需求总体结构设计总体结构设计数据设计数据设计过程设计过程设计 程序模块程序模块集成并确集成并确认的软件认的软件4.2 软件设计的概念和原理软件设计的概念和原理模块化模块化抽象抽象逐步求精逐步求精信息隐藏信息隐藏1.模块化模块化模块模块(Modular):独立命名,可独立访问的具有一定功能的一段程序。独立命名,可独立访问的具有一定功能的一段程序。模块化设计(模块化设计(Modular Design):):按适当的原则把软件划分为一个个较小的、相关而又按适当的原则把软件划分为一个个较小的、相关而又相

4、对独立的模块。每个模块可独立开发、测试,最后相对独立的模块。每个模块可独立开发、测试,最后组装成完整的软件。组装成完整的软件。在结构化方法中,过程、函数和子程序等都可作为模在结构化方法中,过程、函数和子程序等都可作为模块;在面向对象方法中,对象是模块,对象内的方法块;在面向对象方法中,对象是模块,对象内的方法也是模块。也是模块。模块分解并不是越小越好。模块分解并不是越小越好。理想模块理想模块理想模块的特点:理想模块的特点:只解决一个问题。只解决一个问题。功能都应该明确,使人容易理解。功能都应该明确,使人容易理解。理想模块之间的连接关系简单,具有独立性。理想模块之间的连接关系简单,具有独立性。由

5、理想模块构成的系统,容易使人理解,易于编程,由理想模块构成的系统,容易使人理解,易于编程,易于测试,易于修改和维护。易于测试,易于修改和维护。对用户来说,其感兴趣的是模块的功能,而不必对用户来说,其感兴趣的是模块的功能,而不必去理解模块内部的结构和原理。去理解模块内部的结构和原理。模块分解(模块分解(Decomposition)E(P1+P2)E(P1)+E(P2)设:设:C(x)为为复杂程度函数复杂程度函数 E(x)为决定解决问题为决定解决问题x x所需的所需的工作量工作量(时间时间)函数函数 如果:如果:C(P1)C(P2)则:则:E(P1)E(P2)C(P1+P2)C(P1)+C(P2)

6、Magical Number Seven,Plus or Minus Two,Some Limits on Our Capacity for Processing Information The Psychological Review,1956 G.A.Miller奇妙的数字奇妙的数字 7+2,人类,人类信息处理能力的限度信息处理能力的限度软件工程基本定理软件工程基本定理C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)软件工程基本定理软件工程基本定理最小成本区最小成本区M模块成本模块成本接口成本接口成本总成本总成本软软件件开开发发工工作作量量 模块数模块数 有关模

7、块化有关模块化模块化考虑因素:模块化考虑因素:模块数目模块数目怎样定义一个给定大小的模块怎样定义一个给定大小的模块评价模块系统设计方法的标准评价模块系统设计方法的标准:可分解性、可组装性、可理解性、连续性、保护性可分解性、可组装性、可理解性、连续性、保护性模块化的优点模块化的优点:易阅读和理解,可靠性,可修改性易阅读和理解,可靠性,可修改性2.抽象(抽象(Abstraction)抽象抽象即提取出本质而暂不考虑细节。是认识复杂现象即提取出本质而暂不考虑细节。是认识复杂现象过程中使用的思维工具。过程中使用的思维工具。在进行软件设计时,抽象与逐步求精、模块化密切相关,在进行软件设计时,抽象与逐步求精

8、、模块化密切相关,可提高软件的可理解性。可提高软件的可理解性。高层次抽象高层次抽象使用问题环境的语言,以概括的方式叙述问题的解使用问题环境的语言,以概括的方式叙述问题的解决。决。较低层次抽象较低层次抽象更过程化的方法更过程化的方法面向问题面向问题+面向实现术语结合面向实现术语结合最低层次抽象最低层次抽象直接实现的方式叙述问题的解法。直接实现的方式叙述问题的解法。3.逐步求精逐步求精细化细化为了集中精力解决主要问题而尽量推迟对问题细节的考为了集中精力解决主要问题而尽量推迟对问题细节的考虑。虑。软件工程过程的每一步都是对软件解法的抽象层次的一软件工程过程的每一步都是对软件解法的抽象层次的一次精化。

9、次精化。求精求精是是帮助设计者在设计过程中提示出低层细节。帮助设计者在设计过程中提示出低层细节。4.信息隐藏(信息隐藏(Information Hiding)又称又称数据封装数据封装(Data Encapculation)指在设计和确定模块时,使得一个模块内包含的信指在设计和确定模块时,使得一个模块内包含的信息(过程和数据),对于不需要这些信息的其他模息(过程和数据),对于不需要这些信息的其他模块来说,是不可访问的。块来说,是不可访问的。为软件系统的修改、测试及以后的维护都带来好处为软件系统的修改、测试及以后的维护都带来好处目的目的为了提高模块的独立性。为了提高模块的独立性。栈栈stack置空

10、栈置空栈 makenull进栈进栈 push退栈退栈 pop4.3 模块独立性(模块独立性(Module Independence)模块独立性模块独立性:是指软件系统中每个模块只涉及软件要求的具体的是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块接口是简单的。子功能,而和软件系统中其他模块接口是简单的。模块完成独立的功能模块完成独立的功能符合信息隐蔽和信息局部化原理符合信息隐蔽和信息局部化原理模块间关连和依赖程度尽量小模块间关连和依赖程度尽量小两个定性的度量标准两个定性的度量标准:耦合性:模块之间的依赖程度。取决于接口的复杂耦合性:模块之间的依赖程度。取决于接口的复杂

11、性、调用的方式及传递的信息。性、调用的方式及传递的信息。内聚性:模块内部各成分之间的关联程度。内聚性:模块内部各成分之间的关联程度。1.耦合(耦合(Coupling)耦合性耦合性:是程序结构中各个模块之间相互关联的度量。是程序结构中各个模块之间相互关联的度量。取决于各个模块之间接口的复杂程序、调用模块的取决于各个模块之间接口的复杂程序、调用模块的方式以及哪些信息通过接口。方式以及哪些信息通过接口。耦合性越高,模块独立性越弱。耦合性越高,模块独立性越弱。低低非直接非直接耦合耦合数据数据耦合耦合标记标记耦合耦合控制控制耦合耦合外部外部耦合耦合公共公共耦合耦合内容内容耦合耦合 高高弱弱 强强耦合性耦

12、合性模块独立性模块独立性非直接耦合非直接耦合(Nondirect Coupling)非直接耦合非直接耦合:模块之间没有直接关系,它们之间的联系完全是通模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。过主模块的控制和调用来实现的。这种耦合的这种耦合的模块独立性最强模块独立性最强。例如下图中,模块例如下图中,模块1和和2是非直接耦合是非直接耦合34120数据耦合(数据耦合(Data Coupling)数据耦合数据耦合:在两个模块间往返在两个模块间往返传递的只有数据传递的只有数据(或变量或记录(或变量或记录或文件),这种耦合称数据耦合。或文件),这种耦合称数据耦合。在模块间

13、只有数据传输,模块接口简单。在模块间只有数据传输,模块接口简单。在不可避免的耦合中是耦合力最低的,也是在不可避免的耦合中是耦合力最低的,也是较理想较理想的耦合的耦合。如:编程语言中的传值函数。如:编程语言中的传值函数。开发票开发票计算水费计算水费单价单价数量数量金额金额标记耦合(标记耦合(Stamp Coupling)标记耦合(又称特征耦合)标记耦合(又称特征耦合):指两个模块之间传递的是数据结构(如记录、数组指两个模块之间传递的是数据结构(如记录、数组等)。其实传递的是这个数据结构的地址。等)。其实传递的是这个数据结构的地址。两个模块必须清楚这些数据结构,并按要求对其进两个模块必须清楚这些数

14、据结构,并按要求对其进行操作,这样就降低了可理解性。行操作,这样就降低了可理解性。如:如:住户详情中包含了住户详情中包含了“本月用电量本月用电量”和和“本月用水量本月用水量”计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费电费电费住户情况住户情况将标记耦合改为数据耦合将标记耦合改为数据耦合计算水电费计算水电费计算水费计算水费计算电费计算电费本月用水量本月用水量水费水费电费电费本水用电量本水用电量控制耦合(控制耦合(Control Coupling)控制耦合控制耦合:如果一个模块通过传送控制信息(开发、标志、名如果一个模块通过传送控制信息(开发、标志、名字等),明显地

15、控制选择另一模块的功能就是控制字等),明显地控制选择另一模块的功能就是控制耦合。耦合。病态耦合病态耦合B控制耦合举例控制耦合举例AB计算平均分计算平均分或最高分或最高分平均平均/最高最高成绩成绩读入分数读入分数平均平均/最高?最高?计算平均分计算平均分计算最高分计算最高分输出结果输出结果去除模块间控制耦合的方法去除模块间控制耦合的方法去除模块间控制耦合的方法:去除模块间控制耦合的方法:将被调用模块内的判定上移到调用模块中进行;将被调用模块内的判定上移到调用模块中进行;被调用模块分解成若干单一功能模块。被调用模块分解成若干单一功能模块。AB1计算平均分计算平均分B2计算最高分计算最高分平均成绩平

16、均成绩最高成绩最高成绩将控制耦合改为数据耦合又例将控制耦合改为数据耦合又例外部耦合外部耦合外部耦合外部耦合:当模块受外部环境的约束时就会发生外部耦合。当模块受外部环境的约束时就会发生外部耦合。例如:例如:I/O模块与特定设备,格式与通信协议相关联。模块与特定设备,格式与通信协议相关联。外部耦合必不可少,但这种模块数目应尽量少。外部耦合必不可少,但这种模块数目应尽量少。公共耦合(公共耦合(Common Coupling)公共耦合公共耦合:允许两个以上模块引用或访问同一个公用数据区允许两个以上模块引用或访问同一个公用数据区(也称全局数据区、公共数据环境)。(也称全局数据区、公共数据环境)。公共数据

17、区指:公共数据区指:全局数据结构全局数据结构共享通讯区共享通讯区内存公共覆盖区等内存公共覆盖区等全局全局数据区数据区ABCDEFB、C、E 为公共耦合为公共耦合公共耦合存在的问题公共耦合存在的问题公共耦合存在的问题:公共耦合存在的问题:软件可理解性降低(模块间存在错综复杂的联系)软件可理解性降低(模块间存在错综复杂的联系)软件可维护性差(修改变量名或属性困难)软件可维护性差(修改变量名或属性困难)软件可靠性差(公共数据区及全程变量无保护措施)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!慎用公共数据区和全程变量!内容耦合(内容耦合(Content Coupling)内

18、容耦合内容耦合:当一个模块使用另一个模块内部的数据或信息时,当一个模块使用另一个模块内部的数据或信息时,或者转移进入另一个模块中时,产生模块间内容耦或者转移进入另一个模块中时,产生模块间内容耦合。合。最不好的耦合形式!最不好的耦合形式!发生内容耦合的情形:发生内容耦合的情形:模块直接访问另一模块的内部数据模块直接访问另一模块的内部数据模块不通过正常入口转到另一模块内模块不通过正常入口转到另一模块内两模块有一部分代码重叠(只可能出现在汇编语言两模块有一部分代码重叠(只可能出现在汇编语言中)中)一模块有多个入口一模块有多个入口如何降低模块间耦合度如何降低模块间耦合度如模块必须存在耦合,应采取下述设

19、计原则:如模块必须存在耦合,应采取下述设计原则:尽量使用数据耦合,尽量使用数据耦合,少用控制耦合,少用控制耦合,限制公共环境耦合的范围,限制公共环境耦合的范围,坚决避免使用内容耦合。坚决避免使用内容耦合。降低模块间接口的复杂性降低模块间接口的复杂性实际上,开始时两个模块之间的耦合不只是一实际上,开始时两个模块之间的耦合不只是一种类型,而是多种类型的混合。这就要求设计种类型,而是多种类型的混合。这就要求设计人员按照实际情况进行分析、比较和分析,逐人员按照实际情况进行分析、比较和分析,逐步加以改进,以提高模块的独立性。步加以改进,以提高模块的独立性。接口复杂性与耦合类型的关系接口复杂性与耦合类型的

20、关系内聚(内聚(Cohesion)内聚性内聚性:衡量一个模块内各个元素彼此结合的紧密程度。衡量一个模块内各个元素彼此结合的紧密程度。设计目标:高内聚(一个模块的所有成分都直接参设计目标:高内聚(一个模块的所有成分都直接参与并且对于完成同一功能来说都是最基本的)与并且对于完成同一功能来说都是最基本的)低低功能功能内聚内聚顺序顺序内聚内聚通信通信内聚内聚过程过程内聚内聚时间时间内聚内聚逻辑逻辑内聚内聚偶然偶然内聚内聚 高高强强功能单一功能单一弱弱功能分散功能分散 内聚内聚性性模块独立性模块独立性偶然内聚偶然内聚偶然内聚偶然内聚:一个模块完成一组任务,任务之间的关系很松散。一个模块完成一组任务,任务

21、之间的关系很松散。缺点:可理解性差,可修改性差。缺点:可理解性差,可修改性差。例如下图中,例如下图中,M模块中的三个语句没有任何联系。模块中的三个语句没有任何联系。逻辑内聚逻辑内聚逻辑内聚逻辑内聚:这种模块把几种功能组合在一起,每次被调用时,这种模块把几种功能组合在一起,每次被调用时,则由传递给模块的判定参数来确定该模块应执行哪则由传递给模块的判定参数来确定该模块应执行哪一种功能。一种功能。调用模块调用模块判定判定读读一一个个记记录录写写一一个个记记录录被被调调用用模模块块缺点:缺点:增强了耦合程度(控制耦合),不易修改,效率低。增强了耦合程度(控制耦合),不易修改,效率低。逻辑内聚逻辑内聚时

22、间内聚时间内聚时间内聚时间内聚:模块完成的功能必须在同一时间内执行,这些功能模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。只因时间因素关联在一起。如:初始化系统模块、系统结束模块、紧急故障处如:初始化系统模块、系统结束模块、紧急故障处理模块等理模块等过程内聚过程内聚过程内聚过程内聚:一个模块内各处理成分的动作各不相同,但它们都一个模块内各处理成分的动作各不相同,但它们都受一个控制流的支配,且决定了它们的执行次序。受一个控制流的支配,且决定了它们的执行次序。读入读入成绩单成绩单审查审查成绩单成绩单读入并审查读入并审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩统计并打印统计

23、并打印成绩单成绩单高斯消去法解题流程高斯消去法解题流程通信内聚通信内聚通信内聚通信内聚:模块中的所有元素都使用相同输入数据,和模块中的所有元素都使用相同输入数据,和/或产生或产生相同输出数据。相同输出数据。通常,通信内聚模块是通过数据流图来定义的。通常,通信内聚模块是通过数据流图来定义的。例如:例如:通信内聚举例通信内聚举例职工工职工工资记录资记录产生工产生工资报表资报表计算平计算平均工资均工资职工工职工工资报表资报表平均工资平均工资产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块顺序内聚顺序内聚顺序内聚顺序内聚:一个模块能完成多个操作,前一个操作处理的输出一个模块能完成多

24、个操作,前一个操作处理的输出数据是下一个操作处理的输入数据,模块中各成份数据是下一个操作处理的输入数据,模块中各成份的工作是有次序的,各成份的关系也较紧密,则称的工作是有次序的,各成份的关系也较紧密,则称为顺序内聚。为顺序内聚。功能内聚功能内聚功能内聚功能内聚:一个模块内的所有成分的处理动作全部为完成某个一个模块内的所有成分的处理动作全部为完成某个功能,且只执行一个功能,缺一不可,称为功能内功能,且只执行一个功能,缺一不可,称为功能内聚。聚。如:计算实发工资,打印发票等如:计算实发工资,打印发票等是最高程度的内聚。是最高程度的内聚。有利于实现软件的重用,从而提高软件开发的效率。有利于实现软件的

25、重用,从而提高软件开发的效率。耦合、内聚与模块独立性关系耦合、内聚与模块独立性关系内聚和耦合密切相关,同其它模块强耦合的模内聚和耦合密切相关,同其它模块强耦合的模块意味着弱内聚,强内聚模块意味着与其它模块意味着弱内聚,强内聚模块意味着与其它模块间松散耦合。块间松散耦合。设计目标:设计目标:力争力争强内聚、弱耦合强内聚、弱耦合。二者都反映模块独立性的良好程度。耦合是直二者都反映模块独立性的良好程度。耦合是直接的主导因素,内聚则辅助耦合共同对模块独接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。立性进行衡量。4.5 表示软件结构的图形工具表示软件结构的图形工具层次图层次图HIPO图图结构图结

26、构图1.层次图层次图层次图(层次图(H图)图)描绘软件的层次结构。描绘软件的层次结构。用矩形框表示一个模块,连线表示模块之间的调用用矩形框表示一个模块,连线表示模块之间的调用关系。关系。适于在自顶向下设计软件的过程中使用。适于在自顶向下设计软件的过程中使用。2.HIPO图图HIPO图图Hierarchy Plus Input/Processing/Output是一种描述系统结构和模块内部处理功能的工是一种描述系统结构和模块内部处理功能的工具(技术)。具(技术)。由由H图和图和IPO图两部分构成。图两部分构成。H图描述了整个系统的图描述了整个系统的设计结构以及各类模块之间的关系,设计结构以及各类

27、模块之间的关系,IPO图描述了某图描述了某个特定模块内部的处理过程和输入个特定模块内部的处理过程和输入/输出关系。输出关系。在在H图里除了最顶层的方框之外,每个方框都加了编图里除了最顶层的方框之外,每个方框都加了编号。号。和和H图中每个方框相对应,应该有一张图中每个方框相对应,应该有一张IPO图描绘这图描绘这个方框代表的模块的处理过程。个方框代表的模块的处理过程。IPO图示例图示例3.结构图结构图结构图(结构图(Structured Chart,SC)是精确表达模块结构的图形表示工具。是精确表达模块结构的图形表示工具。作为软件设计文档的一部分,清楚地反映出作为软件设计文档的一部分,清楚地反映出

28、软件模软件模块间的层次调用关系块间的层次调用关系和和模块之间的联系模块之间的联系。结构图中的主要内容结构图中的主要内容SC图中的主要内容:图中的主要内容:模块模块用矩形框表示,框内注明模块的名字或主要功能用矩形框表示,框内注明模块的名字或主要功能模块的调用关系和接口模块的调用关系和接口用箭头(或直线)表示用箭头(或直线)表示调用次序为上层调用下层调用次序为上层调用下层同层按照数据传递关系确定同层按照数据传递关系确定模块间的信息传递模块间的信息传递数据信息或控制信息数据信息或控制信息尾端带有空心圆的短箭头表示数据信息尾端带有空心圆的短箭头表示数据信息尾端还有实心圆的短箭头表示控制信息尾端还有实心

29、圆的短箭头表示控制信息结构图中的四种模块结构图中的四种模块在系统结构图中有在系统结构图中有四种类型的模块四种类型的模块:传入模块传入模块传出模块传出模块变换模块,即加工模块变换模块,即加工模块协调模块协调模块 在一个好的在一个好的SC图中,协调模块应在较高层出现。图中,协调模块应在较高层出现。逻辑输逻辑输入数据流入数据流逻辑输逻辑输出数据流出数据流传入模块传入模块AA传出模块传出模块DD变换变换数据流数据流变换模块变换模块BC协调模块协调模块YYXX结构图中两个附加符号结构图中两个附加符号ABCX,YZZABCMBCA选择调用选择调用循环调用循环调用结构图的形态特征结构图的形态特征结构图的形态

30、特征:结构图的形态特征:深度、宽度、扇入、扇出深度、宽度、扇入、扇出结构图举例结构图举例原子模块原子模块结构化设计结构化设计目的目的:使程序的结构尽可能反映要解决的问题的结构。使程序的结构尽可能反映要解决的问题的结构。任务任务:完成目标系统的系统结构图。完成目标系统的系统结构图。本质本质:将需求分析阶段所产生的将需求分析阶段所产生的DFD转换成转换成SC图。图。4.6 面向数据流的设计方法面向数据流的设计方法基于数据流的设计方法可以很方便地将数据流图中表示基于数据流的设计方法可以很方便地将数据流图中表示的数据流映射成软件结构。其的数据流映射成软件结构。其设计过程设计过程描述如下:描述如下:复查

31、并精化数据流图。复查并精化数据流图。确定数据流图中数据流的类型。确定数据流图中数据流的类型。导出初始的软件结构图。导出初始的软件结构图。逐级分解。逐级分解。精化软件结构。精化软件结构。导出接口描述和全局数据结构。导出接口描述和全局数据结构。从从DFD导出导出SC图的步骤图的步骤DFD的两种类型的两种类型信息流(信息流(DFD)的两种类型:)的两种类型:变换型变换型DFD线型线型事务型事务型DFD扇型扇型有一个明显的有一个明显的事务中心事务中心,它接受一项事务,根据该事务的,它接受一项事务,根据该事务的特点和性质,选择分配一个适当的处理单元,然后输出结特点和性质,选择分配一个适当的处理单元,然后

32、输出结果。果。取得取得数据数据iaeo变换变换数据数据给出给出数据数据传入部分传入部分变换中心变换中心传出部分传出部分事务型事务型DFD输入输入-事务型事务型 数据流图数据流图1 1ABC3 3DEFGH2 24 45 56 67 7中心变换中心变换输出输出逻辑逻辑输入输入物理物理输入输入逻辑逻辑输出输出物理物理输出输出1.变换分析变换分析Transform Analysis是将具有变换型的是将具有变换型的DFD图导出图导出SC图。图。基本步骤:基本步骤:在数据流图上区分系统的逻辑输入、逻辑输出和变在数据流图上区分系统的逻辑输入、逻辑输出和变换中心部分,并标出它们的分界。换中心部分,并标出它们

33、的分界。进行一级分解,设计系统模块结构的顶层和第一层。进行一级分解,设计系统模块结构的顶层和第一层。进行二级分解,设计输入、输出和中心变换部分的进行二级分解,设计输入、输出和中心变换部分的中、下层模块。中、下层模块。(1)在)在DFD上标出逻辑输入、逻辑输出和变换中心的分界上标出逻辑输入、逻辑输出和变换中心的分界A Ae eB BaC CbD Dc cE EdP PQQR Rwwu uv vwwu uvrp变换中心变换中心c,e 逻逻辑输入辑输入w,u 逻逻辑输出辑输出-具有变换型具有变换型数据流图数据流图(2)完成第一级分解)完成第一级分解McMAMTMEC,eC,eU,wU,w顶层顶层第一

34、层第一层第一级分解后的结构图第一级分解后的结构图(2)完成第一级分解)完成第一级分解第一级分解后的结构图第一级分解后的结构图(另一种画法另一种画法)McMA1ME1C eU MA2QPRME2e c,p pr r w,uwMAGet CGet EGet BRead ARead DabdecMAGet CGet EBtoCAtoBDtoEaecReadDGet BRead Ac,eabbbcde(3)完成第二级分解:自顶向下分解,设计出每个分支)完成第二级分解:自顶向下分解,设计出每个分支(输入、变换、输出)的中、下层模块(输入、变换、输出)的中、下层模块(3)完成第二级分解(续)完成第二级分解

35、(续)MA对逻辑输入的分解对逻辑输入的分解CEBADabdeccbaABCMAEDde 逻辑输入模块的逻辑输入模块的调用与执行过程调用与执行过程(3)完成第二级分解(续)完成第二级分解(续)对输出的分解对输出的分解对变换中心加工的分解对变换中心加工的分解MTQPR eC,prU,w prMEWrite WPut UWrite VvuW w,uMEWrite WPut UWrite VvuW w,uU to Vuv(4)获得完整的)获得完整的SC图图MACBAEDMTQPR从变换分析导出的初始从变换分析导出的初始 SC 图图MEWUVMCc,eW,uW,uC,e运用变换分析方法建立系统的运用变换

36、分析方法建立系统的SC图时需注意以下几点:图时需注意以下几点:模块设计的次序时,应遵循对一个模块的全部模块设计的次序时,应遵循对一个模块的全部直接下属模块都设计完成后,再转向另一个模直接下属模块都设计完成后,再转向另一个模块的下层模块的设计。块的下层模块的设计。在设计下层模块时,应考虑模块的耦合和内聚在设计下层模块时,应考虑模块的耦合和内聚问题,以提高设计初始问题,以提高设计初始SC图的质量。图的质量。注意注意“黑盒黑盒”技术的使用。技术的使用。具有高内聚低耦合的模块才是模块独立性比较具有高内聚低耦合的模块才是模块独立性比较强的模块。强的模块。2.事务分析事务分析是将具有事务型的是将具有事务型

37、的DFD导出结构图。导出结构图。基本步骤:基本步骤:在在DFD上确定事务中心,接收部分和发送部分。上确定事务中心,接收部分和发送部分。画出画出SC框架,把框架,把DFD上的三部分分别映射为事务控上的三部分分别映射为事务控制模块、接收模块和动作模块。制模块、接收模块和动作模块。分解细化的接收分支和发送分支,完成初始分解细化的接收分支和发送分支,完成初始SC图。图。2.事务分析事务分析是将具有事务型的是将具有事务型的DFD导出结构图。导出结构图。基本步骤:基本步骤:在在DFD上确定事务中心,接收部分和发送部分。上确定事务中心,接收部分和发送部分。画出画出SC框架,把框架,把DFD上的三部分分别映射

38、为事务控上的三部分分别映射为事务控制模块、接收模块和动作模块。制模块、接收模块和动作模块。分解细化的接收分支和发送分支,完成初始分解细化的接收分支和发送分支,完成初始SC图。图。事务分析映射方法事务分析映射方法该数据流图是事务型。该数据流图是事务型。识别事务中心和每一条操作路径上的流特征。识别事务中心和每一条操作路径上的流特征。将将DFD映射为事务型映射为事务型SC图。图。事务流应该映射到包含一个输入分支和一个分类事事务流应该映射到包含一个输入分支和一个分类事务处理分支的程序结构上。分类事务处理分支结构务处理分支的程序结构上。分类事务处理分支结构包含一个调度模块,它调度和控制下属的操作模块。包

39、含一个调度模块,它调度和控制下属的操作模块。“因子化因子化”分解和细化该事务结构及每一条操作路径的分解和细化该事务结构及每一条操作路径的结构。结构。每一条操作路径的每一条操作路径的DFD有它自己的信息流特征,可有它自己的信息流特征,可以是变换也可以是事务型。以是变换也可以是事务型。优化得到的优化得到的SC图。图。I IA AL LMMN NOOB BC CD DE EF FGGH H事务中心事务中心事务源事务源主模块主模块给出给出H取得取得ALMNA GHBECF D转换为结构图转换为结构图事务分析映射方法事务分析映射方法典型事务型典型事务型DFD也可使用变换分析来分解转换也可使用变换分析来分

40、解转换变换控制变换控制主模块主模块输出输出EFG输入输入ALMNA GE/F/GBECF DAE/F/GO输出输出HE/F/GHH练习:请将下列给出的采购子系统练习:请将下列给出的采购子系统DFD图转换成图转换成SC图图2.12.12.22.22.32.3书库书库保管员保管员F2F1F5F6F7加工名称加工名称加工名称加工名称:2.1 2.1 按书号汇总缺书按书号汇总缺书按书号汇总缺书按书号汇总缺书2.2 2.2 按出版社汇总缺书按出版社汇总缺书按出版社汇总缺书按出版社汇总缺书2.3 2.3 修改教材库存和待修改教材库存和待修改教材库存和待修改教材库存和待 购量购量购量购量文件名称文件名称文件

41、名称文件名称:F1F1 教材存量表教材存量表教材存量表教材存量表F2F2 缺书登记表缺书登记表缺书登记表缺书登记表F5F5 待购教材表待购教材表待购教材表待购教材表F6F6 教材一览表教材一览表教材一览表教材一览表F7F7 进书登记表进书登记表进书登记表进书登记表采购子系统的采购子系统的SC图图采采采采 购购购购按书号按书号按书号按书号汇总汇总汇总汇总缺书缺书缺书缺书登记表登记表登记表登记表统计缺书统计缺书统计缺书统计缺书登记进书登记进书登记进书登记进书按出版社按出版社按出版社按出版社汇总汇总汇总汇总打印打印打印打印缺书单缺书单缺书单缺书单修改修改修改修改教材存量表教材存量表教材存量表教材存量

42、表修改修改修改修改教材待购量教材待购量教材待购量教材待购量统计统计统计统计命令命令命令命令登记登记登记登记命令命令命令命令待购待购待购待购教材表教材表教材表教材表暂缺暂缺暂缺暂缺书单书单书单书单暂缺暂缺暂缺暂缺书单书单书单书单进书进书进书进书通知通知通知通知进书进书进书进书通知通知通知通知缺书登记表缺书登记表缺书登记表缺书登记表=班号班号班号班号+姓名姓名姓名姓名+书号书号书号书号+数量数量数量数量 软件结构图注意事项软件结构图注意事项同一名字的模块在结构图中仅能出现一次。同一名字的模块在结构图中仅能出现一次。调用关系只能从上到下。调用关系只能从上到下。不严格表示模块的调用次序,习惯上从左到右

43、,不严格表示模块的调用次序,习惯上从左到右,有时为了减少连线的交叉,适当地调整同一层有时为了减少连线的交叉,适当地调整同一层模块的左右位置,以保证结构图的清晰。模块的左右位置,以保证结构图的清晰。结构图并不指明什么时候调用下层模块,只表结构图并不指明什么时候调用下层模块,只表明一个模块调用哪些模块,至于模块内还有没明一个模块调用哪些模块,至于模块内还有没有其他成分则完全没有表示。有其他成分则完全没有表示。综合数据流图的映射综合数据流图的映射确定确定DFD整体上的类型:除明显有事务类型的,整体上的类型:除明显有事务类型的,都可认为是变换型。事务型用于高层都可认为是变换型。事务型用于高层DFD变换

44、变换有平行处理的优点。有平行处理的优点。把与全局特性不同的局部区域孤立出来,确定把与全局特性不同的局部区域孤立出来,确定类型。类型。按整体与局部的按整体与局部的DFD特性,设计软件结构。特性,设计软件结构。混合型的结构设计混合型的结构设计4.设计优化设计优化将初始将初始SC根据模块独立性原则进行精化,对模根据模块独立性原则进行精化,对模块进行合并、分解修改、调整,得到块进行合并、分解修改、调整,得到高内聚高内聚、低耦合低耦合模块,得到易于实现、易于测试和易于模块,得到易于实现、易于测试和易于维护的软件结构,产生设计文档的最终维护的软件结构,产生设计文档的最终SC。改进软件结构设计的指导原则:改

45、进软件结构设计的指导原则:启发式规则启发式规则4.4 启发规则启发规则几条常用的启发规则:几条常用的启发规则:程序结构尽可能与问题结构相对应程序结构尽可能与问题结构相对应模块功能的完整模块功能的完整消除重复功能,改进软件结构提高模块独立性消除重复功能,改进软件结构提高模块独立性模块规模应该适中模块规模应该适中深度、宽度、扇出和扇入都应适当深度、宽度、扇出和扇入都应适当模块的作用域应该在控制域之内模块的作用域应该在控制域之内力争降低模块接口的复杂程序力争降低模块接口的复杂程序设计单入口单出口的模块设计单入口单出口的模块模块功能应该可以预测模块功能应该可以预测1.程序结构尽可能与问题结构相对应程序

46、结构尽可能与问题结构相对应两种典型的程序结构:两种典型的程序结构:变换型程序变换型程序事务型程序事务型程序两种程序结构的共同特征:两种程序结构的共同特征:上层模块只负责控制、协调上层模块只负责控制、协调下层模块完成具体的操作下层模块完成具体的操作2.模块功能的完整模块功能的完整 完整的模块应包括三部分:完整的模块应包括三部分:执行规定功能部分执行规定功能部分出错处理部分出错处理部分需返回一系列数据时,应返回是否正确结束(即需返回一系列数据时,应返回是否正确结束(即“文件完文件完/EOF”)标志。)标志。3.消除重复功能消除重复功能消除模块中重复部分消除模块中重复部分提高模块独立性。提高模块独立

47、性。因为同一功能重复多处,不仅浪费编程、测试时间,还因为同一功能重复多处,不仅浪费编程、测试时间,还会给修改带来麻烦。但消除重复功能并非简单的合并。会给修改带来麻烦。但消除重复功能并非简单的合并。正确的方法是正确的方法是:先分析几个模块中相同功能的部分;先分析几个模块中相同功能的部分;然后把这个功能分离出来,构成它们的一个公共的然后把这个功能分离出来,构成它们的一个公共的下层模块。下层模块。消除重复功能消除重复功能 举例举例相似部分相似部分X XY YR1R1R2R2C C C C改进方案改进方案1X XY YR1 R1 R2R2R R改进方案改进方案2X+R1 X+R1 Y+R2Y+R2R

48、R4.模块规模应该适中模块规模应该适中模块规模,模块规模,用模块中所包含语句的数量多少来衡量。用模块中所包含语句的数量多少来衡量。模块过大模块过大:可理解程度下降:可理解程度下降考虑对该模块分解考虑对该模块分解模块过小模块过小:开销大于有效操作,系统接口复杂:开销大于有效操作,系统接口复杂考虑是否同它的调用模块合并考虑是否同它的调用模块合并几种情况下的小模块不合并:几种情况下的小模块不合并:模块具有独立的功能模块具有独立的功能模块功能可能会发生变化模块功能可能会发生变化 模块的复用性好,或者其调用模块很复杂模块的复用性好,或者其调用模块很复杂5.深度、宽度、扇入、扇出合理深度、宽度、扇入、扇出

49、合理深度深度表示软件结构中控制的层数。表示软件结构中控制的层数。宽度宽度是软件结构内同一个层次上的模块总数的最是软件结构内同一个层次上的模块总数的最大值。大值。扇入扇入,表示一个模块有多少个上级模块直接调用,表示一个模块有多少个上级模块直接调用它。它。扇出扇出,表示一个模块直接控制(调用)的模块数,表示一个模块直接控制(调用)的模块数目。目。原则:避免高扇出(原则:避免高扇出(7,因为属自然分类情况,因为属自然分类情况,易理解。易理解。5.深度、宽度、扇入、扇出合理(续)深度、宽度、扇入、扇出合理(续)相关技巧:相关技巧:良好的结构图往往呈良好的结构图往往呈“清真状清真状”,即,即“顶为尖顶为

50、尖下下层逐渐加宽层逐渐加宽底层收窄底层收窄”。结构图的形态应该均衡,即从顶到底层的路径长短不结构图的形态应该均衡,即从顶到底层的路径长短不该过于悬殊。该过于悬殊。举例:下列模块结构图是否合适举例:下列模块结构图是否合适6.模块的作用域应在控制域之内模块的作用域应在控制域之内定义:定义:控制域控制域:从结构方面考虑的。是这个模块本身以及:从结构方面考虑的。是这个模块本身以及所有直接或间接从属于它的模块的集合。所有直接或间接从属于它的模块的集合。作用域作用域:从功能方面考虑的。是受该模块内一个判:从功能方面考虑的。是受该模块内一个判定影响的所有模块的集合。定影响的所有模块的集合。基本目标:基本目标

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 软件工程

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服