总体设计-结构化设计方法.ppt

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

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

1、第5章 总体设计设计举例,结构化设计方法,结构化设计方法 无论是何种类型的设计,都要从需求分析获得的分析模型导出软件的设计模型。,结构化设计方法的特点是面向软件系统结构,采用结构图来描述程序的结构。根据需求分析阶段对数据流的分析结果来设计软件结构,把数据流图变换成程序结构。理论上,结构化设计方法可以用于任何软件系统的开发。由于结构化设计的工作与结构化分析工作相衔接,所以又说它是一种面向数据流的设计方法。,结构化设计(SD)的基本观念认为程序或系统是由一组功能操作构成的,需要实现的系统是逻辑功能(模块)的抽象集合,着重分析模块之间关系,忽视模块内部的情况。软件应该设计为结构简单,功能单一、相互独

2、立的模块组织。重视“模块度”(软件系统中的模块数目)概念。内聚和耦合是评价软件设计质量的标准。,图形工具 结构图(SC)结构图是描绘系统结构的图形工具,描述系统由哪些模块组成、程序中模块之间的调用关系、每个模块“做什么”以及每个模块输入和输出。结构图是结构化设计中的重要的结果。结构图的基本成分有方框、箭头或直线以及带注释的箭头。,结构图的基本成分,已定义模块例如程序库中的函数,模块A调用模块B,方框代表一个模块,框内注明模块的名字或主要功能,方框之间的箭头或直线表示模块的调用关系。在结构图中带注释的箭头表示模块调用过程中来回传递的信息或数据。箭头尾部是空心圆表示传递的是数据,箭头尾部是实心圆表

3、示传递的是控制信息。当一个模块调用另一个模块时,调用模块把数据或控制信息传给被调用模块,以使被调用模块能够运行。另方面被调用模块在执行过程中又把它产生的数据或控制信息送回给调用模块。,模块间的调用关系和接口表示,报表加工程序结构图,结构图的辅助符号,结构图描述了模块间的调用关系,揭示了模块结构的偶合和内聚关系,这种关系代表系统的一种静态结构,表明模块间是否有关系,是否相互发生影响,但没有说明如何发生影响。结构图的主要质量指标是模块内聚度和偶合度。获取结构图根据需求规格说明书建立初始结构图;按高内聚、低藕合的标准修改初始结构图;反复修改调整直至获得满意的最终结构图。,层次图(H图)用于描绘软件的

4、层次结构,层次图中一个矩形框代表一个模块,框间的连线表示调用关系,位于上方的矩形框所代表的模块调用位于下方的矩形框所代表的模块,HIPO图 H图里除了顶层的方框之外,每个方框都加编号,H图中的每个方框配置一张IPO图,该IPO图描述对应方框代表的模块的处理过程,每张IPO图内都标有它所描绘的模块在H图中的编号。,加编号的H图,层次图描绘软件的层次结构层次图适用于自顶向下的设计软件过程。书写文档时,常用层次图描绘软件结构而不是结构图。因为结构图上包含的信息太多,清晰程度有时反倒不如层次图。,面向数据流的设计方法 基本概念和设计过程 SD根据DFD的特性定义变换映射与事务映射。变换映射与事务映射可

5、以机械地把DFD转换成初始SC图或程序结构。,变换流 如果数据流图中输入信息流沿传入路径进入系统,同时由外部形式变换为内部形式,经过系统变换中心加工或处理后,再沿输出通道变换成外部形式离开系统,则称数据流图所描述的信息流是变换流。变换流型数据流图有明显的输入、加工/变换、输出三部分。,事务流 信息沿传入路径进入系统,由外部形式变换为内部形式后到达一个事务中心,事务中心根据输入信息的类型,在若干个动作路径或活动流中选择一个来执行,这种信息流称为事务流。,动作路径,事务中心,接受路径,事务型结构的基本模型,。,结构化设计方法的设计过程,变换分析 变换分析是一系列设计步骤的总称,它是指经过这一系列设

6、计步骤把具有变换流特性的数据流图按预先确定的模式映射成软件结构。变换结构由传入、传出和变换中心三个部分组成。变换中心(中心加工)的任务是把系统的逻辑输入加工为系统的逻辑输出。,逻辑输入 距离物理输入端(输入始端)最远的但仍可以被视为系统输入的那些数据流。逻辑输出 距离物理输出端(输出末端)最远的但仍可以被视为系统输出的那些数据流。数据通过变换中心时被加工,其内容和形式可能会发生变化,数据在传入和传出的路径上,其内容和形式也可能会发生变化。,从数据流图导出程序结构图的方法分析数据流图 在数据流图上找出传入、传出和变换中心,并划分出它们的分界线。,f7,f6,f8,f3,变换中心,逻辑输入,逻辑输

7、出,P,R,A,f2,f1,C,B,W,U,V,f10,f9,f5,f4,Q,D,E,输入流,物理输入,物理输出,输出流,传入,传出,变换型数据流图,f3和f5是逻辑输入数据流,f8和f9是逻辑输出数据流;P,Q,R属于变换中心;虚线表示分界线,标定了传入、传出和变换中心的边界。如果变换中心不容易找到,可以考虑从物理输入或物理输出开始逐步从数据流图的两个端点向中心推进。通常几支数据流的汇合处的加工是变换中心,它的两端是逻辑输入和逻辑输出。,如果没有变换中心,系统的逻辑输入和逻辑输出是完全相同的数据流,则应把DFD划分为仅有传入和传出的两个部分。如果有二次输入数据,则应照实把该输入数据视为变换中

8、心或传出部分的成分,而不是传入部分的成分。如果DFD缺少应有的细节,则应对数据流图进行补充,必要时应重画DFD。对于复杂的数据流图,每个设计人员可能会得出不同的划分结果。,进行一级分解 主要任务是画出初始结构图的最上面的两层模块,系统的顶层和第一层。顶层只有一个用于控制的模块,其功能是完成整个系统要做的事情。第一层(顶层的下一层)一般包括输入、输出和变换中心三个模块,它们分别代表系统的三个相应分支。具体做法是先把DFD的变换中心对准结构图的顶层模块,然后画出结构图的顶层模块。然后逐步自顶向下建立或设计结构图的其他下属模块和成分。,顶层,MC/主模块,一级分解,f8,f9,f3,f5,f8,f9

9、,f3,f5,MA,ME,MT,MC,顶层,第一层,DFD经第一级分解后导出的结构图,调用线注明了模块间输送的数据流名称。此种画法强调第一层每一分支只画一个模块。可能出现只有输入和输出两个模块的情形。,进行二级分解 对一级分解的结果继续自顶向下的分解,这一步分解的方法与第一级分解一样,实质上仍然是映射。把数据流图中的加工按照一定的规则转换为结构图中的模块,直至画出每个分支所需要的全部模块,获得系统的初始结构图。,P,第二级分解,C,W,E,A,Q,U,V,B,R,D,f3,f2,f1,f4,f5,f5,f6,f3f6,f7 f7,f8,f9,f8,f10,f9,二级分解的第一种画法,二级分解的

10、第二种画法,U to V,取得C,输出W,取得E,Bto C,读入A,Q,得出U,输出V,取得B,Ato B,R,Dto E,读入D,P,f3,f2,f1,f1,f2,f2,f3,f4,f4,f5,f5,f5,f6,f3f6,f7 f7,f8,f9,f8,f9,f10,f10,f9,变换型DFD导出的初始结构图,变换分析的步骤 复查基本系统模型(确认系统的输入数据和输出数据符合实际);复查并精化数据流图;确定数据流图具有变换特性还是事务特性;确定输入流和输出流的边界,从而分离出变换中心;完成“第一级分解”;完成“第二级分解”;采用启发规则对得到的程序结构的初始结果进一步精化。,事务分析 当数据

11、流具有明显的事务特性时,则应该采用事务分析法处理问题。事务分析是从事务流型的数据流图导出程序结构,它的步骤与变换分析基本类似,主要差别是从数据流图到程序结构的映射,相关规则及处理参见教材。,设计优化不能工作的最佳设计是值得怀疑的。设计应该追求能够满足所有功能和性能要求,遵循设计原理和启发式规则的软件。早期精化 尽量在设计的早期对软件结构进行精化,对不同的软件结构进行评价和比较,力求“最好”结果。,少而简 优化时,只要不违反模块化原则,应该使用尽可能少的模块;只要满足信息要求,应该使用尽可能简单的数据结构。简洁的结构容易调试和维护。对时间复杂性有特殊要求的应用,优化过程会延续到详细设计甚至编码阶

12、段。,对时间有特殊要求的软件优化对策优先设计并精化软件结构;借助CASE工具模拟分析运行时的性能,找出低效部分;详细设计时对最耗时的模块仔细推敲;用高级语言编码;必要时,对大量占用CPU资源的模块用低级语言重新编码。即“先让它干起来,再让它快起来”。,模块设计原则 启发式规则(用于改进设计、提高质量)提高模块独立性(高内聚,低藕合)模块规模应该适中(3060个语句行为宜)深度、宽度、扇出和扇入都应适当,启发式规则(用于改进设计、提高质量)模块的作用域应该在控制域之内 追求所有受判定影响的模块都从属于作出判定的那个模块。尽可能降低模块接口的复杂程度 接口复杂或不一致是紧偶合或低内聚的征兆,也是软

13、件发生错误的主要原因之一。设计单入口单出口的模块(易理解维护)模块功能应该可以预测(降低维护开销),教材购销系统的结构设计示例 采用结构化设计方法导出教材购销系统的总体结构图,包括初始SC图,最终SC图(按改进规则修改调整)。精化数据流图 销售子系统:SRS中的数据流图共有6个,加工1.4包含登记售书和打印领书单两项功能。为了提高模块独立性,将其分解为两个加工,让原来的加工1.4专门处理登记售书,新添一个加工1.7专管打印领书单。,细化修改SRS中的DFD 采购子系统:来自书库报管员的“进书通知”,不仅本子系统要用其修改教材库存F1和待购教材数量F5,还要传递信息给销售子系统,通知学生补售教材

14、。“登记进书”和“补售教材”属于两个不同子系统,补售只能在登记之后进行。,精化数据流图 为了避免补售时在键盘上重复录入“进书通知”的内容,在系统中增加一个“进书登记表”文件F7,文件F7的组成可以是 进书登记表=书号+书名+数量+登记标志+补售标志其中两个标志的初值均为“假/0”,执行“登记”和“补售”功能后即改“假”为“真/1”。,修改后销售子系统的DFD(数据流未标名),1.1,学生,学生,1.2,1.3,1.5,1.6,1.7,1.4,修改后采购子系统的DFD(数据流未标名),销售,书库保管员,2.3,2.1,2.2,文件名称,确定数据流图的类型 修改后销售子系统的DFD中,加工1.1与

15、1.6可视为传入部分,加工1.7与1.3可视为传出部分,加工1.2,1.4,1.5属变换部分。加工1.4和1.5均不产生输出数据,不应列入传出部分。经分析,图上的两条虚线划分出的边界应该相对合理,于是传入部分就包含两个加工:加工1.1与加工1.6。加工1.1用于初次出售,产生传入数据流“有效购书单”。加工1.6用于补售,产生传入数据流“补售书单”。,确定数据流图的类型 一次售书活动,只能执行一种功能:要么初售,要么补售,即在任何一次售书操作中,二者必居其一。加工1.2左方两种传入流不会同时出现,通常在加工1.2左方添加符号表示这类现象。修改后销售子系统的DFD包括两个动作分支:初售与补售,可视

16、为一个事务型结构。这两个分支只有第一个加工不同,其余的加工都是共用的。,确定数据流图的类型 数据流图整体上属于事务型结构,但其两个动作分支又都具有变换型结构。修改后采购子系统的DFD也是具有两个动作分支的事务型结构。第一个动作分支是“统计缺书”,包含加工2.1和2.2;第二个动作分支是“登记进书”,包含加工2.3。统计缺书分支具有变换型结构的特征,加工2.1是它的传入部分,加工2.2是它的传出部分,没有变换中心,待购教材表F5就是这个分支的传入数据,也是它的传出数据。,画出SC图框架,分解动作分支,补充动作与细节 考虑销售子系统的初始SC图:初售与补售的大部分操作是相同的,因此,在动作层与细节

17、层有很多共享模块。登记缺书模块仅在有教材售缺时才被调用,其调用线的始端应加菱形选择符。,销售子系统的初始SC图,改进SC图,导出最终SC图 考虑改进系统上层框架:本例共有四种可选功能,即初售、补售、统计缺书和登记进书。为了减少调用层次,两个事务层可以合并为一层。,最终SC图的上层框架,改进SC图,导出最终SC图 改进“获得购/售书单”分支:初售时,对购书单要进行两种有效性检查,即学生是否用这些书;以前有没有购买过这些书。据此,“获得有效购书单”分支的改进结果。,改进SC图,导出最终SC图“获得补售书单”分支的改进结构如上图。读“进书登记表”文件时,对每一书号,首先检查它的两个标志:登记标志和补售标志,仅当该书号已经登记但尚未补售时,才生成补售书单。为了便于在计算机上实现,做出两处调整:把“登记售书”模块从由“开发票”模块调用调整为由“开领书单”模块调用;把“打印发票”模块从由“初售”模块直接调用调整为“开发票:模块的下级模块。,改进后初售动作分支的最终SC图,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号