结构化设计方法.ppt

上传人:小飞机 文档编号:5299282 上传时间:2023-06-23 格式:PPT 页数:89 大小:364.50KB
返回 下载 相关 举报
结构化设计方法.ppt_第1页
第1页 / 共89页
结构化设计方法.ppt_第2页
第2页 / 共89页
结构化设计方法.ppt_第3页
第3页 / 共89页
结构化设计方法.ppt_第4页
第4页 / 共89页
结构化设计方法.ppt_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《结构化设计方法.ppt》由会员分享,可在线阅读,更多相关《结构化设计方法.ppt(89页珍藏版)》请在三一办公上搜索。

1、4.2 结构化设计方法,软件设计分为两个阶段:(1)概要设计(总体设计)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。(2)详细设计 确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。,将分析模型转换为软件设计,数据字典,数据流图,E-R图,状态变迁图,加,工,说,明,控制说明,数,据,对,说 明,象,数 据 设 计,体系结构设计,接口设计,过程设计,分析模型,设计模型,4.2.1 软件设计的概念和原理,1.软件结构 2.软件过程 3.模块化 4.抽象 5.信息隐蔽 6.信息局部化,4.2.6 模块的独立性,模块独立的含义:模块完成独立的功能符合信息隐蔽和信息局部化

2、原则模块间关连和依赖程度尽量小,模块独立性的度量,模块独立性取决于模块的内部和外部特征。SD方法提出的定性的度量标准:模块之间的耦合性 模块自身的内聚性,模块间耦合的类型:,低 无直接耦合耦 数据耦合合 标记耦合性 控制耦合 外部耦合 公共耦合 高 内容耦合,模块独立性,弱,(低耦合),强,(中耦合),(较强耦合),(强耦合),(1)无直接耦合,两个模块没有直接关系(模块1和模块2),模块独立性最强。,模块1,模块2,模块3,模块4,(2)数据耦合,一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。属松散耦合。,数据耦合举例,开发票,计算水费,单价数量,金额,(3)标记耦

3、合(特征耦合),如两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系,则称这两个模块间存在标记偶合。,标记耦合举例,计算水电费,计算水费,计算电费,住户情况,水费,电费,住户情况,“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合.,将标记耦合修改为数据耦合举例,计算水电费,计算水费,计算电费,本月用水量,本月用电量,水费,电费,(4)控制耦合,一模块向下属模块传递的信息(开关量、标志等控制被调用模块决策的变量)控制了被调用模块的内部逻辑。,控制耦合举例,A,

4、计算平均分或最高分,B,平均/最高(控制信号),成绩,读入分数,输出结果,计算平均分,计算最高分,平均/最高?,B,控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法:(1)将被调用模块内的判定上移到调 用模块中进行(2)被调用模块分解成若干单一功 能模块,改控制耦合为数据耦合举例,A,计算平均分,B1,平均成绩,最高成绩,计算最高分,B2,(5)外部耦合,一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部偶合必不可少,但这种模块数目应尽量少。,(6)公共耦合(公共数据区耦合

5、),一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:全局数据结构 共享通讯区 内存公共覆盖区等,公共耦合举例,公共数据区,C,B,模块A、B、C间存在错综复杂的联系,(1)软件可理解性降低(2)诊断错误困难(3)软件可维护性差,(4)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!,公共耦合存在的问题:,(7)内容耦合,一模块直接访问另一模块的内部信息(程序代码或数据),最不好的耦合形式!,A,B,A,B,模块代码重叠,Entry1 Entry1,多入口模块,模块化设计的原则和目标,耦合是影响软件复杂程度和设计质量的重要因素目标:建立模块间耦

6、合度尽可能松散的系统,如何降低模块间耦合度:,(1)尽量使用数据耦合少用控制耦合限制公共耦合的范围坚决避免使用内容耦合(2)降低接口的复杂性,2.模块独立性的度量之二:内聚性,一个模块内部元素在功能上相互关联的强度 设计目标:高内聚(模块在软件过程中 完成单一的任务),模块的内聚性类型:,低 偶然内聚 内 逻辑内聚 聚 时间内聚 性 过程内聚 通信内聚 信息内聚 高 功能内聚,模块独立性,弱(功能分散),强(功能单一),低内聚模块举例,为工程分析包执行错误处理的模块,当计算的数据超出预定义的边界时调用该模块,它完成下列任务:(1)根据初始计算的数据计算补充数据;(2)在用户的工作站上生成错误报

7、告;(3)执行用户要求的跟踪计算;(4)更新数据库;(5)使选择后续处理的菜单有效。虽然上述任务是松散相关的,但每一项都是独立的功能实体,最好作为独立的模块完成。,(1)偶然内聚(巧合内聚),模块内各部分间无联系,A,B,C,M,MOVE O TO RREAD FILE FMOVE S TO T,模块M中的三个语句没有任何联系缺点:可理解性差,可修改性差,例:,(2)逻辑内聚,把几种相关功能(逻辑上相似 的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。,逻辑内聚模块,A,B,C,E,F,G,A,B,C,EFG,A1,B1,C1,EFG模块内部逻辑,E、F、G逻辑功能相似,组成

8、新模块EFG,缺点:增强了耦合程度(控制耦合)不易修改,效率低,公用代码段,公用代码段,(3)时间内聚(经典内聚),模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。例如:初始化系统模块、系统结束模块、紧急故障处理模块等均是时间性聚合 模块.,(4)过程内聚(顺序性组合),模块内各处理成分相关,且必须以特定次序执行,过程内聚模块,读入成绩单,审查成绩单,统计成绩,打印成绩,读入并审查成绩单,统计并打印成绩单,(5)通信内聚,模块内各部分使用相同的输入数据,或产生相同的输出结果,通信内聚模块例,产生工资报表,计算平均工资,职工工资记录,职工工资报表,平均工资,产生职工工资报表并

9、计算平均工资模块,(6)信息内聚,模块完成多个功能,各功能都在同一数据结构上操作,每一功能有唯一入口。,信息内聚模块,符 号 表,查找,登录,删除,修改,几个加工同时引用一个共同的数据,(7)功能内聚,模块仅包括为完成某个功能所必须的所有成分。(模块所有成分共同完成一个功 能,缺一不可)内聚性最强,内聚与耦合密切相关,同其它模块强耦合的模块意味者弱内聚,强内聚模块意味着与其它模块间松散耦合.设计目标:力争强内聚、弱耦合,3.耦合、内聚与模块独立性关系,耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。,4.2.7 概

10、要设计(总体设计),确定:软件系统的结构各模块功能及模块间联系(接口)表示软件结构的图形工具结构图层次图和HIPO图,面向数据流的设计方法(结构化设计方法SD),1.面向数据流设计方法的基本概念 SD以数据流图为基础,它定义了把DFD变换成软件结构的不同映射方法,映射,DFD(问题结构),软件系统的结构(程序结构),概要设计的任务与步骤,概要设计的过程:(1)设想可能的方案(2)选取合理的方案(3)推荐最佳方案(4)功能分解(5)设计软件结构(6)数据库设计(7)制定测试计划(8)编写文档(9)审查与复审,4.4.1结构图(SC Structure Chart),SD方法在概要设计中的主要表达

11、工具约定:(见讲义P107 图5-1),编辑学生记录,读学生记录,学生数据,无此学生,学号,不加区分的数据,数据信息,控制信息,SC中的四种模块,传入模块,(a),(b),A,A,传出模块,B,B,变换模块,(c),C,D,协调模块,E,(d),E,F,F,SC中的选择调用,A,C,B,D,A根据内部判断决定是否调用B,A按另一判定结果选择调用C或D,SC中的循环调用,A,B,C,A根据内在的循环重复调用B、C等模块,第一级分解的方法,MC,MT,MA,ME,第一级分解后的SC,MC,MT,MA,ME,第一层,顶层,c,e,c,e,u,w,u,w,传入模块,传出模块,中心变换模块,传入分支的分

12、解(1),MA,C,B,A,b,a,c,E,D,d,e,c,e,传入分支的分解(2),MA,Get C,b,a,c,Read D,d,e,c,e,B to C,b,c,d,e,a,b,Get E,Get B,D to E,A to B,Read D,传出分支的分解,ME,W,Write V,u,u,w,u,v,v,v,Put U,U to V,ME,U,Write W,w,w,u,w,u,V,(1),(2),中心加工分支的分解,MT,P,Q,R,e,c,p,r,u,w,p,r,事务分析的映射方法,总控,调度,B路径,C路径,接收路径,事务流设计举例,I,M,L,N,A,B,C,D,F,E,G,

13、事务中心,事务流设计举例,取 A,总控,A,L,M,N,G,D,B,C,F,E,(主模块),事务加工模块,动作分支的典型结构,P,T 2,T 1,T i,A 2,D 2,A 1,D 1,A 3,A j,D k,事务层,操作层,细节层,处理层,主模块,事务加工模块,操作模块,细节模块,事务流设计举例,取 A,总控,A,L,M,N,G,D,B,C,F,E,动作1,动作n,.,细节模块1,细节模块2,.,(操作模块),(细节模块),3,4,1,2,6,7,5,8,10,9,11,变换中心,传入,传出,事务型,(3)混合流设计举例,4.4.3 体系结构设计优化,将初始SC根据模块独立性原则进行精化,对

14、模块进行合并、分解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于测试和易于维护的软件结构,产生设计文档的最终SC。,结构设计优化举例:楼层平面设计,餐厅,书房,主卧室,浴室,卧室2,厨房,楼梯,走廊,大门,卧室2,餐厅,厨房,楼梯,走廊,浴室,主卧室,书房,大门,卧室2,餐厅,厨房,楼梯,走廊,浴室,主卧室,书房,大门,最初版,第二版,第三版,南,改进软件结构设计的指导原则(软件结构设计的启发式规则),(1)模块功能的完善化(2)消除重复功能(3)将模块的影响限制在模块的控制范围内(4)深度、宽度、扇出和扇入适中(5)模块大小适中(6)降低模块接口的复杂性(7)模块功能可预测(8)避免

15、模块的病态连接(9)根据设计约束和可移植性要对软件打包,(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的公共部分分离出来,C,H,D,E,G,X,F,(3)将模块的影响限制 在模块的控制范围内,A,I,L,J,K,B,模块C的控制范围:C、D、E、F、G、H,如果模块C 作出的决策影响了模块L,L超出了C 的控制范围,(

16、4)减少高扇出争取高扇入,高扇出的模块结构举例:,编外人员工资,取得工资数据,计时制工资额,薪金制工资额,编外人员税款,编外人员扣款,常规扣款,税收扣款,计算实发工资,避免平铺结构,增加中间层降低扇出,编外人员工资,取得工资数据,计时制工资额,薪金制工资额,编外人员税款,编外人员扣款,常规扣款,税收扣款,计算实发工资,计时工人实发工资,计薪工人实发工资,编外人员实发工资,(5)模块大小适中,模块过大:可理解程度下降模块过小:开销大于有效操作 系统接口复杂(6)降低模块接口的复杂性 接口传递信息应简单且和模块功能一致。,(7)模块功能可预测,模块看成黑盒子,相同输入产生相同输出,其功能为可预测的

17、。模块带有内部状态其功能可能是不可预测的。难理解、难测试、难维护。,防止模块功能过分局限,功能单一的模块具有高内聚。但如任意限制局部数据结构的大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。,(8)避免模块的病态连接,防止指向模块中间的分支或引用(针对内容耦合)(9)根据设计约束和可移植性 需求对软件打包 打包指用来为特定环境组装软件的技术,4.4.4 层次图和HIPO图,IBM公司发明的HIPO图:层次图+输入/处理/输出图(H图)(IPO图)(Hierachy Input Process Output),1.层次图(H图),表示

18、软件的层次结构,正文加工系统,输入,输出,编辑,加标题,存储,检索,编目录,添加,删除,插入,修改,合并,列表,带编号的层次图(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,2.HIPO图,H图中每一方框(模块)均有一张IPO图对应 航线调度系统HIPO图举例 H图:,命令监控器1.0,取得输入1.1,输入确认 1.2,请求确认1.3,更新处理 1.4,传统的IPO图举例,输入,处理,输出,读口令请求,口令文件,1取得输入,2口令确认,3请求确认,请求记录

19、,权限文件,4更新处理,权限记录,状态报告,响应,命令监控器(1.0)的IPO图,改进的IPO图格式,IPO图,系统:,模块:,编号:,作者:,日期:,被调用:,调用:,输出:,输入:,输入:,局部数据元素:,注释:,4.5详细设计(过程设计、模块设计),主要任务:编写详细设计说明书为此,设计人员应:(1)确定每个模块的算法,用工具 表达算法的过程,写出模块的 详细过程性描述。(2)确定每一模块的数据结构。(3)确定模块接口细节。详细设计是编码的先导。,结构化程序设计(SP)方法,传统的设计技术和旧观念:强调设计的随意性,具有浓厚的个人色彩.追求程序效率和个人设计技巧新的设计思想和风格:清晰第

20、一使用标准的、规范的控制结构逐步细化,4.5.2 详细设计的描述方法,详细设计工具:(1)图形工具(2)表格工具(3)语言工具,1.程序流程图,2.盒图(N-S图),3.问题分析图(PAD),4.过程设计语言(PDL)(伪码),5.判定表,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)

21、WHILE重复型(5)UNTIL重复型,S(循环体),DO-WHILE P,S(循环体),REPEAT UNTIL P,(先测试循环),(后测试循环),循环条件,(6)并行结构,A1,A2,An,.,(7)移出标记,A,C,B,F,X6,T,A:,D,(调用结构),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,.,.,.,.,条件,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号