第14章软件设计_第1页
第14章软件设计_第2页
第14章软件设计_第3页
第14章软件设计_第4页
第14章软件设计_第5页
已阅读5页,还剩134页未读 继续免费阅读

下载本文档

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

文档简介

1、1软件设计软件设计2软件设计概述软件设计概述n软件设计分为两个阶段软件设计分为两个阶段u概要设计概要设计(又称总体设计又称总体设计):确定软件系统的总体结构:确定软件系统的总体结构u详细设计详细设计(又称过程设计又称过程设计):详细设计则是对概要设计结果进:详细设计则是对概要设计结果进一步细化,给出目标系统的精确描述。一步细化,给出目标系统的精确描述。n软件设计的目标软件设计的目标软件需求:解决软件需求:解决“做什么做什么”软件设计:解决软件设计:解决“怎么做怎么做”3软件设计的任务软件设计的任务n问题结构问题结构(软件需求软件需求) 软件结构软件结构n从软件需求规格说明书出发,形成软的具体设

2、计从软件需求规格说明书出发,形成软的具体设计方案。方案。映射映射4软件设计的任务软件设计的任务n数据流图数据流图n数据字典数据字典n加工策略加工策略数数 据据 设设 计计体系结构设计体系结构设计接口设计接口设计过程设计过程设计5软件设计的任务软件设计的任务分析模型分析模型设计模型设计模型目标系统目标系统逻辑模型逻辑模型目标系统目标系统物理模型物理模型6系统概要设计系统概要设计7概要设计概要设计n概要设计的过程概要设计的过程需求文档需求文档概要设计文档概要设计文档设计软件结构设计软件结构设计系统构架设计系统构架设计数据结构设计数据结构需求框架需求框架系统构架系统构架数据环境数据环境n子系统功能需

3、求功能需求数据需求数据需求软件结构软件结构数据结构数据结构图图14.1 概要设计过程概要设计过程8概要设计概要设计n概要设计的内容概要设计的内容u制订规范制订规范u系统构架设计系统构架设计u软件结构设计软件结构设计u公共数据结构设计公共数据结构设计u安全性设计安全性设计u故障处理设计故障处理设计u可维护性设计可维护性设计u编写文档编写文档u概要设计评审概要设计评审9概要设计概要设计n软件的构架设计软件的构架设计u概要设计通过需求框架来映射系统构架。概要设计通过需求框架来映射系统构架。例如:利用需求分析中的高层数据流程图对系统基本工作例如:利用需求分析中的高层数据流程图对系统基本工作流程的描述来

4、映射系统的基本结构,使得需求分析中对系流程的描述来映射系统的基本结构,使得需求分析中对系统的逻辑描述转换为概要设计中对系统的物理描述。统的逻辑描述转换为概要设计中对系统的物理描述。n系统构架设计的步骤系统构架设计的步骤u定义子系统。定义子系统。u定义子系统外部接口。定义子系统外部接口。u定义系统物理构架。定义系统物理构架。10软件设计概念与原则软件设计概念与原则11主要内容主要内容n模块与模块化模块与模块化n抽象与逐步求精抽象与逐步求精n信息隐蔽与局部化信息隐蔽与局部化n模块独立性模块独立性n软件结构的设计原则软件结构的设计原则12模块化模块化(Modularity)n模块模块:独立命名和独立

5、编址调用的一组程序语句,:独立命名和独立编址调用的一组程序语句,即数据说明、可执行语句等程序对象的集合。即数据说明、可执行语句等程序对象的集合。n模块化模块化:把软件系统划分为若干个模块,每一个把软件系统划分为若干个模块,每一个模块完成一个相对独立的子功能,把这些模块组模块完成一个相对独立的子功能,把这些模块组合起来,满足问题的求解需求。合起来,满足问题的求解需求。n把问题把问题/ /子问题的分解与软件开发中的系统子问题的分解与软件开发中的系统/ /子系子系统或系统统或系统/ /模块对应起来,就能够把一个大而复模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块杂的软件系

6、统划分成易于理解的比较单纯的模块结构。结构。13模块化模块化n模块化是好的软件设计的一个基本准则模块化是好的软件设计的一个基本准则复杂问题复杂问题 较小问题较小问题 分解分解可减小解题所需的总的工作可减小解题所需的总的工作14为什么要模块化为什么要模块化设函数设函数C(x)定义问题定义问题x的复杂程度的复杂程度函数函数E(x)确定解决问题确定解决问题x需要的工作量需要的工作量1.一个问题越复杂,解决它所需要的工作量就越一个问题越复杂,解决它所需要的工作量就越大。大。 即:即:C(P1)C(P2),则则E(P1)E(P2) 15为什么要模块化为什么要模块化2.2.如果把一个大而复杂的问题分解成一

7、些容易处理如果把一个大而复杂的问题分解成一些容易处理的小问题后,所需工作量会减少。的小问题后,所需工作量会减少。即:即:C(P1+P2)C(P1)+C(P2)C(P1+P2)C(P1)+C(P2), 且且E(P1+P2)E(P1)+E(P2)E(P1+P2)E(P1)+E(P2)。3.3.影响软件的总的工作量的因素有两个:模块复杂影响软件的总的工作量的因素有两个:模块复杂性成本,模块接口成本。性成本,模块接口成本。16为什么要模块化为什么要模块化模块化和软件成本成成本本或或工工作作量量模块数量模块数量软件总成本软件总成本集成成本集成成本成本成本/ /模块模块M最小成本区域最小成本区域17抽象化

8、抽象化n软件系统进行模块设计时,可有不同的抽象层次。软件系统进行模块设计时,可有不同的抽象层次。n在在最高的抽象层次最高的抽象层次上,可以使用问题所处环境的上,可以使用问题所处环境的语言概括地描述问题的解法。语言概括地描述问题的解法。因此,描述问题时,因此,描述问题时,可以使用面向问题的术语。可以使用面向问题的术语。n在在较低的抽象层次较低的抽象层次上,则采用过程化的方法。上,则采用过程化的方法。实实现时,采用能够直接实现的方式描述。现时,采用能够直接实现的方式描述。18过程的抽象过程的抽象1在软件在软件计划阶段计划阶段,将软件当作整个计算机系统,将软件当作整个计算机系统中的一个元素来看待。中

9、的一个元素来看待。1在软件在软件需求分析阶段需求分析阶段,用,用“问题所处环境的为问题所处环境的为大家所熟悉的术语大家所熟悉的术语”来描述软件的解决方法。来描述软件的解决方法。1 在在从概要设计到详细设计的过程从概要设计到详细设计的过程中,抽象化的中,抽象化的层次逐次降低。当产生源程序时到达最低抽象层层次逐次降低。当产生源程序时到达最低抽象层次。次。19信息隐蔽信息隐蔽n每个模块的实现细节对于其它模块来说是隐蔽的。每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。程)不允许其它

10、不需要这些信息的模块使用。n信息隐蔽的目的信息隐蔽的目的: :u提高模块的独立性,减少修改或维护时的影提高模块的独立性,减少修改或维护时的影响面。响面。20信息局部化信息局部化n把关系密切的软件元素物理地放得彼此靠近。把关系密切的软件元素物理地放得彼此靠近。n优点:优点:u可维护性好可维护性好u可靠性好可靠性好u可理解性好可理解性好21模块独立性模块独立性n模块独立性:软件系统中每个模块只涉及软件要求的具模块独立性:软件系统中每个模块只涉及软件要求的具体的子功能体的子功能( (功能是单一的功能是单一的) ),而和软件系统中其它的模,而和软件系统中其它的模块的接口是简单的。块的接口是简单的。u模

11、块完成独立的功能模块完成独立的功能u符合信息隐蔽和信息局部化原则符合信息隐蔽和信息局部化原则u模块间关连和依赖程度尽量小模块间关连和依赖程度尽量小n衡量模块独立性的准则衡量模块独立性的准则u耦合性:耦合性:模块之间的互相联系的紧密程度的度量。模块之间的互相联系的紧密程度的度量。u内聚性:内聚性:是模块功能强度是模块功能强度( (一个模块内部各个元素彼此结合的一个模块内部各个元素彼此结合的紧密程度紧密程度) )的度量。的度量。u模块独立性比较强的模块应是模块独立性比较强的模块应是高内聚低耦合高内聚低耦合的模块。的模块。22模块间的耦合模块间的耦合低低低耦合低耦合无直接耦合无直接耦合强强耦合性耦合

12、性数据耦合数据耦合模块独立性模块独立性标记耦合标记耦合中等程度耦合中等程度耦合控制耦合控制耦合较强耦合较强耦合外部耦合外部耦合公共耦合公共耦合高高强耦合强耦合内容耦合内容耦合弱弱23非直接耦合非直接耦合(Nondirect Coupling)n如果两个模块之间没有直接关系,它们之间的联系完全如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。合。这种耦合的模块独立性最强。24数据耦合数据耦合 (Data Coupling)n如果一个模块访问另一个模块如果一个模块访问另一个模

13、块时,彼此之间是通过简单数据时,彼此之间是通过简单数据参数参数 (不是控制参数、公共数不是控制参数、公共数据结构或外部变量据结构或外部变量) 来交换输来交换输入、输出信息的,则称这种耦入、输出信息的,则称这种耦合为数据耦合。合为数据耦合。n数据耦合属松散耦合。数据耦合属松散耦合。开发票开发票计算水费计算水费单价数量单价数量金额金额25标记耦合标记耦合 (Stamp Coupling)n如果一组模块通过参数表传递记录信息,就是如果一组模块通过参数表传递记录信息,就是标记耦合标记耦合。这个记录是某一数据结构的子结构,而不是简单变量这个记录是某一数据结构的子结构,而不是简单变量n“住户情况住户情况”

14、是一个是一个数据结构数据结构,图中模块都与此数据结图中模块都与此数据结构有关。构有关。n“计算水费计算水费”和和“计算电费计算电费”本无关,由于引用了此数本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合。据结构产生依赖关系,它们之间也是标记偶合。计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费电费电费住户情况住户情况26将标记耦合修改为数据耦合举例将标记耦合修改为数据耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费本月用水量本月用水量本月用电量本月用电量水费水费 电费电费27控制耦合控制耦合 (Control Coupling)n如果一个模

15、块通过传如果一个模块通过传送开关、标志、名字送开关、标志、名字等控制信息,明显地等控制信息,明显地控制选择另一模块的控制选择另一模块的功能,就是控制耦合。功能,就是控制耦合。28控制耦合举例控制耦合举例A A计算平均分计算平均分或最高分或最高分B B平均平均/ /最高最高( (控制信号控制信号) )成绩成绩读入分数读入分数输出结果输出结果计算平均分计算平均分计算最高分计算最高分平均平均/ /最高最高? ?B B29控制耦合控制耦合n控制耦合增加了理解和编程的复杂性,调用模块控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖必须知道被调模块的内部逻辑,增加了相互

16、依赖n去除模块间控制耦合的方法:去除模块间控制耦合的方法:u(1)(1)将被调用模块内的判定上移到调用模块中进行将被调用模块内的判定上移到调用模块中进行u(2)(2)被调用模块分解成若干单一功能模块被调用模块分解成若干单一功能模块30改控制耦合为数据耦合举例改控制耦合为数据耦合举例A A计算平均分计算平均分B1B1平均成绩最高成绩计算最高分计算最高分B2B231外部耦合(外部耦合(External Coupling)n一组模块都访问一组模块都访问同一全局简单变量同一全局简单变量而不是同一全而不是同一全局数据结构,而且不是通过参数表传递该全局变局数据结构,而且不是通过参数表传递该全局变量的信息,

17、则称之为外部耦合。量的信息,则称之为外部耦合。n一组模块均与同一外部环境关联一组模块均与同一外部环境关联( (例如例如,I/O,I/O模块模块与特定的设备、格式和通信协议相关联与特定的设备、格式和通信协议相关联), ),它们之它们之间便存在外部耦合。外部偶合必不可少间便存在外部耦合。外部偶合必不可少, ,但这种但这种模块数目应尽量少。模块数目应尽量少。32公共耦合(公共耦合(Common Coupling)n若一组模块都访问若一组模块都访问同一个公共数据环境同一个公共数据环境,则它们,则它们之间的耦合就称为公共耦合。公共的数据环境可之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共

18、享的通信区、内存的公共以是全局数据结构、共享的通信区、内存的公共覆盖区等。覆盖区等。n公共数据区指:公共数据区指:u全局数据结构全局数据结构u共享通讯区共享通讯区u内存公共覆盖区等内存公共覆盖区等33n公共耦合公共耦合的复杂程度随耦合模块的个数增加而显著增加。的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。况。松散公共耦合和紧密公共耦合。公共耦合公共耦合(Common Coupling)34公共耦合存在的问题公共耦合存在的问题n软件可理解性降低软件可理解性降低n诊断错误困难

19、诊断错误困难n软件可维护性差软件可维护性差n软件可靠性差软件可靠性差n(公共数据区及全程变量无保护措施公共数据区及全程变量无保护措施)慎用公共数慎用公共数据区和全程变量!据区和全程变量!35内容耦合内容耦合 (Content Coupling)n如果发生下列情形,两个模块之间就发生了内容如果发生下列情形,两个模块之间就发生了内容耦合耦合u一个模块直接访问另一个模块的内部数据一个模块直接访问另一个模块的内部数据u一个模块不通过正常入口转到另一模块内部一个模块不通过正常入口转到另一模块内部 u两个模块有一部分程序代码重迭两个模块有一部分程序代码重迭( (只可能出现在汇编只可能出现在汇编语言中语言中

20、) )u一个模块有多个入口一个模块有多个入口36B内容耦合内容耦合 (Content Coupling)一模块直接访问一模块直接访问另一模块的内部另一模块的内部信息信息(程序代码程序代码或数据或数据)ABA模块代码重叠模块代码重叠Entry1 Entry1 多入口模块多入口模块最不好的耦合形式最不好的耦合形式 !37降低模块间耦合度降低模块间耦合度n使用程度低的耦合使用程度低的耦合u尽量使用数据耦合尽量使用数据耦合u少用控制耦合少用控制耦合u限制公共耦合的范围限制公共耦合的范围u坚决避免使用内容耦合坚决避免使用内容耦合n降低接口的复杂性降低接口的复杂性38模块内聚模块内聚低低偶然内聚偶然内聚弱

21、弱内聚性内聚性逻辑内聚逻辑内聚模块独立性模块独立性时间内聚时间内聚过程内聚过程内聚通信内聚通信内聚顺序内聚顺序内聚高高功能内聚功能内聚强强39偶然内聚偶然内聚(巧合内聚巧合内聚)模块内各部分间无联系模块内各部分间无联系ABCMMOVE O TO RMOVE O TO RREAD FILE FREAD FILE FMOVE S TO TMOVE S TO T模块模块MM中的三个语句没有任何联系中的三个语句没有任何联系缺点:缺点:可理解性差,可理解性差, 可修改性差可修改性差例例: :40逻辑内聚模块逻辑内聚模块ABCEFGABCEFGA1B1C1EFGEFG模块内部逻辑模块内部逻辑E E、F F

22、、G G逻辑逻辑功能相似,组功能相似,组成新模块成新模块EFGEFG缺点:增强了耦合程度缺点:增强了耦合程度( (控制耦合控制耦合) )不易修改,效率低不易修改,效率低公用代码段公用代码段公用代码段公用代码段41逻辑内聚(逻辑内聚(Logical Cohesion) 这种模块把几种相关的这种模块把几种相关的功能组合在一起,每次功能组合在一起,每次被调用时,由传送给模被调用时,由传送给模块的判定参数来确定该块的判定参数来确定该模块应执行哪一种功能模块应执行哪一种功能42时间内聚(时间内聚(Classical Cohesion)n时间内聚又称为经典内聚。这种模块大多为多功能模块,时间内聚又称为经典

23、内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功但模块的各个功能的执行与时间有关,通常要求所有功能能必须在同一时间段内必须在同一时间段内执行。执行。n例如例如: :初始化系统模块、初始化系统模块、 系统结束模块、系统结束模块、 紧急故障处理模块等均是时间性聚合模块。紧急故障处理模块等均是时间性聚合模块。43过程内聚(过程内聚(Procedural Cohesion)模块内各处理成分相关,且必须以特定次序执行模块内各处理成分相关,且必须以特定次序执行读入读入成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩读入并审查成读入并审查成绩单绩单统计并打印成

24、统计并打印成绩单绩单44通信内聚通信内聚 (Communication Cohesion)n如果一个模块内各功能部分都使用了相同的输入如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图内聚模块。通常,通信内聚模块是通过数据流图来定义的。来定义的。45通信内聚模块例通信内聚模块例产生工产生工资报表资报表计算平计算平均工资均工资职工工职工工资记录资记录职工工职工工资报表资报表平均平均工资工资产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块46通信内聚通信内聚 (

25、Communication Cohesion)47顺序内聚顺序内聚n顺序内聚:如果一个模块各成分都与同一个功能顺序内聚:如果一个模块各成分都与同一个功能密切相关,一个成分的输出作为另一个成分的输密切相关,一个成分的输出作为另一个成分的输入,各成分必须按顺序执行,则称为顺序内聚入,各成分必须按顺序执行,则称为顺序内聚 建立方程组系数矩阵建立方程组系数矩阵高斯消去法高斯消去法回回 代代48功能内聚功能内聚 (Functional Cohesion)n一个模块中各个部分都是一个模块中各个部分都是完成某一具体功能完成某一具体功能必不可少的必不可少的组成部分,或者说该模块中所有部分都是为了完成一项组成部

26、分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。模块为功能内聚模块。49 内聚与耦合密切相关,同其它模块强耦合内聚与耦合密切相关,同其它模块强耦合的模块意味者弱内聚,强内聚模块意味着的模块意味者弱内聚,强内聚模块意味着与其它模块间松散耦合。与其它模块间松散耦合。设计目标:设计目标: 高内聚、低耦合高内聚、低耦合50耦合、内聚与模块独立性关系耦合、内聚与模块独立性关系 耦合与内聚都是模块独立性的定性标准,耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。都反映模块独立性的良

27、好程度。耦合是直接的主导因素,耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。内聚则辅助耦合共同对模块独立性进行衡量。51软件结构的设计准则软件结构的设计准则n改进软件结构提高模块独立性改进软件结构提高模块独立性 ( (低耦合高内聚低耦合高内聚) )u提高模块独立性的方法提高模块独立性的方法分解与合并分解与合并ABABC1C1C2CCC2C分解分解AC1BC2C52软件结构的设计准则软件结构的设计准则n模块规模要适中模块规模要适中n深度、宽度、扇入及扇出要适当深度、宽度、扇入及扇出要适当深深度度宽度宽度(同一层最大模块数同一层最大模块数)扇出扇出(一个模块直接调用的模块数一个模块

28、直接调用的模块数)扇入扇入(调用一个给定模块的模块个数调用一个给定模块的模块个数)53软件结构的设计准则软件结构的设计准则54软件结构的设计准则软件结构的设计准则n模块的作用域应该在控制域之内模块的作用域应该在控制域之内u作用域作用域-该模块内一个判断影响的模块的集合。该模块内一个判断影响的模块的集合。u控制域控制域-该模块本身以及所有直接或间接从属于它的模块的该模块本身以及所有直接或间接从属于它的模块的集合。集合。n改进软件结构以符合作用域是控制域子集的方法改进软件结构以符合作用域是控制域子集的方法u将包含判定的模块合并到它的调用模块中将包含判定的模块合并到它的调用模块中u将受判定影响的模块

29、下移到控制范围之内将受判定影响的模块下移到控制范围之内u将判定上移到足够高的位置将判定上移到足够高的位置模块模块A A的控制域:的控制域: AA、B B、C C、DD模块模块A A的作用域:的作用域: A A、C C、DDABCD55软件结构的设计准则软件结构的设计准则56软件结构的设计准则软件结构的设计准则57软件结构的设计准则软件结构的设计准则n力争降低模块接口的复杂程度力争降低模块接口的复杂程度u模块的接口要简单、清晰、含义明确,便于理解,模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与维护。易于实现、测试与维护。n设计单入口单出口的模块设计单入口单出口的模块u模块间不要出击

30、内容耦合。模块间不要出击内容耦合。n模块功能应该可以预测模块功能应该可以预测u只要输入的数据相同就产生同样的输出,这个模块只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。带有内部的功能就是可以预测的。带有内部“存储器存储器”的模块的模块的功能可能是不可预测的,因为它的输出可能取决于的功能可能是不可预测的,因为它的输出可能取决于内部存储器(例如某个标记)的状态。内部存储器(例如某个标记)的状态。58结构化设计方法结构化设计方法(Structure Design, SD) 59软件结构图软件结构图(SC Structure Chart)(SC Structure Chart)nS

31、DSD方法在概要设计中的主要表达工具方法在概要设计中的主要表达工具n用来描述软件的模块组成及其调用关系用来描述软件的模块组成及其调用关系n描绘软件结构的图形工具描绘软件结构的图形工具60软件结构图的组成软件结构图的组成n方框方框u表示模块,反映模块功能表示模块,反映模块功能n方框之间的箭头方框之间的箭头u表示模块之间的调用关系表示模块之间的调用关系n调用线旁的注释箭头调用线旁的注释箭头u表示调用中来回传递的数据流表示调用中来回传递的数据流n辅助符号辅助符号u弧型符号表示循环调用弧型符号表示循环调用u菱形表示条件调用菱形表示条件调用61EFFE在系统结构图中的模块在系统结构图中的模块传入模块传入

32、模块(a)(b)AA传出模块传出模块BB变换模块变换模块(c)CD控制模块控制模块(d)(e)源源XX(f)漏漏62在系统结构图中的模块在系统结构图中的模块n传入模块传入模块 从下属模块取得数据,经过某些处理,再从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。据流。n传出模块传出模块 从上级模块获得数据,进行某些处理,再从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。据流。n变换模块变换模块 它从上级模块取得数据,进

33、行特定的处理,它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。叫做变换数据流。n控制模块控制模块 对所有下属模块进行协调和管理的模块。对所有下属模块进行协调和管理的模块。63在系统结构图中的模块在系统结构图中的模块n源模块源模块不调用其他模块的传入模块,只使用不调用其他模块的传入模块,只使用于传入部分的始端。于传入部分的始端。n漏模块漏模块不调用其他模块的传出模块,仅用于不调用其他模块的传出模块,仅用于传出部分的末端。传出部分的末端。 64SC中的模块调用中的模块调用n无条件调用无条件调用(简

34、单调用简单调用)ABCX,YZZ65选择调用选择调用ACBDA A根据内部判断根据内部判断决定是否调用决定是否调用B BA A按另一判定结果按另一判定结果选择调用选择调用C C或或D D66循环调用循环调用ABCA根据内在的循环重复调用根据内在的循环重复调用B、C等模块等模块67挂挂号号单单结构图结构图( (SC) )举例举例医院管理系统医院管理系统门诊门诊管理管理药房药房管理管理药库药库管理管理病房病房管理管理处处方方挂号挂号处理处理挂号号费总总计挂挂号号费费总总计计出库出库处理处理进药进药管理管理病历病历管理管理处方处方管理管理常规常规处理处理68结构化设计方法结构化设计方法n结构化的设计

35、方法结构化的设计方法(SD(SD方法方法) )是是面向数据流的设计面向数据流的设计方法方法。它以描述系统逻辑模型的数据流图和数据。它以描述系统逻辑模型的数据流图和数据字典为基础,讨论怎样字典为基础,讨论怎样得到软件系统的模块结构得到软件系统的模块结构。n具体地将,将具体地将,将DFDDFD转换成软件结构图,将数据字转换成软件结构图,将数据字典映射成软件过程和数据结构。典映射成软件过程和数据结构。nSDSD方法是基于模块化、自顶向下逐层细化、结方法是基于模块化、自顶向下逐层细化、结构化程序设计等基础。构化程序设计等基础。69SDSD方法方法SDSD方法以数据流图为基础,它定义了把方法以数据流图为

36、基础,它定义了把DFDDFD变换成变换成软件结构软件结构的不同的不同映射映射方法方法映射映射DFDDFD( (问题结构问题结构) )( (软件需求软件需求) )软件系统的结软件系统的结构构70系统描述的类型系统描述的类型n系统结构特征可归纳为两种典型形式:系统结构特征可归纳为两种典型形式:u变换型结构变换型结构u事务型结构事务型结构n数据流图可分为两种类型:数据流图可分为两种类型:u变换型数据流变换型数据流u事务型数据流事务型数据流71数据流图的类型数据流图的类型变换变换中心中心输入输入输出输出变换型变换型结构结构事务事务中心中心接受接受路径路径动动作作路路径径基本模型基本模型 特征特征事务型

37、事务型结构结构由输入、变换中由输入、变换中心和输出三部分心和输出三部分组成。基本上呈组成。基本上呈线性形状的结构线性形状的结构。具有在多种事务具有在多种事务中选择执行某类中选择执行某类事物的能力。呈事物的能力。呈辐射状。辐射状。72变换型数据变换型数据流结构流结构事务型事务型数据流数据流结构结构传入传入变换变换传出传出变换中心变换中心传入部分传入部分传出部分传出部分事务事务分析分析事务中心事务中心动作动作1动作动作2动作动作3接受接受接受部分接受部分73变换型数据流举例变换型数据流举例输入输入信息信息格式格式检查检查处理处理显示显示正确正确信息信息结果结果物理物理输出输出数据数据变换中心变换中

38、心逻辑逻辑输入输入逻辑逻辑输出输出传入部分传入部分传出部分传出部分特点:具有明确的传入、变换特点:具有明确的传入、变换( (或称主加工或称主加工) ) 和传出界面的和传出界面的DFDDFD74变换型数据流举例变换型数据流举例例:75变换流示意图变换流示意图信息信息时间时间信息流信息流输入流输入流输出流输出流变换流变换流外部外部表示表示内部内部表示表示76事务型数据流图举例事务型数据流图举例IMLNOABCDFEGH77复杂系统的类型复杂系统的类型n大型系统大型系统DFD中中,变换型和事务型结构往往共存变换型和事务型结构往往共存T传入传入变换变换传出传出事务中心事务中心78结构化设计方法的结构化

39、设计方法的步骤步骤n首先研究、分析和审查数据流图。首先研究、分析和审查数据流图。 从软件的需从软件的需求规格说明中弄清数据流加工的过程,对于发现求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。的问题及时解决。n然后根据数据流图决定问题的类型。数据处理问然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:题典型的类型有两种:变换型变换型和和事务型事务型。针对两。针对两种不同的类型分别进行分析处理。种不同的类型分别进行分析处理。79n由数据流图推导出系统的由数据流图推导出系统的初始结构图初始结构图。n利用一些启发式原则来利用一些启发式原则来改进系统的初始结改进系统的初始结构图构

40、图,直到得到符合要求的结构图为止。,直到得到符合要求的结构图为止。n修改和补充修改和补充数据词典。数据词典。n制定测试计划。制定测试计划。结构化设计方法的步骤结构化设计方法的步骤80SDSD的总体过程的总体过程“变换变换”“事务事务”精化数据流图精化数据流图流类型流类型区分事务中心和区分事务中心和数据接收通路数据接收通路区分输入和区分输入和输出分支输出分支映射成事务结构映射成事务结构映射成变换结构映射成变换结构用启发式设计规则用启发式设计规则精化软件结构精化软件结构导出接口描述和导出接口描述和全程数据结构全程数据结构复复 查查详细设计详细设计事务分析事务分析变换分析变换分析81SDSD方法的两

41、种映射过渡方法方法的两种映射过渡方法变换型变换型DFDDFD事务型事务型DFDDFD初始初始SCSC初始初始SCSC变换分析变换分析事务分析事务分析82初始的初始的SCSC主模块主模块输入模块输入模块主加工模块主加工模块输出模块输出模块事务控制模块事务控制模块接受模块接受模块动作发送模块动作发送模块动作动作1模块模块动作动作2模块模块动作动作3模块模块由变换分由变换分析产生析产生由事务分由事务分析产生析产生83变换型系统结构图变换型系统结构图n变换型数据处理问题的工作过程大致分为三步,变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。即取得数据,变换数据和给出数据。n相

42、应于取得数据、变换数据、给出数据,变换型相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组系统结构图由输入、中心变换和输出等三部分组成。成。84变换型系统结构图变换型系统结构图85事务型系统结构图事务型系统结构图n它接受一项事务,根据事务处理的特点和性质,它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。选择分派一个适当的处理单元,然后给出结果。n在事务型系统结构图中,事务中心模块按所接受在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各的事务的类型,选择某一事务处理模块执行。各事务处理模块并

43、列。每个事务处理模块可能要调事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干用若干个操作模块,而操作模块又可能调用若干个细节模块。个细节模块。8687事务分析例: 88变换分析变换分析n变换分析方法由以下四步组成:变换分析方法由以下四步组成:u重画数据流图;重画数据流图;u区分有效(逻辑)输入、有效(逻辑)输出区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分;和中心变换部分;u进行一级分解,设计上层模块;进行一级分解,设计上层模块;u进行二级分解,设计输入、输出和中心变换进行二级分解,设计输入、输出和中心变换部分的中、下层模块。部分的中、下层模块。89区

44、分传入、变换中心、传出部分,在区分传入、变换中心、传出部分,在 DFD DFD 上标明分界线上标明分界线BCADEQPRWUVabcedrpuwv变换中心变换中心传入部传入部分分传出部传出部分分例例90第一级分解的方法第一级分解的方法MMC CMMT TMMA AMME E91第一级分解后的第一级分解后的SCSCc,ec,e u,wu,w传入模块传入模块传出模块传出模块中心变换模块中心变换模块92第二级分解第二级分解( (分解分解SCSC各分支各分支) )自顶向下分解,设计出每个分支自顶向下分解,设计出每个分支的中、下层模块的中、下层模块MMA ACBAbacEDdec,e93传传入入分分支支

45、的的分分解解MAGet CbacRead DdeB to CbcdeabGet E EGet BD to EA to BRead Ac,e94传传出出分分支支的的分分解解MEWWrite Vuuw,uvvvPut UU to VMEUWrite Wwwuw,uV(1)(2)95中心加工分支的分解MTPQRec,pru,wpr96变换分析变换分析97变换分析变换分析98事务分析事务分析n在很多软件应用中,存在某种作业数据流,它可在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作以引发一个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事务。业要求的

46、功能。这种数据流就叫做事务。n与变换分析一样,事务分析也是从分析数据流图与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统到结构图。开始,自顶向下,逐步分解,建立系统到结构图。99事务分析过程事务分析过程识别事务源识别事务源利用数据流图和数据词典,从问题定义和需求分利用数据流图和数据词典,从问题定义和需求分析的结果中,析的结果中,找出各种需要处理的事务找出各种需要处理的事务。通常,。通常,事务来自物理输入装置。有时,设计人员还必须事务来自物理输入装置。有时,设计人员还必须区别系统的输入、中心加工和输出中产生的事务。区别系统的输入、中心加工和输出中产生的事务。100事务

47、分析过程事务分析过程 规定适当的事务型结构规定适当的事务型结构在确定了该数据流图具有事务型特征之后,根在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。据模块划分理论,建立适当的事务型结构。 识别各种事务和它们定义的操作识别各种事务和它们定义的操作从问题定义和需求分析中找出的事务及其操作从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内部产生的事务,所必需的全部信息,对于系统内部产生的事务,必须仔细地定义它们的操作。必须仔细地定义它们的操作。101事务分析过程事务分析过程 注意利用公用模块注意利用公用模块在事务分析的过程中,如果不同事务的一些中间在

48、事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语义的若干个低层模模块可由具有类似的语法和语义的若干个低层模块组成,则可以把这些低层模块构造成公用模块。块组成,则可以把这些低层模块构造成公用模块。 对每一事务,或对联系密切的一组事务,建立对每一事务,或对联系密切的一组事务,建立一个事务处理模块;如果发现在系统中有类似的一个事务处理模块;如果发现在系统中有类似的事务,可以把它们组成一个事务处理模块。事务,可以把它们组成一个事务处理模块。102事务分析过程事务分析过程对事务处理模块规定它们全部的下层操作模块对事务处理模块规定它们全部的下层操作模块 对操作模块规定它们的全部细节模块对

49、操作模块规定它们的全部细节模块103事务分析的映射方法事务分析的映射方法104用户命令交互子系统用户命令交互子系统DFDDFD读用户读用户命令命令密码命令密码命令密码密码显示显示信息信息系统参系统参数数据数数据用户用户命令命令读系统读系统数据数据配置信息配置信息显示信息显示信息和状态和状态命令命令分析处理分析处理读读密码密码命令命令类型类型开开/ /关关命令命令建立配建立配置文件置文件原配置原配置数据数据激活激活/ /非活动非活动系统系统与文件中与文件中密码比较密码比较格式化格式化配置数据配置数据配置配置命令命令检验信检验信息过程息过程重试重试信息信息四位四位数字数字检验检验信息信息检验检验信

50、息信息A/DA/D信息信息格式化格式化配置配置数据数据格式化格式化配置数据配置数据105用户命令交互子系统初始的用户命令交互子系统初始的SCSC106用户命令交互子系统的用户命令交互子系统的SCSC读系统读系统数据数据建立配建立配置文件置文件显示信息显示信息与状态与状态107用户命令交互用户命令交互子系统的子系统的SCSC读读密码密码用文件用文件比较密码比较密码密码输出密码输出控制器控制器产生产生无效信息无效信息108综合设计综合设计(109例子110111设计优化 通过转换分析和事务分析,得到初始的标准结构图,如果初始结构图不符合设计准则,则要对初始结构图进行修改和完善,以得到满意的最终结构

51、图。 112详细设计详细设计113概述概述n详细设计是编码的先导。详细设计是编码的先导。u从软件开发的工程化观点来看,在使用程序设计语从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进言编制程序以前,需要对所采用算法的逻辑关系进行分析,行分析,设计出全部必要的过程细节,并给予清晰设计出全部必要的过程细节,并给予清晰的表达。的表达。这就是过程设计的任务。这就是过程设计的任务。n在详细设计阶段,要在详细设计阶段,要决定各个模块的实现算法,决定各个模块的实现算法,并精确地表达这些算法并精确地表达这些算法。表达过程规格说明的工。表达过程规格说明的工具叫做详细设计工

52、具。具叫做详细设计工具。n详细设计的结果最终决定编码阶段程序的质量。详细设计的结果最终决定编码阶段程序的质量。( (逻辑正确、性能满足要求、便于阅读和理解逻辑正确、性能满足要求、便于阅读和理解) )114主要任务主要任务n确定每个模块的算法,用工具表达算法的过程,确定每个模块的算法,用工具表达算法的过程,写出模块的详细过程性描述。写出模块的详细过程性描述。n确定每一模块的数据结构。确定每一模块的数据结构。n确定模块接口细节。确定模块接口细节。n为每一个模块设计一组测试用例。为每一个模块设计一组测试用例。n编写详细设计说明书。编写详细设计说明书。115结构化程序结构化程序(SP)设计设计nGOT

53、O语句的争论语句的争论u赞成取消赞成取消goto:造成程序混乱,难以理解和维护:造成程序混乱,难以理解和维护u赞成保留赞成保留goto:概念简单,使用方便:概念简单,使用方便n争论的实质争论的实质u1)程序设计首先讲究结构,还是讲究效率程序设计首先讲究结构,还是讲究效率(新的程序新的程序设计思想设计思想)u2)方法和风格,提高软件生产率,软件质量,降低方法和风格,提高软件生产率,软件质量,降低维护成本维护成本n结论结论u1)避免使用避免使用goto 表达正常的循环或条件语句表达正常的循环或条件语句u2)当出现算法的自然结构被破坏的异常情况时,保当出现算法的自然结构被破坏的异常情况时,保留留go

54、to116结构化程序结构化程序(SP)设计设计n最早由最早由E.W.DijkstraE.W.Dijkstra在在6060年代中期提出的。详细年代中期提出的。详细设计并不是具体地编程序,而是已经细化成很容设计并不是具体地编程序,而是已经细化成很容易地从中产生程序的图纸。因此详细设计的结果易地从中产生程序的图纸。因此详细设计的结果基本决定了最终程序的质量。基本决定了最终程序的质量。n定义:定义:u是一种设计程序的技术是一种设计程序的技术u采用自顶向下逐步求精的设计方法采用自顶向下逐步求精的设计方法u采用标准的控制结构采用标准的控制结构u采用单入口单出口的控制结构采用单入口单出口的控制结构117结构

55、化程序结构化程序(SP)设计的原则设计的原则(1)模块的逻辑描述要正确可靠、清晰易读。模块的逻辑描述要正确可靠、清晰易读。(2)采用结构化设计方法,改善控制结构,降低程采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试序的复杂程度,从而提高程序的可读性、可测试性、可维护性。性、可维护性。(3)选择恰当描述工具来描述各模块算法。选择恰当描述工具来描述各模块算法。说明:说明:()在许多情况下,当程序执行到满足某种条件时,可以在许多情况下,当程序执行到满足某种条件时,可以提前退出循环。提前退出循环。() GOTO语句不应滥用,但也不必完全禁止。一般地说,语句不应滥用,

56、但也不必完全禁止。一般地说,把把GOTO语句的转移范围限制在同一控制结构的内部。语句的转移范围限制在同一控制结构的内部。118详细设计的工具详细设计的工具n详细描述处理过程常用三种工具:图形、表格和详细描述处理过程常用三种工具:图形、表格和语言。语言。u程序流程图程序流程图u盒图盒图(N-S(N-S图图) )u问题分析图问题分析图PADPAD图图u判定表判定表u判定树判定树u过程设计语言过程设计语言(PDL)(PDL)119程序流程图程序流程图120程序流程图程序流程图n又称为程序框图,是历史最悠久使用最广泛的描又称为程序框图,是历史最悠久使用最广泛的描述软件设计的方法。述软件设计的方法。n优

57、点:优点:u直观清晰、易于使用,是开发者普遍采用的工具。直观清晰、易于使用,是开发者普遍采用的工具。n缺点:缺点:u可以随心所欲地画控制流程线的流向,容易造成非可以随心所欲地画控制流程线的流向,容易造成非结构化的程序结构。编码时势必不加限制地使用结构化的程序结构。编码时势必不加限制地使用GOTOGOTO语句,导致基本控制块多入口多出口,这样会语句,导致基本控制块多入口多出口,这样会使软件质量受到影响,与软件设计的原则相违背。使软件质量受到影响,与软件设计的原则相违背。u流程图不易反映逐步求精的过程,往往反映的是最流程图不易反映逐步求精的过程,往往反映的是最后的结果。后的结果。u不易表示数据结构。不易表示数据结构。121程序流程图的标准符号程序流程图的标准符号122程序流程图的控制结构程序流程图的控制结构123多出口判断多出口判断程序流程图的控制结构程序流程图的控制结构1

温馨提示

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

评论

0/150

提交评论