第5章总体设计_第1页
第5章总体设计_第2页
第5章总体设计_第3页
第5章总体设计_第4页
第5章总体设计_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程第五章第五章 总体设计总体设计2 第五章总体设计5 . 1 设计过程设计过程 5 . 2 设计原理设计原理 5 . 3 启发规则启发规则 5 . 4 描绘软件结构的图形工具描绘软件结构的图形工具5 . 5 面向数据流的设计方法面向数据流的设计方法 5 . 6 小结小结习题习题3 学习要求掌握:掌握: 1 、软件设计过程中应遵循的基本原理和相、软件设计过程中应遵循的基本原理和相关概念;关概念; 2 、描绘软件结构的图形工具的运用;、描绘软件结构的图形工具的运用; 3 、面向数据流设计方法概念;变换分析、面向数据流设计方法概念;变换分析、事务分析法过程和应用。事务分析法过程和应用。理解:理

2、解: 1 、典型的总体设计过程包括的步骤;、典型的总体设计过程包括的步骤; 2 、设计中的启发式规则;、设计中的启发式规则;4 重点和难点重点重点:软件设计过程中应遵循的基本原理;软件设计过程中应遵循的基本原理;面向数据流的设计方法面向数据流的设计方法难点难点:变换分析、事务分析法的过程和应用变换分析、事务分析法的过程和应用5 软件设计的目标和任务软件需求:解决软件需求:解决“做什么做什么”软件设计:解决软件设计:解决“怎么做怎么做”u软件设计的任务软件设计的任务:以软件需求规格说明书以软件需求规格说明书为依据,着手实现软件的需求,并将设计的为依据,着手实现软件的需求,并将设计的结果反映在结果

3、反映在“设计规格说明书设计规格说明书”文档中。文档中。u软件设计的重要性软件设计的重要性:是软件开发阶段的第是软件开发阶段的第一步,最终影响软件实现的成败和软件维护一步,最终影响软件实现的成败和软件维护的难易程度。的难易程度。6 软件设计的两个阶段第一阶段:概要设计(总体设计)第一阶段:概要设计(总体设计)根据软件需求,设计软件系统结构和数据结根据软件需求,设计软件系统结构和数据结构,确定程序的组成模块及模块之间的相互构,确定程序的组成模块及模块之间的相互关系。关系。回答回答“概括地说,系统应该如何实现?概括地说,系统应该如何实现?”。其重要性是:站在全局高度,从较抽象的层其重要性是:站在全局

4、高度,从较抽象的层次上分析对比多种可能的系统实现方案和软次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软结构,从而用较低成本开发出较高质量的软件系统。件系统。7 软件设计的两个阶段第二阶段:详细设计(过程设计)第二阶段:详细设计(过程设计)确定模块内部的算法和数据结构;选定某种确定模块内部的算法和数据结构;选定某种过程的表达形式来描述各种算法;产生精确过程的表达形式来描述各种算法;产生精确描述各模块程序过程的详细文档,并进行评描述各模块程序过程的详细文档,并进行评审。审。8 将需求分析摸型转

5、换为软件设计软件结构设计以需求分析中得到的数据流图软件结构设计以需求分析中得到的数据流图为基础而进行。为基础而进行。9 SA与SD的关系10 第一个阶段总体设计的任务 制定规范制定规范 设计软件系统结构(简称软件结构)设计软件系统结构(简称软件结构) 处理方式设计处理方式设计数据结构及数据库设计数据结构及数据库设计 可靠性设计可靠性设计 编写概要设计文档编写概要设计文档 概要设计评审概要设计评审11 制定规范为软件开发小组制定在进行软件设计,应该为软件开发小组制定在进行软件设计,应该共同遵守的标准,以便协调组内各员的工作。共同遵守的标准,以便协调组内各员的工作。12 软件结构设计包括:包括:l

6、将系统按功能划分成模块将系统按功能划分成模块l确定每个模块的功能确定每个模块的功能l确定模块之间的调用关系确定模块之间的调用关系l确定模块之间的接口,即模块之间传递的信息确定模块之间的接口,即模块之间传递的信息l评价模块结构的质量评价模块结构的质量13 处理方式设计包括:包括:功能设计:功能设计:确定实现功能法,评估算法的性确定实现功能法,评估算法的性能能性能设计:性能设计:确定实现性能需求必须的算法和模确定实现性能需求必须的算法和模块间的控制方式块间的控制方式 功能分解功能分解 设计软件结设计软件结构构 设计数据库设计数据库 制定测试计制定测试计划划1 1)系统设计阶段:确定系统的具体解决方

7、案;)系统设计阶段:确定系统的具体解决方案; 设想供选择的方案设想供选择的方案 选取合理方案选取合理方案 推荐最佳方案推荐最佳方案2 2)结构设计阶段:确定软件结构。)结构设计阶段:确定软件结构。 书写文档书写文档 审查和复审审查和复审5.1 设计的过程15 5.1 设计的过程一一. .设想供选择的方案设想供选择的方案u从数据流图与数据字典出发,分析员自由分析比较从数据流图与数据字典出发,分析员自由分析比较不同的物理实现方案,并且力求从中选取最佳方案。不同的物理实现方案,并且力求从中选取最佳方案。u常用方法:自动化边界分组。常用方法:自动化边界分组。二二. .选取合理的方案选取合理的方案选取低

8、成本、中等成本和高成本三种方案;选取低成本、中等成本和高成本三种方案;结合问题定义、可行性研究的结果、用户意见;结合问题定义、可行性研究的结果、用户意见;为每一种方案都准备四份材料:系统流程图、组为每一种方案都准备四份材料:系统流程图、组成系统的物理元素清单、成本成系统的物理元素清单、成本/ /效益分析、实现这个效益分析、实现这个系统的进度计划。系统的进度计划。5.1 设计的过程三三. .推荐最佳方案推荐最佳方案由用户、技术专家和部门负责人进行严格审查;由用户、技术专家和部门负责人进行严格审查;推荐一个最佳的方案,并为其指定详细的实现计划。推荐一个最佳的方案,并为其指定详细的实现计划。四四.

9、.功能分解功能分解结合算法对数据流图中的处理进一步分解和细化。结合算法对数据流图中的处理进一步分解和细化。分解的原则是:分解的原则是:分解后的功能比较简单分解后的功能比较简单(实现实现);对大多数程序员来说都是易懂的;对大多数程序员来说都是易懂的;五五. .设计软件结构设计软件结构可以直接从数据流图映射出软件的结构。可以直接从数据流图映射出软件的结构。把分解得到的软件模块按照调用关系组织成良好的层把分解得到的软件模块按照调用关系组织成良好的层次结构,最上层模块完成完整功能,最下层模块完成次结构,最上层模块完成完整功能,最下层模块完成最具体功能。最具体功能。六六. .数据库设计数据库设计( (如

10、果需要如果需要) )七七. .制定测试计划制定测试计划在设计时提高软件的可测试性;在设计时提高软件的可测试性;八八. .书写文档书写文档系统说明:系统组成、最佳解决方案和模块的描述;系统说明:系统组成、最佳解决方案和模块的描述;用户手册:修改需求分析阶段产生的初步用户手册;用户手册:修改需求分析阶段产生的初步用户手册;测试计划:测试策略,测试方案,预期的测试结果,测试计划:测试策略,测试方案,预期的测试结果,测试进度等;测试进度等;详细的实现计划详细的实现计划数据库设计结果:数据库的逻辑、物理模型。数据库设计结果:数据库的逻辑、物理模型。记录总体设计的结果:记录总体设计的结果:九九. .审查和

11、复查审查和复查技术专家对总体设计结果严格审查;技术专家对总体设计结果严格审查;使用部门负责人对总体设计结果严格复查。使用部门负责人对总体设计结果严格复查。5.2 软件设计的原理前一页主要内容模块化模块化 抽象抽象 逐步求精逐步求精信息隐蔽和局部化信息隐蔽和局部化模块独立模块独立 21 5 . 2 . 1 模块化(Modularity ) 什么是模块和模块化思想?什么是模块和模块化思想?采取自顶向下的方式,逐层把软件系统划分采取自顶向下的方式,逐层把软件系统划分成若干可单独命名和可编址的部分成若干可单独命名和可编址的部分 “ 模块模块” 每个模块完成一个特定的子功能;所有模块每个模块完成一个特定

12、的子功能;所有模块按某种方法组成一个整体,完成整个系统所按某种方法组成一个整体,完成整个系统所要求的功能。要求的功能。软件系统就是通过这些模块的组合来实现。软件系统就是通过这些模块的组合来实现。22 模块化的优点模块化是软件解决复杂问题所具备的手段,模块化是软件解决复杂问题所具备的手段,可降低软件复杂性,减少开发工作量,从而可降低软件复杂性,减少开发工作量,从而降低开发成本,提高软件生产率,是模块化降低开发成本,提高软件生产率,是模块化的依据。的依据。23 模块化与软件成本的关系接口接口24 模块的基本属性接口:接口:指模块的输入与输出。指模块的输入与输出。功能:功能:指模块实现什么功能。指模

13、块实现什么功能。模块化好处模块化好处:l模块化使软件容易测试和调试,因而有助模块化使软件容易测试和调试,因而有助提高软件的可靠性。提高软件的可靠性。l模块化能提高软件的可修改性。模块化能提高软件的可修改性。l模块化有助于软件开发工程的组织管理。模块化有助于软件开发工程的组织管理。25 5.2.2 抽象( Abstraction ) 什么是抽象?什么是抽象? 认识复杂事物和现象时,抽出事物本质的认识复杂事物和现象时,抽出事物本质的共同特性而暂不考虑它们的细节。共同特性而暂不考虑它们的细节。 软件开发中的抽象软件开发中的抽象 过程的抽象过程的抽象 数据的抽象数据的抽象26 抽象软件开发实际上就是一

14、个从软件开发实际上就是一个从高层次抽象高层次抽象到到低层次抽象低层次抽象逐步过渡的过程。逐步过渡的过程。软件系统进行模块设计时,可有不同的抽象层次:软件系统进行模块设计时,可有不同的抽象层次:最高的抽象层次上,可以用面向问题的语言,概括地最高的抽象层次上,可以用面向问题的语言,概括地描述问题的解法;描述问题的解法;较低的抽象层次上,可以用面向问题与面向实现相结较低的抽象层次上,可以用面向问题与面向实现相结合的术语进行描述;合的术语进行描述;最低的抽象层次上,可以用直接实现的方式加以叙述最低的抽象层次上,可以用直接实现的方式加以叙述。一个复杂的系统先用一些高级的抽象概念构造和理解,一个复杂的系统

15、先用一些高级的抽象概念构造和理解,这些高级概念又用较低级的概念构造和理解,如此进这些高级概念又用较低级的概念构造和理解,如此进行下去,直到具体元素。行下去,直到具体元素。27 5 . 2. 3 逐步求精逐步求精:逐步求精:为了能集中精力解决主要问题而为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。尽量推迟对问题细节的考虑。可把逐步求精看作是一项把一个时期内必须可把逐步求精看作是一项把一个时期内必须解决的种种问题解决的种种问题按优先级排序按优先级排序的技术。的技术。逐步求精是一种逐步求精是一种自顶向下自顶向下的设计策略,按这的设计策略,按这种设计策略,程序的体系结构是通过逐步精种设计策略,

16、程序的体系结构是通过逐步精化处理过程的层次而设计出来的。化处理过程的层次而设计出来的。28 自顶向下,逐步求精的基本思想l将功能、信息的说明分为多个层次,将功能、信息的说明分为多个层次,最高最高层层也最抽象也最抽象 仅仅只是仅仅只是概念性概念性地描述功能或地描述功能或信息,信息,不不提供功能的内部工作情况或信息的提供功能的内部工作情况或信息的内部结构;内部结构;l设计者从最高层开始,仔细推敲,进行功设计者从最高层开始,仔细推敲,进行功能和信息的细化,给出能和信息的细化,给出下下层实现的细节层实现的细节;l随着每个后续细化逐步的完成,提供越来随着每个后续细化逐步的完成,提供越来越多的细节,最终得

17、出用程序设计语言表达越多的细节,最终得出用程序设计语言表达的程序。的程序。29 结合了模块化和逐步细化思想建立的软件结构图30 5.2.4 信息隐藏和局部化信息隐藏原理:信息隐藏原理:模块中内包含的信息模块中内包含的信息( (过程过程和数据和数据) )不允许其它不需要这些信息的模块访不允许其它不需要这些信息的模块访问。问。信息局部化:信息局部化:把一些关系密切的软件元素物把一些关系密切的软件元素物理地放得彼此靠近。理地放得彼此靠近。信息局部化有利于信息隐藏。信息局部化有利于信息隐藏。31 5. 2 . 5 模块独立1 、什么是模块独立性、什么是模块独立性( module independenc

18、e)模块只完成系统要求的相对独立的功能模块只完成系统要求的相对独立的功能l符合信息隐蔽原则符合信息隐蔽原则l模块间关联和依赖程度尽量小模块间关联和依赖程度尽量小 2 、模块独立的优点、模块独立的优点独立的模块比较容易理解和开发;独立的模块比较容易理解和开发;独立的模块比较容易测试和维护;独立的模块比较容易测试和维护;l模块独立与否是评价一个设计好坏的重要尺模块独立与否是评价一个设计好坏的重要尺度。度。32 3 、衡量模块独立性的两个准则 耦合性(耦合性( coupling ) 内聚性(内聚性( cohesion )1 1、耦合、耦合 耦合是对一个软件结构内不同模块之间互连程度耦合是对一个软件结

19、构内不同模块之间互连程度(相互相互依赖程度依赖程度)的度量的度量 。在软件设计时应该在软件设计时应该追求松散耦合追求松散耦合的的系统。系统。耦合的强度依赖于以下因素:耦合的强度依赖于以下因素:模块间引用模块间引用(调用调用);模块间传递的数据量;模块间传递的数据量;模块间施加的控制数量;模块间施加的控制数量;模块间接口复杂度。模块间接口复杂度。 耦合性( coupling )34 耦合性( coupling )设计目标:低耦合设计目标:低耦合35 a 无直接耦合两个模块没有直接关系,模块独立性最强。两个模块没有直接关系,模块独立性最强。36 b 数据耦合属松散耦合。一模块访问另一模块时,通过属

20、松散耦合。一模块访问另一模块时,通过数据参数交换输入、输出信息。数据参数交换输入、输出信息。37 c 控制藕合模块之间传递的是控制信息(如开关、标志、模块之间传递的是控制信息(如开关、标志、名字等),名字等),控制被调用模块的内部逻辑控制被调用模块的内部逻辑。38 去除模块间控制耦合的方法控制藕合增加了理解和编程的复杂性,调用控制藕合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了模块必须知道被调模块的内部逻辑,增加了相互依赖。解决方法:相互依赖。解决方法: ( 1 )将被调用模块内的判定上移到调用模)将被调用模块内的判定上移到调用模块中进行块中进行 ( 2 )被调用模块分

21、解成若干单一功能模块)被调用模块分解成若干单一功能模块39 改控制耦合为数据耦合举例40 特征耦合两个模块通过传递两个模块通过传递数据结构数据结构加以联系,或都加以联系,或都与一个与一个数据结构数据结构有关系,则称这两个模块间有关系,则称这两个模块间存在特征耦合。存在特征耦合。可能出现的情况:当把可能出现的情况:当把整个数据结构作为参整个数据结构作为参数数传递时,被调用的模块虽然只需要使用其传递时,被调用的模块虽然只需要使用其中的一部分数据元素,但实际可以使用的数中的一部分数据元素,但实际可以使用的数据多于它真正需要的数据,这将导致对数据据多于它真正需要的数据,这将导致对数据访问失去控制,访问

22、失去控制,41 特征耦合举例说明:说明: l “住户情况住户情况”是一个是一个数据结构数据结构,图中模块都与此,图中模块都与此数据结构有关。数据结构有关。 l “计算水费计算水费”和和“计算电费计算电费”本无关,由于引用本无关,由于引用了此数据结构产生依赖关系,它们之间也是了此数据结构产生依赖关系,它们之间也是标记偶标记偶合合。42 将特征耦合修改为数据耦合举例43 公共环境耦合一组模块引用同一个公用数据区(也称全局一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。数据区、公共数据环境)。公共数据区公共数据区指:指:l全局数据结构。全局数据结构。l共享通讯区。共享通讯区。l内存公共

23、覆盖区等内存公共覆盖区等44 公共环境耦合举例模块模块 A 、 B 、 C 间存在错综复杂的联系间存在错综复杂的联系45 公共耦合存在的问题( 1 )软件可理解性降低)软件可理解性降低 ( 2 )诊断错误困难)诊断错误困难 ( 3 )软件可维护性差)软件可维护性差 ( 4 )软件可靠性差)软件可靠性差46 内容耦合有下列情况之一的。是最不好的耦合形式!有下列情况之一的。是最不好的耦合形式!47 模块间耦合强度48 耦合强度依赖的因素:l一模块对另一模块的引用一模块对另一模块的引用l一模块向另一模块传递的数据量一模块向另一模块传递的数据量l一模块施加到另一模块的控制的数量一模块施加到另一模块的控

24、制的数量l模块间接口的复杂程度模块间接口的复杂程度49 降低耦合度的设计原则1、根据问题特点,选择合适的、根据问题特点,选择合适的 耦合类型。耦合类型。 尽量使用数据耦合,少用控制耦合和外部耦尽量使用数据耦合,少用控制耦合和外部耦合,限制公共耦合的范围,完全不用内容耦合,限制公共耦合的范围,完全不用内容耦合合2 、降低模块接口的复杂性。、降低模块接口的复杂性。减少每个模块的参数个数;尽量使用标准过减少每个模块的参数个数;尽量使用标准过程调用方式,少用直接引用的方式;传送的程调用方式,少用直接引用的方式;传送的信息以标准、直接的方式提供。信息以标准、直接的方式提供。 3 、把模块的通信信息放在缓

25、冲区中。、把模块的通信信息放在缓冲区中。50 内聚性( cohesion )又称块内联系。指一个模块内部各个元素彼又称块内联系。指一个模块内部各个元素彼此结合的紧密程度的度量。此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之若一个模块内各元素(语句之间、程序段之间)联系的越紧密,则它的内聚性就越间)联系的越紧密,则它的内聚性就越设计目标:高内聚设计目标:高内聚51 巧合内聚(偶然内聚)块内各组成成份在功能上是互不相关的。块内各组成成份在功能上是互不相关的。模块模块 M 中的三个语句没有任何联系。中的三个语句没有任何联系。缺点:可理解性差,可修改性差缺点:可理解性差,可修改性差52

26、 逻辑内聚把几种相关功能(逻辑上相似的功能)组合把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确在一模块内,每次调用由传给模块的参数确定执行哪种功能。定执行哪种功能。53 逻辑内聚模块54 时间内聚(经典内聚)模块完成的功能必须在模块完成的功能必须在同一时间同一时间内执行,这内执行,这些功能只因时间因素关联在一起。些功能只因时间因素关联在一起。例:例:初始化系统模块初始化系统模块系统结束模块、系统结束模块、 紧急故障处理模块等紧急故障处理模块等55 过程内聚(顺序性组合)模块内各处理成分相关,且必须以特定次序模块内各处理成分相关,且必须以特定次序执行。执行。56 通

27、信内聚模块内各部分使用模块内各部分使用相同的输入数据相同的输入数据,或产生,或产生相同的输出结果相同的输出结果57 顺序内聚一个模块内的成分和同一个功能密切相关,一个模块内的成分和同一个功能密切相关,而且这些处理必须顺序执行。而且这些处理必须顺序执行。58 功能内聚模块仅包括为完成某个功能所必须的所有成模块仅包括为完成某个功能所必须的所有成分。分。模块所有成分共同模块所有成分共同完成一个功能完成一个功能,缺一不可,缺一不可内聚性最强内聚性最强59 模块间内聚的类型60 总结:耦合、内聚与模块独立性关系l 耦合与内聚都是耦合与内聚都是模块独立性模块独立性的定性标准,的定性标准,都反映模块独立性的

28、良好程度。都反映模块独立性的良好程度。l 但耦合是直接的主导因素,内聚则辅助耦但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。合共同对模块独立性进行衡量。l 设计要求:低耦合,高内聚设计要求:低耦合,高内聚61 5 .3 启发规则改进原则改进原则 :高内聚、低耦合:高内聚、低耦合 改进软件结构,提高模块独立性改进软件结构,提高模块独立性 模块规模适中模块规模适中 深度、宽度、扇出和扇入适中深度、宽度、扇出和扇入适中 将模块的影响限制在控制范围内将模块的影响限制在控制范围内 降低模块接口的复杂性降低模块接口的复杂性 设计单入口单出口的模块设计单入口单出口的模块 模块功能可预测模块

29、功能可预测62 改进软件结构,提高模块独立性通过模块分解或合并,降低耦合提高内聚通过模块分解或合并,降低耦合提高内聚内聚程度低:分解;内聚程度低:分解;耦合程度高:合并。耦合程度高:合并。减少控制信息、全局数据,降低接口的复杂度。减少控制信息、全局数据,降低接口的复杂度。63 模块规模适中不要过大,规模控制在不要过大,规模控制在 60 60 行语句;行语句;不要过小,否则接口复杂,通信开销大;不要过小,否则接口复杂,通信开销大;合并到上层模块合并到上层模块64 深度、宽度、扇出和扇入适中软件结构度量术语软件结构度量术语深度:软件结构中分层的层数,表示细化程度;深度:软件结构中分层的层数,表示细

30、化程度;宽度:模块数最多层的模块数,表示系统复杂度;宽度:模块数最多层的模块数,表示系统复杂度;扇出扇出(fan-out) :一个模块直接调用:一个模块直接调用/控制的下层模块数,控制的下层模块数,表示模块复杂程度。要求表示模块复杂程度。要求3 fan-out 9扇入扇入(fan-in) :直接调用该模块的上层模块数,在不破坏:直接调用该模块的上层模块数,在不破坏独立性的前提下,扇入大比较好。独立性的前提下,扇入大比较好。好的软件结构:顶层扇出比较高,中间层扇出较少,好的软件结构:顶层扇出比较高,中间层扇出较少,底层模块有较高扇入。底层模块有较高扇入。66 例:避免平铺结构67 增加中间层降低

31、扇出68 作用域作用域是指受模块内一个判定影响的所有模块的集是指受模块内一个判定影响的所有模块的集合合控制域控制域是指这个模块本身及其所有的下属模块的集是指这个模块本身及其所有的下属模块的集合合 将模块的影响限制在控制范围内1)把判定上移或下移;)把判定上移或下移;2)把不在控制域内的模块移动到控制域内。)把不在控制域内的模块移动到控制域内。改进方法:改进方法:69 模块模块 C 的控制范围:的控制范围: C 、 D 、 E 、 F 、 G 、 H 。如果模块如果模块 C 作出的作出的决策影响了模块决策影响了模块 L ,L超出了超出了 C 的控制的控制范围范围使任一模块的作用域在其控制域内70

32、 降低模块接口的复杂性接口传递信息应简单且和模块功能一致。接口传递信息应简单且和模块功能一致。模块的接口要简单、清晰、含义明确,便于模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与维护。理解,易于实现、测试与维护。71 设计单入口单出口的模块不要使模块间出现内容耦合。不要使模块间出现内容耦合。72 模块功能可预测如果一个模块可以当作一个黑盒子,相同输如果一个模块可以当作一个黑盒子,相同输入产生相同输出,其功能为可预测的。入产生相同输出,其功能为可预测的。若模块带有内部若模块带有内部“存储器存储器”,其功能可能是,其功能可能是不可预测的,难理解、难测试、难维护。不可预测的,难理解、难

33、测试、难维护。单一的模块具有高内聚。但模块功能过分局单一的模块具有高内聚。但模块功能过分局限,可使用范围将过分狭窄,缺乏灵活性和限,可使用范围将过分狭窄,缺乏灵活性和扩充性。扩充性。73 5 .4 描绘软件结构的图形具 5 . 4 . 1 层次图和层次图和 HIPO 图图l 描述软件的层次结构。描述软件的层次结构。l 层次图中,一个方框代表一个模块,方框层次图中,一个方框代表一个模块,方框间的连线表示调用关系。间的连线表示调用关系。 l HIPO 图图=层次图层次图 IPO 图图74 正文加工系统层次图层次图主控模块75 酒店管理信息系统功能结构图76 5.4.2 结构图(SC Structu

34、re Chart)描绘程序结构,反映程序中模块之间的层次调用关描绘程序结构,反映程序中模块之间的层次调用关系和联系。系和联系。符 号名 称说 明模块功能单元,注明名字与主要功能调用如果没有二义性,可以用直线表示数据模块间传递的数据信息控制信息模块间传递的控制信息77 主要成分说明:主要成分说明:l一个方框表示一个一个方框表示一个模块模块;l一个模块指向另一个模块的箭头或直线,表示前一个模块指向另一个模块的箭头或直线,表示前一模块对后一模块的一模块对后一模块的调用调用;l调用直线边的小箭头,表示调用时从一个模块传调用直线边的小箭头,表示调用时从一个模块传给另一个模块的给另一个模块的数据数据,也指

35、出了传送方向。,也指出了传送方向。78 SC 中的四种模块从下属模块取从下属模块取得数据,经过得数据,经过处理,再传入处理,再传入上级模块上级模块从上级模块从上级模块获得数据,获得数据,经过处理,经过处理,再传送给下再传送给下属模块属模块加工模块。加工模块。从上级模块从上级模块获得数据,获得数据,经过处理,经过处理,转换成其他转换成其他形式,再送形式,再送回上级模块。回上级模块。对所有下属模对所有下属模块进行协调和块进行协调和管理的模块管理的模块79 结构图(SC)举例80 SC中的选择调用81 SC中的循环调用符 号名 称说 明传入模块从下属模块获得数据,处理后传送给上级模块传出模块从上级模

36、块获得数据,处理后传送给下属模块变换模块从上级模块获得数据,处理后送回上级模块协调模块在下属模块间协调数据选择调用根据判定进行选择调用循环调用循环调用下属模块每个传递的数据是否必须?每个传递的数据是否必须?完成模块功能所必须的数据是否都传递了?完成模块功能所必须的数据是否都传递了?传输的数据是否只与单一的功能有关?传输的数据是否只与单一的功能有关?图中模块间的联系是否容易解释?图中模块间的联系是否容易解释?用于检查设计的正确性和模块独立性。须检查:用于检查设计的正确性和模块独立性。须检查:84 5 .5 面向数据流的设计方法5.5. 1 概念概念把信息流映射成软件结构把信息流映射成软件结构,信

37、息流的类型决定信息流的类型决定了映射的方法了映射的方法,信息流可分为两种类型信息流可分为两种类型l 变换型流变换型流l 事务型流事务型流85 1.变换型数据流基本模型特点:具有明确的传入、变换(或称主加工)特点:具有明确的传入、变换(或称主加工)和传出界面的和传出界面的 DFD86 另一种表示图87 变换型数据流举例88 2.事务型数据流基本模型事务中心的任务:事务中心的任务:l 接受输入数据(事务)接受输入数据(事务)l 分析每个事务以确定它的类型。分析每个事务以确定它的类型。l 根据事务类型选取一条活动通路。根据事务类型选取一条活动通路。89 事务型数据流举例90 针对两种数据流的设计方法

38、91 系统结构特征可归纳为两种典型形式92 大型系统的 DFD 中,变换型和事务型往往共存93 5 .5 .2 变换分析例例1:有如下数据流图:有如下数据流图94 步骤步骤1:区分输入、变换中心、输出部分,在:区分输入、变换中心、输出部分,在 DFD 上标明分界线上标明分界线注意;所谓注意;所谓 “输入输入”、“ 输出输出”是站在整个系统的是站在整个系统的角度来看的,是整个系统的输入、输出部分角度来看的,是整个系统的输入、输出部分95 步骤2:第一级分解。设计顶层和第一层模块96 第一级分解后 SC 的数据流97 步骤3:第二级分解。自顶向下分解 SC 各分支,设计出每个分支的中、下层模块98 1 、传入分支的分解 ( 1)99 1 、传入分支的分解 (2)若有必要,继若有必要,继续分解。续分解。以以“输入金额输入金额”为例,可将此为例,可将此分支也看成一分支也看成一个变换型数据个变换型数据流流 得结构得结构图:图:100 继续分解“金额校验”101 11、传入分支的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论