第08章面向数据流的设计方法教学课件

上传人:沈*** 文档编号:241638625 上传时间:2024-07-12 格式:PPT 页数:50 大小:652.50KB
返回 下载 相关 举报
第08章面向数据流的设计方法教学课件_第1页
第1页 / 共50页
第08章面向数据流的设计方法教学课件_第2页
第2页 / 共50页
第08章面向数据流的设计方法教学课件_第3页
第3页 / 共50页
点击查看更多>>
资源描述
CompanyLOGO软件工程软件工程教材:主编 曹哲 高诚 中国水利水电出版社教案:河北工业大学廊坊分院 计算机系 黄南川第8章面向数据流的设计方法本章所述技术用于软件的概要设计描述,包括模块、界面和数本章所述技术用于软件的概要设计描述,包括模块、界面和数据结构的定义,这是所有后续开发的基础。据结构的定义,这是所有后续开发的基础。面向数据流的设计方法,即通常所说的结构设计法(面向数据流的设计方法,即通常所说的结构设计法(StructureDesign,简称简称SD方法),由方法),由Yourdon和和Constantine等人于等人于1874年提出的,与结构化分析(年提出的,与结构化分析(SA)相衔接,根据对数据流的相衔接,根据对数据流的分析设计软件结构。分析设计软件结构。SD方法突出考虑的是如何建立一个结构良好的程序系统,它的方法突出考虑的是如何建立一个结构良好的程序系统,它的基本思想是将系统设计成相对独立、单一功能的模块组成的结基本思想是将系统设计成相对独立、单一功能的模块组成的结构。整个设计是以数据流为基础,由于数据流图和模块结构图构。整个设计是以数据流为基础,由于数据流图和模块结构图之间有着一定的联系,结构化设计方法可以和需求分析中采用之间有着一定的联系,结构化设计方法可以和需求分析中采用的结构化分析方法很好地衔接。结构化设计方法能恰当地划分的结构化分析方法很好地衔接。结构化设计方法能恰当地划分模块,按功能由顶向下、由抽象到具体逐步细化,把系统分解模块,按功能由顶向下、由抽象到具体逐步细化,把系统分解为一个多层次的具有独立功能的许多模块组成,一直分解到能为一个多层次的具有独立功能的许多模块组成,一直分解到能简便地用程序实现的一种模块为止。所以,简便地用程序实现的一种模块为止。所以,SD方法还能和结构方法还能和结构化程序设计化程序设计(SP)相适应。相适应。SD方法是根据数据流图来设计,最终目标是建立软件体系结构方法是根据数据流图来设计,最终目标是建立软件体系结构的描述,即软件模块的层次结构图。此方法用于软件系统的概的描述,即软件模块的层次结构图。此方法用于软件系统的概要设计,尤其适用于大中型的数据处理系统。因此结构化设计要设计,尤其适用于大中型的数据处理系统。因此结构化设计方法得到了广泛的应用。方法得到了广泛的应用。软件工程软件工程ZLL8.1 SD方法的设计过程和有关概念方法的设计过程和有关概念SD方方法法能能方方便便地地将将数数据据流流图图转转换换为为软软件件结结构构,其其过过程程分分为为五五步:步:1确定信息流的类型;确定信息流的类型;2划定流界;划定流界;3将数据流图映射为程序结构;将数据流图映射为程序结构;4提取层次控制结构;提取层次控制结构;5通过设计复审和使用启发式策略进通过设计复审和使用启发式策略进一步精化所得到的结构。一步精化所得到的结构。在在软软件件设设计计开开始始之之前前,首首先先要要分分析析数数据据流流图图DFD图图的的系系统统特特性性。数数据据流流图图一一般般有有两两种种典典型型的的结结构构:变变换换型型结结构构和和事务型结构,即变换流和事物流。事务型结构,即变换流和事物流。软件工程软件工程ZLL1)变换流)变换流在数据处理问题中,通常会遇到这样一类问题,即从在数据处理问题中,通常会遇到这样一类问题,即从(程序程序)“外部外部”取得数据取得数据(例如从键盘、磁盘文件等例如从键盘、磁盘文件等)。对取得的数据进行某种变换,。对取得的数据进行某种变换,然后再将变换得到的数据传回给然后再将变换得到的数据传回给“外部外部“。其中取得数据这一过程称。其中取得数据这一过程称为传人信息为传人信息(数据数据)流程,变换数据的过程称为变换信息流程,变换数据的过程称为变换信息(数据数据)流程,流程,传回数据过程称为传出信息传回数据过程称为传出信息(数据数据)流程。流程。变换流变换流在基本系统模型(即顶级数据流图)中信息通常以在基本系统模型(即顶级数据流图)中信息通常以“外部外部世界世界”所具有的形式进入系统,经过处理后又以这种形式离开系统。所具有的形式进入系统,经过处理后又以这种形式离开系统。变换型结构是一种线性变换型结构是一种线性状的结构,它可以明显状的结构,它可以明显地分成输人、主加工地分成输人、主加工(或称变换、处理)(或称变换、处理)和输出三部分。和输出三部分。输入流输入流外外部部表表示示内内部部表表示示信信息息时间时间信息流信息流输出流输出流变换流变换流软件工程软件工程ZLL1)变换流)变换流典型的变换流典型的变换流变换流的特点是:经过变换变换流的特点是:经过变换B的数据流一部分先的数据流一部分先经过变换经过变换C到达变换到达变换E,然后另一部分经过变换然后另一部分经过变换D到达到达E;即;即C和和D是顺序结构。是顺序结构。ABCDEF软件工程软件工程ZLL2)事务流)事务流事务流事务流单个数据项称为事务(单个数据项称为事务(transaction)沿传入路径(也称接受通道)进入系统,由外部形沿传入路径(也称接受通道)进入系统,由外部形式变换为内部形式后到达事务中心,事务中心根据式变换为内部形式后到达事务中心,事务中心根据数据项计值结果从若干动作路径中选定一条继续执数据项计值结果从若干动作路径中选定一条继续执行。行。可见它是一个选择结构。可见它是一个选择结构。事务中心事务中心TB事务事务CA事务流事务流软件工程软件工程ZLL图面向数据流的设计精化数据流图精化数据流图流的类流的类型型确定事务中心确定事务中心和各动作路径和各动作路径确定输入输出确定输入输出流界流界映射为事务结构映射为事务结构映射为变换结构映射为变换结构提取控制结构提取控制结构利用启发式策略利用启发式策略精化软件结构精化软件结构描述接口和全局描述接口和全局数据结构数据结构事务分析事务分析变换分析变换分析复审复审详细设计详细设计通过通过“变换变换”“事务事务”软件工程软件工程ZLL8.2 变换分析v下面以下面以“家庭保安系统家庭保安系统”的传感器监测子的传感器监测子系统为例说明变换分析的各个步骤。系统为例说明变换分析的各个步骤。v步骤一、复审基本系统模型步骤一、复审基本系统模型基本系统模型指顶级基本系统模型指顶级DFD和所有由外部和所有由外部提供的信息。这一设计步骤是对系统规提供的信息。这一设计步骤是对系统规格说明书和软件需求规格说明书进行评格说明书和软件需求规格说明书进行评估。这两个文档描述软件界面上信息的估。这两个文档描述软件界面上信息的流程和结构。流程和结构。软件工程软件工程ZLL“家庭保安系统家庭保安系统”的顶级数据流图的顶级数据流图警报类别警报类别家庭保安家庭保安系统软件系统软件控制面板控制面板显示器显示器警报器警报器电话线电话线传感器传感器用户命令用户命令显示信息显示信息传感数据传感数据电话拨号音频电话拨号音频软件工程软件工程ZLL“家庭保安系统家庭保安系统”的第一级的第一级DFD电话拨号音频电话拨号音频配置数据配置数据配置配置 数据数据配置数据配置数据用户命用户命令处理令处理显示信息显示信息和状态和状态传感器传感器监测监测系统系统配置配置控制面板控制面板显示器显示器警报器警报器电话线电话线传感器传感器配置信息配置信息配置配置 命令命令启动启动/停止命令停止命令原口令原口令有效口令有效口令传感器信息传感器信息报警类别报警类别传感数据传感数据显示显示 信息信息用户命令用户命令口令口令启动启动/停止停止系统和状态系统和状态启动或启动或停止消息停止消息口令口令核对核对用用户户交交互互子子系系统统图图8-5软件工程软件工程ZLL8.2 变换分析步骤二、复审和精化软件数据流图步骤二、复审和精化软件数据流图这这一一步步主主要要是是对对软软件件需需求求规规格格说说明明书书中中的的分分析析模型进行精化,直至获得足够详细的模型进行精化,直至获得足够详细的DFD。v例例如如,由由“传传感感器器监监测测子子系系统统”的的第第一一级级和和第第二二级级DFD进进一一步步推推导导出出第第三三级级数数据据流流图图,此此时时,每每个个变变换换对对应应一一个个独独立立的的功功能能,可可以以用用一一个个具具有有较较高高内内聚聚度度的的模模块块实实现现,至至此此已已有有足足够够的的信信息息可可用用于于设设计计“传传感感器器监监测测子子系系统统”的的程程序序结结构构,精化过程亦可结束。精化过程亦可结束。软件工程软件工程ZLL“传感器监测子系统传感器监测子系统”的第二级的第二级DFD传感器信息传感器信息传感器标志传感器标志的类型和位置的类型和位置传感数据传感数据警报类别警报类别警报数据警报数据显示显示格式格式产生警产生警报信号报信号电话电话拨号拨号异常数异常数据判别据判别读取传读取传感数据感数据配配 置置 信信 息息配置数据配置数据传感器传感器标识类型标识类型电话号码电话号码电话拨号音频电话拨号音频图图8-6软件工程软件工程ZLL“传感器监测子系统传感器监测子系统”的第三级的第三级DFD配配 置置 信信 息息警报条件码警报条件码传感器标志传感器标志定时信息定时信息传感数据传感数据电话号码电话号码对应的音频对应的音频电话拨电话拨号音频号音频传感器信息传感器信息号码表号码表电话号码电话号码读取传读取传感数据感数据获取响获取响应信息应信息建立警建立警报条件报条件选择电选择电话号码话号码连通电连通电话网话网产生拨产生拨号脉冲号脉冲产生警产生警报信号报信号格式化格式化显示显示产生产生显示显示传感器标志的传感器标志的类型和位置类型和位置格式化标志的格式化标志的类型和位置类型和位置置传感器标识置传感器标识警报数据警报数据警报类别警报类别配配 置置 数数 据据图图8-7软件工程软件工程ZLL8.2 变换分析步骤三、确定步骤三、确定DFD的特性,判定它为变换的特性,判定它为变换流还是事务流。流还是事务流。v以图以图8 7所示所示DFD为例,数据沿一个传入路为例,数据沿一个传入路径进来,沿三个传出路径离开,没有明显径进来,沿三个传出路径离开,没有明显的事务中心,因此,该信息流应属变换流。的事务中心,因此,该信息流应属变换流。步骤四、划定输入流和输出流的边界,孤步骤四、划定输入流和输出流的边界,孤立变换中心,即找出系统的主加工,确定立变换中心,即找出系统的主加工,确定逻辑输入和逻辑输出。逻辑输入和逻辑输出。软件工程软件工程ZLLv这一步我们暂不考虑数据流图中的一些支流,如出错处理等。这一步我们暂不考虑数据流图中的一些支流,如出错处理等。v如果设计人员的经验比较丰富,对该系统的需求又很熟悉,则决如果设计人员的经验比较丰富,对该系统的需求又很熟悉,则决定哪些加工是系统的主加工是比较容易的,在几股数据流的汇合定哪些加工是系统的主加工是比较容易的,在几股数据流的汇合处往往是系统的主加工。如果一时不能确定系统的主加工在哪里,处往往是系统的主加工。如果一时不能确定系统的主加工在哪里,则可以先找出逻辑输入和逻辑输出。我们从系统边界的物理输入则可以先找出逻辑输入和逻辑输出。我们从系统边界的物理输入端开始,一步步向中间移动,直至达到这样一个数据流、它不能端开始,一步步向中间移动,直至达到这样一个数据流、它不能再被看作为系统的输入,则其前一个数据流就是系统的逻辑输入,再被看作为系统的输入,则其前一个数据流就是系统的逻辑输入,换句话说,离物理输入端最远的,但仍可被看作是系统的输入的换句话说,离物理输入端最远的,但仍可被看作是系统的输入的那个数据流就是逻辑输入。同样,从物理输出端开始,一步步向那个数据流就是逻辑输入。同样,从物理输出端开始,一步步向中间移动,也可以找出离物理输出端最远的,但仍可被看作是系中间移动,也可以找出离物理输出端最远的,但仍可被看作是系统的输出的那个数据流就是逻辑输出。在逻辑输入和逻辑输出之统的输出的那个数据流就是逻辑输出。在逻辑输入和逻辑输出之间,就是系统的主加工间,就是系统的主加工变换中心。再用虚线划分出流界,变换中心。再用虚线划分出流界,DFD的三部分就确定了。的三部分就确定了。8-7图中的流边界如虚线所示。图中的流边界如虚线所示。软件工程软件工程ZLL8.2 变换分析步骤五、执行步骤五、执行“一级分解一级分解”(firstlevelfactoring)一级分解的目标是导出具有三个层次的程序结构,一级分解的目标是导出具有三个层次的程序结构,顶层为主控模块;中层模块控制、协调底层的工作;顶层为主控模块;中层模块控制、协调底层的工作;底层模块执行输入、计算和输出功能。底层模块执行输入、计算和输出功能。系统的主加工(变换流控制模块,对内部形式数据系统的主加工(变换流控制模块,对内部形式数据进行加工、处理)决定了程序结构的进行加工、处理)决定了程序结构的“顶层顶层”模块,模块,它抽象地描述了完成整个程序要做的工作。因此主它抽象地描述了完成整个程序要做的工作。因此主加工确定以后,就决定了主模块的位置,即软件的加工确定以后,就决定了主模块的位置,即软件的顶层结构。顶层结构。软件工程软件工程ZLL8.2 变换分析然后,我们按输入、变换、输出等分支设计模块然后,我们按输入、变换、输出等分支设计模块结构的第一层(中层模块控制、协调底层的工作):结构的第一层(中层模块控制、协调底层的工作):为为逻逻辑辑输输入入设设计计一一个个输输入入模模块块,它它的的功功能能是是向向主主模模块块提提供供数数据据(输输入入流流控控制制模模块块,接接收收所所有有输输入入数据)数据);为为逻逻辑辑输输出出设设计计一一个个输输出出模模块块,它它的的功功能能是是将将主主模模块块提提供供的的数数据据输输出出(输输出出流流控控制制模模块块,产产生生输输出数据);出数据);为为主主加加工工设设计计一一个个变变换换模模块块,它它的的功功能能是是将将逻逻辑辑输输入入变变换换成成逻逻辑辑输输出出。并并且且,第第一一层层模模块块同同主主模模块之间传送的数据应该同数据流图相对应。块之间传送的数据应该同数据流图相对应。软件工程软件工程ZLL变换流变换流控制模块控制模块输入流输入流控制模块控制模块主控模块主控模块输出流输出流控制模块控制模块输入流输入流模块模块输出流输出流模块模块变换流变换流模块模块软件工程软件工程ZLL8.2 变换分析程程序序结结构构可可用用Yourdon结结构构图图表表示示。结结构构图图中中,方方框框代代表表模模块块,框框内内名名称称表表示示模模块块的的功功能能;方方框框之之间间的的有有向向边边(无无二二义义时时也也可可用用无无向向边边)表表示示模模块块间间的的调调用用关关系系。调调用用模模块块上上无无标标志志表表示示顺顺序序调调用用:从从左左至至右右;菱菱形形表表示示选选择择调调用用;弧弧形形箭箭头头表表示示循循环环调调用用。但但本本书书后后面除了顺序调用外,并没有遵循这些规定。面除了顺序调用外,并没有遵循这些规定。acbacbab a)顺序调用顺序调用 b)选择调用选择调用 c)循环调用循环调用软件工程软件工程ZLL8.2 变换分析v图图8-8是一个简单三叉结构,实际处理大是一个简单三叉结构,实际处理大型系统的复杂数据流时,可能需要多个型系统的复杂数据流时,可能需要多个模块对应一个模块的功能。模块对应一个模块的功能。“一级分解一级分解”总的原则是,在完成控制功能并保持低总的原则是,在完成控制功能并保持低耦合度、高内聚度的前提下尽可能地减耦合度、高内聚度的前提下尽可能地减少模块的数量。少模块的数量。v图图8-9是是“传感器监测子系统传感器监测子系统”一级分解,一级分解,其中控制模块的名字概括了所有下属模其中控制模块的名字概括了所有下属模块的功能。块的功能。软件工程软件工程ZLL8.2 变换分析一级分解一级分解输入流输入流变换流变换流变换流变换流控制模块控制模块输入流输入流控制模块控制模块输出流输出流主控模块主控模块输出流输出流控制模块控制模块ABCDEFGH图图8-8软件工程软件工程ZLL传感器监测子系统一级分解结果传感器监测子系统一级分解结果警报条件控警报条件控制模块制模块传感器输入传感器输入控制模块控制模块主控模块主控模块警报输出控警报输出控制模块制模块配配 置置 信信 息息图图8-9软件工程软件工程ZLL8.2 变换分析v步骤六、执行步骤六、执行“二级分解二级分解”。二级分解的任务是把数据流图中每个处理框二级分解的任务是把数据流图中每个处理框映射为结构图中的一个模块。其过程是从变映射为结构图中的一个模块。其过程是从变换中心的边界开始沿输入、输出通道向外移换中心的边界开始沿输入、输出通道向外移动;从变换中心的输入动;从变换中心的输入(出出)边界向外移动,边界向外移动,把遇到的每个处理框映射为结构图中相应控把遇到的每个处理框映射为结构图中相应控制模块下的一个模块。图制模块下的一个模块。图8-8的二级分解如图的二级分解如图8-10所示。图所示。图8-9的传感器监测子系统二级分的传感器监测子系统二级分解输出流如图解输出流如图8-11(见教材)(见教材),整个分解,整个分解如图如图8-12所示(见教材)所示(见教材)软件工程软件工程ZLL二级分解二级分解输入流输入流变换流变换流输入流控制输入流控制模块模块输出流输出流主控模块主控模块ABCDEFGHBDAC变换流控制变换流控制模块模块输出流控制输出流控制模块模块EFGH图图8-10软件工程软件工程ZLL8.2 变换分析DFD的处理框与程序结构模块一一对应,的处理框与程序结构模块一一对应,但按照软件设计原则进行设计时,可能需但按照软件设计原则进行设计时,可能需要把几个处理框聚合为一个模块,或者把要把几个处理框聚合为一个模块,或者把一个处理框裂变为几个模块。总之,应根一个处理框裂变为几个模块。总之,应根据据“良好良好”设计的标准,进行二级分解。图设计的标准,进行二级分解。图8-10的处理如下图的处理如下图8-10-A所示。所示。二二级级分分解解后后得得到到的的仅仅仅仅是是程程序序结结构构的的“雏雏形形”(first cut),后后续续的的复复审审和和精精化化会会反反复复修修改改。传传感感器器监监测测子子系系统统的的精精化化如如图图8-13(见教材)(见教材)软件工程软件工程ZLL结构的优化结构的优化输入流控制模块输入流控制模块主控模块主控模块BDAC变换流控制模块变换流控制模块输出流控制模块输出流控制模块EFGH输入流控制模块输入流控制模块主控模块主控模块BDACEFGH图图8-10-A软件工程软件工程ZLL8.2 变换分析程序结构的模块名已隐含了模块功能,但仍程序结构的模块名已隐含了模块功能,但仍有必要为每个模块写一个简要的处理说明,有必要为每个模块写一个简要的处理说明,它应当包括:它应当包括:1进出模块的信息(接口描述);进出模块的信息(接口描述);2模块的局部信息;模块的局部信息;3处理过程陈述,包括任务和主要的判处理过程陈述,包括任务和主要的判断点的位置、条件;断点的位置、条件;4对有关限制和一些专门特性的简要说对有关限制和一些专门特性的简要说明(例如,文件明(例如,文件I/O,独立于硬件的独立于硬件的特性,特殊的实时要求等)。特性,特殊的实时要求等)。这些描述构成第一版设计规格说明书。这些描述构成第一版设计规格说明书。软件工程软件工程ZLL8.2 变换分析步骤七、采用启发式设计策略,精化所得步骤七、采用启发式设计策略,精化所得程序结构雏形,改良软件质量程序结构雏形,改良软件质量对于程序结构的雏形,以对于程序结构的雏形,以“模块独立模块独立”为指为指导思想,对模块进行整合或分解,旨在追导思想,对模块进行整合或分解,旨在追求高内聚、低耦合,以及易实现、易测试、求高内聚、低耦合,以及易实现、易测试、易维护的软件结构。易维护的软件结构。软件工程软件工程ZLL8.2 变换分析v上述七个设计步骤的目标是给出软件上述七个设计步骤的目标是给出软件的一个整体描述。的一个整体描述。v一旦有了这样一个描述,设计人员即一旦有了这样一个描述,设计人员即可从整体角度评价和精化软件的总体可从整体角度评价和精化软件的总体结构,此时修改所需耗费不多,却能结构,此时修改所需耗费不多,却能大大提高软件质量。大大提高软件质量。软件工程软件工程ZLL8.3 事务分析当数据流具有明显的事务特征时,即能找到一当数据流具有明显的事务特征时,即能找到一个事务(亦称触发数据项)和一个事务中心,个事务(亦称触发数据项)和一个事务中心,采用事务分析法更为适宜。采用事务分析法更为适宜。下面以下面以“家庭保安系统家庭保安系统”中中“用户交互子系统用户交互子系统”为为例,说明事务分析法。例,说明事务分析法。该子系统的第一级数据流图(图该子系统的第一级数据流图(图8-5)精化后)精化后得到第二级数据流图(得到第二级数据流图(8-14)。图中)。图中“用户命用户命令数据令数据”流入系统后,沿三条动作路径之一离流入系统后,沿三条动作路径之一离开系统,若将数据项开系统,若将数据项“命令类型命令类型”看作事务,该看作事务,该子系统的信息流具有明显的事务特征。子系统的信息流具有明显的事务特征。软件工程软件工程ZLL用户交互子系统的二级数据流图用户交互子系统的二级数据流图无效口令无效口令启动启动/停止命令停止命令口令口令启动启动/停止停止消息消息配置数据配置数据配置数据配置数据配置命令配置命令显示信息显示信息“再试再试”信息信息读取读取用户用户命令命令启动启动命令命令处理处理启动启动/停止停止系统系统产生无效产生无效的信息的信息读取读取系统系统数据数据读取读取配置配置文件文件读取读取口令口令显示信息显示信息和状态和状态比较口令比较口令与文件与文件配配 置置 信信 息息用户命令数据用户命令数据系统参数和数据系统参数和数据原始配置项原始配置项格式化的格式化的配置数据配置数据命令类型命令类型确认口令确认口令四位数四位数有效口令有效口令图图8-14软件工程软件工程ZLL8.3 事务分析v事务分析法可概括为七个步骤:事务分析法可概括为七个步骤:步骤一、复审基本系统模型;步骤一、复审基本系统模型;步骤二、复审并精化软件数据流图;步骤二、复审并精化软件数据流图;步骤三、确定数据流图的特征;步骤三、确定数据流图的特征;步骤四、指出事务中心,确定接收部分和发步骤四、指出事务中心,确定接收部分和发送部分的流界;数条动作路径的公共源头送部分的流界;数条动作路径的公共源头即为事物中心。即为事物中心。软件工程软件工程ZLL8.3 事务分析步骤五、映射出系统上层模块结构;步骤五、映射出系统上层模块结构;事物处理型的程序结构由事物处理型的程序结构由“输入输入”和和“散散转转”两部分组成。两部分组成。“输入输入”部分的构成方法是部分的构成方法是从事物中心开始,沿输入通路向外推进,从事物中心开始,沿输入通路向外推进,每一个处理框映射为一个模块(如同变换每一个处理框映射为一个模块(如同变换分析法)。分析法)。“散转散转”部分顶层为一部分顶层为一“散转散转”模模块,它总控所有对应于每一条动作路径的块,它总控所有对应于每一条动作路径的控制模块,每条动作路径都是根据它的信控制模块,每条动作路径都是根据它的信息流特征映射为一个程序子结构。息流特征映射为一个程序子结构。软件工程软件工程ZLL映射系统上层结构模块映射系统上层结构模块9861254371011事务中心事务中心接收部分接收部分发送部分发送部分SYSTEM输入输入 1散转散转 2SUBSYS1SUBSYS2SUBSYS3软件工程软件工程ZLL8.3 事务分析v步骤六、分解并精化事务结构以及每条动步骤六、分解并精化事务结构以及每条动作路径所对应的结构。这些子结构是根据作路径所对应的结构。这些子结构是根据流经每一动作路径的数据流特征,采用本流经每一动作路径的数据流特征,采用本节或上节所述设计步骤逐一导出的。节或上节所述设计步骤逐一导出的。软件工程软件工程ZLL设计系统下层模块结构设计系统下层模块结构9861254371011事务中心事务中心接收部分接收部分发送部分发送部分4SUBSYS2 71011输入控制输入控制变换控制变换控制输出控制输出控制将SUBSYS2部分看成是一个变换型,则得到如图所示结构软件工程软件工程ZLL8.3 事务分析图图8-3-4将模块结构组合,得到程序结构雏形将模块结构组合,得到程序结构雏形SYSTEM输入输入 1散转散转 2SUBSYS1SUBSYS2SUBSYS3 710411输入控制输入控制变换控制变换控制输出控制输出控制36589软件工程软件工程ZLL8.3 事务分析v步骤七、使用启发式设计策略,精化所步骤七、使用启发式设计策略,精化所得程序结构雏形,改良软件质量。这一得程序结构雏形,改良软件质量。这一步骤与变换分析法相同。步骤与变换分析法相同。SYSTEM输入输入 1散转散转 2SUBSYS2 71041136589软件工程软件工程ZLL8.4 设计优化及原则8.4.1 启发式设计策略 1调整模块的功能和规模,降低耦合度,提高内聚度。调整模块的功能和规模,降低耦合度,提高内聚度。若在几个模块中发现了共有的子功能,一般应将此子功若在几个模块中发现了共有的子功能,一般应将此子功能独立出来作为一个模块,以提高单个模块的内聚度。能独立出来作为一个模块,以提高单个模块的内聚度。合并模块通常是为了减少控制信息的传递以及对全程数合并模块通常是为了减少控制信息的传递以及对全程数据的引用,同时降低接口的复杂性。据的引用,同时降低接口的复杂性。模块的规模没有固定的要求。以保持模块的独立性为原模块的规模没有固定的要求。以保持模块的独立性为原则。一般而言,模块规模以一页左右为宜(高级语言在则。一般而言,模块规模以一页左右为宜(高级语言在75个语句左右)。模块过大,既不便于阅读,又不利于个语句左右)。模块过大,既不便于阅读,又不利于纠错与维护;模块过小、也可能增大模块间的耦合度,纠错与维护;模块过小、也可能增大模块间的耦合度,增加软件开发的工作量。因此,在模块划分时,对于过增加软件开发的工作量。因此,在模块划分时,对于过大或过小的模块,都应该找一找原因,并确定其是否需大或过小的模块,都应该找一找原因,并确定其是否需要重新划分。要重新划分。软件工程软件工程ZLL8.4.1 启发式设计策略启发式设计策略2调整软件结构的深度、宽度、扇出和扇入调整软件结构的深度、宽度、扇出和扇入数目,改善软件结构性能。数目,改善软件结构性能。v经验表明,设计良好的软件结构通常顶层经验表明,设计良好的软件结构通常顶层扇出较高,中层扇出较低,底层又高扇入扇出较高,中层扇出较低,底层又高扇入到公共的实用模块中去。到公共的实用模块中去。软件工程软件工程ZLL应追求与避免的程序结构应追求与避免的程序结构应追求的结构应追求的结构应避免的结构应避免的结构8.4.1 启发式设计策略软件工程软件工程ZLL8.4.1 启发式设计策略启发式设计策略设计良好的软件通常具有瓮型结构,两头小,设计良好的软件通常具有瓮型结构,两头小,中间大。软件在下部收拢,表明在底层模中间大。软件在下部收拢,表明在底层模块中使用了较多高扇入的共享模块块中使用了较多高扇入的共享模块软件工程软件工程ZLL8.4.1 启发式设计策略3改造程序结构,使任一模块的作用域在其控制域之内。改造程序结构,使任一模块的作用域在其控制域之内。判定判定受受F中判定中判定的影响的影响ACFEGHDB违背第三条原则违背第三条原则满足第三条原则满足第三条原则ADCEFHGB作用域与控制域作用域与控制域 软件工程软件工程ZLL8.4.1 启发式设计策略启发式设计策略4分析模块之间的接口信息,降低界面分析模块之间的接口信息,降低界面的复杂性和冗余程度,提高协调性。的复杂性和冗余程度,提高协调性。界界面面复复杂杂是是引引起起软软件件错错误误的的一一个个基基本本因因素素,界界面面上上传传递递的的数数据据应应尽尽可可能能简简单单并并与与模模块块的的功功能能相相协协调调,界界面面不不协协调调(即即在在同同一一个个参参数数表表内内或或以以其其他他某某种种方方式式传传递递不不甚甚相相关关的一堆数据)本身就是模块低内聚的表征。的一堆数据)本身就是模块低内聚的表征。软件工程软件工程ZLL8.4.1 启发式设计策略启发式设计策略5模块功能应该可预言,避免对模块施加模块功能应该可预言,避免对模块施加过多限制。过多限制。v模块功能可预言指,只要模块的输入数模块功能可预言指,只要模块的输入数据相同,其运行产生的输出必然相同,据相同,其运行产生的输出必然相同,也就是可以依据其输入数据预测模块的也就是可以依据其输入数据预测模块的输出结果。此外,如果设计时对模块中输出结果。此外,如果设计时对模块中局部数据的体积,控制流程的选择及外局部数据的体积,控制流程的选择及外部接口方式等诸因素限制过多,则以后部接口方式等诸因素限制过多,则以后为去掉这些限制要增加维护开销。为去掉这些限制要增加维护开销。软件工程软件工程ZLL8.4.1 启发式设计策略6.改造程序结构,追求单入口单出口的模块。改造程序结构,追求单入口单出口的模块。7.为满足设计或可移植性的要求,把某些软为满足设计或可移植性的要求,把某些软件用包(件用包(package)的形式封装起来。)的形式封装起来。软软件件设设计计常常常常附附带带一一些些特特殊殊限限制制,例例如如,要要求求程程序序采采用用覆覆盖盖技技术术。此此时时,根根据据模模块块重重要要的的程程度度、被被访访问问的的频频率率及及两两次次引引用用的的间间隔隔等等因因素素对对模块分组。模块分组。此此 外外,程程 序序 中中 那那 些些 供供 选选 择择 的的 或或“单单 调调”(one shot)的的模模块块应应单单独独存存在在,以以便便高高效效地加载。地加载。软件工程软件工程ZLL辅助文档辅助文档无无论论是是采采用用变变换换分分析析法法还还是是事事务务分分析析法法,获获得得程程序序结结构构后后,必必须须开开发发一一系系列列辅辅助助文文档档,作作为为软件总体设计的组成部分。主要工作包括:软件总体设计的组成部分。主要工作包括:1)陈述每个模块的处理过程;)陈述每个模块的处理过程;2)描述每个模块的界面;)描述每个模块的界面;3)根据数据字典定义数据结构;)根据数据字典定义数据结构;4)综述设计中所有限制和约束;)综述设计中所有限制和约束;5)对概要设计进行复审;)对概要设计进行复审;6)对设计进行优化。)对设计进行优化。软件工程软件工程ZLL8.4.2 设计优化原则我我们们努努力力追追求求的的设设计计应应该该是是既既满满足足功功能能和和性性能能的的要要求求,又又符符合合一一般般软软件件设设计计原原理理和和上上述述种种种种启发式设计原则。启发式设计原则。对对软软件件结结构构的的修修改改越越早早越越好好。必必要要时时,可可以以并并行行地地开开发发若若干干个个软软件件结结构构,通通过过评评比比,求求得得“最佳最佳”结果。结果。简简洁洁的的程程序序结结构构容容易易测测试试、容容易易维维护护,应应该该使使用用尽尽可可能能少少的的模模块块;只只要要满满足足信信息息要要求求,应应该该使用尽可能简单的数据结构。使用尽可能简单的数据结构。结结构构优优化化是是一一个个精精益益求求精精的的过过程程。优优化化过过程程可可以以在在设设计计的的早早期期,甚甚至至要要延延续续到到详详细细设设计计乃乃至至编码阶段。编码阶段。软件工程软件工程ZLL8.4.2 设计优化原则对时间有特殊要求的软件,应根据普遍存在的对时间有特殊要求的软件,应根据普遍存在的“百分之二十规则百分之二十规则”(即(即20%的代码占用的代码占用80%的处理时间,的处理时间,80%的错误出自的错误出自20%的代码)采用下述对策:的代码)采用下述对策:1在不考虑时、空耗费的情况下,设计并精化软件结构;在不考虑时、空耗费的情况下,设计并精化软件结构;2借用借用CASE工具模拟分析运行时的性能,定位出低效的部分,加以改进;工具模拟分析运行时的性能,定位出低效的部分,加以改进;3详细设计时对最耗时的模块,认真地设计它们的处理过程(算法),以详细设计时对最耗时的模块,认真地设计它们的处理过程(算法),以便减少时间的开销;便减少时间的开销;4尽量用高级语言编程以利于软件的优化;尽量用高级语言编程以利于软件的优化;5对大量占用计算机系统资源的模块必要时用低级语言重新编码,以提高对大量占用计算机系统资源的模块必要时用低级语言重新编码,以提高效率。效率。设计优化的格言设计优化的格言“先让它干起来,再让它快起来先让它干起来,再让它快起来”。软件工程软件工程ZLL谢谢!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!