第四章-总体设计概要设计.ppt_第1页
第四章-总体设计概要设计.ppt_第2页
第四章-总体设计概要设计.ppt_第3页
第四章-总体设计概要设计.ppt_第4页
第四章-总体设计概要设计.ppt_第5页
免费预览已结束,剩余63页可下载查看

下载本文档

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

文档简介

4.1总体设计的过程,总体设计过程通常由两个主要阶段组成:1.系统设计,确定系统的具体实现方案;2.结构设计,确定软件结构。,总体设计的过程:确定方案确定结构,一、设想供选择的方案,二、选择合理的方案,三、推荐最佳方案,四、功能分解,五、设计软件结构,六、数据库设计,七、制定测试计划,八、书写文档,九、审查复审,概要设计的任务1将系统划分成模块;2确定每个模块的功能;3确定模块的调用关系;4确定模块的界面,即模块间传递的数据。,.2软件设计基本概念,一模块化与信息隐藏(Modularization,InformationHiding),1分解(Decomposition)设C(x)为问题x的复杂程度,E(x)为解决x的工作量(时间)。若C(p1)C(p2),则E(p1)E(p2)实践证明:C(p1+p2)C(p1)+C(p2)E(p1+p2)E(p1)+E(p2)模块化,2信息隐藏,模块内部的数据与过程,应该对不需要了解这些数据与过程的模块隐藏起来,只有为了完成软件的总体功能而必需在模块间交换的信息,才允许在模块间进行传递。,模块独立性(ModuleIndependence),模块独立的概念是模块化、抽象、信息隐藏和局部化的直接结果。开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。为什么模块独立性很重要呢?有效的模块化的软件比较容易开发出来;独立的模块比较容易测试和维护。,(1).内聚(Cohesion)内聚标志一个模块内各个元素彼此结合的紧密程度。它是信息隐藏和局部化概念的自然扩展。内聚度越高越好。,.偶然性内聚(CoincidentalCohesion)所谓偶然性内聚是指一个模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。.逻辑性内聚(LogicalCohesion)如果一个模块完成的任务逻辑上相关(例如,一个产生所有与类型无关的输出),则称为逻辑性内聚。.时间性内聚(TemporalCohesion)如果一个模块内包含的任务必须在一个时间段内执行(例如一个初始化模块),则称之为时间性内聚。.过程性内聚(ProceduralCohesion)模块的过程性内聚是指,模块内成分彼此相关,并且必须按特定的次序执行。,5.通讯性内聚(CommunicationalCohesion)模块的通讯性内聚是指,模块中各成分都将对数据结构的同一区域进行操作,以达到通讯的目的。6.顺序性内聚(SequentialCohesion)如果一个模块内的各处理成分均与同一功能相关,且这些处理必须顺序执行,则称为顺序性内聚。7.功能性内聚(FunctionalCohesion)如果模块内所有成分形成一个整体,完成单个功能,则称为功能内聚。功能内聚是最高的内聚形式。,(2).耦合(Coupling)耦合是对一个软件结构内不同模块之间互连程度的度量。耦合度越弱越好。耦合度的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过界面传送数据的多少等。,.非直接耦合(NoDirectCoupling)如果两模块中任一个都不依赖对方能独立工作,则称这两模块为非直接耦合,这类耦合度最低。.数据耦合(DataCoupling)如果两模块间通过参数交换信息,而信息仅限于数据,则称这两模块为数据耦合。.特征耦合(StampCoupling)介于数据耦合和控制耦合之间的是特征耦合。,4.控制耦合(ControlCoupling)如果两模块间通过参数交换信息,而信息仅限于数据,此时若传递的信息中包含控制信息,则耦合度上升为控制耦合。5.外部耦合(ExternalCoupling)当若干模块均与同一个外部环境关联(例如I/O处理使所有模块与特定I/O设备、格式和通讯协议相关联),它们之间便存在外部耦合。6.公共耦合(CommonCoupling)当若干模块通过全局的数据环境相互作用时,它们之间存在公共耦合。,7.内容耦合(ContentCoupling)最高耦合度是内容耦合,出现内容耦合的情形包括:当一个模块使用另一个模块内部的数据或控制信息;一个模块直接转移到另一模块内部,等。,二抽象与逐步求精,抽象是一个心理学概念,即将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节,软件工程过程的每一步都是对较高一级抽象的解,作一次较具体的描述逐步求精与抽象密切相关,是一种自顶向下设计策略,其主要思想是:针对某个功能的宏观描述用逐步求精的方法不断地分解。逐步确定过程细节直至该功能用程序描述的算法实现为止。这种分解是逐步的,即每一步分解仅较其前一步增加“少量”的细节。这样在相连两步之间只有微小的变化,不难验证它们的内容是否等效。,例:求五边形的面积,边长由L1L7由键盘读入解:一级抽象(求精)1.输入长度L1L7;2.由L1、L5、L6求三角形面积S1;3.由L2、L6、L7求三角形面积S2;4.由L3、L4、L6求三角形面积S3;5.S=S1+S2+S3;6.输出S;二级求精:已知三边a、b、c,求三角形面积TsP=(a+b+c)/2;Ts=SQRT(P(P-a)(P-b)(P-c)三级求精:写出程序。,4.启发式规则,在软件开发的长期时间中人们积累了丰富的经验,总结这些经验得出了一些有用的启发式规则。它能给软件工程师以有用的启示,帮助他们找到改进软件设计提高软件质量的途径。,一改进软件结构提高模块独立性;设计出软件的初步结构后,应该审查分析这个结构,通过模块分解和合并,力求降低耦合提高内聚。二模块规模应该适中;(通常为60行语句)三深度、广度、扇出和扇入都应适中(增加中间层);深度表示软件结构中控制的层数,能粗略地标志一个系统的大小和复杂程度。广度是软件结构内同一个层次上的模块总数的最大值。一般来说,广度越大系统越复杂。对广度影响最大的因素是模块的扇出。扇入(fan-in)是指模块的上级模块数,即共有多少模块需要调用这个模块。扇出(fan-out)是指模块调用下属模块的数目,或者说这个模块具有多少个下属模块。,四模块的作用域应该在控制域之内模块的作用域定义为受该模块一个判定影响的所有模块的集合;模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。如下图:,五力争降低模块接口的复杂程度;模块接口复杂是软件发生错误的主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。接口复杂或不一致是紧耦合或低内聚的征兆,应该重新分析这个模块的独立性。六设计单入口单出口的模块;这条启发式规则警告软件工程师不要使模块间出现内容耦合。当从顶部进入模块并且从底部退出来时,软件是比较容易理解的,因此也是比较容易维护的。,七模块功能应该可以预测。模块的功能应该可以预测,但也要防止模块功能过分局限。如果一个模块可以当作一个黑盒子,也就是说,只要输入数据相同就产生同样的输出,这个模块就是可以预测的。以上列出的启发式规则多数是经验规律,对改进设计,提高软件质量,往往有重要的参考价值。但是,它们既不是设计的目标也不是设计时应该普遍遵循的原则。,.4设计文档及其复审,一.总体及详细设计说明书在设计阶段,设计人员要完成两种文档:概要设计说明书和详细设计说明书。前者确定软件结构(softwarestructure),后者则着重描述程序的过程(programprocedure)。,总体设计说明书应包括:)以图表形式表示的软件总体结构;)模块的外部设计,包括关于各模块功能、性能与接口的简要描述;)数据结构设计,包括数据模式、访问方法和存储要求。详细设计说明书应包括:)表示软件结构的图表;2)对逐个模块的程序描述,包括算法和逻辑流程、输入输出项与外部接口等。,二设计表达工具1.层次图和HIPO图,层次图(HierarchyChartHC图)表示软件的分层结构。层次图中的一个矩形框代表一个模块,方框间的连线表示调用关系而不像层次方框图那样表示组成关系。,IPO(输入、加工、输出图),IPO图=HC图+IPO图用HC图描述软件结构,用IPO图描述程序过程。,2.结构图,SC图是SD方法在概要设计中使用的主要表达工具,用来显示软件的组成模块及其调用关系。SD方法约定,用矩形框来表示模块,用箭头的连线表示模块间的调用关系。在调用线的两旁,应标出传入和传出模块的数据流。,1).模块的表示符号,2).简单调用,3).选择调用,4).循环调用,三设计复审(DesignReview)概要设计复审应该把重点放在系统的总体结构,模块划分,内外接口等方面。例如软件的结构能否满足需求?结构的形态是否合理,层次是否清晰?模块的划分是不是符合模块化和信息隐藏的思想等优化原则?系统的人机界面、各模块的接口以及出错处理是否恰当?模块的设计能否满足功能与性能要求?选择的算法与数据结构是否合理,能否适应编程语言等?复审包括软件总体结构、数据结构、界面以及模块过程细节四个方面。,.5面向数据流的设计方法,面向数据流的设计方法(DataFlow-orientalDesign)也称结构设计方法(StructuredDesignSD),是根据需求阶段对数据流的分析(用数据流图和数据字典表示)设计软件结构。,一概念和设计过程为了有效地实现从DFD图到SD图的映射,SD方法规定了下列五个步骤:用SD方法将数据流图转换为软件结构,其过程为:,2).事务流这种类型至少有一条接受路径(ReceptionPath);一个事物中心(TransactionCenter);与若干条动作路径(ActionPath);,.划定流界;3.将数据流图映射为程序结构;4.提取层次控制结构;5.通过设计复审和使用启发式策略进一步精化所得到的结构。(如下图),二变换分析第一步:复查基本系统模型;第二步:复查并精化数据流图;第三步:确定数据流图具有变换特性还是事物特性;第四步:输入流和输出流的边界,从而孤立变换中心;第五步:完成“第一级分解”;第六步:完成“第二级分解”;第七步:采用启发式设计策略,精华所得程序结构雏形,改良软件质量。,四设计优化,对软件结构的修改越早越好,人们把软件总体结构设计与详细过程设计分开正是为了提供尽早优化结构的可能性。有时,甚至可以并行地开发若干个软件结构,通过评比求得“最佳”结果。考虑设计优化问题是应该记住,“一个不能工作的最佳设计的价值是值得怀疑的”。软件设计人员应该致力于开发能满足所有功能和性能要求,而且按照设计原理和启发式设计规则衡量是值得接受的条件。应该在设计的早期阶段尽量对软件结构进行精化。可以导出不同的软件结构,然后对它们进行评价和比较,力求得到“最好”的结果。这种优化的可能,是把软件结构设计和过程设计分开的真正优点之一。,注意,结构简单通常既表示设计风格优雅,又表明效率高。设计优化应该力求做到在有效的模块化的前提下使用少量的模块,以及在能满足信息要求的前提下使用最简单的数据结构。对于时间是决定性因素的应用场合,可能有必要在详细设计阶段,也可能在编写程序的过程中进行优化。软件开发人员应该认识到,程序中相对说比较小的部分(典型地,),通常占用全部处理时间的大部分()。,用下述方法对时间起决定性作用的软件进行优化是合理的:()在不考虑时间因素的前提下开发并精化软件结构;()在详细设计阶段选出最耗费时间的那些模块,仔细地设计它们的处理过程(算法),以求提高效率;()使用高级程序设计语言编写程序;()在软件中孤立出那些大量占用处理机资源的模块;()必要时重新设计或用依赖于机器的语言重写上述大量占用资源的模块的代码,以提高效率。上述优化方法遵守了一句格言:“先使它能工作,然后再使它快起来。”,结构图的改进,一模块大小1.当模块长度超过条语句时,其可理解性迅速降低。模块长度可选在句左右,一种为多数所接受的意见是,模块的适当长度宜选在到条语句之间。坚持模块的独立性,是划分模块的最高准则。对于一个设计合理的功能模块,即使长达千句以上,或者小到仅有几条语句,也允许保留原状,不再分解或者合并。所以在改进初始图时,对于其中甚大和甚小的模块,都应该找一找原因,并确定要不要重新划分。,2一个甚大的模块,可能是由于包含了若干并列的功能,或者是块内仍会有可以分离出去的子功能。通过再分解把一些并列功能或者字功能分离出来,就可以合理地降低模块的长度。3.对处在图底层的甚小模块,如果其上级模块仅有一个。当然可将它并入上级模块。,4如果有多个模块调用它,则合并该模块将意味着在它的所有上级模块中添上这个模块的内容,从而将明显增加软件的开发成本。解决的方法之一,是把这个甚小模块独立编码和调试,然后以“内联(IN-LINE)子程序”的形式提供给需要调用它们所有模块使用。诸如某些高级语言设置的INCLUDE之类的语句,就可实现对内联子程序的调用。,5假如甚小模块不是处在图的底层,则是否合并,如果合并该并入它的上级模块还是下级模块,需要作具体分析。显然,在完成编码以前,对模块长度仅能估计。当然这种估计是粗略的,但用来指示对初始图的改进,是完全足够了。,二扇入和扇出,在模块调用中,扇入(fan-in)是指模块的上级模块数,即共有多少模块需要调用这个模块。扇出(fan-out)是指模块调用下属模块的数目,或者说这个模块具有多少个下属模块。,.当两个模块具有一部分相同的功能时,把这部分相同功能分离为一个单独的模块,可以免除对这一部分内容的重复编码和测试,节约开发费用。.值得注意的是,一个模块的扇入数愈高,则共享这一模块的上级模块愈多,消除重复的效果也更明显。如果说高扇入是争取的目标,则高扇出却恰好相反,常常暴露出初始SC图中存在得分解太快的缺点。常用的改进方法,是在图中两层模块间增加一个中间层。一般地说,对于扇出数超过的模块,都需要查一查原因,找出改进的途径。还要提一下高扇入模块的一种画法。最好把下属模块就近画在它的上级模块下面,以便缩短调用线的长度,为了避免同一模块在图上多次出现时被误认为不同的模块。,三作用范围和控制范围,.两个范围的定

温馨提示

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

评论

0/150

提交评论