软件工程PPT电子教案课件-第七章 面向数据流的设计方法_第1页
软件工程PPT电子教案课件-第七章 面向数据流的设计方法_第2页
软件工程PPT电子教案课件-第七章 面向数据流的设计方法_第3页
软件工程PPT电子教案课件-第七章 面向数据流的设计方法_第4页
软件工程PPT电子教案课件-第七章 面向数据流的设计方法_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1、第七章 面向数据流的设计方法软件工程本章提要基本概念和设计过程变换分析事务分析启发式设计策略设计优化原则基本概念和设计过程面向数据流的设计方法以数据流图为基础,它定义了把数据流图变换成软件结构的不同映射方法。因为任何系统都可以用数据流图表示,所以面向数据流的设计方法理论上可以设计出任何软件的系统结构。数据流类型决定了映射方法。数据流有变换流和事务流两种基本类型。软件结构也被划分为:变换型结构、事务性结构两种类型。变换流信息沿输入通路进入系统,同时由外部形式变换为内部形式,进入系统的信息通过变换中心,经过加工处理后再沿输出通路变换为外部形式离开软件系统。特点:从同一数据源进入系统的数据,它在DF

2、D中流动的逻辑路径是相同的。信息时间信息流输入流输出流变换流外部表示内部表示事务流数据沿输入通路到达一个处理(事务中心)这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这种以“事务为中心”的数据流,称为“事务流”;事务中心完成:接受输入数据;分析每个事务以确定它的类型;根据事务类型选取一条活动通路。事务中心事务变换型数据流图VS事务性数据流图变换中心输入输出变换型结构事务中心接受路径动作路径基本结构 特征事务型结构由输入、变换中心和输出三部分组成具有在多种事务中选择执行某类事物的能力变换型数据流图事务型数据流图映射变换型数据流图变换中心传入部分传出部分总控模块加工模块输入模块输出模

3、块变换型结构图输入加工输出映射映射事务型数据流图事务中心接受部分接受事务事务分析动作1动作2动作3映射事务中心调度模块接受事务输出模块动作2动作1动作3事务型结构图提示大型系统的数据流图中,变换型和事务型结构往往共存:T事务中心传入变换传出“变换”“事务”精化数据流图区分事务中心和数据接收路径映射成变换结构流类型区分输入和输出分支映射成事务结构运用模块设计规则精化软件结构导出接口描述和全程数据结构复查详细设计事务分析变换分析面向数据流的设计过程面向数据流的设计过程精化数据流图确定数据流图类型把数据流图映射到系统模块结构设计出模块结构的上层基于数据流图逐步分解高层模块设计出下层模块根据模块独立性

4、原理,精化模块结构模块接口描述面向数据流方法中两种映射过渡方法变换型数据流图事务型数据流图初始结构图初始结构图变换分析事务分析系统结构中典型的四种结构传入模块从下层模块取得数据,并传送给上层模块传入模块AA传出模块AA传出模块成绩处理成绩输出 成绩处理成绩录入 系统结构中典型的四种结构变换模块变换模块AB协调模块BACC协调模块通常协调模块出现在系统高层出现。审查并开发票发票购书单 典型的变换型软件结构主控模块取得C取得BB转换成CBBCC取得AA转换成BAAB变换模块CD给出DDD转换成E给出EDEE典型的事务型软件结构主控模块读入事务事务调度模块事务r给出结果r事务1事务2事务3操作1操作

5、2细节1细节2细节3变换分析步骤确定输入流和输出流的边界,孤立出变换中心在数据流图上标明分界线Aabcedrpuwv变换中心传入部分传出部分BCDEPRQWUV变换分析步骤第一级分解(建立初始结构图)设计顶层和第一层模块MCMTMAME总控模块第一层分解后的结构图-1MCMTMAME第一层顶层c,ec,eu,wu,w传出模块中心变换模块传入模块第一层分解后的结构图-2MCMA1ceu,wc,pQPReprrw,uw传入分支模块中心加工分支模块传出分支模块MA2ME1ME2变换分析步骤第二级分解:自顶向下分解,设计出每个分支的中、下层模块方法从变换中心的边界开始沿输入通路向外移动,把输入通路中每

6、个处理逻辑映射成软件结构中MA控制的一个下层模块;然后沿输出通路向外移动,把输出通路中每个处理逻辑映射成直接或间接受模块ME控制的一个底层模块;最后把变换中心内的每个处理映射成受MT控制的一个模块。传入分支的分解MACBAbacEDdec,eMAGet CGet BRead AbacGet ERead Ddec,eD to EB to CA to Bbcdeab(1)(2)传出分支的分解MEPut UWrite Vuuw,uU to VvvvMEUWrite Wwwuw,uV(1)(2)中心加工分支的分解MTPQRec,pru,wpr变换分析实例-1某校欲设计“成绩录入”程序,由录入员输入成绩

7、信息(学号+课程代码+成绩),对程序要求如下:查询是否有该学生查询该学生的班级信息查询教学计划信息查询成绩是否重复录入在核对以上信息后保存该成绩信息。成绩录入精化数据流图姓名班级信息课程信息成绩信息管理员输入成绩查询学生查询班级查询教学计划查询成绩成绩信息成绩信息成绩信息成绩信息成绩信息显示姓名显示班级显示课程保存成绩姓名班级信息课程信息成绩库教学计划班级信息学生信息无此学生报告无此班级报告无此课程报告重复输入报告划界的数据流图姓名班级信息课程信息成绩信息管理员输入成绩查询学生查询班级查询教学计划查询成绩成绩信息成绩信息成绩信息成绩信息成绩信息显示姓名显示班级显示课程保存成绩姓名班级信息课程信

8、息成绩库教学计划班级信息学生信息无此学生报告无此班级报告无此课程报告重复输入报告输出加工输入成绩录入上层模块图主模块查询输出成绩录入如果输入或输出模块已经是原子模块,则不必进一步细化;如果输入和输出模块不需要变换数据,则输入和输出不需设计下层模块;如果有多种输入或输出,则这些输入或输出模块作为输入和输出模块的下层模块。进一步分解的规则成绩录入结构二次分解主模块查询输出成绩录入查询学生查询班级查询教学计划查询成绩重复显示姓名显示班级显示课程保存成绩事务分析事务分析的设计步骤和变换分析的设计步骤大部分相同或类似,主要差别仅在由数据流图到软件结构图的映射方法不同。由事务流映射成软件结构包括一个接受分

9、支和一个发送分支。映射出接受分支结构的方法和变换分析映射出输入结构的方法相似,即从事务中心的边界开始,把沿着接受流通路的处理逻辑模块映射成模块。发送分支的结构包含一个调度模块,它控制下层的所有活动模块;然后把DFD中的每个活动流通路映射成与它的特征相对应的结构。事务分析步骤在数据流图上确定事务中心、接收部分和发送部分。画出结构图框架,把数据流图上的三部分分别映射为事务控制模块、接收模块和动作发送模块。分解细化接收分支和发送分支,完成初始结构图。事务型数据流图举例输入- 事务型 数据流图1ABC3DEFGH24567中心变换输出逻辑输入物理输入逻辑输出物理输出事务型数据流图举例总控逻辑输入调度控

10、制C456CIFDEHG输出G H IG H I事务型分析实例C某校欲设计“收费查询”系统,该程序可以为学生和管理人员服务,由录入员和管理员输入查询请求,即可查出学生的缴费情况,要求做到:按学号查询按姓名查询按专业查询按班级查询精化数据流图录入员接受查询分析查询按学号查询按姓名查询按专业查询按班级查询查询信息查询信息学号姓名专业班级学生管理员缴费清单缴费清单缴费清单缴费清单得出程序结构首先应设计出事务中心模块,对整个事务进行控制。从数据流图可看出,“分析查询”处理是事务调度中心,可以设计为事务调度模块。由四个事务处理,分别为其设计事务处理模块。输入模块为“接受查询”。事务中心接受查询调度输出查

11、询结果按学号查询按姓名查询按专业查询按班级查询混合流分析-例1T事务中心传入变换传出接收部分发送部分混合流分析-例1: 得出程序结构首先应设计出事务中心模块,对整个事务进行控制。从数据流图可看出,“分析查询”处理是事务调度中心,可以设计为事务调度模块。每个事务处理,分别为其设计事务处理模块。输入模块为“接受查询”。事务中心接受查询调度输出查询结果事务1事务2事务3传入变换传出提示对于一个大型系统,常常把变换分析和事务分析应用到同一个数据流图的不同部分,由此得到的子结构形成“构件”,可以利用它们构造完整的软件结构;一般来说,如果数据流不具有显著的事务特点,使用变换分析;反之,若具有明显的事务中心

12、,则应该采用事务分析技术。混合型:如数据流图既包括变换型又包括事物型,则以变换型为主事物型为辅提示注意黑箱技术的使用 在设计当前模块时, 先把这个模块的所有下层模块定义成“黑箱”,并在系统设计中利用它们,暂时不考虑它们的内部结构和实现方法。在这一步定义好的“黑箱”,由于已确定了它的功能和输入、输出,在下一步就可以对它们进行设计和加工。这样,又会导致更多的“黑箱”。最后,全部“黑箱”的内容和结构应完全被确定。这就是我们所说的自顶向下,逐步求精的过程。 使用黑箱技术的主要好处是使设计人员可以只关心当前的有关问题,暂时不必考虑进一步的琐碎的次要的细节,待进一步分解时才去关心它们的内部细节与结构。启发

13、式设计策略变换分析和事务分析的最后一个步骤都是运用启发式策略对软件结构雏形进行优化,以提高软件设计的整体质量。启发式设计策略是人们从长期的大量软件开发过程中积累总结的经验。启发式设计策略(1)改造软件结构,减小耦合度,提高内聚度。(2)改造软件结构,减少高扇出,在增加程序深度的前提下追求高扇入。设计良好的软件结构通常顶层扇出比较高,中层扇出较少,底层又高扇入到公共的实用模块中去。启发式设计策略(3)改造软件结构,使任一模块的作用域在其控制域之内。模块作用域指,受该模块内部判定影响的所有模块;模块控制域为其所有下层模块。启发式设计策略(4)改造软件结构,减少界面的复杂性和冗余程度,提高协调性。

14、界面复杂是引起软件错误的一个基本因素。界面传递的数据应尽可能简单并与模块的功能相协调。(5)模块功能应该可预言,避免对模块施加过多限制。 模块功能可预言指,若视模块为“黑匣子”,输入恒定,输出则恒定。如果对模块局部数据的体积,控制流程的选择及外部接口方式等诸因素限制过多,则以后为去掉这些限制要增加维护开销。启发式设计策略(6)改造软件结构,追求单入口单出口的模块。(7)为满足设计或可移植性的要求,把某些软件用包(Package)封装起来。 软件设计常常附带一些特殊限制,例如,要求程序采用覆盖技术。根据模块重要的程度、被访问的频率及两次引用的间隔等因素对模块分组。程序中那些供选择的或“单调”(o

15、neshot)的模块应单独存在,以便高效地加载。启发式设计策略无论是采用变换分析法还是事务分析法,获得程序结构后,必须开发一系列辅助文档,作为软件总体设计的组成部分。陈述每个模块的处理过程;描述每个模块的界面;根据数据字典定义局部和全局数据结构;综述设计中所有限制(Limitations)和限定(Restrictions);对概要设计进行复审;对设计进行优化。设计优化的原则考虑设计优化问题时,应该记住“一个不能工作的最佳设计的价值是值得怀疑的”。应该在设计的早期阶段对软件结构进行精化、优化。可以导出不同的软件结构,并对它们进行评价和比较,力求得到“最好”的结果。注意,简单的结构通常既表示优雅的

16、设计风格,又表示高效率。设计优化应该力求做到在有效模块化的前提下使用最少的模块,以及在能够满足系统数据要求的前提下,使用最简单的数据结构。设计优化的原则对时间复杂性有特殊要求的应用,优化过程一直要延续到详细设计乃至编码阶段。对这类软件的优化应该根据软件中普遍存在的“百分之二十规则”(即20%的代码占用80%的处理时间,80%的错误出自20%的代码等等)采取下述对策:在先不考虑时间复杂性的情况下,设计并精化软件结构;借用CASE工具模拟分析运行时的性能,找出低效部分详细设计时对最耗时的模块仔细推敲,以便减少时间开销;用高级语言编程;对大量占用CPU资源的模块必要时用低级语言(依赖于机器)重新编码

17、,以便提高效率。设计优化遵守的格言是,“先让它干起来,再让它快起来”。软件模块结构的改进模块功能的完善化一个完整的模块应当有以下几部分: 执行规定的功能的部分; 出错处理的部分。当模块不能完成规定的功能时,必须回送出错标志,出现例外情况的原因。 如果需要返回数据给它的调用者,在完成数据加工或结束时, 应当给它的调用者返回一个状态码软件模块结构的改进消除重复功能,改善软件结构 完全相似:在结构上完全相似,可能只是在数据类型上不一致。此时可以采取完全合并的方法。 局部相似:找出其相同部分,分离出去,重新定义成一个独立的下一层模块。还可以与它的上级模块合并。软件模块结构的改进避免或减少使用病态联接应

18、限制使用如下三种病态联接: 直接病态联接 即模块A直接从模块B内部取出某些数据,或者把某些数据直接送到模块B内部。软件模块结构的改进 公共数据域病态联接 模块A和模块B通过公共数据域,直接传送或接受数据,而不是通过它们的上级模块。这种方式将使得模块间的耦合程度剧增。它不仅影响模块和模块,而且影响与公共数据域有关联的所有模块。变换分析实例-2汽车数字化仪表板控制软件有多个输入数据流和输出数据流,既有变换流,又有事务流。所以,适合于用变换流分析和事务流分析的综合型设计方法。问题定义和数据流描述: 汽车数字化仪表板控制软件分成两大功能子系统:定时采样处理子系统和功能键处理子系统。整个仪表板控制软件的

19、主控程序按设定的定时周期,用中断方式调用采样处理子系统;按巡回检测的方式,实时监控功能按键动作。变换分析实例-2定时采样处理子系统分析仪表板定时采样子系统定时读取车轴旋转计数信号和油料传感器信号,经采集、变换和相关计算,在数字显示窗口动态地显示汽车速度、里程、油耗等当前相关信息。 该子系统的数据流图,具有典型的变换流特征。输入流和输出流的边界用虚线表示。 注意,边界划分可能出现的偏差会在结构的优化中得到纠正 。变换分析实例-2定时采样子系统数据流图输入流边界 输出流边界图 汽车仪表板定时采样处理子系统的数据流图和输入/输出流边界的划分车轴旋转信号产生里程显示信号/秒(sps)采集求平均(rpm

20、)读旋转信号转换转/分计算里程里程显示平均(sps)公里值判断超速值发出振铃声超速信号(rpm)(mph)超速警铃加速度符号显示确定加减速产生显示符号加/减/匀速指示计算速度产生速度显示速度显示公里/小时(mph)(mph)计算油料消耗产生油耗显示油耗显示油耗量(mpg)(gph)燃料传感信号读信号校验模/数转换燃烧流计算燃油量燃烧值变换分析实例-2功能键处理子系统分析仪表板上有6个功能键和10个数字键(09),可以选择不同功能按键,完成相关控制操作。仪表板功能键处理子系统的数据流图(省略了部分数据流名字)具有典型的事务流特征。事务中心是“判别功能号”,有6个动作流分支分别对应6个功能键。其中,启动点火、限速设定、计费单价设定、显示油压和油温4个动作流分支具有变换流特征 变换分析实例-2功能键处理子系统数据流图图 汽车仪表板功能键处理子系统的数据流图读功能按键值作废提示判别功能号接收限速值接收点火码接收单价值读取油温油压作废上次按键里程值清零产生油温/压值显示油温

温馨提示

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

评论

0/150

提交评论