《第5章总体设计2.ppt》由会员分享,可在线阅读,更多相关《第5章总体设计2.ppt(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目标系统的DFDSC 图图-Structured Chart 该图常用来表示系统的该图常用来表示系统的软件结构软件结构。利。利用它可以清楚地表达软件结构中模块间的用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系。层次调用关系和模块之间的联系。SD目标系统的SC结构化设计方法结构化设计方法(SD-Structured Design)5.5 面向数据流的设计方法面向数据流的设计方法目标目标:是给出设计软件结构的一个系统化的途径是给出设计软件结构的一个系统化的途径。1变换流变换流 5.5.1 基本概念基本概念信息流的类型决定了映射的方法信息流的类型决定了映射的方法输入输入变换变换输出
2、输出外部形式外部形式内部形式内部形式外部形式外部形式 2事务流事务流数据沿数据沿输输入通路到达入通路到达处处理理T T,这这个个处处理根据理根据输输入数入数据的据的类类型在若干个型在若干个动动作序列中作序列中选选出一个来出一个来执执行。行。精化数据流图精化数据流图流类型流类型映射成事务结构映射成事务结构区分事务中心和区分事务中心和数据接收通路数据接收通路映射成变换结构映射成变换结构区分输入和输出区分输入和输出分支分支用启发式设计规用启发式设计规则精化软件结构则精化软件结构导出接口描述和导出接口描述和全程数据结构全程数据结构复查复查详细设计详细设计事务分析事务分析变换分析变换分析“事务事务”“变
3、换变换”正确正确错误错误3处理过程处理过程 (1)(1)(1)(1)标出逻辑输入、逻辑输出和变换中心的分界AeBaCbDcEdPQRwuvwuvrp变换中心变换中心c,e 逻逻辑输入辑输入w,u 逻逻辑输出辑输出-具有变换型具有变换型数据流数据流图图5.5.2 变换分析变换分析DFD的分析和划分的分析和划分对于较复杂的对于较复杂的DFD,不同的设计人员可能得出不同的划,不同的设计人员可能得出不同的划分结果。以下是几种可能遇到的情况及其处理方法:分结果。以下是几种可能遇到的情况及其处理方法:n没有变换中心没有变换中心:逻辑输入和逻辑输出是完全相同的数据逻辑输入和逻辑输出是完全相同的数据流,此时应
4、如实划分为传入和传出两部分流,此时应如实划分为传入和传出两部分n变换中心甚至传出部分也可能从系统外接收某些输入变换中心甚至传出部分也可能从系统外接收某些输入数据流数据流:称为二次输入数据,分析时应照实情把二次输称为二次输入数据,分析时应照实情把二次输入数据看成变换中心或输出部分的一个成分;入数据看成变换中心或输出部分的一个成分;n缺少应有的细节缺少应有的细节:设计人员可对用做分析的设计人员可对用做分析的DFD进行进行补充,必要时甚至重画补充,必要时甚至重画(2)(2)(2)(2)完成第一级分解AabcPwuvrpBCDdeEQRWUVCmCACTCEC,eC,eU,wU,w变换中心变换中心顶层
5、顶层 用于控制的主模块用于控制的主模块第一层第一层第一级分解后的第一级分解后的 SC 图图协调模块协调模块YXYX输入信息处理控制模块输入信息处理控制模块,协调对所有输入数据的接协调对所有输入数据的接收收输出信息处理控制模块,输出信息处理控制模块,协调输出信息的产生过程协调输出信息的产生过程变换中心控制模块,管理变换中心控制模块,管理对内部形式的数据的所有对内部形式的数据的所有操作操作A Aabc cP Pwwu uvrpB BC CD DdeE EQQR RWWU UV VCmCA1CE1C eU CA2QPRCE2e c,p pr r w,uwSC的另一种画法,在第一层每一分支按实际情况确
6、定模块的数量:逻辑输入和逻辑输出都具有两个数据流,而中心加工含有三个加工。n对一个大型系统中的复杂数据流可以用两个对一个大型系统中的复杂数据流可以用两个或多个模块完成上述一个模块的控制功能;或多个模块完成上述一个模块的控制功能;(3)(3)(3)(3)完成第二级分解AabcPwuvrpBCDdeEQRWUV变换中心变换中心把数据流图中的每个处理映射成软件结构中一个适当把数据流图中的每个处理映射成软件结构中一个适当的模块:的模块:从变换中心的边界开始沿输入路径向外动,把输入通从变换中心的边界开始沿输入路径向外动,把输入通路中每个处理映射成软件结构中路中每个处理映射成软件结构中Ca控制下的一个低层
7、控制下的一个低层模块;模块;沿输出通路向外移动,把输出通路中每个处理映射成沿输出通路向外移动,把输出通路中每个处理映射成直接或间接受模块直接或间接受模块Ce控制的一个低层模块;控制的一个低层模块;把变换中心内的每个处理映射成受把变换中心内的每个处理映射成受Ct控制的一个模块控制的一个模块(3)(3)(3)(3)完成第二级分解A Aabc cP Pwwu uvrpB BC CD DdeE EQQR RWWU UV VCa变换中心变换中心对逻辑输入的分解对逻辑输入的分解CEBADabdeccbaABCCaEDde 逻辑输入模块的调用与执行过程逻辑输入模块的调用与执行过程CACEBADabdecCA
8、Get CGet EB to CA to BD to EaecRead DGet BRead Ac,eabbbcde输入分支的第二种分解图:为显式表示数据流在输入过程中经历的变换,在图中增加3个变换模块,并在模块中加上Read、Get等字样,使结构更加清晰明了.A Aabc cP Pwwu uvrpB BC CD DdeE EQQR RWWU UV VCE变换中心变换中心对输出的分解WUVvuwCTQPR eC,prU,w对变换中心加工的分解 prw,u从变换分析导出的初始 SC 图CACBAEDCTQPRCEWUVCmc,eW,uW,uC,e(4)(4)(4)(4)获得完整的 SCSC 图数
9、据流图数据流图系统结构图系统结构图假设仪表板的功能如下:假设仪表板的功能如下:(1)通通过过模模/数数(A/D)转转换换实实现现传传感感器器和和微微处处理理机机接口;接口;(2)在发光二极管(在发光二极管(LCD)面板上显示数据;面板上显示数据;(3)指指示示每每小小时时英英里里数数(mph),行行驶驶的的里里程程,每加仑油行驶的英里数(每加仑油行驶的英里数(mpg)等等;等等;(4)指示加速或减速;指示加速或减速;(5)超超速速警警告告:如如果果车车速速超超过过55英英里里小小时时,则则发出超速警告铃声。发出超速警告铃声。具体的设计步骤如下:具体的设计步骤如下:例子例子:一个汽车数字仪表板的
10、设计一个汽车数字仪表板的设计1、复查基本、复查基本系统模型系统模型2、复查并精化、复查并精化数据流图数据流图 SPS mph 超速值超速值 计算计算 里程里程 产生产生 加速加速/减减 速显速显示示 读入读入 旋转旋转 信号信号 收集收集 并求并求 平均平均 旋转信号旋转信号 信号数信号数/秒秒(SPS)确定确定 加速加速/减速减速 箭头指示箭头指示 下箭头下箭头 水平线水平线 上箭头上箭头 转换成转换成 转转/分分(rpm)计算计算 mph和和 超速值超速值 计算计算 燃料燃料 消耗消耗 产生产生 mpg 显示显示 读入读入 并核实并核实 计算计算 gph 燃料流量燃料流量 传感器信号传感器
11、信号 燃料流量燃料流量 gph mph mpg mpg显示显示 产生产生 里程里程 显示显示 英里英里 显示显示 发出发出 警告警告 铃声铃声 警告铃声警告铃声 产生产生 mph 显示显示 mph显示显示 rpm SPS rpm 3、确定数据流图的类型、确定数据流图的类型确定数据流图是变换型还是事务型确定数据流图是变换型还是事务型:先先根根据据流流图图中中占占优优势势的的属属性性,确确定定数数据据流流的的全全局局特特性性;把把具具有有和和全全局局特特性性不不同同的的特特点点的的局局部部区区域域孤孤立立出出来来,以以后后按按照照这这些些子子数数据据流流的的特特点点精精化根据化根据全局特性全局特性
12、得出的软件结构得出的软件结构.从从上上图图中中可可以以看看出出,数数据据沿沿着着两两条条输输入入通通路路(旋旋转转信信号号和和燃燃料料流流量量传传感感器器信信号号)进进入入系系统统,然然后后沿沿着着五五条条通通路路(4个个显显示示,一一个个警警告告铃铃声声)离离开开,没没有有明明显显的的事事务务中中心心。因因此此,可可以以认认为为是是变换型数据流图。变换型数据流图。4、确定输入流和输出流的边界,从而孤立出变换中心、确定输入流和输出流的边界,从而孤立出变换中心SPSrpmmpg显示显示gphmpgmph(SPS)mph超速值超速值计算计算里程里程读入读入旋转旋转信号信号收集收集并求并求平均平均旋
13、转信号旋转信号信号数信号数/秒秒确定确定加速加速/减速减速箭头指示箭头指示产生产生加速加速/减减速显示速显示下箭头下箭头水平线水平线上箭头上箭头转换成转换成转转/分分(rpm)计算计算mph和和超速值超速值计算计算燃料燃料消耗消耗产生产生mpg显示显示读入读入并核实并核实计算计算gph燃料流量燃料流量传感器信号传感器信号燃料流量燃料流量产生产生里程里程显示显示英里英里显示显示发出发出警告警告铃声铃声警告铃声警告铃声产生产生mph显示显示mph显示显示SPSrpm第一级分解的结果5、进行、进行“第一级分解第一级分解”6、进行、进行“第二级分解第二级分解”第二级分解的方法第二级分解的结果:第二级分
14、解的结果:未经精化的输入结构未经精化的输入结构 未经精化的变换结构未经精化的变换结构接收接收传感器信号传感器信号转换成转换成 rpm计算计算gph收集收集sps读旋转信号读旋转信号读燃料流量读燃料流量接收接收传感器信号传感器信号确定确定加速加速/减速减速计算计算mph计算计算mpg计算里程计算里程 未经精化的输出结构未经精化的输出结构驱动仪表板驱动仪表板加速加速/减速减速显示显示显示显示mpg显示里程显示里程发出警告铃声发出警告铃声显示显示mph发光二极发光二极管显示管显示7、使用设计度量和设计准则对第一次分割、使用设计度量和设计准则对第一次分割得到的软件结构进一步精化得到的软件结构进一步精化
15、 对对于于从从前前面面的的设设计计步步骤骤得得到到的的软软件件结结构构,还还可以进行许多修改:可以进行许多修改:(1)输输入入结结构构中中的的模模块块“转转换换成成rpm”和和“收集收集sps”可以合并;可以合并;(2)模模块块“确确定定加加速速减减速速”可可以以放放在在模模块块“计算计算mph”下面,以减少耦合;下面,以减少耦合;(3)模模块块“加加速速减减速速显显示示”可可以以相相应应地地放放在模块在模块“显示显示mph”的下面。的下面。精化的数字仪表板系统的软件结构精化的数字仪表板系统的软件结构数字仪表板数字仪表板控制控制接收传感器接收传感器信号信号数据转换数据转换控制控制驱动仪表板驱动
16、仪表板计算计算里程里程计算计算mpg计算计算mph计算计算gph转换成转换成rpm发出警发出警报铃声报铃声显示显示里程里程显示显示mpg显示显示mph读旋转读旋转信号信号读燃料读燃料流量流量确定确定加速加速/减速减速加速加速/减速减速显示显示发光二极管发光二极管显示显示从变换分析导出的初始从变换分析导出的初始 SC 图图A A1 1A A2 2a1a2P P B B b1C C1 1c1C C2 2c1p1P2 CACTPCEBC1C2Cma2p1,p2p1,p2a2A2A1a1a2p1,p2a2C1P2P1练练练练习习习习-是将具有事务型的DFD图导出SC图I IA AL LMMN NOOB
17、 BC CD DE EF FGGH H事务中心事务中心事务源事务源5.5.3 事务分析事务分析 在上述的在上述的DFD图中,数据流图中,数据流A是一个带有是一个带有“请求请求”性质的信息即事务源。而加工性质的信息即事务源。而加工I 则具有则具有“事务中心事务中心”的的功能,它后继的三个加工功能,它后继的三个加工L,M,N 是并列的,在加工是并列的,在加工I的选的选择控制下完成不同功能的处理。最后经过加工择控制下完成不同功能的处理。最后经过加工 O 将某一将某一加工处理的结果整理输出。加工处理的结果整理输出。事务分析的映射方法接收分支接收分支:映射方法和变换分析类似映射方法和变换分析类似发送分支
18、发送分支:包含一调度模块包含一调度模块,控制下层控制下层的所有活动模块的所有活动模块,每个活动流通路映射每个活动流通路映射成与它的流特征相对应的结构成与它的流特征相对应的结构混合结构混合结构n n一般一个大型的软件系统是变换型一般一个大型的软件系统是变换型结构和事务型结构的混合结构。所结构和事务型结构的混合结构。所以,我们通常利用以变换分析为主,以,我们通常利用以变换分析为主,事务分析为辅的方式进行软件结构事务分析为辅的方式进行软件结构设计。设计。n n下面是一个混合结构的例子下面是一个混合结构的例子补补补补充充充充 数据流图数据流图系统结构图系统结构图(1 1)在不考虑时间因素的前提下开发并
19、精化软件结构;)在不考虑时间因素的前提下开发并精化软件结构;(2 2)在在详详细细设设计计阶阶段段选选出出最最耗耗费费时时间间的的那那些些模模块块,仔仔细细地设计它们的处理过程(算法),以求提高效率;地设计它们的处理过程(算法),以求提高效率;(3 3)使用高级程序设计语言编写程序;)使用高级程序设计语言编写程序;(4 4)在软件中孤立出那些大量占用处理机资源的模块;)在软件中孤立出那些大量占用处理机资源的模块;(5 5)必必要要时时重重新新设设计计或或用用依依赖赖于于机机器器的的语语言言重重写写上上述述大大量占用资源的模块的代码,以求提高效率。量占用资源的模块的代码,以求提高效率。5.5.4
20、 设计优化设计优化一、一、模块模块功能功能的完的完善化善化执行指定的功能部分执行指定的功能部分执行指定的功能部分执行指定的功能部分出错处理的部分。出错处理的部分。出错处理的部分。出错处理的部分。当模块不能完成规定的功能时,当模块不能完成规定的功能时,必须回送出错标志,向它的调用必须回送出错标志,向它的调用者报告出现这种例外情况的原因者报告出现这种例外情况的原因补补补补充充充充DFD 图映射得出的初始SC图,要经过仔细的改进,才能成为有用的最终的SC图:二、二、消除重复功消除重复功能,改善软能,改善软件结构。件结构。完全相似完全相似完全相似完全相似局部相似局部相似局部相似局部相似在结构上完全相似
21、,可能在结构上完全相似,可能只是在数据类型上不一致。只是在数据类型上不一致。此时可以采取完全合并的此时可以采取完全合并的方法,只需在数据类型的方法,只需在数据类型的描述上和变量定义上加以描述上和变量定义上加以改进。改进。当两个模块具有当两个模块具有一部分相同一部分相同的功能的功能时,把这部分相同的功能分离为一时,把这部分相同的功能分离为一个单独的模块,可以免除对这一部个单独的模块,可以免除对这一部分内容的重复编码和测试,节约软分内容的重复编码和测试,节约软件的开发费用。件的开发费用。X XY YR1R1R2R2 物理物理输入输入相似相似部分部分X XY YR1 R1 R2R2R RX+R1 X
22、+R1 Y+R2Y+R2R R相似模块的各种合并方案的示意图相似模块的各种合并方案的示意图分析分析R1,R2,找出其相,找出其相同部分,从同部分,从R1和和R2中中分离出去,重新定义成分离出去,重新定义成一个独立的下层模块一个独立的下层模块R1 和和R2剩余的部分据情况还剩余的部分据情况还可与它的上级模块合并,以可与它的上级模块合并,以减少像控制的传递、全局数减少像控制的传递、全局数据据的引用和接口等复杂性的引用和接口等复杂性 三、三、模块的模块的作用范围作用范围应在应在控制范围控制范围之之内。内。作用范围作用范围:是一个与条件判定是一个与条件判定 相关联的所有模块。相关联的所有模块。控制范围
23、控制范围:包括模块本身及其包括模块本身及其所有的从属模块所有的从属模块(即供它调用即供它调用的模块的模块)。一个模块的作用范围,是指受这个模块中的判定影响的所有模块。关于模块的作用范围/控制范围的关系示意图 TopTopA AB BC CD DE EGGG G D DB BC C控制控制控制控制耦合耦合耦合耦合当模块当模块G作出一个判定之后,若需要作出一个判定之后,若需要C工作,则必须把信号工作,则必须把信号送回给送回给D,然后,再由,然后,再由D把信号送给把信号送给B,才能送到,才能送到C模块模块C超出了超出了G的控制域,从而也增加了数据的传送量和模块间的控制域,从而也增加了数据的传送量和模
24、块间的耦合,使模块间出现了的耦合,使模块间出现了控制耦合控制耦合TopTopC CD DE EB2B2B BD DG G C C符合作用范围符合作用范围/控制范围的理想判定位置控制范围的理想判定位置 D DC CGGB BA A理想SC图中的模块设计:所有受到一个判定影响的模块应该都从属该判定所在的模块,最好位于作出判定的那个模块本身及它的直接下属模块。四、四、尽可能地减少高尽可能地减少高扇出扇出结构,随着结构,随着深度增大深度增大扇入扇入。扇入:指模块的上级模块数。(即共有多少个模块需要 调用这个模块)扇出:指模块调用其下属模块数目调用的下属模块数应控制在小于3-4个模块。MMMMP PPP
25、1P2QQQ1Q2Q3Q一个模块的扇入越大,则共享该模块的上级模块数目一个模块的扇入越大,则共享该模块的上级模块数目也就越多。但如果一个模块的扇入太大,例如超过也就越多。但如果一个模块的扇入太大,例如超过8,而它又不是公用模块,则说明该模块可能具有多个,而它又不是公用模块,则说明该模块可能具有多个功能。在这种情况下应当对它功能。在这种情况下应当对它 进一步分析并将其功能进一步分析并将其功能分解。分解。通过分析得知它是3功能的模块。对它进行分解,增加三个中间模块Q1,Q2,Q3,而把公用部分提取出来留在Q中,作为这三个中间模块的公用模块,使各模块的功能单一化,从而改善模块结构。经验证明,一个设计
26、得好的软件模块结构,通常经验证明,一个设计得好的软件模块结构,通常上层扇出比上层扇出比较高,中间层扇出较少,底层扇入到有高扇入的公用模块中较高,中间层扇出较少,底层扇入到有高扇入的公用模块中。五、五、模块的大小模块的大小要适中。要适中。50-100 模块的大小,可以用模块中所含语句的数量的多少来衡量。六、应限制使用应限制使用如下三种病态联如下三种病态联接:接:公共数据域病态联接公共数据域病态联接 模块模块A和和B通过公共数据域直接传送或通过公共数据域直接传送或接受数据,而非通过上级模块接受数据,而非通过上级模块直接病态联接直接病态联接 即模块即模块A直接从直接从模块模块B内部取出某些数据,或内
27、部取出某些数据,或把某些数据直接送到把某些数据直接送到B内部内部通信模块病态联接通信模块病态联接 即模块即模块A和和B通过通信模块传送数据。通过通信模块传送数据。耦合程度剧增耦合程度剧增耦合程度剧增耦合程度剧增,不仅影响不仅影响不仅影响不仅影响模块和,而且影响模块和,而且影响模块和,而且影响模块和,而且影响与公共数据域有关联的与公共数据域有关联的与公共数据域有关联的与公共数据域有关联的所有模块。所有模块。所有模块。所有模块。从表面看,这不是病态联接,因从表面看,这不是病态联接,因为模块和为模块和B都未涉及通信模块都未涉及通信模块TABLEIT 的内部。然而,它们的内部。然而,它们之间的通信(即
28、数据传送)没有之间的通信(即数据传送)没有通过它们的上级模块。通过它们的上级模块。七、应设计出功能可预测的模块,但要避免过分受限制的模块。A A例如,例如,A-为不及格成绩处理模块。为不及格成绩处理模块。对数组长度的使用限制,在成绩处理中,由于要处理对数组长度的使用限制,在成绩处理中,由于要处理各班级人数不等,所以数组长度的定义应该随着学生人数各班级人数不等,所以数组长度的定义应该随着学生人数的不同而不同的不同而不同.为了能够适应将来的变更,软件模块中局部数据结构为了能够适应将来的变更,软件模块中局部数据结构的大小应当是可控制的的大小应当是可控制的;控制流的选择对于调用者来控制流的选择对于调用者来说,应当是可预测的说,应当是可预测的;而与外界的接口应当是灵活的。而与外界的接口应当是灵活的。