《软件工程第四章2(软件设计).ppt》由会员分享,可在线阅读,更多相关《软件工程第四章2(软件设计).ppt(67页珍藏版)》请在课桌文档上搜索。
1、4.5概要设计(总体设计),概要设计确定:软件系统的结构各模块功能及模块间联系(接口)表示软件结构的图形工具结构图(SC,Structured chart)层次图和HIPO图,4.5.1 面向数据流的设计方法(结构化设计方法SD,Structured Design),1.面向数据流设计方法的基本概念 SD以数据流图为基础,它定义了把DFD(Data Flow Diagram)变换成软件结构的映射方法,映射,DFD(问题结构),软件系统的结构(程序结构),数据流图可分为两种类型:变换型数据流事务型数据流,变换型数据流,信息沿输入通路进入系统;进入系统的信息通过变换中心;经加工处理以后再沿输出通路
2、离开软件系统;当数据流图具有这些特征时,这种信息流就叫作变换流。,事务型数据流,当数据流经过一个具有“事务中心”特征的数据处理时,它可以根据事务类型从多条路径的数据流中选择一条活动通路。这种具有根据条件选择处理不同事务的数据流,就是事务型数据流,简称事务流。,面向数据流方法的设计过程,精化数据流图,区分事务中心和数据接收路径,映射成变换结构,流类型,区分输入和输出分支,映射成事务结构,用启发式设计规则精化软件结构,导出接口描述和全程数据结构,复查,详细设计,“事务”,“变换”,事务分析,变换分析,初始的SC,主模块,输入模块,主加工模块,传出模块,事务控制模块,接受模块,动作发送模块,动作1模
3、块,动作2模块,动作3模块,由变换分析产生,由事务分析产生,软件结构图的六种模块类型,传入模块 从下属模块传入数据X,经处理后返回给上级模块数据流Y。它传送的数据流叫做逻辑输入数据流。箭头尾部是空心圆表示传递的是数据,否则表示传递的是控制信息。为了绘图简便本讲义后面暂且全部用普通箭头,软件结构图的四种模块类型(续),传出模块 从上级模块获得数据,经处理后再将其传送给下属模块。,变换模块 也叫做加工模块。它从上级模块获得数据,经处理,转换成其他形式,再传送回上级模块。,软件结构图的四种模块类型(续),源模块,终模块 以上两种模块只被调用,不调用别的模块。,软件结构图的六种模块类型(续),控制模块
4、 对所有下属模块进行协调和管理的模块。在一个好的系统结构图中,协调模块应在较高层出现。,或,模块调用的表示,简单调用,模块调用的表示(续),选择调用,模块调用的表示(续),循环调用 模块A根据内部循环条件,重复调用B、C模块,直至内部出现满足循环终止条件为止。,2.面向数据流设计方法的设计步骤,(1)优化DFD(2)确定DFD类型(3)把DFD映射到系统模块结构,设计 出模块结构的上层(4)基于DFD逐步分解高层模块,设计 出下层模块(5)根据模块独立性原理,优化模 块结构(6)模块接口描述,步骤:(1)区分传入、变换中心、传出部分,在 DFD 上 标明分界线,(1)变换分析设计方法,B,C,
5、A,D,E,Q,P,R,W,U,V,a,b,c,e,d,r,p,u,w,v,变换中心,传入部分,传出部分,从数据流程图的物理输入端开始,向系统的中间移动,一直到某个数据流不再被看作是系统的输入为止,这个数据流的前一个数据流就是系统的逻辑输入。同理从物理输出端开始,向系统的中间移动,就可以找到软件的逻辑输出。在输入部分和输出部分之间的就是中心变换部分。,变换分析设计方法步骤,(2)第一级分解(建立初始SC框架)设计顶层和第一层模块,第一级分解的方法,MC,MT,MA,ME,第一级分解后的SC,MC,MT,MA,ME,第一层,顶层,c,e,c,e,u,w,u,w,传入模块,传出模块,中心变换模块,
6、第一级分解后的SC(另一种画法),MC,MA1,c,e,u,c,p,Q,P,R,e,p,r,r,w,u,w,传入分支模块,中心加工分支模块,传出分支模块,MA2,ME1,ME2,变换分析设计方法步骤,(3)第二级分解(分解SC各分支)自顶向下分解,设计出每个分支的中、下层模块,完成第二级分解的方法是,从变换中心的边界开始沿着输入通路向左移动,把输入通路中每个处理逻辑映射成软件结构中MA控制下的一个低层模块;然后沿输出通路向右移动,把输出通路中每个处理逻辑映射成直接或间接受模块ME控制的一个低层模块;最后把变换中心内的每个处理映射成受MT控制的一个模块。,传入分支的分解,MA,C,B,A,b,a
7、,c,E,D,d,e,c,e,传出分支的分解,W,v,ME,U,w,u,w,u,V,中心加工分支的分解,MT,P,Q,R,e,c,p,r,u,w,p,r,第一次分解,下面设计一个“统计输入文件中单词数目”程序。,第二次分解,任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时(有一个明显的事务中心),以采用事务分析方法为宜。,(2)事务分析设计方法,事务分析设计方法步骤:,(1)在DFD上确定事务中心、接收部 分和发送部分。(2)画出SC框架,把DFD上的三部分 分别映射为事务控制模块、接收 模块和动作发送模块。(3)分解细化接收分支和发送分支,完成初始SC。,事务分析的
8、映射方法,总控,调度,B路径,C路径,接收路径,事务流设计,ATM机系统结构,映射成,AB,T1,变换中心,传入,传出,T2,T3,a,b,b1,b2,b3,c1,c2,c3,d,e,g,f,j,m,事务流子系统,BC,CD,DE,EH,HK,FJ,KL,LM,h,(3)混合流设计举例,k,混合流设计举例,输入D,XX系统,变换控制,输出K,输入C,d,c,输出L,CD,DE,FJ,EH,HK,KL,c,d,d,k,k,k,L,L,输出M,LM,m,m,L,事务子系统,d,e,f,g,h,g,j,k,混合流设计,映射成,4.5.3 体系结构设计优化,将初始SC根据模块独立性原则进行精化,对模块
9、进行合并、分解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于测试和易于维护的软件结构,产生设计文档的最终SC。,(1)模块功能的完善化,完整的模块应包括三部分:(1)执行规定功能部分(2)出错处理部分(3)需返回给调用者数据时,返回是否正确结束标志。,改进软件结构设计的指导原则(软件结构设计的启发式规则),(2)消除重复功能,Q1,C,Q2,C,Q1,Q2,C,改进前Q1、Q2功能相似,X,Y,Q,X,Y,X,Y,重复部分,改进方法1:将Q1、Q2合并为Q不可取,改进方法2:将Q1、Q2的公共部分分离出来,原则:某模块的判定语句的作用范围应在该模块的控制范围之内,最好在直接控制范围之内
10、。(下图中绿色的模块是判定语句的作用范围),3、调整软件结构以保证结构中的模块满足作用范围/控制范围原则,如果在设计过程中,发现作用范围不在控制范围内,可采用如下办法把作用范围移到控制范围之内:)提高控制模块的层次。将判定所在模块合并到父模块中,使判定处于较高层次。)将受判定影响的模块下移到控制范围内;)将判定上移到层次中较高的位置。但是要注意,判定所在的模块最好不要太高,模块之间的控制参数传递路径太长,增加了模块之间的耦合。,(4)减少高扇出争取高扇入,高扇出的模块结构举例:,编外人员工资,取得工资数据,计时制工资额,薪金制工资额,编外人员税款,编外人员扣款,常规扣款,税收扣款,计算实发工资
11、,避免平铺结构,增加中间层降低扇出,编外人员工资,取得工资数据,计时制工资额,薪金制工资额,编外人员税款,编外人员扣款,常规扣款,税收扣款,计算实发工资,计时工人实发工资,计薪工人实发工资,编外人员实发工资,设计良好的软件结构应该是顶层扇出比较高,中间扇出较少,底层扇入到高扇入的公共模块,有点类似于橄榄状的结构,(5)模块大小适中,模块过大:可理解程度下降模块过小:开销大于有效操作 系统接口复杂(6)降低模块接口的复杂性 接口传递信息应简单且和模块功能一致。,(7)模块功能可预测,模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。模块带有内部状态其功能可能是不可预测的。难理解、难测试、难
12、维护。,(8)避免模块的病态连接,防止指向模块中间的分支或引用(针对内容耦合)(9)根据设计约束和可移植性 需求对软件打包 打包指用来为特定环境组装软件的技术,4.5.4 层次图和HIPO图,IBM公司发明的HIPO图:层次图+输入/处理/输出图(H图)(IPO图)(Hierachy Input Process Output),1.层次图(H图),表示软件的层次结构,正文加工系统,输入,输出,编辑,加标题,存储,检索,编目录,添加,删除,插入,修改,合并,列表,带编号的层次图(H图),正文加工系统,输入1.0,输出2.0,编辑3.0,加标题 4.0,存储5.0,检索6.0,编目录 7.0,添加
13、3.1,删除3.2,插入3.3,修改3.4,合并3.5,列表3.6,2.HIPO图,H图中每一方框(模块)均有一张IPO图对应 航线调度系统HIPO图举例 H图:,命令监控器1.0,取得输入1.1,输入确认 1.2,请求确认1.3,更新处理 1.4,传统的IPO图举例,输入,处理,输出,读口令请求,口令文件,1取得输入,2口令确认,3请求确认,请求记录,权限文件,4更新处理,权限记录,状态报告,响应,命令监控器(1.0)的IPO图,改进的IPO图格式,IPO图,系统:,模块:,编号:,作者:,日期:,被调用:,调用:,输出:,输入:,输入:,局部数据元素:,注释:,4.6详细设计(过程设计、模
14、块设计),主要任务:编写详细设计说明书为此,设计人员应:(1)确定每个模块的算法,用工具 表达算法的过程,写出模块的 详细过程性描述。(2)确定每一模块的数据结构。(3)确定模块接口细节。详细设计是编码的先导。,4.6.1 结构化程序设计(SP)方法,传统的设计技术和旧观念:设计的随意性,具有浓厚的个人色彩.追求程序效率和个人设计技巧新的设计思想和风格:清晰第一使用标准的、规范的控制结构逐步细化,4.6.2 详细设计的描述方法,详细设计工具:(1)图形工具(2)表格工具(3)语言工具,1.程序流程图,2.盒图(N-S图),3.问题分析图(PAD),4.过程设计语言(PDL)(伪码),5.判定表
15、,2.盒图(N-S图),用方框图代替传统的流程图描述五种基本控制结构的图形构件(1)顺序型,A,B,C,(2)选择型(If then else)If then else If then,A,B,F,条件,T,A,F,T,条件,then 部分,then 部分,else部分,(3)多分支选择型(CASE型),A1,值1,A2,An,.,.,条件,值2,值n,(4)WHILE重复型(5)UNTIL重复型,S(循环体),DO-WHILE P,S(循环体),REPEAT UNTIL P,(先测试循环),(后测试循环),循环条件,(6)并行结构,A1,A2,An,.,例如:使用程序流程图判断某个整数x是否为质数的算法,下图为判断某个整数x是否为质数的算法设计图:,3.问题分析图(PAD),(Problem Analysis Diagram)基本控制结构:(1)顺序结构(2)选择结构,A,B,C,A,B,T,F,条件,(3)重复结构,WHILE C,S,UNTIL C,S,(先测试循环),(后测试循环),等价的PASCAL语言:REPEAT C UNTIL S,等价的PASCAL语言:WHILE C DO S,(4)多分支选择型(CASE型),A1,值1,值2,值n,A2,An,.,.,.,.,条件,同样是上面那个判定质数的例子,
链接地址:https://www.desk33.com/p-235739.html