《软件工程第四章2(软件设计).ppt》由会员分享,可在线阅读,更多相关《软件工程第四章2(软件设计).ppt(67页珍藏版)》请在优知文库上搜索。
1、4.5概要设计(总体设计)概要设计确定:软件系统的结构软件系统的结构各模块功能及模块间联系各模块功能及模块间联系( (接口接口) )表示软件结构的图形工具表示软件结构的图形工具结构图结构图(SC(SC,Structured chartStructured chart)层次图和层次图和HIPO图图4.5.1 面向数据流的设计方法 (结构化设计方法SD,Structured Design) 1. 1. 面向数据流设计方法的基本概念 SD以数据流图为基础,它定义了把以数据流图为基础,它定义了把DFD(Data Flow Diagram)变换变换成成软件结构软件结构的映的映射方法射方法映射映射DFD(
2、 (问题结构问题结构) )软件系统的结构软件系统的结构( (程序结构程序结构) )数据流图可分为两种类型数据流图可分为两种类型: F变换型数据流变换型数据流F事务型数据流事务型数据流变换型数据流变换型数据流时间输入流 输出流变换流信息 信息沿输入通路进入系信息沿输入通路进入系统;统; 进入系统的信息通过变进入系统的信息通过变换中心;换中心; 经加工处理以后再沿输经加工处理以后再沿输出通路离开软件系统;出通路离开软件系统; 当数据流图具有这些特当数据流图具有这些特征时,这种信息流就叫作征时,这种信息流就叫作变换流。变换流。事务型数据流事务型数据流F当数据流经过一个具有 “事务中心”特征的数据处理
3、时,它可以根据事务类型从多条路径的数据流中选择一条活动通路。F这种具有根据条件选择处理不同事务的数据流,就是事务型数据流,简称事务流。活动通路事务中心流类型流类型复查复查事务分析事务分析变换分析变换分析由变换分由变换分析产生析产生由事务分由事务分析产生析产生软件结构图的六种模块类型 传入模块传入模块 从下属模块传入数据X,经处理后返回给上级模块数据流Y。它传送的数据流叫做逻辑输入数据流。 箭头尾部是空心圆表示传递的是数据,否则表示传递的是控制信息。为了绘图简便本讲义后面暂且全部用普通箭头数据流控制流X模块名Y软件结构图的四种模块类型(续) 传出模块传出模块 从上级模块获得数据,经处理后再将其传
4、送给下属模块。YX 变换模块变换模块 也叫做加工模块。它从上级模块获得数据,经处理,转换成其他形式,再传送回上级模块。YX软件结构图的四种模块类型(续) 源模块源模块 终模块终模块 以上两种模块只被调用,不调用别的模块。 传入的始端X传出的末端X软件结构图的六种模块类型(续) 控制模块控制模块 对所有下属模块进行协调和管理的模块。在一个好的系统结构图中,协调模块应在较高层出现。YXYXYX或或模块调用的表示 简单调用简单调用 XX,YZACB箭头指向被调用模块模块A调用B和C,A向B传送数据流X和Y,B返回A数据流Z模块调用的表示(续) 选择调用选择调用 ACDB模块A 中某个判定为真时调用模
5、块C,为假时调用模块D。模块A 中某个判定为真时调用模块B,为假时不调用。表示判定条件。BCD模块调用的表示 (续) 循环调用循环调用 模块A根据内部循环条件,重复调用B、C模块,直至内部出现满足循环终止条件为止。ABCABCD2. 2. 面向数据流设计方法的设计步骤面向数据流设计方法的设计步骤(1)(1)优化优化DFDDFD(2)(2)确定确定DFDDFD类型类型(3)(3)把把DFDDFD映射到系统模块结构映射到系统模块结构, ,设计设计 出模块结构的上层出模块结构的上层(4)(4)基于基于DFDDFD逐步分解高层模块逐步分解高层模块, ,设计设计 出下层模块出下层模块(5)(5)根据模块
6、独立性原理,优化模根据模块独立性原理,优化模 块结构块结构(6)(6)模块接口描述模块接口描述步骤:步骤:(1)(1)区分传入、变换中心、区分传入、变换中心、 传出部分,在传出部分,在 DFD 上上 标明分界线标明分界线(1) 变换分析设计方法BCADEQPRWUVabcedrpuwv变换中心变换中心传入传入部分部分传出传出部分部分从数据流程图的物理输入端开始,向系统的中间移动,一直到某个数据流不再被看作是系统的输入为止,这个数据流的前一个数据流就是系统的逻辑输入。同理从物理输出端开始,向系统的中间移动,就可以找到软件的逻辑输出。在输入部分和输出部分之间的就是中心变换部分。 变换分析设计方法步
7、骤(2)(2)第一级分解第一级分解( (建立初始建立初始SC框架框架) ) 设计顶层和第一层模块设计顶层和第一层模块第一级分解的方法第一级分解的方法c,ec,e u,wu,w第一级分解后的第一级分解后的SC( (另一种画法另一种画法) )MCMA1ceuc,pQP PReprrw,uw传入分传入分支模块支模块中心加工中心加工分支模块分支模块传出分传出分支模块支模块MA2ME1ME2变换分析设计方法步骤(3)(3)第二级分解第二级分解( (分解分解SCSC各分支各分支) ) 自顶向下分解,设计出每个分自顶向下分解,设计出每个分支的中、下层模块支的中、下层模块u完成第二级分解的方法是,从变换中心的
8、边界开始沿着输入通路向左移动,把输入通路中每个处理逻辑映射成软件结构中MA控制下的一个低层模块;u然后沿输出通路向右移动,把输出通路中每个处理逻辑映射成直接或间接受模块ME控制的一个低层模块;u最后把变换中心内的每个处理映射成受MT控制的一个模块。传传入分支的分解MACBAbacEDdec,e传出分支的分解WvMEUwuw,uV中心加工分支的分解中心加工分支的分解MTPQRec,pru,wpr第一次分解文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数下面设计一个下面设计一个“统计输入文件中单词数目统计输入文件中单词数目”程序。程序。输入流边界 输出流边界有效的文件名单词总数格式化
9、单词数验证文件名统计单词数格式化单词数读文件名文件名单词总数显示单词数文件名文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数格式化单词数显示单词数读文件名验证文件名第二次分解第二次分解 任何情况下都可使用变换分析任何情况下都可使用变换分析方法设计软件结构,但如数据方法设计软件结构,但如数据流具有明显的事务特点时流具有明显的事务特点时 ( (有有一个明显的事务中心一个明显的事务中心),),以采用以采用事务分析方法为宜。事务分析方法为宜。(2) 事务分析设计方法事务分析设计方法步骤:(1)(1)在在DFDDFD上确定事务中心、接收部上确定事务中心、接收部 分和发送部分。分和发送部分。
10、(2)(2)画出画出SCSC框架,把框架,把DFDDFD上的三部分上的三部分 分别映射为事务控制模块、接收分别映射为事务控制模块、接收 模块和动作发送模块。模块和动作发送模块。(3)(3)分解细化接收分支和发送分支,分解细化接收分支和发送分支, 完成初始完成初始SCSC。事务分析的映射方法事务分析的映射方法事务流设计事务选择确定事务类型审计记录事务1事务2事务3事务4审计信息事务5更新事务v有效事务查询更新事务w有效事务存款更新事务x有效事务取款更新事务y有效事务转账更新事务z有效事务修改密码ATM机处理事务主控调度器更新事务查询审计记录分析器事务选择存款转账取款修改密码ATMATM机系统结构
11、机系统结构映射成映射成ABT1变换中心变换中心传入传入传出传出T2T3abb1b2b3c1c2c3degfjm事务流子系统事务流子系统BCCDDEEHHKFJKLLMh(3)混合流设计举例k混合流设计举例输入输入DXX系统系统变换控制变换控制输出输出K输入输入Cdc输出输出L LCDDE FJEHHKKLcddkkkLL输出输出MLMmmL事务子系统事务子系统defghgjk混合流设计读入数据判别 订货处理 订货输入 提货发票 进货输入 库存修改 进货票据 订单记录 分析统计生成统计表映射成映射成4.5.3 体系结构设计优化 将初始将初始SC根据模块独立性原根据模块独立性原则进行精化则进行精化
12、, ,对模块进行合并、分对模块进行合并、分解修改、调整,得到高内聚、低解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于耦合模块,得到易于实现、易于测试和易于维护的软件结构,产测试和易于维护的软件结构,产生设计文档的最终生设计文档的最终SC。(1) 模块功能的完善化完整的模块应包括三部分:完整的模块应包括三部分:(1)(1)执行规定功能部分执行规定功能部分(2)(2)出错处理部分出错处理部分(3)(3)需返回给调用者数据时,需返回给调用者数据时, 返回是否正确结束标志。返回是否正确结束标志。改进软件结构设计的指导原则 (软件结构设计的启发式规则)(2)消除重复功能Q1Q1C CQ2Q2C
13、 CQ1Q1Q2Q2C C改进前改进前Q1Q1、Q2Q2功功能相似能相似X XY YQQX XY YX XY Y重复部分重复部分改进方法改进方法1 1:将将Q1Q1、Q2Q2合并为合并为QQ不可取不可取改进方法改进方法2 2:将将Q1Q1、Q2Q2的公共的公共部分分离出来部分分离出来 原则:某模块的判定语句的作用范围应在该模块的控制范围之内,最好在直接控制范围之内。(下图中绿色的模块是判定语句的作用范围)TXYBB1B2ATXYABB1B2TXYABB1B2TXYABB1B2违背原则符合但太高适中理想3、调整软件结构以保证结构中的模块满足作用范围/控制范围原则 F如果在设计过程中,发现作用范围
14、不在控制范围内,可采用如下办法把作用范围移到控制范围之内:F)提高控制模块的层次。将判定所在模块合并到父模块中,使判定处于较高层次。F)将受判定影响的模块下移到控制范围内;F)将判定上移到层次中较高的位置。但是要注意,判定所在的模块最好不要太高,模块之间的控制参数传递路径太长,增加了模块之间的耦合。(4) 减少高扇出争取高扇入高扇出的模块结构举例:高扇出的模块结构举例:编外编外人员人员工资工资取得取得工资工资数据数据 计时计时制工制工资额资额薪金薪金制工制工资额资额编外编外人员人员税款税款编外编外人员人员扣款扣款常规常规扣款扣款税收税收扣款扣款计算实发工资计算实发工资避免平铺结构增加中间层降低
15、扇出增加中间层降低扇出编外编外人员人员工资工资取得工取得工资数据资数据 计时计时制工制工资额资额薪金薪金制工制工资额资额编外编外人员人员税款税款编外编外人员人员扣款扣款常规常规扣款扣款税收税收扣款扣款计算实发工资计算实发工资计时工人计时工人实发工资实发工资计薪工人计薪工人实发工资实发工资编外人员编外人员实发工资实发工资 设计良好的软件结构应该是设计良好的软件结构应该是顶层扇出比较高,中间扇出顶层扇出比较高,中间扇出较少,底层扇入到高扇入的较少,底层扇入到高扇入的公共模块,有点类似于橄榄公共模块,有点类似于橄榄状的结构状的结构(5) 模块大小适中模块过大:可理解程度下降模块过大:可理解程度下降模
16、块过小:开销大于有效操作模块过小:开销大于有效操作 系统接口复杂系统接口复杂(6)降低模块接口的复杂性 接口传递信息应简单且和模块功能接口传递信息应简单且和模块功能一致。一致。(7) 模块功能可预测模块看成黑盒子,相同输入产生模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。相同输出,其功能为可预测的。模块带有内部状态其功能可能是模块带有内部状态其功能可能是不可预测的。难理解、难测试、不可预测的。难理解、难测试、难维护。难维护。(8)(8)避免模块的病态连接避免模块的病态连接 防止指向模块中间的分支或引用防止指向模块中间的分支或引用(针对内容耦合)(针对内容耦合) (9)(9)根据设计约束和可移植性根据设计约束和可移植性 需求对软件打包需求对软件打包 打包指用来为特定环境组装软件的打包指用来为特定环境组装软件的技术技术4.5.4 层次图和HIPO图IBMIBM公司发明的公司发明的HIPOHIPO图:图:层次图层次图 + + 输入输入 / / 处理处理 / /输出图输出图 ( (H图图) () (IPO图图) )( (Hierachy Input Process Output)1.