2012-2013 第5章 总体设计

上传人:kms****20 文档编号:51398918 上传时间:2018-08-13 格式:PPT 页数:40 大小:582.50KB
返回 下载 相关 举报
2012-2013  第5章 总体设计_第1页
第1页 / 共40页
2012-2013  第5章 总体设计_第2页
第2页 / 共40页
2012-2013  第5章 总体设计_第3页
第3页 / 共40页
2012-2013  第5章 总体设计_第4页
第4页 / 共40页
2012-2013  第5章 总体设计_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《2012-2013 第5章 总体设计》由会员分享,可在线阅读,更多相关《2012-2013 第5章 总体设计(40页珍藏版)》请在金锄头文库上搜索。

1、软件工程与UML数据建模第五章 总体设计1总体设计的基本目的就是回答:“概括地说系统应该怎样做?”总体设计阶段的一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。 25.1 总体设计过程1、根据逻辑模型构想可实现的系统方案 2、筛选合理的方案(系统流程图、开发计划等) 3、推荐最佳方案(实现计划、各方面得到确认) 4、功能分解(进一步分解数据流图并加以说明) 5、设计软件结构(设计模块组织的层次结构) 6、设计数据库(根据数据库的结构、定义) 7、制定测试计划 8、书写文档(系统说明、用户手册、测试及实现计划 、数据库设计说明书) 9、审查与

2、复查31.功能分解结构设计确定程序由哪些模块组成,以 及这些模块之间的关系2.设计软件结构软件结构(即由模块组成的层次系统)可 以用层次图或结构图来描绘。 3.设计数据库4.书写文档6.审查和复审简化后的设计过程4模块是由边界元素限定的相邻程序元素的序 列。按照模块的定义,过程、函数、子程序和宏 等,都可作为模块。模块是构成程序的基本构件。通俗地讲、模块化就是将程序划分成独 立命名且可独立访问的模块,每个模块可独立完 成一个子功能,将若干个模块组合在一起,构成 一个系统来完成系统的整体功能。5.2 设计原理5.2.1 模块化5模块具有以下属性:接口:指模块的输入和输出;功能:指模块的作用;逻辑

3、:指模块执行的逻辑和数据;状态:指模块所处地位,如调用或被调用状态 ;模块化设计就是把大型软件按照一定的原则分解成若干相对独立又相互关联的较小模块的过程。6问题的复杂度 问题的整体复杂度大于分解小问题复杂度之 和设P是一个复杂问题,P分解成P1和P2;假设: C(P)代表问题P的复杂度,E(P)代表完成P所需要的工作量。大量的经验表明存在如下规律:复杂度 C(P1+P2) C(P1)+C(P2)工作量 E(P1+P2) E(P1)+E(P2)7由上面的不等式似乎得出下述结论:如果无限地分割软件,最后的工作量也就小 得可以忽略了?但事实上,参看下图中看到,当模块数目增加时,开发单个模块需要的成本

4、确实减少了;但 设计模块间接口所需要的工作量也将增加。根据 这两个因素,得出了图中的总成本曲线。每个程 序都相应地有一个最适当的模块数目M,使得系 统的开发成本最小。8图5.1 模块化和软件成本9逐步求精是人类解决复杂问题时所采用的最 为朴素也最为直接的方法。可以把逐步求精定义 为: “为了能集中精力解决主要问题而尽量推迟 对问题细节的考虑。”逐步求精之所以如此重要,是因为人类的认 知过程遵守Miller法则:一个人在任何时候都只 能把注意力集中在(72)个知识块数量之下。因此,必须考虑整体后再关注考虑细节。5.2.3 逐步求精10对抽象和求精的策略把握:辩证地看,抽象与求精是一对互补。抽象使

5、得设计者能够说明过程和数据,同 时却忽略低层细节。求精则帮助设计者在设计过程中逐步揭示出低层细节,从而完善及验证整体的正确性和可 行性。11信息隐藏原理指出:应该这样设计模块,使一 个模块内包含的信息对于不需要了解这些信息的模 块来说,是不能访问的。所谓局部化是指把一些关系密切的软件元素物 理地放得彼此靠近。在模块中使用局部变量是局部 化的一个例子。如果在软件维护期间需要修改软件,那么使用 信息隐藏原理作为模块化系统设计的标准就会带来 极大好处。5.2.4 信息隐藏和局部化12模块独立性的概念是模块化、抽象、信息隐藏 和局部化概念的直接结果。模块的独立程度可以有两个度量标准, 分别称 为内聚和

6、耦合。1.耦合耦合是对一个软件结构内不同模块之间互连程 度的度量。有以下几种模块的耦合等级:5.2.5 模块独立性131)无直接耦合模块之间无任何连接,耦合程度最低。但是,在一个软件系统中不可能所有模块之 间都没有任何连接。 2)数据耦合(这是理想、常见的耦合方式)如果模块调用之间相互传递的参数仅仅是传 递数据,那么这种耦合称为数据耦合。 3)特征耦合如果模块调用之间相互传递的参数为数据结 构,则它们称为特征耦合。144)控制耦合如果传递的信息中有控制信息,则这种耦合称为控制耦合。5)公共环境耦合当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合。例如:如两个模块之

7、间共享的数据很多,都通过参数传递可能很不方便,这时可以利用公共环境 耦合。156)内容耦合如果出现下列情况之一,两个模块间就发生了 内容耦合:一个模块访问另一个模块的内部数据;一个模块不通过正常入口而转到另一模块内部 ;一个模块有多个入口。 总之,在设计中应该采取下述设计原则:尽量 使用数据耦合,少用控制耦合和特征耦合,限制公 共环境耦合的范围,完全不用内容耦合。162. 内聚内聚标志模块内各个元素彼此结合的紧密程度 。1)偶然内聚如果一个模块完成一组任务,这些任务彼此间 无关系或关系是很松散的,就叫做偶然内聚。2)逻辑内聚如果一个模块完成的任务仅仅在逻辑上相似, 则称为逻辑内聚。3)时间内聚

8、如果一个模块包含的任务必须在同一段时间内 执行,就叫时间内聚。174)通信内聚如果模块中所有元素都使用同一个输入数据和 (或)产生同一个输出数据,则称为通信内聚。5)顺序内聚如果一个模块内一个处理元素的输出数据作为 下一个处理元素的输入数据,则称为顺序内聚。6)功能内聚如果模块内所有处理元素属于一个整体,完成 一个单一的功能,则称为功能内聚。高内聚、低耦合是总的设计原则,要牢记。18耦合 内聚最松散 无直接耦合偶然内聚 最低内聚数据耦合 逻辑内聚特征耦合时间内聚控制耦合通讯内聚公共环境耦合顺序内聚 最紧密 内容耦合功能内聚 最高内聚设计中尽量使用数据耦合,少用控制耦合和特 征耦合,限制公共环境

9、耦合的范围,完全不用内容 耦合。同时在模块设计内部选择高内聚。 191.模块独立性(高内聚,低耦合)准则2.模块大小准则。经验表明,一个模块的规模不应过大,最 好能写在一页纸内(通常不超过60行语句)。3.软件结构的形态准则(1)利用模块分解/合并技术和扇入/扇出技术使软件结构呈椭圆形. (2)争取(单一功能的)高扇入,避免高扇出。5.3 软件设计的优化准则204. 模块的作用范围/控制范围准则模块的作用范围定义为:受该模块内一个判定影响的所有模块的集合。模块的控制范围是:这个模块本身以及所有从属于它的模块的集合。模块的作用范围/控制范围准则指 : 判定的作用范围应局限于做出判定的那个模块的控

10、制范 围内。215. 力争降低模块接口的复杂程度 6. 设计单入口单出口的模块 7. 模块功能应该可以预测如果一个模块可以当做一个黑盒子,也就是说 ,只要输入的数据相同就产生同样的输出,这个模 块的功能就是可以预测的。225.4 描绘软件结构的图形工具一、层次图:(又称H图)层次图描绘软件的层次结构,将功能的分解描 绘成层次结构,用树形结构的层次将功能或模块 用方框(所属关系)连接描述出来。查询系统输入条件过滤数据组合条件输出结果添加条件修改条件删除条件显示打印23二、HIPO图:IBM公司将IPO(I/0图)加以层次结构的整体 标识成为“层次图加输入处理输出图”。 三、结构图(SC) 结构图

11、是描绘软件结构的图形工具,图中:用一个方框 代表一个模块,用方框之间的箭头(或直线)表示模块调用关系24a)传入模块 b)传出模块c)变换模块 d)控制模块e)源模块 f) 漏模块xyxyxy.xyxx1.结构图(SC)的六种模块:25图5.5 结构图的例子产生最佳解的一般结构26图5.6 M 判定为真时调用A,为假时调用B附加符号 菱形表示 选择调用TF27图5.7 模块M循环调用模块A、B、C附加符号 旋转箭头 表示循环28要注意的是:结构图(SC)所描述的含义 中并不能严格表示出模块的调用次序。也不指 明什么时候调用下层模块。只是表明了模块的 所属连接关系、处理功能。29因为软件系统大都

12、可以用数据流图表示,所以面向数据流的设计方法理论上可以设计任何软件的结构。通常所说的结构化设计方法(简称SD方法),也就是基于数据流的设计方法。5.5 面向数据流的设计方法30面向数据流的设计方法把信息流映射成软件 结构,信息流有下述两种类型变换流和事物流。 1. 变换流信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经 加工处理以后再沿输出通路变换成外部形式离开系 统5.5.1 概念31图5.8 变换流322. 事务流数据沿输入通路到达一个处理T,这个处理根 据输入数据的类型在若干个动作序列中选出一个来 执行。这类数据流称为事务流。下图中的处理T称为事务中心

13、,完成下述任务:(1)接收输入数据(事务);(2)确定事务它的类型;(3)根据事务类型选取一条活动通路。33图5.9 事务流343. 设计过程面向数据流方法逐步设计过程:精化数据流(DFD) 判别数据流类型(IPO及数据流类型)分析(变换分析或事务分析) 映射 (功能与模块) SC(设计结构图)35变换分析把具有变换流特点的数据流图按预先确定的模式映射成软件结构。见教材。5.5.2 变换分析36在数据流具有明显的事务特点时,也就是有一个明显的“发射中心”(事务中心)时,应采用事务分析方法。见教材。5.5.3 事务分析37应该在设计阶段尽量对软件结构进行精化 。力求得到“最好”的结果。5.5.4 设计优化38总体设计阶段的基本目的是确定系统概括的 说如何完成预定的任务。通过本章学习,应深入理解模块化设计和自向 下逐步求精的设计思想。设计时应该遵循的最主要的原理是模块独立原 理,也就是说,高内聚、低耦合。应该分清内聚的种类和耦合的种类及设计准则 。 5.6 小结39抽象和求精是一对互补的概念,也是人类解 决复杂问题时最常用、最有效的方法。面向数据流的设计方法(即DFD SC的映射方法 是传统结构化设计(SD)方法中的一项重要技术。40

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号