软件工程第五章总体设计ppt培训课件

上传人:aa****6 文档编号:53980524 上传时间:2018-09-06 格式:PPT 页数:105 大小:1.20MB
返回 下载 相关 举报
软件工程第五章总体设计ppt培训课件_第1页
第1页 / 共105页
软件工程第五章总体设计ppt培训课件_第2页
第2页 / 共105页
软件工程第五章总体设计ppt培训课件_第3页
第3页 / 共105页
软件工程第五章总体设计ppt培训课件_第4页
第4页 / 共105页
软件工程第五章总体设计ppt培训课件_第5页
第5页 / 共105页
点击查看更多>>
资源描述

《软件工程第五章总体设计ppt培训课件》由会员分享,可在线阅读,更多相关《软件工程第五章总体设计ppt培训课件(105页珍藏版)》请在金锄头文库上搜索。

1、1,软 件 工 程,2,第五章 总体设计,设计过程 设计原理 启发规则 描绘软件结构的图形工具 面向数据流的设计方法,3,5.1 设计过程,概要设计的任务设计实现软件的最佳方案设计软件体系结构,4,1.设想供选择的方案在数据流程图的基础上,一个边界一个边界设想并列出供选择的方案。 不评价这些供选择的方案,5.1 设计过程,5,通常,选取的这些方案中至少应包括 低成本、中成本和高成本的三种方案类型。对每个合理方案要提供以下几方面资料:(1)系统流程图;(2)数据字典;(3)成本效益分析;(4)实现这个系统的进度计划。,5.1 设计过程,6,2.选取合理的方案从上一步得到的一系列供选择的方案中选取

2、若干个合理的方案,通常至少选取低成本、中等成本和高成本的三种方案。 根据系统分析确定的目标,来判断哪些方案是合理的。,5.1 设计过程,7,3.推荐最佳方案综合分析对比各种合理方案的利弊,推荐一个最佳的方案,并为最佳方案制定详细的实现计划。,5.1 设计过程,8,4.功能分解对流程图进一步细化,进行功能分解,5.1 设计过程,9,5.设计软件结构 软件结构反映系统中模块的相互调用关系:顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,最下层的模块完成最具体的功能。 软件结构通过层次图或结构图来描绘,可以直接从数据流程图映射出软件结构。,5.1 设计过程,10,对于大

3、型系统的设计,通常分为两个阶段:结构设计和过程设计。 结构设计:确定系统由哪些模块组成,以及这些模块之间的相互关系。 过程设计:确定每个模块的处理过程。 其中,结构设计是总体设计阶段的任务,而过程设计则是详细设计阶段的任务。,5.1 设计过程,11,6.数据库设计数据库的应用越来越广泛,目前大多数的系统都要用到数据库技术。数据库设计是一项专门的技术,包括模式设计、子模式设计、完整性和安全性设计和优化处理等。,5.1 设计过程,12,7.制定测试计划在软件开发的早期阶段提前考虑软件的测试计划是很有必要的。这样能促使软件设计人员在设计时注意到软件的测试问题,从而有利于提高软件的可测试性。,5.1

4、设计过程,13,8.书写文档 文档包括: 系统说明 用户手册 测试计划 详细的实现计划 数据库设计结果,5.1 设计过程,14,9.审查和复审 后管理审查 先技术审查,5.1 设计过程,15,软件设计准则,模块化 抽象 逐步求精 信息隐藏 模块独立,5.2 软件设计准则,16,1. 模块化模块是由边界元素限定的相邻的程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符来代表它。在高级语言中,模块具体表现为函数、子程序、过程等。一个模块具有输入/输出(接口)、功能、内部数据和程序代码四个特征。 模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集

5、成起来构成一个整体,可以完成指定的功能满足用户的需求。,模块化与模块独立,17,当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本(工作量)确实减少了;但是,随着模块数目增加,设计模块间接口所需要的工作量也将增加。每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小。,图3.1 模块化和软件成本的关系,模块化与模块独立,18,人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。,抽象,(1) 过程的抽象 在软件工程

6、中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。 (2) 数据抽象 在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。,20,逐步求精,定义:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。”,求精要求设计者细化原始陈述,随着每个后续求精(细化)步骤的完成而提供越来越多的细节。抽象与求精是一对互补的概念。,21,信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。实际上,应该隐藏的不是有关模块的一切信息,而是模块的实现细节。,信息隐藏,问题:“为了得到最好的一组模块,应该

7、怎样分解软件”。,22,开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。,模块独立,有效的模块化(即具有独立的模块)的软件比较容易开发出来;,独立的模块比较容易测试和维护。,23, 耦合(Coupling),耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统,24,例1:A访问C的内部数据或不通过正常入口而转入C的内部。,独立性由弱到强(耦合程度由强到弱)排列为: 内容耦合(Content Coupling): 一个模块直接影响另一个,25,例2:部分代码重叠(常出现在汇编程序中),例3:一个模块有多个入口(功能), The least de

8、sirable,26, 公共耦合 (Common coupling):几个模块共享一个数据区域,问题: 公共部分的改动将影响所有调用它的模块; 公共部分的数据存取无法控制; 复杂程度随耦合模块的个数增加而增加。,公共区可以是:全程数据区、共享通信区、内存公共覆盖区、任何介质上的文件、物理设备等。,27,图中存在公共耦合,假设模块A、C、E都存取全程数据区(如公用一个磁盘文件)中的一个数据项。如果A模块读取该项数据,然后调用C模块对该项重新计算,并进行数据更新。,28,如果此时C模块错误地更新了该项数据,在往下的处理中模块E读该数据项时出现错误。表面上看,问题由模块E产生,实际上由模块C引起。,

9、29,控制耦合(Control coupling):一个模块通过传递控制信息来控制另一个模块,接口单一,但仍然影响被控模块的内部逻辑。, 数据耦合(Data coupling): 只有数据在模块之间进行交换, The most desirable.,30, 低内聚: 偶然内聚(Coincidental cohesion), 逻辑内聚(Logical cohesion) 例如:, 内聚 (Cohesion): 一个模块内各元素结合的紧密程度. Goal: as cohesive as possible.,31, 时间内聚(Temporal cohesion):模块内的功能在同一时间段内完成 例如

10、:系统的初始化 问题:不同功能混在一个模块中,有时共用部分编码,使局部功能的修改牵动全局。, 中内聚: 过程内聚(Procedural cohesion):模块内的处理是相关的,而且必须以特定顺序执行 例如:,32, 通信内聚(Communicational cohesion):模块中所有元素都用同一个输入数据或产生同一个输出数据 例如:从同一磁带上读取不相干的数据 可能破坏独立性。, 高内聚: 顺序内聚(Sequential cohesion):模块内的处理元素和统一个功能密切相关,而且这些处理必须顺序执行。 功能内聚(Functional cohesion):所有元素合力完成一个单一功能,

11、缺一不可,33,模块独立,内聚度量一个模块内的各 个元素彼此结合的紧密程 度。设计时应该力求做到 高内聚。,内聚,耦合是对一个软件结构内 不同模块之间互连程度的 度量。尽量使用数据耦合 ,少用控制耦合,限制公 共环境耦合的范围,完全 不用内容耦合。,耦合,34,5.3 启 发 规 则,改进软件结构提高模块独立性设计出软件的初步结构以后,应该审查分析这个结构,通过模块分解或合并,力求降低耦合提高内聚。,模块规模应该适中经验表明,一个模块的规模不应过大,最好能写在一页纸内(通常不超过60行语句)。,过小的模块开销大于有效操作,而且模块数目过多将使系统接口复杂。因此过小的模块有时不值得单独存在,特别

12、是只有一个模块调用它时,通常可以把它合并到上级模块中去而不必单独存在。,35,5.3 启 发 规 则,深度、宽度、扇出和扇入都应适当观察大量软件系统后发现,设计得很好的软件结构通常顶层扇出比较高,中层扇出较少,底层扇入到公共的实用模块中去(底层模块有高扇入)。,是一个模块直接控制(调用)的模块数目,是能够直接调用此模块的上级的模块数目,软件结构中控制的层数,同一层次上的模块总数的最大值,36, 深度 = 分层的层数。过大表示分工过细。 宽度 = 同一层上模块数的最大值。过大表示系统复杂度大。,37, 扇出 = 一个模块直接调用控制的模块数。 3 fan-out 9, 扇入 = 直接调用该模块的

13、模块数 在不破坏独立性的前提下,fan-in 大的比较好。,38,对扇出、扇入过大的改进:,举例:下列模块结构图是否合适,优化后的模块结构图,- 增加中间层降低扇出,41,模块的作用域应该在控制域之内模块的作用域定义为受该模块内一个判定影响的所有模块的集合。模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。 在一个设计得很好的系统中,所有受判定影响的模块应该都从属于做出判定的那个模块,最好局限于做出判定的那个模块本身及它的直属下级模块。,5.3 启 发 规 则,42, 控制域,M的控制域为 M,A,B,C, 作用域:M中的一个判定所影响的模块。 例如:,上例中A的作用超出了控制

14、域。改进方法之一,可以把A中的 if 移到M中;方法之二,可以把C移到A下面。,练习:判断下列模块结构图是否合理?,图a.作用域在控制域之外 图b.作用域在控制域之内,正确实现 图c.理想的作用域和控制域,练习:如何消除下列模块结构图中的不合理,方案1:,方案2:,45,力争降低模块接口的复杂程度模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。,5.3 启 发 规 则,如:QUAD-ROOT(TBL,X)求一元二次方程的根的模块,其中TBL,X都为数组,分别代表方程的系数和方程的根。应该使接口更简单,如:QUAD-ROOT(A,B,C,RO

15、OT1,ROOT2)A、B、C是方程的系数,ROOT1,ROOT2是方程的根。,46,设计单入口单出口的模块不要使模块间出现内容耦合,设计出的每一个模块都应该只有一个入口一个出口。,5.3 启 发 规 则,47,5.3 启 发 规 则,模块功能应该可以预测模块的功能应该能够预测,但也要防止模块功能过分局限。,举例:下列模块功能是否能预测,void print(int i)int p5,j;for (j=0;j5;j+)scanf(“%d”,模块功能的完善化,一个完整的模块应当有以下几部分: 执行规定的功能的部分; 出错处理的部分。当模块不能完成规定的功能时,必须回送出错标志,出现例外情况的原因

16、。 如果需要返回数据给它的调用者,在完成数据加工或结束时, 应当给调用者返回一个状态码。,51,5.4 描绘软件结构的图形工具,1 层次图和HIPO图通常使用层次图描绘软件的层次结构。在图3.2中已经非正式地使用了层次图。,模块的作用域和控制域,52,5.4 描绘软件结构的图形工具,53,HIPO图是美国IBM公司发明的“层次图加输入处理输出图”的英文缩写。为了使HIPO图具有可追踪性,在图(即层次图)里除了顶层的方框之外,每个方框都加了编号。编号方法与本书第3章3.5.2节中介绍的数据流图的编号方法相同。和H图中的每个方框相对应,应该有一张IPO图(或表)描绘这个方框代表的模块的处理过程。,5.4 描绘软件结构的图形工具,54,5.4 描绘软件结构的图形工具,55,结构图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。因为按照惯例总是图中位于上方的方框代表的模块调用下方的模块,即使不用箭头也不会产生二义性,为了简单起见,可以只用直线而不用箭头表示模块间的调用关系。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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