(2.5)--05章 总体设计软件工程.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《(2.5)--05章 总体设计软件工程.ppt》由会员分享,可在线阅读,更多相关《(2.5)--05章 总体设计软件工程.ppt(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5 5章章 总体设计总体设计软件工程导论(第软件工程导论(第6版)版)第第5 5章章 总体设计总体设计总体设计的基本目的就是回答“概括地说,系统应该如何实现”这个问题,因此,总体设计又称为概要设计或初步设计。总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。章节目录章节目录 5.1 设计过程设计过程 5.2 设计原理设计原理 5.3 启发规则启发规则 5.4 描绘软件结构的图形工具描绘软件结构的图形工具 5.5 面向数据流的设计方法面向数据流的设计方法 主 要内 容 5.1 设计过程设计过程 5.2 设计原理设计原理 5.
2、3 启发规则启发规则 5.4 描绘软件结构的图形工具描绘软件结构的图形工具 5.5 面向数据流的设计方法面向数据流的设计方法5.1 设计过程设计过程用自然语言书写的系统规格说明书,可能存在矛盾、二义性、含糊性、不完整性及抽象层次混乱等问题。矛盾是指一组相互冲突的陈述。二义性是指读者可以用不同方式理解的陈述。含糊性不完整性抽象层次混乱是指在非常抽象的陈述中混进了一些关于细节的低层次陈述。总体设计过程系统设计阶段结构设计阶段1.设想供选择的方案2.选取合理的方案3.推荐最佳方案4.功能分解5.设计软件结构6.设计数据库7.制定测试计划8.书写文档9.审查和复审总总体体体体设计设计步步步步骤骤5.1
3、 设计过程设计过程典型的总体设计步骤典型的总体设计步骤1.设想供选择的方案设想供选择的方案在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求从中选出最佳方案。需求分析阶段得出的数据流图是总体设计的极好的出发点。设想供选择的方案的一种常用的方法是,设想把数据流图中的处理分组的各种可能的方法,抛弃在技术上行不通的分组方法(例如,组内不同处理的执行时间不相容),余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统。5.1 设计过程设计过程典型的总体设计步骤典型的总体设计步骤2.选取合理的方法选取合理的方法 应该从前一步得到的一系列供选择的方案中选取若干个合理的方案,通常至少选取低成本
4、、中等成本和高成本的3种方案。在判断哪些方案合理时应该考虑在问题定义和可行性研究阶段确定的工程规模和目标,有时可能还需要进一步征求用户的意见。对每个合理的方案,分析员都应该准备下列4份资料。(1)系统流程图。(2)组成系统的物理元素清单。(3)成本/效益分析。(4)实现这个系统的进度计划。5.1 设计过程设计过程典型的总体设计步骤典型的总体设计步骤3.推荐最佳方案推荐最佳方案用户和有关的技术专家应该认真审查分析员所推荐的最佳系统,如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人进一步审批。在使用部门的负责人也接受了分析员所推荐的方案之后,将进入总体设计过
5、程的下一个重要阶段结构设计。5.1 设计过程设计过程典型的总体设计步骤典型的总体设计步骤4.功能分解功能分解为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件(或数据库)。对程序(特别是复杂的大型程序)的设计,通常分为两个阶段完成:首先进行结构设计,然后进行过程设计。为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。5.1 设计过程设计过程典型的总体设计步骤典型的总体设计步骤5.设计软件件结构构通常程序中的一个模块完成一个适当的子功能。应该把模块组织成良
6、好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,完成程序的一个子功能,最下层的模块完成最具体的功能。5.1 设计过程设计过程典型的总体设计步骤典型的总体设计步骤6.设计数据数据库 对于需要使用数据库的那些应用系统,软件工程师应该在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据库。7.制定制定测试计划划在软件开发的早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。第7章具体讨论。5.1 设计过程设计过程典型的总体设计步骤典型的总体设计步骤8.书写文档写文档应该用正式的文档记录总体设计的结果,在这个阶段应该完成的文档通常有
7、下述几种。(1)系系统说明明(2)用用户手册手册(3)测试计划划包括测试策略,测试方案,预期的测试结果,测试进度计划等(4)详细的的实现计划划(5)数据数据库设计结果果5.1 设计过程设计过程典型的总体设计步骤典型的总体设计步骤9.审查和复和复审最后应该对总体设计的结果进行严格的技术审查,在技术审查通过之后再由客户从管理角度进行复审。主 要内 容 5.1 设计过程设计过程 5.2 设计原理设计原理 5.3 启发规则启发规则 5.4 描绘软件结构的图形工具描绘软件结构的图形工具 5.5 面向数据流的设计方法面向数据流的设计方法5.2 设计原理设计原理5.2.1 模块化模块化 模模块块是由边界元素
8、限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。模块模块是构成程序的基本构件。模模块块化化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。5.2 设计原理设计原理5.2.1 模块化模块化模块化是为了使一个复杂的大型程序能被人的智力所管理,是软件应该具备的唯一属性。下面论证上面结论。设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量(时间)。对于两个问题P1和P2,如果:C(P1)C(P2)显然,E(P1)E(P2)根据人类解决一般问题的经验,另一个
9、有趣的规律是:C(P1+P2)C(P1)+C(P2)5.2 设计原理设计原理5.2.1 模块化模块化也就是说,如果一个问题由P1和P2两个问题组合而成,那么它的复杂程度大于分别考虑每个问题时的复杂程度之和。综上所述,得到下面的不等式:E(P1+P2)E(P1)+E(P2)这个不等式导致“各个击破”的结论把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。5.2 设计原理设计原理5.2.1 模块化模块化由上面的不等式似乎还能得出下述结论:如果无限地分割软件,最后为了开发软件而需要的工作量也就小得可以忽略了。事实上,还有另一个因素在起作用,从而使得上述结论不能成立
10、。如图,当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本(工作量)确实减少了;但是,随着模块数目增加,设计模块间接口所需要的工作量也将增加。根据这两个因素,得出了图中的总成本曲线。每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小。5.2 设计原理设计原理5.2.1 模块化模块化 虽然目前还不能精确地决定M的数值,但是在考虑模块化的时候总成本曲线确实是有用的指南。在第六章和5.3节讲解。采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。模块化也有助于软件开发工程的组织管理,一个复杂的大型程序可以由许多程序员分工编写不同的模块,并且可以进一步分配技术熟练的
11、程序员编写困难的模块。5.2 设计原理设计原理5.2.2 抽象抽象 人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。软件工程过程的每一步都是对软件解法的抽象层次的一次精化。在可行性研究阶段,软件作为系统的一个完整部件;在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的;当由总体设计向详细设计过渡时,抽象的程度也就随之减少了;最后,当源程序写出来以后,也就达到了抽象的最
12、低层。5.2 设计原理设计原理5.2.3 逐步求精逐步求精逐步求精定义为为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。逐步求精最初是由Niklaus Wirth提出的一种自顶向下的设计策略。按照这种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。通过逐步分解对功能的宏观陈述而开发出层次结构,直至最终得出用程序设计语言表达的程序。p求精实际上是细化过程。p抽象与求精是一对互补的概念。5.2 设计原理设计原理5.2.4 信息隐藏和局部化信息隐藏和局部化 信息隐藏原理:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。
13、局部化是指把一些关系密切的软件元素物理地放得彼此靠近。如果在测试期间和以后的软件维护期间需要修改软件,使用信息隐藏原理作为模块化系统设计的标准就会带来极大好处。5.2 设计原理设计原理5.2.5 模块独立模块独立模块的独立性很重要,因为:有效的模块化(即具有独立的模块)的软件比较容易开发出来。独立的模块比较容易测试和维护。模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。5.2 设计原理设计原理5.2.5 模块独立模块独立1 耦合耦合耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。模块耦合分为数
14、据耦合、控制耦合、特征耦合、公共环境耦合和内容耦合5.2 设计原理设计原理5.2.5 模块独立模块独立数据耦合数据耦合两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。数据耦合是低耦合。系统中至少必须存在这种耦合。控制耦合控制耦合传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),则这种耦合称为控制耦合。控制耦合是中等程度的耦合。特征耦合特征耦合当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合。5.2 设计原理设计原理5.2.5 模块独立模块独立公共公共环境耦合境耦合当两个或多个模块通过一个公共数据环境相互
15、作用时,它们之间的耦合称为公共环境耦合。公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等。公共环境耦合的复杂程度随耦合的模块个数而变化,当耦合的模块个数增加时复杂程度显著增加。5.2 设计原理设计原理5.2.5 模块独立模块独立只有两个模块有公共环境,耦合有下面两种可能。(1)一个模块往公共环境送数据,另一个模块从公共环境取数据。这是数据耦合的一种形式,是比较松散的耦合。(2)两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介于数据耦合和控制耦合之间。5.2 设计原理设计原理5.2.5 模块独立模块独立2)内聚内聚内聚衡量一个模块内部各个元
16、素彼此结合的紧密程度。内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。内聚分为三大类低内聚、中内聚和高内聚。5.2 设计原理设计原理5.2.5 模块独立模块独立低内聚低内聚一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫做偶然内聚。一个模块完成的任务在逻辑上属于相同或相似的一类,则称为逻辑内聚。一个模块包含的任务必须在同一段时间内执行,就叫时间内聚。5.2 设计原理设计原理5.2.5 模块独立模块独立中内聚中内聚一个模块内的处理元素是相
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2.5-05章 总体设计软件工程 2.5 05 总体 设计 软件工程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内