1、2009.11l基本概念基本概念 面向数据流的设计方法(面向数据流的设计方法(SD)是根是根据需求阶段对数据流的分析(数据流图据需求阶段对数据流的分析(数据流图和数据字典)设计软件结构和数据字典)设计软件结构 SD以数据流图为基础,它定义了把以数据流图为基础,它定义了把DFD变换成变换成软件结构软件结构的不同的不同映射映射方法方法映射映射DFD( (问题结构问题结构) )软件系统的结构软件系统的结构( (程序结构程序结构) )l变换型结构变换型结构l事务型结构事务型结构数据流图可分为两种类型数据流图可分为两种类型: l变换型数据流变换型数据流l事务型数据流事务型数据流变换变换中心中心输入输入输
2、出输出变换型结构事务事务中心中心接受接受路径路径动动作作路路径径事务型 结构由输入、变换由输入、变换中心和输出三中心和输出三部分组成部分组成具有在多种具有在多种事务中选择事务中选择执行某类事执行某类事物的能力物的能力变换型数据流 结构事务型数据流 结构传入传入变换变换传出传出变换变换中心中心传传入入部分部分传出传出部分部分事务事务分析分析事务事务中心中心动作动作 1动作动作 2动作动作 3接受接受接受接受部分部分信息信息时间时间信息流信息流输入流输入流输出流输出流交换流交换流外部外部表示表示内部内部表示表示输入输入信息信息物理物理输入输入格式格式检查检查处理处理显示显示正确正确信息信息结果结果
3、物理物理输出输出数据数据变换中心变换中心逻辑逻辑输入输入逻辑逻辑输出输出传传入入部分部分传出部分传出部分特点:特点:具有明确的具有明确的传传入、变换入、变换( (或称主加或称主加 工工) ) 和和传传出界面的出界面的DFDIMLNOABCDFEGH大型系统大型系统DFDDFD中中, ,变换型变换型和事务型和事务型结构往往共存结构往往共存: :T T事务中心事务中心传入传入变换变换传出传出SDSD设计过程设计过程 l 确定信息流的类型确定信息流的类型l 划定流界划定流界l 将数据流图将数据流图映射映射为程序结构为程序结构l 提取层次控制结构提取层次控制结构l 精化结构精化结构精化数据流图流的类型
4、确定事务中心和各动作路径确定输入、输出流界映射为变换结构映射为事务结构提取控制结构利用启发式策略精化软件结构描述接口和全局数据结构复审详细设计事务分析变换分析由由变换分变换分析析产生产生由事务由事务分分析析产生产生步骤:步骤:(1)(1)复审基本系统模型复审基本系统模型 指顶层指顶层DFDDFD和由外部提供的信息和由外部提供的信息(2 2)复审和精化软件数据流图)复审和精化软件数据流图对对DFDDFD进行精化,直到获得足够详细的进行精化,直到获得足够详细的DFDDFD。 期望期望达到:每个变换对应一个独立的功能,用一个高达到:每个变换对应一个独立的功能,用一个高内聚的模块实现。内聚的模块实现。
5、SafeHomede的第的第3层层DFD读取传感器数据传感数据获取响应信息产生拨号脉冲连通电话网选择电话号码建立警报条件置传感数据标识配置信息配置数据产生警报信号产生显示格式化显示号码表电话号码电话号码对应音频电话拨号音频警报类型警报数据格式化标志类型和位置传感器信息(3)确定)确定DFD的特性,判定为变换流还是事务流的特性,判定为变换流还是事务流主要根据主要根据主流主流的信息流类型判定,支流用于精化的信息流类型判定,支流用于精化(4)区分传入、变换中心、区分传入、变换中心、 传出部分,在传出部分,在 DFD 上上 标明分界线标明分界线BCADEQPRWUVabcedrpuwv变换中心变换中心
6、传传入入部分部分传传出出部分部分(5)(5)第一级分解第一级分解 ( (建立初始框架建立初始框架) ) 设计顶层和第一层模块设计顶层和第一层模块第一级分解的方法第一级分解的方法c,ec,e u,wu,wMCMA1ceu,wc,pQP PReprrw,uw传入分传入分支模块支模块中心加工中心加工分支模块分支模块传出分传出分支模块支模块MA2ME1ME2(6)(6)第二级分解第二级分解( (分解分解SC各分支各分支) ) 自顶向下分解,设计出每个自顶向下分解,设计出每个分支的中、下层模块分支的中、下层模块MACBAbacEDdec,eMAGet C CbacRead Ddec,eB to Cbcd
7、eabGet E EGet BD to EA to BRead DMEWWrite Vuuw,uvvvPut UU to VMEUWrite Wwwuw,uV(1)(1)(2)(2)MTPQRec,pru,wpr(7)采用启发式设计策略,精化所得软件结构)采用启发式设计策略,精化所得软件结构以模块独立为指导思想,追求:高内聚、低以模块独立为指导思想,追求:高内聚、低耦合、易实现、易测试和易维护耦合、易实现、易测试和易维护 SafeHomede软件系统软件系统用户命令用户命令和数据和数据显示信息显示信息控制面板控制面板传感器传感器传感器传感器状态状态警铃警铃电话线电话线警告类型警告类型电话号码电
8、话号码拨音拨音控制面板控制面板显示显示控制控制面板面板与用户与用户交互交互控制控制面板面板显示显示密码密码电话号码拨音电话号码拨音传感器状态传感器状态显示显示信息信息配置请求配置请求用户命令用户命令和数据和数据配置配置系统系统警警铃铃电电话话线线传感器传感器配置信息配置信息显示信息显示信息和状态和状态监控监控传感器传感器激活不激活不激活系统激活系统传感器信息传感器信息密码密码处理处理警告类型警告类型检验检验idid信息信息开始开始停止停止状态信息状态信息电话号码拨音电话号码拨音传感器数据传感器数据配置数据配置数据显示格式显示格式配置信息配置信息产生警告产生警告信息信息拨号拨号异常数据异常数据判
9、别判别传感器信息传感器信息读传感器读传感器警告类型警告类型传感器传感器idid类型类型传感器传感器idid类型定位类型定位SafeHomede的第的第3层层DFD读取传感器数据传感数据获取响应信息产生拨号脉冲连通电话网选择电话号码建立警报条件置传感数据标识配置信息配置数据产生警报信号产生显示格式化显示号码表电话号码电话号码对应音频电话拨号音频警报类型警报数据格式化标志类型和位置传感器信息书P215页,程序结构 任何情况下都可使用变换分析方法设计任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时软件结构,但如数据流具有明显的事务特点时 ( (有一个明显的事务中心有一个明显
10、的事务中心),),以采用事务分析方法以采用事务分析方法为宜。为宜。事务分析与变换分析的步骤基本相似,事务分析与变换分析的步骤基本相似,差别差别在于数据流图到程序结构的映射。在于数据流图到程序结构的映射。(1)复审基本系统模型(2)复审并精化软件数据流图(3)确定数据流图的特性前三步和变换分析法相同(4)(4)在在DFDDFD上确定事务中心、接收部上确定事务中心、接收部 分和发送部分。分和发送部分。(5)(5)画出画出SCSC框架,把框架,把DFDDFD上的三部分上的三部分 分别映射为分别映射为事务控制模块事务控制模块、接收、接收 模块和动作发送模块。模块和动作发送模块。(6)(6)分解细化接收
11、分支和发送分支,分解细化接收分支和发送分支, 完成初始完成初始SCSC。(7 7)使用启发式设计策略,精化程序结构使用启发式设计策略,精化程序结构读用户读用户命令命令密码命令密码命令密码密码显示显示信息信息系统参系统参数数据数数据用户用户命令命令读系统读系统数据数据配置信息配置信息显示信息显示信息和状态和状态命令命令分析处理分析处理读读密码密码命令命令类型类型开开/ /关关命令命令建立配建立配置文件置文件原配置原配置数据数据激活激活/ /非活动非活动系统系统与文件中与文件中密码比较密码比较格式化格式化配置数据配置数据配置配置命令命令检验信检验信息过程息过程重试重试信息信息四位四位数字数字检验检
12、验信息信息检验检验信息信息A/DA/D信息信息格式化格式化配置配置数据数据格式化格式化配置数据配置数据由变换分由变换分析产生析产生由事务由事务分分析析产生产生读用户读用户命令命令密码密码显示显示信息信息系统参系统参数数据数数据用户用户命令命令读系统读系统数据数据配置信息配置信息显示信息显示信息和状态和状态命令命令分析处理分析处理读读密码密码命令命令类型类型建立配建立配置文件置文件原配置原配置数据数据激活激活/ /非活动非活动系统系统与文件中与文件中密码比较密码比较格式化格式化配置数据配置数据检验信检验信息过程息过程重试重试信息信息四位四位数字数字检验检验信息信息检验检验信息信息A/DA/D信息
13、信息格式化格式化配置配置数据数据格式化格式化配置数据配置数据密码命令密码命令开开/ /关关命令命令配置配置命令命令读用户读用户命令命令密码密码显示显示信息信息系统参系统参数数据数数据用户用户命令命令读系统读系统数据数据配置信息配置信息显示信息显示信息和状态和状态命令命令分析处理分析处理读读密码密码命令命令类型类型建立配建立配置文件置文件原配置原配置数据数据激活激活/ /非活动非活动系统系统与文件中与文件中密码比较密码比较格式化格式化配置数据配置数据检验信检验信息过程息过程重试重试信息信息四位四位数字数字检验检验信息信息检验检验信息信息A/DA/D信息信息配置配置数据数据格式化格式化配置配置数据
14、数据密码命令密码命令开开/ /关关命令命令配置配置命令命令IMLNABCDFEG事务中心事务中心 取 A 总控总控ALMNGDBCFE(主模块)(主模块)事务加工模块事务加工模块PT 2T 1T iA 2D 2A 1D 1A 3A jD k事务层事务层操作层操作层细节层细节层处理层处理层主模块主模块事务加事务加工模块工模块操作操作模块模块细节细节模块模块 取 A 总控总控ALMNGDBCFE动作动作1 1动作动作n n.细节模块细节模块1 1细节模块细节模块2 2.(操作模块)(操作模块)(细节模块)(细节模块)IMLNOABCDFEGH 输入 AXX系统系统变换控制变换控制ALMAGDBCF
15、E 输出 E、F、GE、F、GE、F、G输出输出H HOE、F、GHHN要求类要求类型处型处理理有效图书有效图书管理要求管理要求当前当前日期日期2.12.1新书入库新书入库2.22.2借借入库单入库单罚款单罚款单一层数据流图一层数据流图 ( (a)a)借书借书2.32.3注销图书注销图书2.52.5借书借书2.42.4目目录录文文件件借书单借书单书书单单注销单注销单3412675810911变换中心变换中心传传入入传传出出事务型事务型(3) 混合流设计举例T事务事务中心中心传入传入变换变换传出传出接收接收部分部分发发送送部部分分ABT1变换中心变换中心传传入入传传出出T2T3abb1b2b3c
16、1c2c3degfjm事务流子系统事务流子系统BCCDDEEHHKFJKLLMhk输入输入DXX系统系统变换控制变换控制输出输出K输入输入Cdc输出输出L LCDDE FJEHHKKLcddkkkLL输出输出MLMmmL事务子系统事务子系统(1)(1)模块功能的完善化模块功能的完善化(2)(2)消除重复功能消除重复功能(3)(3)将模块的影响限制在模块的将模块的影响限制在模块的控制范围内控制范围内(4)(4)深度、宽度、扇出和扇入适中深度、宽度、扇出和扇入适中(5)(5)模块大小适中模块大小适中(6)(6)降低模块接口的复杂性降低模块接口的复杂性(7)(7)模块功能可预测模块功能可预测(8)(
17、8)避免避免模块模块的病态连接的病态连接(9)(9)根据设计约束和可移植性要对软件打包根据设计约束和可移植性要对软件打包完整的模块应包括三部分:完整的模块应包括三部分:(1)(1)执行规定功能部分执行规定功能部分(2)(2)出错处理部分出错处理部分(3)(3)需返回给调用者数据时,需返回给调用者数据时, 返回是否正确结束标志。返回是否正确结束标志。Q1Q1C CQ2Q2C CQ1Q1Q2Q2C C改进前改进前Q1、Q2功功能相似能相似X XY YQQX XY YX XY Y重复部分重复部分改进方法改进方法1:将将Q1、Q2合并为合并为Q不可取不可取改进方法改进方法2:将将Q1、Q2的公共的公共
18、部分分离出来部分分离出来CHDEGXF(3)(3)将模块的影响限制将模块的影响限制 在模块的在模块的控制范围内控制范围内AILJKB高扇出的模块结构举例高扇出的模块结构举例:编外编外人员人员工资工资取得取得工资工资数据数据 计时计时制工制工资额资额薪金薪金制工制工资额资额编外编外人员人员税款税款编外编外人员人员扣款扣款常规常规扣款扣款税收税收扣款扣款计算实发工资计算实发工资避免平铺结构编外编外人员人员工资工资取得工取得工资数据资数据 计时计时制工制工资额资额薪金薪金制工制工资额资额编外编外人员人员税款税款编外编外人员人员扣款扣款常规常规扣款扣款税收税收扣款扣款计算实发工资计算实发工资计时工人计
19、时工人实发工资实发工资计薪工人计薪工人实发工资实发工资编外人员编外人员实发工资实发工资模块过大:可理解程度下降模块过大:可理解程度下降模块过小:开销大于有效操作模块过小:开销大于有效操作 系统接口复杂系统接口复杂(6)降低模块接口的复杂性 接口传递信息应简单且和模块功能接口传递信息应简单且和模块功能一致。一致。模块看成黑盒子,相同输入产生模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。相同输出,其功能为可预测的。模块带有内部状态其功能可能是模块带有内部状态其功能可能是不可预测的。难理解、难测试、不可预测的。难理解、难测试、难维护。难维护。 功能单一的模块具有高内聚。功能单一的模块具有高
20、内聚。 但如任意限制局部数据结构的但如任意限制局部数据结构的大小大小,过分限制控制流中可做的选过分限制控制流中可做的选择或外部接口的模式,模块功能就择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。乏灵活性和可扩充性。 防止指向防止指向模块模块中间的分支或引用中间的分支或引用(针对内容耦合)(针对内容耦合) (9)(9)根据设计约束和可移植性根据设计约束和可移植性 需求对软件打包需求对软件打包 打包指用来为特定环境组装软件的技打包指用来为特定环境组装软件的技术术l软件业界的“百分之二十规则” 20%的代码占用80%的处理时间,80%的错误出自20%的代码对策l 在先不考虑时间复杂性的情况下设计并精化软件结构;l借用CASE工具模拟分析运行时的性能,定位出低效部分;l详细设计时对最耗时的模块仔细推敲,以便减少时间开销;l运用高级语言编程;l对大量占用CPU资源的模块必要时用低级语言重新编码,以提高效率 先让它干起来,再让它快起来
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。