软件工程导论五版 五PPT课件_第1页
软件工程导论五版 五PPT课件_第2页
软件工程导论五版 五PPT课件_第3页
软件工程导论五版 五PPT课件_第4页
软件工程导论五版 五PPT课件_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

软件工程,杨,广东工业大学计算机科学学院软件工程系,第5章:总体设计,5.1设计过程,1。替代计划的假设,2。为每个合理的计划选择合理的计划:a .系统流程图b .形成系统的物理元素列表c .成本/效益分析d .系统实施时间表,3。推荐最佳方案4。功能分解5。设计软件结构。数据库设计、模式设计、子模式设计、完整性和安全性设计、优化7。制定测试计划8。编写文件系统描述用户手册测试计划详细实施计划数据库设计结果。审查和回顾5.2设计原则。如果一个大型程序只包含一个模块,人们很难理解。让函数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 P2)E(P1) E(P2),5.2.1模块化,5.2.2抽象,5.2.3逐步细化,模块的独立性2)独立模块更容易测试和维护。5.2.4信息的隐藏和定位,5.2.5模块的独立性,1 .耦合,耦合:指软件结构中不同模块之间的相互依赖(连接)程度。模块独立性的程度可以通过两个定性标准来衡量:耦合和内聚。模块间的耦合可分为四类:1)数据耦合两个模块只通过参数交换信息,交换的信息只是数据。数据耦合是最低程度的耦合。2)耦合两个模块的控制之间交换的信息包含控制信息。控制耦合是中等程度的耦合。在图中,模块a的内部处理程序根据从模块b传输的信息的状态来确定是执行c还是d,3)当两个或更多模块通过公共区域交互时的公共耦合耦合。公共区域可以是全过程数据区域、共享通信区域、存储器公共覆盖区域、任何介质上的文件、物理设备等。软件结构中有很多常见的耦合,这给错误诊断带来了困难。在图中,有常见的耦合。假设模块A、C和E都访问整个数据区中的一个数据项(例如一个公共磁盘文件)。如果模块A读取数据,则调用模块C重新计算数据并更新数据。如果模块c此时更新数据不正确,模块e将在下一个过程中读取数据项时出错。从表面上看,问题是由模块E引起的,但实际上是由模块C引起的。4)内容耦合一个模块与另一个模块的内容直接相关。内容耦合将给维护带来严重困难。在程序中,如果一个模块直接将程序转移到另一个模块,或者一个模块使用另一个模块中的数据,就会发生内容耦合。内容耦合是最高程度的耦合,应该避免。软件设计应尽可能追求松耦合,以避免强耦合,这样模块之间的连接越小,模块的独立性越强,模块的测试和维护就越容易。因此,建议尽可能使用数据耦合,少用控制耦合,限制普通耦合,完全不使用内容耦合。内聚性:模块内的元素彼此紧密结合的程度。它是一个模块内部组件整体统一性的度量。有七种常见的衔接方式。1)功能内聚如果一个模块中的所有处理元素只完成一个功能,则称为功能内聚。功能性衔接是最高程度的衔接。然而,在软件结构中,并不是每个模块都可以被设计成功能性的内聚模块。如果一个模块中的处理元素与同一个函数密切相关,并且这些处理元素必须按顺序执行,这称为顺序内聚。如图所示,用于寻找一元二次方程的根的模块由三个处理元素组成,并且在模块中有顺序衔接。一般来说,顺序衔接中一个处理元素的输出是另一个处理元素的输入。,3)通信内聚如果模块中的所有处理元素使用相同的输入数据和/或生成相同的输出数据,则称为通信内聚。如图所示,模块a的处理单元会根据同一个数据文件FILE的数据生成不同的表,因此具有通信的内聚性。沟通凝聚力有时被称为数据凝聚力。4)过程内聚如果模块中的处理元素是相关的,并且必须以特定的顺序执行,那么它被称为过程内聚。过程内聚和序列内聚的区别在于,在序列内聚中,数据流从一个处理单元流向另一个处理单元,而过程内聚控制从一个动作流向另一个动作。5)时间内聚(TemporalCohesion)如果一个模块包含必须在同一时间段内执行的任务,则称之为时间内聚。也叫瞬时凝聚力。例如,完成各种初始化任务的模块或处理故障的模块具有时间内聚性。如图所示,在“紧急故障处理模块”中,“关闭文件”、“报警”和“保持现场”等任务必须同时处理,不得中断。如果一个模块完成的任务在逻辑上属于相同或相似的类别,它被称为逻辑内聚。如图所示,当甲、乙、丙三个模块合并成作业成本法模块后,作业成本法模块就是逻辑衔接模块。对逻辑内聚模块的调用通常需要一个函数开关,上层调用模块向其发送一个控制信号,以在多个相关函数中选择并执行某个函数。这种内聚性很差,增加了模块之间的连接,并且不容易修改。(7)巧合内聚如果一个模块被完成几个不相关的功能的处理元素意外地组合在一起,它被称为偶然内聚。偶然的凝聚力是最糟糕的凝聚力。经常出现这种错误的情况之一是,有时在编写程序后,会发现一组语句出现在多个位置,因此为了节省空间,这些语句被设计为模块,导致偶尔的内聚。如图所示,模块a、b和c有一个共同的代码段w,因此w被分成一个模块,w中的这些语句没有联系。如果在测试中发现模块a不需要做“X=Y*Z”,而应该做“X=Y * Z”,那么就很难保持w。在软件设计中,我们应该尽最大努力实现高内聚力,尽最大努力使用较少的中等内聚力而不是低内聚力。5.3启发式规则,1。改进软件结构,提高模块独立性2。模块大小应适中,3。深度、宽度、扇出和扇入都应该合适:软件结构中控制的层数;宽度:软件结构中同一级别模块总数的最大值;扇出:一个模块直接控制(调用)其他模块的数量;扇入:一个模块调用其他模块的次数。模块的范围应该在控制域之内,范围:受模块内决策影响的所有模块的集合。控制域:模块本身及其所有从属模块的集合。例如,QUAD-ROOT(TBL,X)是一个寻找二次方程根的模块,其中TBL,X都是数组,分别代表方程的系数和方程的根。接口应该更简单,例如:四根(A,B,C,ROOT1,ROOT2)A,B,C是方程的系数,ROOT1,ROOT2是方程的根。5。努力降低模块接口的复杂性。设计单入口和单出口模块,7。模块功能应该是可预测的,5.4图形工具5.4.1层次图和HIPO图,HIPO图是:“层次图输入/处理/输出图”,5.4.2结构图,5.5面向数据流的设计方法,而面向数据流的设计(DFOD)是与数据流分析(DFA)相对应的结构软件设计技术。面向数据流的设计将产生基于数据流图的软件模块结构图。数据流可分为两种类型:1)转换数据流2)事务数据流,5.5.1转换流和事务流。首先,具有明确输入、转换(或主处理)和转换流输出接口的数据流图称为转换数据流图。如图所示,转换中心可以理解为一个数据处理和处理程序。事务数据流图中有一个事务中心(即数据处理和处理中心),它将输入分成几个分散的数据流,形成许多活动路径,并根据输入值选择一个路径。一般来说,实际系统的数据流图是两种类型的混合:转换类型和事务类型。如图所示,中间子块是事务数据流。如果将中间子块视为一个处理整体,那么整个程序就是一个转换程序。设计数据流软件结构的基本步骤如下:1)审查和细化数据流图;2)确定数据处理流程图的类型;3)确定转换中心或交易中心;5.5.2数据流设计步骤,4)将数据流图映射成软件模块结构图,并设计与数据流图对应的第一层模块结构;5)基于数据流图的逐步分解设计底层模块;6)利用模块设计和优化准则优化软件结构;7)描述模块的接口。转换设计是从转换数据流图映射软件模块结构的过程,也称为以转换为中心的设计。5.5.3变换设计,变换设计的基本方法有两个步骤:1)分解第一层模块结构是将整个变换分解成输入控制模块Ci、输出控制模块co和变换中心控制模块Ct,它们由主控制模块控制。(2)分别设计输入、输出和处理的下层模块结构的方法是从转换中心的边界向两边移动,将输入路径和输出路径的每个处理分别映射到输入控制模块Ci和输出控制模块Co的下级模块中。转换中心的下部模块是一个直接下属模块,将每个过程映射到转换中心控制模块ct。事务设计是从事务数据流图映射软件模块结构的过程,也称为以事务为中心的设计。5.5.4事务设计,事务设计的基本方法有两个步骤

温馨提示

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

评论

0/150

提交评论