软件工程第四章软件设计_第1页
软件工程第四章软件设计_第2页
软件工程第四章软件设计_第3页
软件工程第四章软件设计_第4页
软件工程第四章软件设计_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程第四章软件设计4.5.1面向数据流的设计方法

(结构化设计方法SD,StructuredDesign)

1.面向数据流设计方法的基本概念

SD以数据流图为基础,它定义了把DFD(DataFlowDiagram)变换成软件结构的映射方法映射DFD(问题结构)软件系统的结构(程序结构)第2页,共64页,2024年2月25日,星期天数据流图可分为两种类型:

变换型数据流事务型数据流第3页,共64页,2024年2月25日,星期天变换型数据流时间输入流输出流变换流信息信息沿输入通路进入系统;进入系统的信息通过变换中心;经加工处理以后再沿输出通路离开软件系统;当数据流图具有这些特征时,这种信息流就叫作变换流。第4页,共64页,2024年2月25日,星期天事务型数据流当数据流经过一个具有“事务中心”特征的数据处理时,它可以根据事务类型从多条路径的数据流中选择一条活动通路。这种具有根据条件选择处理不同事务的数据流,就是事务型数据流,简称事务流。……活动通路……………………事务中心⊕⊕⊕第5页,共64页,2024年2月25日,星期天面向数据流方法的设计过程精化数据流图区分事务中心和数据接收路径映射成变换结构流类型区分输入和输出分支映射成事务结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计“事务”“变换”事务分析变换分析第6页,共64页,2024年2月25日,星期天初始的SC主模块输入模块主加工模块传出模块事务控制模块接受模块动作发送模块动作1模块动作2模块动作3模块由变换分析产生由事务分析产生第7页,共64页,2024年2月25日,星期天软件结构图的六种模块类型⑴传入模块从下属模块传入数据X,经处理后返回给上级模块数据流Y。它传送的数据流叫做逻辑输入数据流。箭头尾部是空心圆表示传递的是数据,否则表示传递的是控制信息。为了绘图简便本讲义后面暂且全部用普通箭头数据流控制流X模块名Y第8页,共64页,2024年2月25日,星期天软件结构图的四种模块类型(续)⑵

传出模块

从上级模块获得数据,经处理后再将其传送给下属模块。YX⑶变换模块

也叫做加工模块。它从上级模块获得数据,经处理,转换成其他形式,再传送回上级模块。YX第9页,共64页,2024年2月25日,星期天软件结构图的四种模块类型(续)⑷源模块

⑸终模块

以上两种模块只被调用,不调用别的模块。传入的始端X传出的末端X第10页,共64页,2024年2月25日,星期天软件结构图的六种模块类型(续)⑹控制模块

对所有下属模块进行协调和管理的模块。在一个好的系统结构图中,协调模块应在较高层出现。…………YXYXYX或第11页,共64页,2024年2月25日,星期天模块调用的表示⑴简单调用

XX,YZACB箭头指向被调用模块模块A调用B和C,A向B传送数据流X和Y,B返回A数据流Z第12页,共64页,2024年2月25日,星期天模块调用的表示(续)⑵选择调用

ACDB模块A中某个判定为真时调用模块C,为假时调用模块D。模块A中某个判定为真时调用模块B,为假时不调用。表示判定条件。BCD第13页,共64页,2024年2月25日,星期天模块调用的表示(续)⑶循环调用

模块A根据内部循环条件,重复调用B、C模块,直至内部出现满足循环终止条件为止。ABCABCD第14页,共64页,2024年2月25日,星期天2.面向数据流设计方法的设计步骤(1)优化DFD(2)确定DFD类型(3)把DFD映射到系统模块结构,设计出模块结构的上层(4)基于DFD逐步分解高层模块,设计出下层模块(5)根据模块独立性原理,优化模块结构(6)模块接口描述第15页,共64页,2024年2月25日,星期天步骤:(1)区分传入、变换中心、传出部分,在DFD

上标明分界线(1)变换分析设计方法第16页,共64页,2024年2月25日,星期天BCADEQPRWUVabcedrpuwv变换中心传入部分传出部分第17页,共64页,2024年2月25日,星期天从数据流程图的物理输入端开始,向系统的中间移动,一直到某个数据流不再被看作是系统的输入为止,这个数据流的前一个数据流就是系统的逻辑输入。同理从物理输出端开始,向系统的中间移动,就可以找到软件的逻辑输出。在输入部分和输出部分之间的就是中心变换部分。

第18页,共64页,2024年2月25日,星期天变换分析设计方法步骤(2)第一级分解(建立初始SC框架)

设计顶层和第一层模块第19页,共64页,2024年2月25日,星期天第一级分解的方法MCMTMAME第20页,共64页,2024年2月25日,星期天第一级分解后的SCMCMTMAME第一层顶层c,ec,eu,wu,w传入模块传出模块中心变换模块第21页,共64页,2024年2月25日,星期天第一级分解后的SC(另一种画法)MCMA1ceuc,pQPReprrw,uw传入分支模块中心加工分支模块传出分支模块MA2ME1ME2第22页,共64页,2024年2月25日,星期天变换分析设计方法步骤(3)第二级分解(分解SC各分支)

自顶向下分解,设计出每个分支的中、下层模块第23页,共64页,2024年2月25日,星期天完成第二级分解的方法是,从变换中心的边界开始沿着输入通路向左移动,把输入通路中每个处理逻辑映射成软件结构中MA控制下的一个低层模块;然后沿输出通路向右移动,把输出通路中每个处理逻辑映射成直接或间接受模块ME控制的一个低层模块;最后把变换中心内的每个处理映射成受MT控制的一个模块。第24页,共64页,2024年2月25日,星期天传入分支的分解

MACBAbacEDdec,e第25页,共64页,2024年2月25日,星期天传出分支的分解

WvMEUwuw,uV第26页,共64页,2024年2月25日,星期天中心加工分支的分解MTPQRec,pru,wpr第27页,共64页,2024年2月25日,星期天第一次分解文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数下面设计一个“统计输入文件中单词数目”程序。输入流边界输出流边界有效的文件名单词总数格式化单词数验证文件名统计单词数格式化单词数读文件名文件名单词总数显示单词数文件名文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数格式化单词数显示单词数读文件名验证文件名第二次分解第28页,共64页,2024年2月25日,星期天

任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时(有一个明显的事务中心),以采用事务分析方法为宜。(2)事务分析设计方法第29页,共64页,2024年2月25日,星期天事务分析设计方法步骤:(1)在DFD上确定事务中心、接收部分和发送部分。(2)画出SC框架,把DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块。(3)分解细化接收分支和发送分支,完成初始SC。第30页,共64页,2024年2月25日,星期天事务分析的映射方法总控调度C路径B路径A路径A路径B路径C路径接收路径第31页,共64页,2024年2月25日,星期天事务流设计事务选择确定事务类型审计记录事务1事务2事务3事务4审计信息事务5更新事务v有效事务查询更新事务w有效事务存款更新事务x有效事务取款更新事务y有效事务转账更新事务z有效事务修改密码ATM机处理事务主控调度器更新事务查询审计记录分析器事务选择存款转账取款修改密码ATM机系统结构映射成第32页,共64页,2024年2月25日,星期天ABT1变换中心传入传出T2T3abb1b2b3c1c2c3degfjLm事务流子系统BCCDDEEHHKFJKLLMh(3)混合流设计举例k第33页,共64页,2024年2月25日,星期天混合流设计举例输入DXX系统变换控制输出K输入Cdc输出LCDDEFJEHHKKLcddkkkLL输出MLMmmL事务子系统defghgjk第34页,共64页,2024年2月25日,星期天混合流设计读入数据判别

订货处理

订货输入

提货发票进货输入

库存修改

进货票据

订单记录

分析统计生成统计表映射成第35页,共64页,2024年2月25日,星期天4.5.3体系结构设计优化

将初始SC根据模块独立性原则进行精化,对模块进行合并、分解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于测试和易于维护的软件结构,产生设计文档的最终SC。第36页,共64页,2024年2月25日,星期天(1)模块功能的完善化完整的模块应包括三部分:(1)执行规定功能部分(2)出错处理部分(3)需返回给调用者数据时,返回是否正确结束标志。改进软件结构设计的指导原则

(软件结构设计的启发式规则)第37页,共64页,2024年2月25日,星期天(2)消除重复功能Q1CQ2CQ1Q2C改进前Q1、Q2功能相似XYQ’XYXY重复部分改进方法1:将Q1、Q2合并为Q’不可取改进方法2:将Q1、Q2的公共部分分离出来第38页,共64页,2024年2月25日,星期天原则:某模块的判定语句的作用范围应在该模块的控制范围之内,最好在直接控制范围之内。(下图中绿色的模块是判定语句的作用范围)TXYBB1B2ATXYABB1B2TXYABB1B2TXYABB1B2违背原则符合但太高适中理想3、调整软件结构以保证结构中的模块满足作用范围/控制范围原则第39页,共64页,2024年2月25日,星期天如果在设计过程中,发现作用范围不在控制范围内,可采用如下办法把作用范围移到控制范围之内:1)提高控制模块的层次。将判定所在模块合并到父模块中,使判定处于较高层次。2)将受判定影响的模块下移到控制范围内;3)将判定上移到层次中较高的位置。但是要注意,判定所在的模块最好不要太高,模块之间的控制参数传递路径太长,增加了模块之间的耦合。第40页,共64页,2024年2月25日,星期天(4)减少高扇出争取高扇入高扇出的模块结构举例:编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资避免平铺结构第41页,共64页,2024年2月25日,星期天增加中间层降低扇出编外人员工资取得工资数据计时制工资额薪金制工资额编外人员税款编外人员扣款常规扣款税收扣款计算实发工资计时工人实发工资计薪工人实发工资编外人员实发工资第42页,共64页,2024年2月25日,星期天

设计良好的软件结构应该是顶层扇出比较高,中间扇出较少,底层扇入到高扇入的公共模块,有点类似于橄榄状的结构第43页,共64页,2024年2月25日,星期天(5)模块大小适中模块过大:可理解程度下降模块过小:开销大于有效操作系统接口复杂(6)降低模块接口的复杂性

接口传递信息应简单且和模块功能一致。第44页,共64页,2024年2月25日,星期天(7)模块功能可预测模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。模块带有内部状态其功能可能是不可预测的。难理解、难测试、难维护。第45页,共64页,2024年2月25日,星期天(8)避免模块的病态连接

防止指向模块中间的分支或引用(针对内容耦合)

(9)根据设计约束和可移植性需求对软件打包打包指用来为特定环境组装软件的技术第46页,共64页,2024年2月25日,星期天4.5.4层次图和HIPO图IBM公司发明的HIPO图:层次图

+

输入/处理/输出图

(H图)(IPO图)(HierachyInputProcessOutput)第47页,共64页,2024年2月25日,星期天1.层次图(H图)

表示软件的层次结构正文加工系统输入输出编辑加标题存储检索编目录添加删除插入修改合并列表第48页,共64页,2024年2月25日,星期天带编号的层次图(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.6第49页,共64页,2024年2月25日,星期天2.

HIPO图H图中每一方框(模块)均有一张IPO图对应

航线调度系统HIPO图举例

H图:命令监控器1.0取得输入1.1输入确认

1.2请求确认1.3更新处理

1.4第50页,共64页,2024年2月25日,星期天传统的IPO图举例输入处理输出读口令请求口令文件1取得输入2口令确认3请求确认请求记录权限文件4更新处理权限记录状态报告响应命令监控器(1.0)的IPO图第51页,共64页,2024年2月25日,星期天改进的IPO图格式IPO图系统:模块:编号:作者:日期:被调用:调用:输出:输入:输入:局部数据元素:注释:第52页,共64页,2024年2月25日,星期天§4.6详细设计(过程设计、模块设计)主要任务:编写详细设计说明书为此,设计人员应:(1)确定每个模块的算法,用工具表达算法的过程,写出模块的详细过程性描述。(2)确定每一模块的数据结构。(3)确定模块接口细节。详细设计是编码的先导。第53页,共64页,2024年2月25日,星期天4.6.1

结构化程序设计(SP)方法传统的设计技术和旧观念:设计的随意性,具有浓厚的个人色彩.追求程序效率和个人设计技巧新的设计思想和风格:清晰第一使用标准的、规范的控制结构逐步细化第54页,共64页,2024年2月25日,星期天4.6.2详细设计的描述方法详细设计工具:(1)图形工具(2)表格工具(3)语言工具第55页,共64页,2024年2月25日,星期天1.程序流程图2.盒图(N-S图)3.问题分析图(PAD)4.过程设计语言(PDL)(伪码)5.判定表第56页,共64页,2024年2月25日,星期天

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论