软件工程导论class6总体设计.ppt

上传人:小飞机 文档编号:6441954 上传时间:2023-10-31 格式:PPT 页数:67 大小:1.18MB
返回 下载 相关 举报
软件工程导论class6总体设计.ppt_第1页
第1页 / 共67页
软件工程导论class6总体设计.ppt_第2页
第2页 / 共67页
软件工程导论class6总体设计.ppt_第3页
第3页 / 共67页
软件工程导论class6总体设计.ppt_第4页
第4页 / 共67页
软件工程导论class6总体设计.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《软件工程导论class6总体设计.ppt》由会员分享,可在线阅读,更多相关《软件工程导论class6总体设计.ppt(67页珍藏版)》请在三一办公上搜索。

1、软件工程导论第 6 课,第 5 章 总体设计,第5章 总体设计,分析阶段“做什么”软件设计“怎样做”将分析模型转换为软件设计,第5章 总体设计,总体设计的两项任务:划分出组成系统的物理元素-程序、文件、数据库、人工过程和文档 设计软件的结构-确定每个程序的模块组成及模块之间的相互关系。,第5章 总体设计,软件设计是后续开发步骤及软件维护工作基础如果没有设计,只能建立一个不稳定的系统结构,第5章 总体设计,从工程管理的角度来看,软件设计分两步完成总体设计(概要设计),将软件需求转化为数据结构和软件的系统结构。详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。,5.1 设

2、计过程,总体设计的过程(两个主要阶段):系统设计:确定系统的具体实现方案。结构设计:确定软件结构。,软件设计的9个步骤,1设想供选择的方案,提出各种可能的实现方案以需求分析阶段的数据流图为出发点,画自动化边界,形成不同的实现系统方案设想把数据流图中的处理分组的各种可能方法,抛弃在技术上行不通的分组方法余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统,2 选取合理的方案,从前一步得到的一系列供选择的方案中选取若干个合理的方案通常至少选取低成本、中等成本和高成本的三种方案在此基础上分析员对每种方案准备四份文档:(1)系统流程图(2)组成系统的物理元素清单(3)成本/效益分析(4)实现

3、这个系统的进度计划,3 推荐最佳方案,综合分析对比各种合理方案的利弊,从中选出一种自己认为是最理想的方案推荐用户和技术专家应认真审查所推荐的最佳系统如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人进一步审批在使用部门的负责人也接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶段结构设计,4 功能分解,首先是进行结构设计,确定系统是由哪些模块组成 的,以及这些模块之间的关系,确定软件体系结构、数据结构其次是过程设计,确定每个模块的处理过程确定详细的数据结构、算法为确定软件结构首先需要从实现角度把复杂的功能进一步分用算法描述仔细分析数据流图中的每

4、个处理,如果一个处理 的功能过分复杂,必须把它的功能适当地分解成一系列比较 简单的功能应该使每个功能对大多数程序员而言都是明显易懂的工具:系统层次图System Design Hierarchy及(输入/输出图)HIPO,5 设计软件结构,任务:确定模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块 再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能:方法:层次图 结构图 面向数据流的设计方法,6 设计数据库,任务:在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据库模式设计:确定数据库的逻辑结构,常见的数据库形式有关系、层次或

5、网状等子模式设计:为系统中各用户设计出各自的数据视图存储模式设计:确定数据库的空间需求、存储格式、索引组成等,7 制定测试计划,优点:早期阶段考虑测试问题,促使软件设计人员在设计时注意提高软件的可测试性,8 书写文档,(1)系统说明主要内容 系统流程图:描绘系统构成方案、组成系统的物理元素 成本/效益分析 对最佳方案的概括描述、精化的数据流图 用层次图或结构图描绘的软件结构 用IPO图或其它工具简要描述各个模块的算法 模块间接口关系、建立需求、功能和模块三者之间的交叉参照关 系,8 书写文档,用户手册:根据总体设计阶段的结果,修改更正在需求分 析阶段产生的初步的用户手册测试计划:包括测试策略,

6、测试方案,预期的测试结果,测试进度计划等等。详细的实现计划数据库设计结果,9审查和复审,技术审查管理复审:部门的负责人从事,5.2 设计原理,5.2.1 模块化模块:由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个 总体标识符代表它模块化:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足 用户的需求。,5.2 设计原理,模块化依据:设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量(时间)。对于两个问题P1和P2如果 C(P1)C(P2),显然E(P1)E(P2)C(P1

7、+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)结论:如果一个问题由P1和P2两个问题组合而成,那么它的复杂程度大于分别考虑每个问题时的复杂程度之和,即把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了,5.2 设计原理,模块化优点软件结构清晰使软件容易测试和调试,提高软件的可靠性模块化能够提高软件的可修改性模块化有助于软件开发工程的组织管理。,5.2.2 抽象,定义:抽出事物的本质特性而暂时不考虑它们的细节。处理复杂问题的方法:忽略细节,分层理解问题,自顶向下层层加细。模块化可以提出许多抽象的层次,不同的层次用不同的方法解决问题 例:开发一个CAD软件,实现

8、一个二维绘图系统的全部功能,供低级计算机辅助设计使用。,5.2.2 抽象,抽象层次I:用问题所处环境的术语来描述这个软件。该软件包括一个计算机绘图界面,向绘图员显示图 形,以及一个数字化仪界面,用以代替绘图板和丁字 尺。所有直线、折线、矩形、圆及曲线的描画、所有 的几何计算、所有的剖面图和辅助视图都可以用这个 CAD软件实现。,5.2.2 抽象,抽象层次II:任务需求的描述。列出“What”而不是“How”。CAD SOFTWARE TASKS:user interaction task;2-D drawing creation task;graphics display task;drawi

9、ng file management task;END,5.2.3 逐步求精,定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。依据:Miller法则-一个人在任何时候都只能把注意力集中在(72)个知识块上原则:把精力集中在与当前开发阶段最相关的那些方面上,而忽略那些对整体解决方案来说虽然是必要的,然而目前还不需要考虑的细节,这些细节将留到以后再考虑,5.2.3 逐步求精,实质:把一个时期内必须解决的种种问题按优先级排序的技术,确保每个问题都将被解决,而且每个问题都将在适当的时候被解决,一个细化的过程抽象与求精是互补的过程 抽象过程,数据,忽略底层细节 求精设计中揭示出低层细节,5.

10、2.4 信息隐藏和局部化,信息隐藏原理:应该这样设计和确定模块,使得一 个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的隐藏模块的实现细节,“细节隐藏”独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息局部化:把一些关系密切的软件元素物理地放得彼此靠近优点:易于软件的修改,错误传播大大减少,5.2.5 模块独立,模块独立:每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单独立性的重要性有效的模块化的软件比较容易开发出来独立的模块比较容易测试和维护定性标准度量 内聚Cohesion:衡量一个模块内部各个元素彼此结合的紧密程度耦合Coupling:

11、衡量不同模块彼此间互相依赖(连接)的紧密程度,1 耦合,数据耦合Data coupling:两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据控制耦合Control coupling:传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现)特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素,1 耦合,公共环境耦合Common coupling:当两个或多个模块通过一个公共数据环境相互作用时,公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上 的文件、物理设备等等内容耦合Content coupling:,控制耦合Control co

12、upling:传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),公共环境耦合Common coupling:当两个或多个模块通过一个公共数据环境相互作用时,公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存 储介质上的文件、物理设备等等两个模块的公共环境,下面两种可能耦合,内容耦合Content Coupling(1)一个模块访问另一个模块的内部数据;(2)一个模块不通过正常入口而转到另一个模块的内部;(3)两个模块有一部分程序代码重叠(只可能出现在汇编程序中);(4)一个模块有多个入口(这意味着一个模块有几种功能)。,原则:尽量使用数据耦合,少用控制耦合,限制公共耦

13、合的范围,完全不用内容耦合,设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合,完全不用内容耦合。,数据耦合,控制耦合,公共环境耦合,内容耦合,低,高,2 内聚,低内聚 中内聚 高内聚偶然内聚 过程内聚 顺序内聚逻辑内聚 通信内聚 功能内聚时间内聚设计时应该力求做到高内聚,中内聚也可用实践表明内聚更重要。,高内聚,顺序内聚Sequential cohesion:如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺 序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据)功能内聚Functional cohesion:如果模块内所有处理元素属于一个整体,完成一个单一的

14、功能,5.3 启发规则,人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得出了一些启发式规则。这些规则不是普遍适用的,但在许多场合能给软件工程师有益的启示。下面介绍7条启发式规则,5.3 启发规则,1 改进软件结构提高模块独立性设计出软件的初步结构以后,应该审查分析这个结构,通过模块分解或合并,力求降低耦合提高内聚2 模块规模应该适中过大不易理解(60行)太小则接口开销过大注意分解后不应降低模块的独立性,5.3 启发规则,3 深度、宽度、扇出和扇入都应适当深度:软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度层数过多则应该考虑合并宽度:软件结构内同一个层次上的模块

15、总数的最大值宽度越大系统越复杂,5.3 启发规则,3 深度、宽度、扇出和扇入都应适当扇出:一个模块直接控制(调用)的模块数目扇出过大意味着模块过分复杂,需要控制和协调过多的下级 模块扇出过小(例如总是1)也不好3或4(扇出的上限通常是59)扇入:直接调用它的上级模块个数不能违背模块独立原理单纯追求高扇入,3 深度、宽度、扇出和扇入都应适当,深度、宽度、扇出和扇入都应适当原则:顶层扇出比较高,中层扇出较少,底层扇入到公共的实用模块中去(底层模块有高扇入。,4模块的作用域应该在控制域之内,模块的作用域定义为受该模块内一个判定影响的所有模块的集合。模块的控制域是这个模块本身以及所有直接或间接从属于它

16、的模块的集合例:在图5.2中模块A的控制域是A、B、C、D、E、F等模块的集合,5 力争降低模块接口的复杂程度应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致6 设计单入口单出口的模块不要使模块间出现内容耦合容易理解,维护7 模块功能应该可以预测只要输入的数据相同就产生同样的输出,5.4 描绘软件结构的图形工具,层次图和HIPO图层次图功能:用来描绘软件的层次结构层次图符号说明:矩形框代表模块方框间的连线表示调用关系(而不像层次方框图那样表示组成关系)适用范围:自顶向下设计,注意:直线表示调用关系,层次图和HIPO图,HIPO(层次图加输入/处理/输出)图功能:用来描绘软件的层次结构

17、符号描述:矩形框代表模块方框间的连线表示调用关系(而不像层次方框图那样表示组成关系)在H图(层次图)里除了最顶层的方框之外,每个方框都加了编号,层次图和HIPO图,和H图中每个方框相对应,应该有一张IPO图描绘这个方框代表的模块的处理过程。HIPO图中的每张IPO 图内都应该明显地标出它所描绘的模块在H图中的编号,以便追踪了解这个模块在软件结构中的位置,5.4.2 结构图,Yourdon提出的结构图,一个有力工具功能:描绘软件结构的图形工具符号描述:方框代表模块,框内注明模块的名字或主要功能箭头(或直线)表示模块的调用关系带注释的箭头表示模块调用过程中来回传递的信息尾部是空心圆表示传递的是数据

18、尾部是实心圆表示传递的是控制信息,结构图的附加符号,注意:层次图和结构图并不严格表示模块的调用次序层次图和结构图并不指明什么时候调用下层模块层次图作为描绘软件结构的文档,结构图并不合适由层次图导出结构图的过程,可以作为检查设计正确性和评价模块独立性的好方法,5.5面向数据流的设计方法,基本思路:面向数据流的设计方法定义了一些映射,利用这些映射把数据流图变换成软件结构。5.5.1 概念信息流的类型决定了映射的方法信息流有两种类型:变换流,事务流,1 变换流,信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。当数

19、据流图具有这些特征时,这种信息流称为变换流相应于取得数据、变换数据、给出数据,变换型系统结构图由 输入、中心变换和输出等三部分组成,时间,输入流,输出流,变换流,外部表示,内部表示,信息,1事务流,数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这 类数据流应该划为一类特殊的数据流,称为事务流事务中心的任务 接收输入数据(输入数据又称为事务);分析每个事务以确定它的类型;根据事务类型选取一条活动通路。,事务型系统结构图,3 设计过程,设计过程不是一成不变的。运用之妙存于怀心,5.5.2 变换分析,变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流

20、特点的数据流图按预先确定的模式映射成软件结构。下面通过一个例子说明变换分析的方法。,1 例子,汽车仪表板,假设功能如下所示:1 通过模数转换实现传感器和微处理机接口;2 在发光二极管面板上显示数据;3 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;4 指示加速或减速;5 超速警告:如果车速超过55英里/小时,则发出超速警告铃声。,2 设计步骤,第1步复查基本系统模型第2步复查并精化数据流图第3步确定数据流图具有变换特性还是事务特性第4步确定输入流和输出流的边界,从而孤立出变换中心第5步完成“第一级分解”第6步完成“第二级分解”第7步使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化,2 复查并精化数据流图,对需求分析阶段得到的数据流图认真复查,精化。确保是正确的逻辑模型。每个处理都 代表一个规模适中相对独立的子功能。,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号