软件工程第四章-2(软件设计)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

§4.5概要设计(总体设计)概要设计确定:•软件系统的结构•各模块功能及模块间联系(接口)表示软件结构的图形工具结构图(SC,Structuredchart)层次图和HIPO图4.5.1面向数据流的设计方法(结构化设计方法SD,StructuredDesign)1.面向数据流设计方法的基本概念SD以数据流图为基础,它定义了把DFD(DataFlowDiagram)变换成软件结构的映射方法映射DFD(问题结构)软件系统的结构(程序结构)数据流图可分为两种类型:变换型数据流事务型数据流变换型数据流时间输入流输出流变换流信息•信息沿输入通路进入系统;•进入系统的信息通过变换中心;•经加工处理以后再沿输出通路离开软件系统;•当数据流图具有这些特征时,这种信息流就叫作变换流。事务型数据流当数据流经过一个具有“事务中心”特征的数据处理时,它可以根据事务类型从多条路径的数据流中选择一条活动通路。这种具有根据条件选择处理不同事务的数据流,就是事务型数据流,简称事务流。……活动通路……………………事务中心⊕⊕⊕面向数据流方法的设计过程精化数据流图区分事务中心和数据接收路径映射成变换结构流类型区分输入和输出分支映射成事务结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计“事务”“变换”事务分析变换分析初始的SC主模块输入模块主加工模块传出模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生模块调用的表示⑴简单调用XX,YZACB箭头指向被调用模块模块A调用B和C,A向B传送数据流X和Y,B返回A数据流Z模块调用的表示(续)⑵选择调用ACDB模块A中某个判定为真时调用模块C,为假时调用模块D。模块A中某个判定为真时调用模块B,为假时不调用。表示判定条件。BCD模块调用的表示(续)⑶循环调用模块A根据内部循环条件,重复调用B、C模块,直至内部出现满足循环终止条件为止。ABCABCD步骤:(1)区分传入、变换中心、传出部分,在DFD上标明分界线(1)变换分析设计方法BCADEQPRWUVabcedrpuwv变换中心传入部分传出部分–从数据流程图的物理输入端开始,向系统的中间移动,一直到某个数据流不再被看作是系统的输入为止,这个数据流的前一个数据流就是系统的逻辑输入。–同理从物理输出端开始,向系统的中间移动,就可以找到软件的逻辑输出。–在输入部分和输出部分之间的就是中心变换部分。变换分析设计方法步骤(2)第一级分解(建立初始SC框架)设计顶层和第一层模块第一级分解的方法MCMTMAME第一级分解后的SCMCMTMAME第一层顶层c,ec,eu,wu,w传入模块传出模块中心变换模块第一级分解后的SC(另一种画法)MCMA1ceuc,pQPReprrw,uw传入分支模块中心加工分支模块传出分支模块MA2ME1ME2变换分析设计方法步骤(3)第二级分解(分解SC各分支)自顶向下分解,设计出每个分支的中、下层模块完成第二级分解的方法是,从变换中心的边界开始沿着输入通路向左移动,把输入通路中每个处理逻辑映射成软件结构中MA控制下的一个低层模块;然后沿输出通路向右移动,把输出通路中每个处理逻辑映射成直接或间接受模块ME控制的一个低层模块;最后把变换中心内的每个处理映射成受MT控制的一个模块。传入分支的分解MACBAbacEDdec,e传出分支的分解WvMEUwuw,uV中心加工分支的分解MTPQRec,pru,wpr第一次分解文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数下面设计一个“统计输入文件中单词数目”程序。输入流边界输出流边界有效的文件名单词总数格式化单词数验证文件名统计单词数格式化单词数读文件名文件名单词总数显示单词数文件名文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数格式化单词数显示单词数读文件名验证文件名第二次分解任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时(有一个明显的事务中心),以采用事务分析方法为宜。(2)事务分析设计方法事务分析设计方法步骤:(1)在DFD上确定事务中心、接收部分和发送部分。(2)画出SC框架,把DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块。(3)分解细化接收分支和发送分支,完成初始SC。事务分析的映射方法总控调度C路径B路径A路径A路径B路径C路径接收路径事务流设计事务选择确定事务类型审计记录事务1事务2事务3事务4审计信息事务5更新事务v有效事务查询更新事务w有效事务存款更新事务x有效事务取款更新事务y有效事务转账更新事务z有效事务修改密码ATM机处理事务主控调度器更新事务查询审计记录分析器事务选择存款转账取款修改密码ATM机系统结构映射成ABT1变换中心传入传出T2T3abb1b2b3c1c2c3degfjLm事务流子系统BCCDDEEHHKFJKLLMh(3)混合流设计举例k混合流设计举例输入DXX系统变换控制输出K输入Cdc输出LCDDEFJEHHKKLcddkkkLL输出MLMmmL事务子系统defghgjk混合流设计读入数据判别订货处理订货输入提货发票进货输入库存修改进货票据订单记录分析统计生成统计表映射成4.5.3体系结构设计优化将初始SC根据模块独立性原则进行精化,对模块进行合并、分解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于测试和易于维护的软件结构,产生设计文档的最终SC。(1)模块功能的完善化完整的模块应包括三部分:(1)执行规定功能部分(2)出错处理部分(3)需返回给调用者数据时,返回是否正确结束标志。改进软件结构设计的指导原则(软件结构设计的启发式规则)(2)消除重复功能Q1CQ2CQ1Q2C改进前Q1、Q2功能相似XYQ’XYXY重复部分改进方法1:将Q1、Q2合并为Q’不可取改进方法2:将Q1、Q2的公共部分分离出来•原则:某模块的判定语句的作用范围应在该模块的控制范围之内,最好在直接控制范围之内。(下图中绿色的模块是判定语句的作用范围)TXYBB1B2ATXYABB1B2TXYABB1B2TXYABB1B2违背原则符合但太高适中理想3、调整软件结构以保证结构中的模块满足作用范围/控制范围原则如果在设计过程中,发现作用范围不在控制范围内,可采用如下办法把作用范围移到控制范围之内:1)提高控制模块的层次。将判定所在模块合并到父模块中,使判定处于较高层次。2)将受判定影响的模块下移到控制范围内;3)将判定上移到层次中较高的位置。但是要注意,判定所在的模块最好不要太高,模块之间的控制参数传递路径太长,增加了模块之间的耦合。(4)减少高扇出争取高扇入高扇出的模块结构举例:编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资避免平铺结构增加中间层降低扇出编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资计时工人实发工资计薪工人实发工资编外人员实发工资设计良好的软件结构应该是顶层扇出比较高,中间扇出较少,底层扇入到高扇入的公共模块,有点类似于橄榄状的结构(5)模块大小适中模块过大:可理解程度下降模块过小:开销大于有效操作系统接口复杂(6)降低模块接口的复杂性接口传递信息应简单且和模块功能一致。(7)模块功能可预测模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。模块带有内部状态其功能可能是不可预测的。难理解、难测试、难维护。(8)避免模块的病态连接防止指向模块中间的分支或引用(针对内容耦合)(9)根据设计约束和可移植性需求对软件打包打包指用来为特定环境组装软件的技术4.5.4层次图和HIPO图IBM公司发明的HIPO图:层次图+输入/处理/输出图(H图)(IPO图)(HierachyInputProcessOutput)1.层次图(H图)表示软件的层次结构正文加工系统输入输出编辑加标题存储检索编目录添加删除插入修改合并列表带编号的层次图(H图)正文加工系统输入1.0输出2.0编辑3.0加标题4.0存储5.0检索6.0编目录7.0添加3.1删除3.2插入3.3修改3.4合并3.5列表3.62.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详细设计(过程设计、模块设计)主要任务:编写详细设计说明书为此,设计人员应:(1)确定每个模块的算法,用工具表达算法的过程,写出模块的详细过程性描述。(2)确定每一模块的数据结构。(3)确定模块接口细节。详细设计是编码的先导。4.6.1结构化程序设计(SP)方法传统的设计技术和旧观念:设计的随意性,具有浓厚的个人色彩.追求程序效率和个人设计技巧新的设计思想和风格:清晰第一使用标准的、规范的控制结构逐步细化4.6.2详细设计的描述方法详细设计工具:(1)图形工具(2)表格工具(3)语言工具1.程序流程图2.盒图(N-S图)3.问题分析图(PAD)4.过程设计语言(PDL)(伪码)5.判定表2.盒图(N-S图)用方框图代替传统的流程图描述五种基本控制结构的图形构件(1)顺序型ABC(2)选择型(If–then–else)If–then–elseIf–thenABF条件TAFT条件then–部分then–部分else–部分(3)多分支选择型(CASE型)A1值1A2An........条件值2值n(4)WHILE重复型(5)UNTIL重复型S(循环体)DO-WHILEPS(循环体)REPEATUNTILP(先测试循环)(后测试循环)循环条件(6)并行结构A1A2An....例如:使用程序流程图判断某个整数x是否为质数的算法下图为判断某个整数x是否为质数的算法设计图:定义整型变量:x,n,i读入:xn=x1/2i=2i=2当i=n中途结束循环i=i+1x被i整除假真条件输出:x是质数输出:x不是质数真假3.问题分析图(PAD)(ProblemAnalysisDiagram)基本控制结构:(1)顺序结构(2)选择结构ABCABTF条件(3)重复结构WHILECSUNTILCS(先测试循环)(后测试循环)等价的PASCAL语言:REPEATCUNTILS等价的PASCAL语言:WHILECDOS(4)多分支选择型(CASE型)A1值1值2值nA2An......条件同样是上面那个判定质数的例子

1 / 62
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功