软件工程05总体设计.ppt

上传人:本田雅阁 文档编号:3301619 上传时间:2019-08-09 格式:PPT 页数:114 大小:1.81MB
返回 下载 相关 举报
软件工程05总体设计.ppt_第1页
第1页 / 共114页
软件工程05总体设计.ppt_第2页
第2页 / 共114页
软件工程05总体设计.ppt_第3页
第3页 / 共114页
软件工程05总体设计.ppt_第4页
第4页 / 共114页
软件工程05总体设计.ppt_第5页
第5页 / 共114页
点击查看更多>>
资源描述

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

1、个人成果,妥善保存,请勿传播,软件工程,张康立 Email:,个人成果,妥善保存,请勿传播,可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,软件使用与维护,软件生命周期,个人成果,妥善保存,请勿传播,软件开发的三个关联步骤,每个步骤都按某种方式进行信息变换,最后得到有效的计算机软件,个人成果,妥善保存,请勿传播,分析模型和设计模型的转换,将分析模型转换为软件设计,个人成果,妥善保存,请勿传播,软件设计是后续开发步骤及软件维护工作基础 如果没有设计,只能建立一个不稳定的系统结构,个人成果,妥善保存,请勿传播,软件设计的任务,从工程管理的

2、角度来看,软件设计分两步完成,个人成果,妥善保存,请勿传播,软件设计的任务,从工程管理的角度来看,软件设计分两步完成 总体设计(概要设计),将软件需求转化为数据结构和软件的系统结构。 详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。,个人成果,妥善保存,请勿传播,课程内容提纲,第3章:“总体设计” 总体设计过程 软件设计原理 软件设计中的启发规则 描绘软件结构的图形工具 面向数据流的设计方法,个人成果,妥善保存,请勿传播,总体设计过程,总体设计(概要设计或初步设计) 划分出组成系统的物理元素 程序、文件、数据库、人工过程和文档等 并不涉及物理元素内部设计 总体设计阶

3、段的一项任务是设计软件结构 确定系统中每个程序是由哪些模块组成的 以及这些模块相互间的关系,个人成果,妥善保存,请勿传播,总体设计过程,总体设计过程 总体设计过程一般分为两个阶段 系统设计阶段:确定系统的具体实现方案 结构设计阶段:确定软件的结构,个人成果,妥善保存,请勿传播,总体设计过程,总体设计的步骤 1 设想供选择的方案 提出各种可能的实现方案 以需求分析阶段的数据流图为出发点,画自动化边界,形成不同的实现系统方案 设想把数据流图中的处理分组的各种可能方法,抛弃在技术上行不通的分组方法 余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统,个人成果,妥善保存,请勿传播,总体设计

4、过程,总体设计的步骤 2 选取合理方案 从前一步得到的一系列供选择的方案中选取若干个合理的方案 通常至少选取低成本、中等成本和高成本的三种方案 在此基础上分析员对每种方案准备四份文档: 系统流程图 组成系统的物理元素清单 成本/效益分析 实现这个系统的进度计划,个人成果,妥善保存,请勿传播,总体设计过程,总体设计的步骤 3 推荐最佳方案 综合分析对比各种合理方案的利弊,从中选出一种自己认为是最理想的方案推荐 用户和技术专家应认真审查所推荐的最佳系统 如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人进一步审批 在使用部门的负责人也接受了分析员所推荐的方案之

5、后,将进入总体设计过程的下一个重要阶段结构设计,个人成果,妥善保存,请勿传播,总体设计过程,总体设计的步骤 4 功能分解 目标系统的实现一般要分两步进行: 首先是进行结构设计,确定系统是由哪些模块组成的,以及这些模块之间的关系 确定软件体系结构、数据结构 其次是过程设计,确定每个模块的处理过程 确定详细的数据结构、算法 结构设计是总体设计阶段的任务,而过程设计是详细设计阶段的任务。,个人成果,妥善保存,请勿传播,总体设计过程,总体设计的步骤 4 功能分解 为确定软件结构 首先需要从实现角度把复杂的功能进一步分解 用算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能

6、适当地分解成一系列比较简单的功能 应该使每个功能对大多数程序员而言都是明显易懂的,个人成果,妥善保存,请勿传播,总体设计过程,总体设计的步骤 5 设计软件结构 模块确定以后,每个模块的功能也就随之确定 把这些模块自顶向下组成一种良好的层次调用关系,就完成了软件结构设计的任务 如果数据流图已经细化到适当的层次,那么我们便可以从数据流图映射成软件结构图,总体设计过程,总体设计的步骤 6 设计数据库 数据库的设计一般包括如下几步: 模式设计:确定数据库的逻辑结构,常见的数据库形式有关系、层次或网状等 子模式设计:为系统中各用户设计出各自的数据视图 存储模式设计:确定数据库的空间需求、存储格式、索引组

7、成等,个人成果,妥善保存,请勿传播,个人成果,妥善保存,请勿传播,总体设计过程,总体设计的步骤 7 制定测试计划 在软件开发的早期阶段考虑测试问题 使软件设计人员在设计时注意软件的可测试性,总体设计过程,总体设计的步骤 8 书写文档 系统说明 系统流程图:描绘系统构成方案、组成系统的物理元素 成本/效益分析 对最佳方案的概括描述、精化的数据流图 用层次图或结构图描绘的软件结构 用IPO图或其它工具简要描述各个模块的算法 模块间接口关系、建立需求、功能和模块三者之间的交叉参照关系,个人成果,妥善保存,请勿传播,总体设计过程,总体设计的步骤 8 书写文档 用户手册 测试计划 测试策略、测试方案、预

8、期的测试结果、测试进度计划等 详细的实现计划 数据库设计结果 数据库系统的选择、模式、子模式、存储模式的设计结果等,个人成果,妥善保存,请勿传播,个人成果,妥善保存,请勿传播,总体设计过程,总体设计的步骤 9 复审 对总体设计的结果进行严格的技术审查 在技术审查通过之后再由使用部门的负责人从管理角度进行复审,个人成果,妥善保存,请勿传播,课程内容提纲,第3章:“总体设计” 总体设计过程 软件设计原理 软件设计中的启发规则 描绘软件结构的图形工具 面向数据流的设计方法,个人成果,妥善保存,请勿传播,软件设计原理,1. 抽象 抽象:人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某

9、些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。 抽象就是:抽出本质,忽略细节,分层理解,个人成果,妥善保存,请勿传播,软件设计原理,举例说明:软件工程各阶段的抽象 在可行性研究阶段,软件作为系统的一个完整部件; 在需求分析阶段,软件解法是使用在问题环境内熟悉的方式描述; 进入总体设计向详细设计过渡阶段,抽象的程度将随之减少; 最后当源程序被写出后,抽象则达到最低层,个人成果,妥善保存,请勿传播,软件设计原理,2. 模块化 模块:是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。 PASCAL或 Ada

10、这样的块结构语言中的BeginEnd对 C、C+和Java语言中的 . 对 过程、函数、子程序和宏等 面向对象方法学中的对象(见第9章)是模块,对象内的方法(或称为服务)也是模块,个人成果,妥善保存,请勿传播,软件设计原理,模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 模块化的数学依据 C(x) 定义问题x的复杂程度,E(x)确定解决问题x需要的工作量(时间),对于两个问题P1和P2有 如果 C(P1)C(P2) 显然 E(P1)E(P2) 当 C(P1+P2)C(P1)+C(P2) 则 E(P1

11、+P2)E(P1)+E(P2),个人成果,妥善保存,请勿传播,软件设计原理,E(P1+P2+Pn)E(P1)+E(P2)+ +E(Pn) 以上揭示了把一个复杂问题分成许多容易解决的小问题,原来问题将容易解决 每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小。,个人成果,妥善保存,请勿传播,软件设计原理,3. 逐步求精 逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。 其作用就在于它能帮助软件工程师把精力集中在与当前开发阶段最相关的那些方面上 忽略那些对整体解决方案来说虽然是必要的,然而目前还不需要考虑的细节,这些细节将留到以后再考虑。,个人成果,妥善保存,请勿传

12、播,软件设计原理,3. 逐步求精 Miller法则: 一个人在任何时候都只能把注意力集中在(72)个知识块上 Miller法则是人类智力的基本局限,我们不可能战胜自己的自然本性,只能接受这个事实,承认自身的局限性,并在这个前提下尽我们的最大努力工作,个人成果,妥善保存,请勿传播,软件设计原理,3. 逐步求精 抽象与求精是一对互补的概念 抽象使得设计者能够说明过程和数据,同时却忽略低层细节;可以把抽象看作是一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法 求精则帮助设计者在设计过程中逐步揭示出低层细节 这两个概念都有助于设计者在设计演化过程中创造出完整的设计模型,个人成果,妥善保存

13、,请勿传播,软件设计原理,4. 信息隐蔽和局部化 信息隐蔽原理 应该这样设计和确定模块,使得一个模块内包含的信息(过程或数据)对于不需要这些信息的模块来说,是不能访问的 局部化 是把一些关系密切的软件元素物理地放得彼此靠近。显然, 局部化有助于实现信息隐藏,个人成果,妥善保存,请勿传播,软件设计原理,5. 模块独立性 模块独立性的概念是模块化、抽象化、信息隐蔽概念的一个直接产物 强调模块的独立性,有两个重要原因: 模块化程度较高的软件容易编制 独立的模块比较容易维护和测试 模块独立是好设计的关键,而设计又是决定软件质量的关键环节,个人成果,妥善保存,请勿传播,软件设计原理,5. 模块独立性 模

14、块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合 耦合(Coupling) & 内聚(Cohesion),个人成果,妥善保存,请勿传播,软件设计原理,5.1 耦合 耦合:是对一个软件结构内不同模块之间互连程度的度量 耦合强弱取决于模块间接口复杂程度,进入或访问一个模块的点,以及通过接口的数据 模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性,个人成果,妥善保存,请勿传播,软件设计原理,耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统,个人成果,妥善保存,请勿传播,软件设计原理,例1:A访问C的内部数据或不通过正常入口而转入C的内部,独立性

15、由弱到强(耦合程度由强到弱)排列为: 内容耦合: 一个模块直接影响另一个 模块,调用或操纵其他模块的数据,个人成果,妥善保存,请勿传播,软件设计原理,例2:部分代码重叠(常现在汇编程序中),例3:一个模块有多个入口(功能),软件设计原理,如果发生下列情形,模块间就发生了内容耦合 (1) 一个模块直接访问另一个模块的内部数据 (2) 一个模块不通过正常入口转到另一模块内部 (3) 两个模块有一部分程序代码重迭(只可能出现在汇编语言中) (4) 一个模块有多个入口,个人成果,妥善保存,请勿传播,个人成果,妥善保存,请勿传播,软件设计原理, 公共耦合:几个模块共享一个数据区域,缺陷: 公共部分的改动

16、将影响所有调用它的模块; 公共部分的数据存取无法控制; 复杂程度随耦合模块的个数增加而增加。,个人成果,妥善保存,请勿传播,软件设计原理, 特征耦合:把整个数据结构作为参数传递而被调用模块只使用其中一部分数据元素时就出现了特征耦合。, 控制耦合:一个模块通过传递控制信息来控制另一个模块,接口单一,但影响被控模块的内部逻辑,个人成果,妥善保存,请勿传播,软件设计原理, 数据耦合: 只有数据在模块之间进行交换,只通过参数传递基本类型的数据 标记耦合与数据耦合形式相同,区别在于调用时传递的参数是否为基本数据类型, 标记耦合: 模块间通过参数表传递记录信息,这个记录是某一数据结构的子结构,而不是简单变

17、量, 非直接耦合: 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的 非直接耦合的模块独立性最强,个人成果,妥善保存,请勿传播,软件设计原理,关于“耦合”的使用原则 尽量使用数据耦合 少用控制耦合和特征耦合 限制公共环境耦合的范围 完全不用内容耦合,个人成果,妥善保存,请勿传播,软件设计原理,5.2 内聚 内聚:标志着一个模块内各个元素彼此结合的紧密程度 内聚和耦合都是进行模块化设计的有力工具 实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上,个人成果,妥善保存,请勿传播,软件设计原理,5.2 内聚 内聚有七种,由弱到强分别为 偶然内聚-逻辑内聚-时间

18、内聚-过程内聚-通信内聚-顺序内聚-功能内聚,个人成果,妥善保存,请勿传播,软件设计原理,5.2 内聚 偶然内聚 (低内聚) 如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫做偶然内聚 有时在写完一个程序之后,发现一组语句在两处或多处出现,于是把这些语句作为一个模块以节省内存,这样就出现了偶然内聚的模块。,个人成果,妥善保存,请勿传播,软件设计原理,5.2 内聚 逻辑内聚 (低内聚) 如果一个模块完成的任务在逻辑上属于相同或相似的一类,由参数决定模块执行的功能,则称为逻辑内聚 例如,一个模块产生各种类型的全部输出,个人成果,妥善保存,请勿传播,软件设计原理,5.2 内

19、聚 时间内聚 (低内聚) 如果一个模块包含的任务必须在同一段时间内执行,就叫时间内聚 例如,模块完成各种初始化工作或当一个模块处理意外故障时,这个模块必须在中断处理的同时完成关闭文件、报警和保留现场等任务,这就构成了时间内聚。,个人成果,妥善保存,请勿传播,软件设计原理,5.2 内聚 过程内聚 (中内聚) 如果一个模块内的处理元素是相关的而且以特定次序执行,则称为过程内聚。 使用程序流程图作为工具设计软件时,常常通过研究流程图确定模块的划分,这样得到的往往是过程内聚的模块,个人成果,妥善保存,请勿传播,软件设计原理,5.2 内聚 通信内聚 (中内聚) 如果模块中所有元素都使用同一个输入数据和(

20、或)产生同一个输出数据,则称为通信内聚。 例如,一个模块的功能是从输入的文件中读出数据,然后由这些数据产生报表,同时也由这些数据产生单项报表。 例如:从同一磁带上读取不相干的数据 可能破坏独立性,个人成果,妥善保存,请勿传播,软件设计原理,个人成果,妥善保存,请勿传播,软件设计原理,5.2 内聚 顺序内聚 (高内聚) 如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输人数据),则称为顺序内聚。 例如,一个解非线性方程组的模块,它的功能依次为:输入常数项系数,求解,输出方程组的解。,个人成果,妥善保存,请勿传播,软件设计原理,

21、5.2 内聚 顺序内聚 (高内聚),个人成果,妥善保存,请勿传播,软件设计原理,5.2 内聚 功能内聚 (高内聚) 如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。 例如,一个模块只完成矩阵加法运算或只打印输出一种特定的表格功能。,个人成果,妥善保存,请勿传播,软件设计原理,七种内聚的优劣评分,将得到如下结果: 功能内聚 10分 时间内聚 3分 顺序内聚 9分 逻辑内聚 1分 通信内聚 7分 偶然内聚 0分 过程内聚 5分 对于一个模块而言,模块自身的内聚越强,模块间的耦合就越小,模块所具有的独立性就越好。可以说高内聚低耦合是我们进行软件设计的一贯原则,个人成果,妥善保

22、存,请勿传播,软件设计原理, 耦合、内聚与模块独立性的关系:,个人成果,妥善保存,请勿传播,课程内容提纲,第3章:“总体设计” 总体设计过程 软件设计原理 软件设计中的启发规则 描绘软件结构的图形工具 面向数据流的设计方法,个人成果,妥善保存,请勿传播,软件设计中的启发规则,结构设计原则,个人成果,妥善保存,请勿传播,软件设计中的启发规则,结构设计原则 总结经验“启发式规则” 找到改进软件设计,提高软件质量的途径 1. 提高模块独立性 争取低耦合、高内聚(增加内聚 减少耦合) 2. 模块规模适中 过大不易理解;太小则接口开销过大 注意分解后不应降低模块的独立性,个人成果,妥善保存,请勿传播,软

23、件设计中的启发规则,3. 选择适当的深度、宽度、扇出和扇入,个人成果,妥善保存,请勿传播,软件设计中的启发规则,3. 选择适当的深度、宽度、扇出和扇入 深度 = 分层的层数 过大表示分工过细 宽度 = 同一层上模块数的最大值 过大表示系统复杂度大,个人成果,妥善保存,请勿传播,软件设计中的启发规则, 扇出 = 一个模块直接调用控制的模块数。 3 fan-out 9, 扇入 = 直接调用该模块的模块数 在不破坏独立性的前提下,fan-in 大的比较好。,个人成果,妥善保存,请勿传播,软件设计中的启发规则,3. 选择适当的深度、宽度、扇出和扇入 深度:表示软件结构中控制的层数 深度能粗略地标志一个

24、系统的大小和复杂程度,深度和程序长度之间有粗略的对应关系 宽度:表示软件结构中控制的总跨度 宽度是同一个层次上的模块总数的最大值,宽度越大系统越复杂;对宽度影响最大的因素是模块的扇出 扇出:表示一个模块直接控制(调用)的模块数目 扇出为3-4,上限扇出为5-9 扇入:表示有多少个上级模块直接调用该模块 扇入越大则共享该模块的上级模块数目越多。 软件结构一般要求顶层扇出比较高,中层扇出较少,底层模块有高扇入,个人成果,妥善保存,请勿传播,软件设计中的启发规则,4. 模块的作用域应在其控制域之内 模块的作用域 受模块判定条件影 响的所有模块集合 模块的控制域 模块本身以及所有 直接从属模块的集合,

25、个人成果,妥善保存,请勿传播,4. 作用域在控制域内 控制域,M的控制域为 M,A,B,C, 作用域:M中的一个判定所影响的模块。 例如:,上例(右图)中A的作用超出了控制域。改进方法之一,可以把A中的 if 移到M中;方法之二,可以把C移到A下面。,个人成果,妥善保存,请勿传播,软件设计中的启发规则,4. 模块的作用域应在其控制域之内 上移判断点:使该判断层次升高以扩大它的控制范围; 下移受判断影响的模块:将受判断影响的模块下移到判断所在模块的控制范围内,个人成果,妥善保存,请勿传播,软件设计中的启发规则,5. 降低接口的复杂程度 接口复杂可能表明模块的独立性差 6. 单出单入,避免内容耦合

26、 7. 模块功能可预测 相同输入必产生相同输出 反例:模块中使用全局变量或静态变量,则可能导致不可预测,软件模块结构的改进,模块功能的完善化 一个完整的模块应当有以下几部分: 执行规定的功能的部分; 出错处理的部分,当模块不能完成规定的功能时,必须回送出错标志,出现例外情况的原因 如果需要返回数据给它的调用者,在完成数据加工或结束时, 应当给它的调用者返回一个状态码。,消除重复功能,改善软件结构 完全相似 在结构上完全相似,可能只在数据类型上不一,此时可以采取完全合并的方法 局部相似 找出其相同部分,分离出去,重新定义成一个独立的下一层模块 还可以与它的上级模块合并,软件模块结构的改进,消除重

27、复功能,改善软件结构 完全相似 完全合并 局部相似 分离 与上级合并,软件模块结构的改进,模块的作用范围应在控制范围之内 尽可能减少高扇出结构,随深度增大扇入 如果一个模块的扇出数过大,就意味着该模块过分复杂,需要协调和控制过多的下属模块 应当适当增加中间层次的控制模块,软件模块结构的改进,避免或减少使用病态联接 应限制使用如下三种病态联接 1.直接病态联接 即模块A直接从模块B内部取出某些数据,或者把某些数据直接送到模块B内部,软件模块结构的改进,避免或减少使用病态联接 应限制使用如下三种病态联接 2.公共数据域病态联接,模块A和模块B通过公共数据域,直接传送或接受数据,而不是通过它们的上级

28、模块 这种方式将使得模块间的耦合程度剧增,它不仅影响模块和模块,而且影响与公共数据域有关联的所有模块,软件模块结构的改进,避免或减少使用病态联接 应限制使用如下三种病态联接 3.通信模块联接 即模块A和模块B通过通信模块TABLEIT传送数据。从表面看这不是病态联接,因为模块和模块B都未涉及通信模块TABLEIT的内部。 然而,它们之间的通信(即数据传送)没有通过它们的上级模块,从这个意义上讲,这种联接是病态的。,软件模块结构的改进,模块的大小要适中 模块大小,可以用模块中语句的数量来衡量 模块的大小应限制在一定的范围之内 一个模块的语句超过30行以后,可理解性迅速下降 通常规定其语句行数在5

29、0100左右,保持在一页纸之内,最多不超过500行,软件模块结构的改进,设计功能可预测的模块,但要避免过分受限制的模块 一个功能可预测的模块,不论内部处理细节如何,但对相同的输入数据,总能产生同样的结果 如果模块内部蕴藏有一些特殊的鲜为人知的功能时,这个模块就可能是不可预测的 对于这种模块,如果调用者不小心使用,其结果将不可预测,软件模块结构的改进,设计功能可预测的模块,但要避免过分受限制的模块 如果一个模块的局部数据结构的大小、控制流的选择或者与外界(人、硬软件) 的接口模式被限制死了,则很难适应用户新的要求或环境的变更 为了能够适应将来的变更,软件模块中局部数据结构的大小应当是可控制的,控

30、制流的选择对于调用者来说,应当是可预测的。而与外界的接口应当是灵活的。,软件模块结构的改进,软件应满足设计约束和可移植性 为了使得软件可以在某些特定的环境下能够安装和运行,对软件提出了一些设计约束和可移植的要求 例如,设计约束有时要求一个程序段在存储器中覆盖自身。当这种情况出现时,设计出来的软件程序结构不得不根据重复程度、访问频率、调用间隔等等特性,重新加以组织。,软件模块结构的改进,设计的后处理,为每一个模块写一份处理说明 为每一个模块提供一份接口说明 确定全局数据结构和局部数据结构 指出所有的设计约束和限制 进行概要设计的评审 进行设计的优化(如果需要和可能的话),个人成果,妥善保存,请勿

31、传播,课程内容提纲,第3章:“总体设计” 总体设计过程 软件设计原理 软件设计中的启发规则 描绘软件结构的图形工具 面向数据流的设计方法,个人成果,妥善保存,请勿传播,描绘软件结构的图形工具,总体设计阶段常用的几种图形工具 层次图 HIPO图 结构图(SC图),个人成果,妥善保存,请勿传播,描绘软件结构的图形工具,层次图和HIPO图 层次图:每个方框代表一个模块,方框间的连线表示调用关系 例如 正文加工系统,正文加工系统,输入,输出,编辑,加标题,存储,检索,列表,编目录,格式化,合并,修改,添加,删除,插入,个人成果,妥善保存,请勿传播,描绘软件结构的图形工具,层次图和HIPO图 HIPO图

32、:HIPO图是美国IBM公司发明的“层次加输入/处理/输出”图的英文缩写,个人成果,妥善保存,请勿传播,描绘软件结构的图形工具,HIPO图 和H图中每个方框相对应,应该有一张IPO图描绘这个方框代表的模块的处理过程,系统: 模块: 编号:,作者: 日期:,IPO图,被调用:,输 入:,调 用:,输 出:,处 理:,局部数据元素:,注 释:,个人成果,妥善保存,请勿传播,描绘软件结构的图形工具,结构图SC图 Yourdon提出的结构图是进行软件结构设计的一个有力工具 结构图反映程序中模块之间的层次调用关系和联系 它以特定的符号表示模块、模块间的调用关系和模块间信息的传递,个人成果,妥善保存,请勿

33、传播,描绘软件结构的图形工具,结构图SC图 模块:模块用矩形框表示,并用模块的名字标记它,个人成果,妥善保存,请勿传播,描绘软件结构的图形工具,结构图SC图 模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块,个人成果,妥善保存,请勿传播,描绘软件结构的图形工具,结构图SC图 模块间的信息传递 当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行 被调用模块在执行过程中又把它产生的数据或控制信息回送给调用模块,个人成果,妥善保存,请勿传播,描绘软件结构的图形工具,结构图SC图 在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地

34、调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C和模块D,个人成果,妥善保存,请勿传播,描绘软件结构的图形工具,结构图SC图,产生最佳解,计算最佳解,得到好输入,输出结果,编辑输入,读输入,显示结果,结果格式化,编辑结果,原始输入,原始输入,好输入,好输入,解,解,解,格式化的解,格式化的解,个人成果,妥善保存,请勿传播,描绘软件结构的图形工具,结构图SC图 通常用层次图作为描绘软件结构的文档 利用IPO图或数据字典中的信息得到模块调用时传递的信息 由层次图导出结构图的过程 导出结构图可以作为检查设计正确性和评价模块独立性的好方法,个人成果,妥善保存,请勿传播,

35、课程内容提纲,第3章:“总体设计” 总体设计过程 软件设计原理 软件设计中的启发规则 描绘软件结构的图形工具 面向数据流的设计方法,个人成果,妥善保存,请勿传播,面向数据流的设计方法,基本原理 又称为 SD:Structural Design 面向数据流的设计方法把信息流映射成软件结构。 信息流的类型决定了映射的方法 信息流有下述两种类型 变化流 事务流,个人成果,妥善保存,请勿传播,面向数据流的设计方法,基本原理 变换流 信息通常以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界”的形式离开系统,信息,时间,输入流,输出流,变换流,信息流,个人成果,妥善保存,请勿传播,面向数据流的

36、设计方法,基本原理 事务流 这种数据流是“以事务为中心的” 数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干动作序列中选出一个执行 (1)接收输入数据(输人数据又称为事务); (2)分析每个事务以确定它的类型; (3)根据事务类型选取一条活动通路。,个人成果,妥善保存,请勿传播,面向数据流的设计方法,基本原理 事务流 当信息流具有明显的“发射中心”时,可归结为事务流,T,事务,事务中心,. . .,活动通路,个人成果,妥善保存,请勿传播,面向数据流的设计方法,软件结构的标准形式 常见的软件结构标准型有两种: 变换型 事务型 (1)变换型结构 变换型结构的数据流图基本上呈线性形状

37、明显地分为输入、变换(加工)、输出三部分,输入部分,输出部分,变换部分,输入信息,正确 信息,结 果,数据,正确性检查,处理,显示,个人成果,妥善保存,请勿传播,面向数据流的设计方法,(1)变换型结构 变换流:取得数据、变换数据、给出数据 相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成,个人成果,妥善保存,请勿传播,面向数据流的设计方法,个人成果,妥善保存,请勿传播,面向数据流的设计方法,软件结构的标准形式 (2)事务型结构 系统的数据流图常呈辐射状; 一个加工(事务中心)将它的输入分离成若干种发散的数据流,从而形成若干条活动的路径,然后根据输入值选择其

38、中的一条路径处理,事务中心,处理,处理,处理,处理,分类,事务2,事务1,事务n,事务,个人成果,妥善保存,请勿传播,面向数据流的设计方法,事务,个人成果,妥善保存,请勿传播,面向数据流的设计方法,变换分析 变换分析 是一系列设计步骤的总称 经过这些步骤把具有变换流特点的数据流图映射成软件结构 设计步骤 (1) 复查基本系统模型 (2) 复查并精化数据流图 (3) 确定数据流图具有变换特性还是事务特性 (4) 确定输入流和输出流的边界,从而孤立出变换中心,个人成果,妥善保存,请勿传播,面向数据流的设计方法,变换分析 变换分析 设计步骤 (5) 完成“第一级分解”,把数据流图映射成系统模块结构,

39、即设计系统的上层模块结构 (6) 完成“第二级分解”,基于数据流图逐步分解高层模块结构,设计出下层模块 (7) 使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化,个人成果,妥善保存,请勿传播,面向数据流的设计方法,变换分析 应用案例:开发一个带有微处理器的汽车数字仪表板控制系统 功能描述 1)通过模数转换实现传感器和微处理机的接口; 2)在发光二极管在面板上显示如下数据: 显示每小时行驶的英里数(mph); 显示每加仑油行驶的英里数(mpg); 显示汽车是加速或减速行驶; 显示里程。 3)如果汽车的速度超过55英里/小时,则发出超速警告铃声。,个人成果,妥善保存,请勿传播,设计步骤

40、 1)复查基本系统模型 2)复查并精化数据流,个人成果,妥善保存,请勿传播,3)确定数据流图具有变换特性还是事务特性 4)确定输入流和输出流的边界,从而孤立出变换中心,输入流边界,输出流边界,I,P,O,第一步:DFD的分界,先分出I、P、O三块,个人成果,妥善保存,请勿传播,一般问题的一级分解方法:,个人成果,妥善保存,请勿传播,第二步:映射,个人成果,妥善保存,请勿传播,例:,个人成果,妥善保存,请勿传播,每个模块应附一简要说明描述 进出该模块的信息(接口描述) 模块内部的信息 过程陈述,包括主要判定点及任务等 对约束和特殊特点的简短讨论,第三步:修改-本着高内聚、低耦合的原则,个人成果,妥善保存,请勿传播,事务分析,个人成果,妥善保存,请勿传播,优化的前题是:“Get it to work, then make it fast.”,SD的总体过程,个人成果,妥善保存,请勿传播,软件设计主要任务是根据需求规格说明导出系统的实现方案,分为概要设计和详细设计两部分, 主要概念:模块化、抽象、信息隐蔽。尽量保证模块的独立性。, SD分析方法分为变换分析和事务分析,要将DFD转换为SC图,最后完成概要设计的文档,小结:面向数据流的设计方法,个人成果,妥善保存,请勿传播,本章结束, 下一章节导读:“详细设计”,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1