软件工程讲稿05.ppt_第1页
软件工程讲稿05.ppt_第2页
软件工程讲稿05.ppt_第3页
软件工程讲稿05.ppt_第4页
软件工程讲稿05.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 软件设计,1 软件设计的目标和任务,2 软件设计基础,3 模块的独立性,4 结构化设计方法,5 数据设计及文件设计,6 过程设计,主要内容包括:,讨论要点:,(1)如何将分析模型转换为软件设计? (2)作为软件工程师,在软件设计方面应使用哪些基本原则和概念?,第四章 软件设计,1 软件设计的目标和目的,软件需求:解决“做什么” 软件设计:解决“怎么做” 1.1 软件设计的任务 问题结构(软件需求) 软件结构 从软件需求规格说明书出发,形成软件的具体设计方案。,将分析模型转换为软件设计,数据 字典,数据 流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对,描 述,象,分析模

2、型,设计模型,第四章 软件设计,1.软件的总体结构主要回答的问题,软件的组成部分 软件的层次关系 模块的内部处理逻辑 模块之间的界面,第四章 软件设计,2. 软件设计的问题,工具 如何描述软件的总体结构? 方法 用什么方法由问题结构导出软件结构? 评估准则 什么样的软件结构是“最优的”?,3. 软件设计方法,结构化设计方法(SD) 面向数据结构的设计方法(JSD方法) 面向对象的设计方法(OOD),主要讲述 这三种方法,4. 软件设计分为两个阶段:,(1) 概要设计(总体设计) 确定软件结构及各组成成份(子系统或模块)间的相互关系,确定系统的整体数据结构。 (2) 详细设计(过程设计) 确定模

3、块内部的算法和数据结构,产生描述各模块程序过程的详细文档。,第四章 软件设计,5. 软件设计的主要过程,1)依据需求分析的基础,设想解决问题的最佳方案,并制订相应的详细执行计划。在方案中,准备如下四份资料: 系统流程图; 组成系统的物理元素清单; 成本和效益分析; 实现系统的进度计划。 (将书上的过程简化了。简化后更接近实际。),2)功能分解,设计软件结构,并对每个模块的功能加以描述。 主要方法如下(包括结构设计和过程设计): (1) 采用某设计方法,将一个复杂系统按功能划分成模块。 (2) 确定每个模块的功能。 (3) 确定模块之间的调用关系。 (4) 确定模块之间的接口,即模块之间传递的信

4、息。 (5) 评价模块结构的质量。 (6) 确定每个模块的内部处理过程。 3)设计数据库结构。 包括如下几个内容: 模式设计; 子模式设计; 完整性与安全性设计; 优化。,第四章 软件设计,4)制定测试计划。 在软件开发早期制定测试计划,能够促使设计人员在设计软件时就充分注意到提高软件的可测试性。 5)书写文档。 (完成下列文档的书写) 系统说明书:主要包括系统流程图、系统构成方案、组成系统的物理元素 清单、成本/效益分析;方案描述及细化的DFD;软件结构图;用IPO图或 其他工具(如PDL语言)简要描述的各个模块算法;模块间接口关系,以及 需求、功能和模块三者间的交叉参照关系等。 用户手册:

5、修改在系统分析阶段所形成的用户手册。 测试计划:包括测试策略、测试方案、预期测试结果、测试进度计划等。 详细实施计划:里程表,进度管理工具。 数据库设计:包括数据库管理系统的选择、模式、子模式、完整性和安 全性、以及优化方法,DD等。 6)审查与复审:技术人员的技术审查与管理人员的复审。,第四章 软件设计,2 软件设计的概念和原理,1. 软件结构 2. 软件过程 3. 模块化 4. 抽象 5. 信息隐蔽 6. 信息局部化,第四章 软件设计,1.软件体系结构,软件体系结构包括两部分: (1)过程构件(模块)的层次结构 (2)数据构件,第四章 软件设计,控制结构是 模块间关系的表示,也叫程序结构。

6、,控制结构的图例,控制结构的层次规则:,只有一个顶层(0层)模块; 0层外任一模块都会在它的邻层存在一个模块与它有关; 同层模块间不发生联系;,第四章 软件设计,软件结构度量术语:,宽度,深 度,深度:模块的层数; 宽度:同层模块的最多个 数; 扇入:调用同一个模块的 模块个数 扇出:模块所直接调用的 模块个数,扇出,扇入,2.软件过程,第四章 软件设计,软件过程用以描述各模块的处理细节,即算法的详细描述,包括对下层模块控制的操作细节等。,3.模块化(Modularity),模块化是好的软件设计的一个基本准则。 高层模块 从整体上把握问题,隐蔽细节。 分解 复杂问题 较小问题 分解 可减少求解

7、问题时所需要的总的工作量。,例:将问题(P1+P2)分解为P1、P2,结果如何? 设函数C(x)定义为问题x的复杂程度,函数E(x)确定解决问题x需要的工作量。 对问题P1和P2,若 C(P1) C(P2), 则 E(P1) E(P2) 成立。(解决复杂问题的工作量较大) 对于给定问题(P1+P2) , 显然有 C(P1+P2) C(P1)+C(P2) 所以也有 E(P1+P2) E(P1)+E(P2) “各个击破”理论(分而治之),第四章 软件设计,模块化和软件成本,成本或工作量,模块数量,软件总成本,集成成本,成本/模块,M,最小成本区域,第四章 软件设计,4. 抽象(Abstractio

8、n),抽象原则应用举例 Windows NT一体化的I/O系统设计,文件管理 网络管理 设备管理 高速缓冲存储器, ,对虚拟文件的字节流,虚拟文件可为任何设备和实体。,抽象,第四章 软件设计,5. 信息隐蔽(Information Hiding),模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。,软件的质量因素(包括如下四个方面),可维护性 可靠性 可理解性 效率,第四章 软件设计,信息隐蔽的目的是 提高模块的独立性,减少修改或维护时的影响面,即提高了系统的可维护性。,6.信息局部化,把关系密切的软件元素在物理上彼此放得比较靠近(局部化

9、)。 优点:可维护性好 可靠性好 可理解性好,3 模块的独立性,1.模块独立性的概念 模块独立的含义: 模块完成独立的功能; 符合信息隐蔽和信息局部化原则; 模块间关联和依赖程度要尽量小。,第四章 软件设计,2. 模块独立性的度量,模块独立性取决于模块的内部和外部特征。 SD方法提出的定性的度量标准有: 模块之间的耦合性 模块自身的内聚性,用三个封装级别表示的软件结构,原始 代码行,0级,程序模型 (子程序或过程),1级,2级,类/对象结构,第四章 软件设计,结构设计(或1级)标准,用以管理每一对封装级别的元素之间的相互关系。,内聚是指度量一个给定的程序内的多行代码的单一功能性,以确定是否达到

10、该程序所要实现的目的。反映模块内部的紧密程度。 耦合性用来度量程序之间联系的次数和强度。反映模块间的紧密程度。,第四章 软件设计,上表的扩展:包括2级封装(所有的类),类的内聚是模仿了一个程序的内聚。 类的耦合性是一种度量类之间联系的次数和强度的方法。,第四章 软件设计,第四章 软件设计,1) 模块独立性的度量之一:耦合性,模块间相对独立性(相互依赖程度)的度量; 耦合性越高,模块独立性越弱。,耦合强度依赖的因素: 一模块对另一模块的引用 一模块向另一模块传递的数据量 一模块施加到另一模块的控制的数量 模块间接口的复杂程度,第四章 软件设计,模块间耦合的类型,低 无直接耦合 耦 数据耦合 合

11、标记耦合 性 控制耦合 外部耦合 公共耦合 高 内容耦合,模 块 独 立 性,弱,(低耦合),强,(中耦合),(较强耦合),(强耦合),第四章 软件设计,(1) 无直接耦合,模块1,模块2,模块3,模块4,第四章 软件设计,两个模块没有直接关系(模块1和模块2),模块独立性最强。,(2) 数据耦合,第四章 软件设计,一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。数据耦合属松散耦合。,(3) 标记耦合(特征耦合),第四章 软件设计,如两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系, 则称这两个模块间存在标记耦合。,标记耦合举

12、例,计算水电费,计算水费,计算电费,住户情况,水费,电费,住户情况,“住户情况”是一个数据结构,图中模块都与此数据结构有关。 “计算水费”和“计算电费”本无关,由于引用该数据结构产生了依赖关系,它们之间也是标记耦合。,将标记耦合修改为数据耦合举例,计算水电费,计算水费,计算电费,本月 用水量,本月 用电量,水费,电费,第四章 软件设计,(4) 控制耦合,第四章 软件设计,一个模块向下属模块传递的信息(如开关量、标志等控制被调用模块决策的变量)控制了被调用模块的内部逻辑。,控制耦合举例,A,计算平均分 或最高分,B,平均/最高 (控制信号),成绩,第四章 软件设计,控制耦合增加了理解和编程的复杂

13、性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖。 去除模块间控制耦合的方法: (1) 将被调用模块内的判定上移到调用模块中进行; (2) 被调用模块分解成若干单一功能模块。,改控制耦合为数据耦合举例,计算平均分,B1,平均成绩,最高成绩,计算最高分,B2,A,(5) 外部耦合,第四章 软件设计,一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。 外部耦合必不可少,但这种模块数目应尽量少。,(6) 公共耦合(公共数据区耦合),第四章 软件设计,一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。 公共数据区指: 全局数据

14、结构; 共享通讯区; 内存公共覆盖区等。,模块A、B、C间 存在错综复杂的联系。,公共耦合举例,(1) 软件可理解性降低; (2) 诊断错误困难; (3) 软件可维护性差; (4) 软件可靠性差。 (公共数据区及全程变量无保护措施) 慎用公共数据区和全程变量!,公共耦合存在的问题:,第四章 软件设计,(7) 内容耦合,一模块直接访问 另一模块的内部 信息(程序代码 或数据)。,最不好的耦合形式 !,A,B,A,B,模块代码 部分重叠,Entry1 Entry1 ,多入口模块,一模块不通过正常入口,进入另一模块的内部。,第四章 软件设计,模块化设计的原则和目标:,第四章 软件设计,耦合是影响软件

15、复杂程度和设计质量的重要因素! 目标:建立模块间耦合度尽可能松散的系统。,如何降低模块间耦合度?,(1) 尽量使用数据耦合; 少用控制耦合; 限制公共耦合的范围; 坚决避免使用内容耦合! (2) 降低接口的复杂性,第四章 软件设计,2) 模块独立性的度量之二:内聚性,一个模块内部元素在功能上相互关联的强度。 设计目标:高内聚 (模块在软件过程中完成单一的任务),模块的内聚性类型,低 偶然内聚 0分 逻辑内聚 1分 内 时间内聚 3分 聚 过程内聚 5分 性 通信内聚 7分 信息内聚 9分 高 功能内聚10分,模 块 独 立 性,弱(功能分散),强(功能单一),第四章 软件设计,低内聚模块举例,

16、为工程分析包执行错误处理的模块,当计算的数据超出预定义的边界时调用该模块,它完成下列任务: (1)根据初始计算的数据计算补充数据; (2)在用户的工作站上生成错误报告; (3)执行用户要求的跟踪计算; (4)更新数据库; (5)使选择后续处理的菜单有效。 虽然上述任务是松散相关的,但每一项都是独立的功能实体,最好作为独立的模块来完成各个功能。,第四章 软件设计,(1)偶然内聚(巧合内聚),模块内各部分间无联系!,A,B,C,M,MOVE O TO R READ FILE F MOVE S TO T,模块M中的三个语句没有任何联系! 缺点:可理解性差,可修改性差。,例:,第四章 软件设计,(2)

17、 逻辑内聚,第四章 软件设计,把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。,E、F、G逻辑功能相似,组成新模块EFG,缺点: 增强了耦合程度(控制耦合); 不易修改; 效率低。,(3) 时间内聚(经典内聚),第四章 软件设计,模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。 例如: 初始化系统模块; 系统结束模块; 紧急故障处理模块等 均是时间性聚合模块。,(4) 过程内聚(顺序性组合),第四章 软件设计,模块内各处理成分相关,且必须以特定次序执行。,过程内聚模块举例,(5) 通信内聚,第四章 软件设计,模块内各部分使用相同的输入数据,或产生相同的输出结果。,通信内聚模块举例,产生 工资报表,计算 平均工资,职工工资记录,职工工资报表,平均工资,产生职工工资报表并计算平均工资模块,(6) 信息内聚,第四章 软件设计,模块完成多个功能,各功能都在同一数据结构上操作,每一功能有唯一的入口。,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论