第九章-面向数据流的设计方法课件_第1页
第九章-面向数据流的设计方法课件_第2页
第九章-面向数据流的设计方法课件_第3页
第九章-面向数据流的设计方法课件_第4页
第九章-面向数据流的设计方法课件_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

第九章面向数据流的设计方法9.1基本概念和设计过程 9.2变换分析 9.3事务分析 9.4启发式设计策略 9.5设计优化原则.第九章面向数据流的设计方法9.1基本概念和设计过1

面向数据流的设计方法,即结构化方法(简称SD方法),是根据需求阶段对数据流的分析设计软件结构。数据流主要描绘信息在系统内部加工和流动的情况,面向数据流的设计方法根据数据流的特性定义两种“映射”,这两种映射能机械将数据流转换为程序结构。该方法的目标是为软件结构设计提供一个系统化的途径,使设计人员对软件有一个整体的认识。本章所描述技术用于概要设计描述,包括模块、界面和数据结构的定义。理论上讲,任何软件系统都可以用数据流图表示,面向数据流的设计方法可用于任一软件系统的开发。该方法对那些顺序处理信息且不含层次数据结构的系统最为有效。.面向数据流的设计方法,即结构化方法(简称S2面向数据流的设计方法(SD)以数据流图为基础,它定义了把DFD变换成软件结构的不同映射方法.映射DFD(问题结构)软件系统的结构(程序结构)映射方法涉及信息(数据)流的类型.9.1基本概念和设计过程1、基本概念.面向数据流的设计方法(SD)以数据流图为基础,它3(1)变换型数据流图变换型数据流(变换流):在基本系统模型中信息通常以“外部”所具有的形式进入系统,经过处理后又以这种形式离开系统,如图9.1。输入信息流沿传入路径进入系统,同时由外部形式变换为内部形式,经系统变换中心加工、处理,作为输出信息流又沿传出路径离开系统,并还原为外部形式.如果数据流图所描述的信息流具有上述特征,则称作变换流.图

9.1.(1)变换型数据流图变换型数据流(变换流):在基本系统模型中4(2)事务型数据流图事务型数据流(事务流):由于基本系统呈现变换流,所以任意系统中的信息均可以用变换流刻画。但是如果数据流如图9.2所示,则称为事务流。此时,单个数据项(事务)沿传入路径(接受通道)进入系统,由外部形式变换为内部形式后到达事务中心,事务中心根据数据项计算结果从若干动作路径中选定一条继续执行.图

9.2.(2)事务型数据流图事务型数据流(事务流):由于基本系统呈现5基本模型变换型数据流结构事务型数据流结构传入变换传出变换中心传入部分传出部分事务分析事务中心动作1动作2动作3接受接受部分.基本模型变换型事务型传入变换传出变换传入传出事务事务动作动作6变换型数据流举例输入信息物理输入格式检查处理显示正确信息结果物理输出数据变换中心逻辑输入逻辑输出传入部分传出部分特点:具有明确的传入、变换(或称主加工)和传出界面的DFD.变换型数据流举例输入物理格式处理显示正确结果物理数据变换中心7事务型数据流图举例IMLNOABCDFEGH.事务型数据流图举例IMLNOABCDFEGH.8值得注意的是在大系统的数据流中,变换流和事务流往往交织在一起。如,在基于事务流的系统中,当信息沿动作路径流动时,可能呈现变换流的特征,因此,在具体进行面向数据流的软件设计时,两种方法交叉使用。T事务中心传入变换传出.值得注意的是在大系统的数据流中,变换流和事务9变换中心输入输出变换型结构事务中心接受路径动作路径事务型结构由输入、变换中心和输出三部分组成具有在多种事务中选择执行某类事物的能力根据信息流类型,系统结构特征可归纳为两种典型形式:变换型结构和事务型结构.其基本模型特征如下:.变换输入输出变换型结构事务接受动事务型由输入、变换中心和输出10SD方法是基于模块化、自顶而下逐步求精、结构化程序设计等技术发展起来,能够方便地将数据流图转换为软件结构,其过程分为六步:

(1)分析DFD,精化DFD.(2)确定DFD类型,划定边界.(3)映射为软件结构.把DFD映射到系统模块结构,设计出模块结构的上层;基于DFD逐步分解高层模块,设计出下层模块.(4)提取层次控制结构.(5)通过设计复审和使用启发式策略进一步精化模块结构.(6)模块接口描述2.设计过程.SD方法是基于模块化、自顶而下逐步求精、结构化程序设计等技术11精化数据流图区分事务中心和数据接收路径映射成变换结构流类型区分输入和输出分支映射成事务结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计“事务”“变换”事务分析变换分析面向数据流方法的设计过程提取控制结构.精化数据流图区分事务中心映射成变换结构流类型区分输入和映射成12SD方法的两种映射过渡方法变换型DFD事务型DFD初始SC初始SC变换分析事务分析.SD方法的两种映射过渡方法变换型DFD事务型DFD初始SC初13初始的SC主模块输入模块主加工模块输出模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生.初始的SC主模块输入模块主加工模块输出模块事务控制模块接受模141.变换分析设计方法变换分析由一系列设计步骤组成,经过这些步骤就能够把具有变换流特点的数据流图按照事先确定的模式映射成软件结构。步骤如下:1)复审基本系统模型 基本系统模型是指顶级数据流图和所有由外部提供的信息。该步骤是对系统规格说明书进行评估。这两个文档是描述软件界面上信息的流程和结构。2)复审和精化软件数据流图 主要是对软件规格说明书中的分析模型进行精化,直至获得足够详细的数据流图。逐步求精,逐层细化,底层的加工和数据流都应该进行分解。9.2变换分析.1.变换分析设计方法9.2变换分析.15变换分析设计方法3)确定DFD的特性,判定它为事务流还是变换流 一般来讲,系统内部的信息流总可以用变换流表示,如果为明显的事务流特性,还应该采用针对事务流的映射方法。因此,分析人员首先要判定DFD中占主导地位的信息流,并且确定其特性,然后孤立具有变换特性或者事务特性的支流,这些支流将用于精化由主导数据流推出的程序结构。4)划定输入流和输出流的边界、孤立变换中心 即区分传入、变换中心、传出部分,在DFD上标明分界线,输入和输出流的边界的划分可能因人而异,不同的人员可能把边界沿着数据通道向前推进或后退一个处理框,不过这对最后的软件结构影响不大。.变换分析设计方法3)确定DFD的特性,判定它为事务流还是变换16BCADEQPRWUVabcedrpuwv变换中心传入部分传出部分.BCADEQPRWUVabcedrpuwv变换中心传入部分传17变换分析设计方法5)执行“一级分解”一级分解的目标是导出具有三个层次的程序结构,顶层为主控模块;底层为模块执行输入、计算和输出功能;中间层次为控制和协调底层的工作。即区分逻辑输入、输出和中心变换部分。 在结构图中,方框表示模块,方框内注明模块名称或主要功能。方框之间的有向边表示模块间的调用关系。对于变换流可以得到一级的分解结构图的上两层如下:.变换分析设计方法5)执行“一级分解”.18第一级分解的方法MCMTMAME.第一级分解的方法MCMTMAME.19第一级分解后的SCMCMTMAME第一层顶层c,ec,eu,wu,w传入模块传出模块中心变换模块输入流控制模块,接收所有输入数据;变换流控制模块,对内部形式数据进行加工、处理;输出流控制模块,产生输出数据。.第一级分解后的SCMCMTMAME第一层顶层c,ec,eu,20变换分析设计方法6)执行“二级分解”(分解SC各分支)

自顶向下分解,设计出每个分支的中、下层模块.二级分解的任务是把数据流图中每个处理框映射成程序结构中一个适当的模块,二级分解过程是从变换中心的边界开始沿输入,输出通道向外移动,把遇到的每个处理模块映射为程序结构中的一个模块。 程序结构的模块名称已隐含了模块的功能,但仍然有必要为每个模块写一个简要的处理说明,应该包括:(1)进出模块的信息(接口描述);(2)模块的局部信息;(3)处理过程陈述,包括主要的判断点和任务;(4)对有关性质和一些特性的简要说明。

.变换分析设计方法6)执行“二级分解”(分解SC各分支).21传入分支的分解(1)MACBAbacEDdec,e.传入分支的分解(1)MACBAbacEDdec,e.22传入分支的分解(2)MAGetCbacRead

Ddec,eB

to

CbcdeabGetEGetBD

to

EAtoBReadD.传入分支的分解(2)MAGetCbacReadDdec,23传出分支的分解MEWWriteVuuw,uvvvPutUUtoVMEUWriteWwwuw,uV(1)(2).传出分支的分解MEWWriteVuuw,uvvvPutU24中心加工分支的分解MTPQRec,pru,wpr.中心加工分支的分解MTPQRec,pru,wpr.25变换分析设计方法7)采用启发式设计策略,精化所得程序结构雏形,改良软件质量 对于程序结构的雏形,以“模块独立”为指导思想,对模块合并或分解,旨在追求高内聚、低耦合,易于实现、易于测试和维护的软件结构。 上述七个步骤的目标是给出软件的一个整体的描述。一旦有了这样的描述,设计人员就可以从整体角度评价和精化软件的总体结构,此时修改所需耗费不多,却能够大大低提高软件质量。.变换分析设计方法7)采用启发式设计策略,精化所得程序结构雏形262.举例(P209)例1:“家庭保安系统”的传感器检测子系统(1)复查基本系统模型(2)复查并精化数据流图(3)确定DFD的特性,判定它为变换流还是事务流(4)划定输入流和输出流的边界,孤立变换中心(5)执行“一级分解”(6)执行“二级分解”7)采用启发式设计策略,精化所得得程序结构雏形,改良软件质量.2.举例(P209)例1:“家庭保安系统”的传感器检测子271.事务分析设计方法

任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时(有一个明显的事务和事务中心

),以采用事务分析方法为宜。事务分析法的步骤和变换分析法基本类似,主要区别在于从数据流到程序结构的映射。事务分析法的步骤可以概括如下:9.3事务分析.1.事务分析设计方法 任何情况下都可使用变换分析方法设计28事务分析设计方法1)复审基本系统模型;2)复审并精化软件数据模型;3)确定数据流图的特性;显然,前三步和变换分析法相同。4)指出事务中心,在DFD上确定事务中心、接收部分和发送部分。确定有事务中心发出的每一动作路径的数据流特性。数条动作路径的公共源头就是事务中心,事务中心确定为“启动命令处理”框。事务中心一旦确定,即可以划定接受路径与所有动作路径的界限,随后判定每一个动作路径上数据流的特性。.事务分析设计方法1)复审基本系统模型;.29事务分析设计方法5)把数据流图映射为事务处理型的程序结构。画出SC框架,把DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块。事务处理型的程序结构由“输入”和“散转”两部分组成,输入部分的构成方法如变换分析法,即从事务处理中心开始,沿输入通路向外推进,每个处理框映射为一个模块。“散转”部分的顶层为一“散转”模块,它总控所有对应于每一动作路径的控制模块,每条动作路径都根据它的信息流特征映射为一个程序子结构。6)分解并精化事务结构以及每条动作路径所对应的结构。这些子结构是根据流经每一动作路径的数据流特征,采用上述的设计步骤一一导出的。7)使用启发式设计策略,精化所得的程序结构雏形,改良软件质量。这个步骤和变换分析法相同。

.事务分析设计方法5)把数据流图映射为事务处理型的程序结构。.30事务分析的映射方法总控调度C路径B路径A路径A路径B路径C路径接收路径.事务分析的映射方法总控调度C路径B路径A路径A路径B路径C路31事务流设计模型举例IMLNABCDFEG事务中心.事务流设计模型举例IMLNABCDFEG事务中心.32事务流设计模型举例取A

总控ALMNGDBCFE(主模块)事务加工模块.事务流设计模型举例取A总控ALMNGDBCFE(主33动作分支的典型结构PT

2T

1T

iA

2D2A

1D

1A

3A

jD

k事务层操作层细节层处理层主模块事务加工模块操作模块细节模块.动作分支的典型结构PT2T1TiA2D2A1D34事务流设计举例取A

总控ALMNGDBCFE动作1动作n….细节模块1细节模块2….(操作模块)(细节模块).事务流设计举例取A总控ALMNGDBCFE动作1动35事务型数据流图模型举例IMLNOABCDFEGH.事务型数据流图模型举例IMLNOABCDFEGH.36事务流设计举例(另一种画法)输入AXX系统变换控制ALMAGDBCFE输出E、F、GE、F、GE、F、G输出HOE、F、GHHN.事务流设计举例(另一种画法)输入AXX系统变换控制A372.混合流设计举例3412675810911变换中心传入传出事务型.2.混合流设计举例3412675810911变换中心传38混合流设计举例T事务中心传入变换传出接收部分发送部分.混合流设计举例T事务传入变换传出接收部分发送.39混合流设计举例ABT1变换中心传入传出T2T3abb1b2b3c1c2c3degfjLm事务流子系统BCCDDEEHHKFJKLLMhk.混合流设计举例ABT1变换中心传入传出T2T3abb1b2b40混合流设计举例输入DXX系统变换控制输出K输入Cdc输出LCDDEFJEHHKKLcddkkkLL输出MLMmmL事务子系统.混合流设计举例输入DXX系统变换控制输出K输入Cdc输出LC413.举例“家庭保安系统”用户命令交互子系统(P216)(1)复查基本系统模型(2)复查并精化数据流图(3)确定DFD的特性,判定它为变换流还是事务流(4)指出事务中心,确定由事务中心发出的每一动作路径的数据流特性.(如下图).3.举例“家庭保安系统”用户命令交互子系统(P216).42用户命令交互子系统DFD(P217)读用户命令密码命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息和状态命令分析处理读密码命令类型开/关命令建立配置文件原配置数据启动/停止系统与文件中密码比较格式化配置数据配置命令检验信息过程重试信息四位数字检验信息检验信息A/D信息格式化配置数据格式化配置数据.用户命令交互子系统DFD(P217)读用户密码命令密码显示43用户命令交互子系统初始的SC用户执行模块读用户命令命令处理密码处理控制器启动/停止系统系统设置控制器(5)把数据流映射为事务处理型的程序结构.用户命令交互子系统初始的SC用户执行模块读用户命令命令处理密44用户命令交互子系统DFD读用户命令密码命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息和状态命令分析处理读密码命令类型开/关命令建立配置文件原配置数据启动/停止系统与文件中密码比较格式化配置数据配置命令检验信息过程重试信息四位数字检验信息检验信息A/D信息格式化配置数据格式化配置数据.用户命令交互子系统DFD读用户密码命令密码显示信息系统参数数45用户执行模块读用户命令命令处理密码处理控制器启动/停止系统系统设置控制器读系统数据建立配置文件显示信息与状态(6)分解并精化事务结构以及每条动作路径所对应的结构.下图为用户命令交互子系统的SC.用户执行模块读用户命令命令处理密码处理启动/停止系统系统设置46用户命令交互子系统DFD读用户命令密码命令密码显示信息系统参数数据用户命令读系统数据配置信息显示信息和状态命令分析处理读密码命令类型开/关命令建立配置文件原配置数据启动/停止系统与文件中密码比较格式化配置数据配置命令检验信息过程重试信息四位数字检验信息检验信息A/D信息格式化配置数据格式化配置数据.用户命令交互子系统DFD读用户密码命令密码显示信息系统参数数47用户命令交互子系统的SC(雏形)产生无效信息用户执行模块读用户命令命令处理密码处理控制器启动/停止系统系统设置控制器读系统数据建立配置文件显示信息与状态读密码用文件比较密码密码输出控制器(7)使用启发式设计策略,精化程序结构雏形.用户命令交互子系统的SC(雏形)产生用户执行模块读用户命令命48补充内容:变换分析举例2我们通过一个汽车数字仪表板的设计来介绍变换分析的过程。假设仪表板的功能如下:(1)通过模/数(A/D)转换实现传感器和微处理机接口;(2)在发光二极管(LCD)面板上显示数据;(3)指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;(4)指示加速或减速;(5)超速警告:如果车速超过55英里/小时,则发出超速警告铃声。在软件需求分析阶段,应该对上述每项性能和其它要求进行全面的分析,并建立起相应的文档资料,得出数据流图。具体的设计步骤如下:.补充内容:变换分析举例2我们通过一个汽车数字仪表板的设计来介491、复查基本系统模型2、复查并精化数据流图.1、复查基本2、复查并精化.503、确定数据流图的类型这一步的任务是确定数据流图是变换型数据流图还是事务型数据流图。从上图中可以看出,数据沿着两条输入通路(旋转信号和燃料流量传感器信号)进入系统,然后沿着五条通路(4个显示,一个警告铃声)离开,没有明显的事务中心(虽然变换“计算mph与超速值”可以看作是一个事务中心)。因此,可以认为这个数据流图的类型是变换型数据流图。.3、确定数据流图的类型这一步的任务是确定数据流图是变换型数据514、确定输入流和输出流的边界,从而孤立出变换中心.4、确定输入流和输出流的边界,从而孤立出变换中心.525、进行“第一级分解”第一级分解的方法.5、进行“第一级分解”第一级分解的方法.53第一级分解的结果.第一级分解的结果.546、进行“第二级分解”第二级分解的方法.6、进行“第二级分解”第二级分解的方法.55第二级分解的结果:未经精化的输入结构 未经精化的变换结构.第二级分解的结果:未经精化的输入结构 未56 未经精化的输出结构. 未经精化的输出结构.577、使用设计度量和设计准则对第一次分割得到的软件结构进一步精化对于从前面的设计步骤得到的软件结构,还可以进行许多修改:(1)输入结构中的模块“转换成rpm”和“收集sps”可以合并;(2)模块“确定加速/减速”可以放在模块“计算mph”下面,以减少耦合;(3)模块“加速/减速显示”可以相应地放在模块“显示mph”的下面。.7、使用设计度量和设计准则对第一次分割得到的软件结构进一步精58精化的数字仪表板系统的软件结构.精化的数字仪表板系统的软件结构.599.4启发式设计策略

(改进软件结构设计的指导原则)

(1)模块功能的完善化(2)改造程序结构,提高模块独立性,消除重复功能(3)将模块的影响限制在模块的控制范围内(4)深度、宽度、扇出和扇入适中(5)模块大小适中(6)降低模块接口的复杂性(7)模块功能可预测(8)根据设计约束和可移植性要对软件打包.9.4启发式设计策略

(改进软件结构设计的指导原则)

(160(1)模块功能的完善化完整的模块应包括三部分:(1)执行规定功能部分(2)出错处理部分(3)需返回给调用者数据时,返回是否正确结束标志。.(1)模块功能的完善化完整的模块应包括三部分:.61(2)消除重复功能Q1CQ2CQ1Q2C改进前Q1、Q2功能相似XYQ’XYXY重复部分改进方法1:将Q1、Q2合并为Q’不可取改进方法2:将Q1、Q2的公共部分分离出来.(2)消除重复功能Q1CQ2CQ1Q2C改进前XYQ’XYX62(3)将模块的影响限制在模块的控制范围内系统结构的影响范围:系统中某一层上模块中的判定或者条件语句(例如If语句)在系统中会产生多种后果,根据该判定的结果去执行或不执行其他层的某个处理或数据。该处理就是“条件依赖”于某个判定.判定的“影响范围”是指包含“条件依赖”于改判定的处理的全部模块.(3)将模块的影响限制在模块的控制范围内系统结构的影响范围:63模块控制范围:一个模块的“控制范围”是指模块本身和它的全体子模块影响范围应该是这个判定所在模块的控制范围的一个子集.但是实际上,在系统中控制范围和影响范围的关系常常并非如此。.模块控制范围:一个模块的“控制范围”是64影响范围和控制范围TopAYBB1X影响范围TopABB1B2XTopYABXAYBB1B2X判定图1.影响范围在控制范围之外图2.影响范围在控制范围之内,但判定位置太高图3.影响范围在控制范围之内,正确实现图4.理想的影响范围和控制范围.影响范围和控制范围TopAYBB1X影响范围TopABB1B65CHDEGXFAILJKB模块C的控制范围:C、D、E、F、G、H如果模块C作出的决策影响了模块L,L超出了C的控制范围..CHDEGXFAILJKB模块C的控制范围:C、D、E、F66(4)减少高扇出在增加程序深度的前提下争取高扇入编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资避免平铺结构.(4)减少高扇出在增加程序深度的前提下争取高扇入编外取得计67增加中间层降低扇出编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资计时工人实发工资计薪工人实发工资编外人员实发工资.增加中间层降低扇出编外取得工资数据计时薪金编外编外常规税收68(5)模块大小适中模块过大:可理解程度下降模块过小:开销大于有效操作系统接口复杂(6)降低模块接口的复杂性接口传递信息应简单且和模块功能一致。.(5)模块大小适中模块过大:可理解程度下降(6)降低模块接69(7)模块功能可预测,避免对模块施加过多限制

模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。 模块带有内

温馨提示

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

最新文档

评论

0/150

提交评论