软件工程第五章总体设计.ppt

上传人:石*** 文档编号:49896869 上传时间:2022-10-12 格式:PPT 页数:64 大小:4.06MB
返回 下载 相关 举报
软件工程第五章总体设计.ppt_第1页
第1页 / 共64页
软件工程第五章总体设计.ppt_第2页
第2页 / 共64页
点击查看更多>>
资源描述

《软件工程第五章总体设计.ppt》由会员分享,可在线阅读,更多相关《软件工程第五章总体设计.ppt(64页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、软件工程第五章总体设计现在学习的是第1页,共64页第五章第五章 总体设计总体设计l软件设计的重要性l设计过程 l软件总体设计 l设计基本原理 l体系结构设计 l结构化设计 lIDEF0图设计方法 l软件结构优化 现在学习的是第2页,共64页总体设计总体设计l总体设计的基本目标就是概要地回答系统应该如何实现。所以设计在任何工程产品或系统中,是开发阶段的第一步。设计(design)可以定义为应用各种技术和原理,对一个设备、一个过程或一个系统,作出足够详细的决策,使之有可能在物理上得以实现的过程。现在学习的是第3页,共64页总体设计总体设计l系统的总体设计是在前面系统分析的基础上,为后期将要构造的系

2、统实体建立一个模型(model)或表达式(representation)。构造这样的模型需要有开发人员的直觉和以前开发这类实体经验的判断、开发方法的采用、产品质量的准则,是一个综合的过程。而且经过多次的重复,直到最终拿出最后的设计模型。现在学习的是第4页,共64页5.1 软件设计的重要性软件设计的重要性 l软件设计处于软件工程过程的技术核心地位 图5-1 软件设计与软件工程现在学习的是第5页,共64页5.1 软件设计的重要性软件设计的重要性l软件设计的重要性还反映在质量上。图5-2 设计的重要性 现在学习的是第6页,共64页5.2 设计过程设计过程l软件设计是一个把需求转换为软件表达式的过程。

3、这个表达式过程一般情况下是分为两步走。l从软件工程的角度讲是分为总体设计和详细设计。l总体设计主要是把需求转换为数据结构和软件体系结构,而详细设计主要集中在体系结构表达式的细化,从而产生详细的数据结构和软件的算法表达式。现在学习的是第7页,共64页5.2.1 软件设计的发展软件设计的发展 l早期的设计工作中,着重在开发模块化程序模块所需要的准则,以及按照自顶向下(top-down)的方式逐步细化软件体系结构上。l接着,设计定义的过程方面逐渐发展成为一种叫做结构化编程(structured programming)的原则。l之后,提出了把数据流和数据结构翻译成设计定义的方法。l近年来,则建立采用

4、OO的设计方法。l总结过去软件设计的发展,可以归纳为是一个持续发展的过程。现在学习的是第8页,共64页5.2.2设计活动间的关系设计活动间的关系l总体设计和详细设计除了必须有先进的设计技术外,还要有同步的管理技术支持。如图5-3所示图5-3 设计技术和管理方面之间的关系现在学习的是第9页,共64页5.2.3 设计与软件质量设计与软件质量l在整个设计过程中,设计每一步的质量都要进行正式的技术评审(formal technical reviews)。要按照设计准则对于设计表达式的质量的评价。我们这里给出下列软件设计原则:l(1)设计应当模块化(modular),也就是说,软件应被逻辑地划分为能完成

5、特定功能和子功能的构件。l(2)设计应形成具有独立功能特征的模块(如子程序或过程)。现在学习的是第10页,共64页软件设计原则软件设计原则(续续)l(3)设计应使模块之间和与外剖环境之间接口的复杂性尽量地减少。l(4)设计应该有一个分层的组织结构,这样人们可对软件各个构件进行理性的控制。l(5)设计应有性质不同的可区分的数据和过程表达式。l(6)设计应利用软件需求分析中得到的信息和可重复的方法。现在学习的是第11页,共64页5.3 软件总体设计软件总体设计l需求分析阶段所形成的数据流图是软件总体设计的基础。我们要从可供选择的方案中选取合理的方案,为每一个方案准备一份系统流程图,列出系统组成的物

6、理元素,进行效益分析,制定实现方案的进度。我们要从合理的方案中选择一个最佳的方案向用户推荐。l当用户接受方案后,就要为这个最佳的方案设计软件结构,一般情况下,这个软件结构要通过反复修改使之合理。l同时还要进行必要的数据库设计。在分布式系统中还要进行网络设计。l另外,还要制定测试计划和确定测试要求。l在详细设计前一定要进行软件总体设计。现在学习的是第12页,共64页5.3.1 总体设计基本任务总体设计基本任务l1.软件系统结构设计l(1)采用某种设计方法,将一个复杂的系统按功能划分成模块。l(2)确定每个模块的功能。l(3)确定模块之间的调用关系。l(4)确定模块之间的接口,即模块之间传递的信息

7、。l(5)评价模块结构的质量。现在学习的是第13页,共64页总体设计基本任务总体设计基本任务(续续)l2.数据结构及数据库设计l1)数据结构的设计l2)数据库的设计l(1)概念设计l(2)逻辑设计l(3)物理设计l3.网络系统设计现在学习的是第14页,共64页总体设计基本任务总体设计基本任务(续续)l4.软件总体设计文档l总体设计说明书的主要内容如下:l(1)引言:编写目的,背景,定义,参考资料。l(2)总体设计:需求规定,运行环境,基本设计概念和处理流程,结构。l(3)接口设计:用户接口,外部接口,内部接口。l(4)运行设计:运行模块组合,运行控制,运行时间。l(5)系统数据结构设计:逻辑结

8、构设计,物理结构设计,数据结构与程序的关系。l(6)系统出错处理设计:出错信息,补救措施,系统恢复设计。l5.评审现在学习的是第15页,共64页5.4 设计基本原理设计基本原理l软件设计要回答下列问题:l(1)使用什么样的准则才能把软件划分成为各个单独的构件?l(2)怎样把功能或数据结构的细节从软件概念表达式中分离出来?l(3)定义软件设计的技术质量有统一的准则吗?现在学习的是第16页,共64页设计基本原理设计基本原理l5.4.1 抽象抽象l5.4.2 细化l5.4.3 模块化模块化现在学习的是第17页,共64页5.4.4 软件体系结构软件体系结构 l软件总体设计的主要任务就是软件结构的设计。

9、软件体系结构(software architecture)包含了计算机程序的两个重要特性:l(1)过程构件(模块)的层次结构。l(2)数据结构。现在学习的是第18页,共64页软件的需求分析到设计的转换图软件的需求分析到设计的转换图图5-5 结构化演化现在学习的是第19页,共64页不同结构的表示不同结构的表示l从下图可以看出,一个问题可以有多种可供选择的结构。选择某种结构又由软件设计方法来决定。现在学习的是第20页,共64页5.4.5 程序结构程序结构l程序结构(program structure)给出了程序构件(模块)的组织(通常叫分层),这种组织包含了控制的层次。l程序结构可以用许多不同的符

10、号来表示。l1 树形结构图。l2 Warnier-Orr图l3 Jackson图 现在学习的是第21页,共64页5.4.6 数据结构数据结构l数据结构(data structure)定义是一种数据各元素之间逻辑关系的表达式。l一个数据结构的组织和复杂性只受设计者创造性的限制。但是典型的数据结构可以组成更复杂的结构造块。l数据结构可以给出不同层次的抽象。现在学习的是第22页,共64页5.4.7 软件过程软件过程图5-9 一个模块内的过程现在学习的是第23页,共64页软件过程软件过程图5-10 过程的分层现在学习的是第24页,共64页5.5 体系结构设计体系结构设计l软件体系结构设计(archit

11、ectural design)的主要目标是设计一个模块化的程序结构。体系结构设计融合了程序结构和数据结构,接口定义能使数据流经程序。要给出各个模块之间的控制关系。现在学习的是第25页,共64页5.5.1 软件结构图软件结构图 l软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。l软件结构往往用树状或网状结构的图形来表示。软件工程中,一般采用结构图(Structure Chart)简称SC)的工具来表示软件结构。l 现在学习的是第26页,共64页结构图的主要内容结构图的主要内容l(1)模块l(2)模块的控制关系l(3)模块间的信息传递l(4)两个附加符号:表

12、示模块有选择调用或循环调用l(5)结构图的形态特征l包括 深度 宽度 扇出 扇入现在学习的是第27页,共64页画结构图应注意的事项画结构图应注意的事项 l同一名字的模块在结构图中仅出现一次。l调用关系只能从上到下。l不严格表示模块的调用次序,习惯上从左到右。有时为了减少连线的交叉,适当地调整同一层模块左右位置,以保持结构图的清晰性。现在学习的是第28页,共64页5.5.2扇出和扇入与深度和宽度扇出和扇入与深度和宽度l深度表示控制的层数,宽度表示同一层上控制的最大模块数目。l扇出是被某一模块直接控制的模块数目的度量,扇入则是对某一给定模块被多少个模块直接控制的度量。l一个系统的大小和系统的复杂程

13、度在一定程度上可以用深度和宽度表示。l高层模块应有较高的扇出,低层模块特别是底层模块应有较高的扇入。现在学习的是第29页,共64页扇出和扇入与深度和宽度扇出和扇入与深度和宽度l扇出实际上是对问题解的分解。分解过程中需要考虑的问题就是,前面是否已经有一个模块与当前所需要的模块功能相同或相似。若完全相同,则可以共享;若功能类似,则应区分哪些部分相同,这样可以把相同的部分分离出来成为单独的模块,如图5-14至516。现在学习的是第30页,共64页扇出和扇入与深度和宽度扇出和扇入与深度和宽度 图514 分解对扇入的可能性 图515分解对扇入的可能性 图516分解对扇入的可能性 现在学习的是第31页,共

14、64页扇出和扇入与深度和宽度扇出和扇入与深度和宽度l高层模块应有较高的扇出,低层模块特别是底层模块应有较高的扇入。l扇入越大,表示该模块被更多的上级模块共享。多个扇入入口相同,这就避免了程序的重复,因此希望扇入高一点。l但过多又可能是把许多不相关的功能硬凑在一起,形成通用模块。这样的模块必然是低聚合的。现在学习的是第32页,共64页5.5.3模块的藕合模块的藕合l藕合(Coupling)表示软件结构内不同模块彼此之间相互依赖(连接)的紧密程度,是衡量软件模块结构质量好坏的度量,是对模块独立性的直接衡量指标。l软件设计应追求尽可能松散藕合,避免强藕合l藕合强弱取决于模块间接口的复杂程度,进入或访

15、问一个模块的点,以及通过接口的数据。现在学习的是第33页,共64页藕合分类藕合分类 l数据藕合l控制藕合l共用藕合l内容藕合。现在学习的是第34页,共64页数据藕合数据藕合l如果两个模块之间只是通过参数交换信息,而且所交换的信息仅仅是数据。被调用模块的输入和输出都只是简单的数据。那么这种藕合称为数据藕合。l数据藕合是最低程度的藕合。图517 数据耦合现在学习的是第35页,共64页控制藕合控制藕合 l如果两个模块之间所交换的信息包含控制信息,那么这种藕合称为控制藕合。例如,图5-18中模块A的内部处理逻辑判断是决定执行C还是执行D,这要取决于模块B传来的信息“标志”status。控制藕合是中等程

16、度的藕合。图518 控制耦合现在学习的是第36页,共64页公用藕合公用藕合 l当两个或多个模块通过一个公共区相互作用时,它们之间的藕合称为共用藕合。这类公共区可以是全程数据区、共享通信区、内存公共覆盖区、任何介质上的文件、物理设备等。例如图5-19中就存在共用藕合 图5-19公用藕合现在学习的是第37页,共64页内容藕合内容藕合 l内容藕合是最高程度藕合,是应该避免的。内容藕合是指一个模块与另一个模块的内容直接发生联系。例如,一个模块直接转移到另一个模块内部,一个模块使用另一个模块内部的数据等都会产生内容藕合。图520 内容藕合现在学习的是第38页,共64页使用藕合的设计原则使用藕合的设计原则

17、l尽量使用数据藕合l少用控制藕合l限制共用藕合l完全不用内容藕合。现在学习的是第39页,共64页5.5.4模块的内聚模块的内聚l内聚(Cohesion)表示一个模块内部各个元素彼此结合的紧密程度,是衡量一个模块内部组成部分间整体统一性的度量,它是信息隐蔽概念的自然扩展。理想的模块只做一件事情。l根据模块内部构成情况,模块的内聚可以划分成高、中、低三大类内聚。l常见的内聚可分成:功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚七类。它们内聚程度依此从高到低,一般认为功能内聚和顺序内聚是高内聚,通信内聚、过程内聚是中内聚,时间内聚、逻辑内聚和偶然内聚是低内聚。现在学习的是第40

18、页,共64页功能内聚功能内聚 l如果一个模块内所有处理元素完成一个,且仅完成一个功能,则称为功能内聚(Functional Cohesion)。l功能内聚是最高的内聚。l在软件结构中,并不是每个模块都能归结为完成一个功能而设计成一个功能内聚模块。现在学习的是第41页,共64页顺序内聚顺序内聚l如果一个模块内处理元素和同一个功能密切相关,而且这些处理元素必须顺序执行,则称为顺序内聚(Sequential Cohesion)。l通常一个处理元素的输出是另一个处理元素的输入。现在学习的是第42页,共64页通信内聚通信内聚 l如果一个模块中所有处理元素都使用同一个输入数据和(或)产生同一个输出数据,称

19、为通信内聚(Communicational Cohesion)。现在学习的是第43页,共64页过程内聚过程内聚 l如果一个模块内的处理元素是相关的,而且必须以特定的次序执行,称为过程内聚(Procedural Cohesion)。过程内聚模块的各组成功能由控制流联结在一起,实际上是若干个处理功能的公共过程单元。l过程内聚与顺序内聚的区别主要在于:顺序内聚中是数据流从一个处理元流到另一个处理元,而过程内聚中是控制流从一个动作流向另一个动作。现在学习的是第44页,共64页时间内聚时间内聚 l如果一个模块包含的任务必须在同一段时间内执行称为时间内聚(Temporal Cohesion),也称瞬时内聚

20、。例如,模块完成各种初始化工作,处理故障模块等。下图关闭文件、报警、保留现场等任务都必须无中断地同时处理。现在学习的是第45页,共64页逻辑内聚逻辑内聚 l如果一个模块完成的任务在逻辑上属于相同或相似的一类(例如,一个模块产生各种类型的全部输出),称为逻辑内聚(Logical Cohesion)。l对逻辑内聚模块的调用,常常需要有一个功能开关,由上层调用模块向它发出一个控制信号,在多个关连性功能中选择执行某一个功能。l这种内聚较差,增加了模块之间的联系,不易修改。现在学习的是第46页,共64页偶然内聚偶然内聚l如果一个模块由完成若干毫无关系(或关系不大)的功能的处理元素偶然组合在一起的,就叫偶

21、然内聚(Coincidental Cohesion)。偶然内聚是最差的一种内聚。l常犯这种错误的一种情况是:有时在写完程序后,发现一组语句在多处出现,于是为了节省空间而将这些语句作为一个模块设计,这就出现了藕合内聚。现在学习的是第47页,共64页5.5.5 模块设计一般准则模块设计一般准则l改进软件结构提高模块独立性l模块规模要适中l深度、宽度、扇入和扇出应适当l降低接口复杂性l设计单入口单出口的模块现在学习的是第48页,共64页5.5.6模块的作用域与控制域模块的作用域与控制域l模块的控制域是该模块本身以及所有直接或间接从属于它的模块的集合。l模块的作用域是该模块内一个判断影响的模块的集合。

22、l控制域也成为控制范围,作用域也称为作用范围或影响范围。l控制域是从结构方面考虑的,作用域则是从功能方面考虑的。现在学习的是第49页,共64页模块设计中模块控制域与作用域考虑方面模块设计中模块控制域与作用域考虑方面 l作用域应在控制域之内。l判断点位置要适中,尽量使其影响到的模块成为其直接下属模块。现在学习的是第50页,共64页作用域不在控制域范围之内的改进方法作用域不在控制域范围之内的改进方法 l将包含判断的模块状合并到它的调用模块状之中,使判断处于足够高的位置。l将受判断影响的模块下移到控制域之内。l把判断上移到足够高的位置。现在学习的是第51页,共64页5.6 结构化设计结构化设计l结构

23、化设计是以结构化分析产生的数据流图为基础,将数据流图按一定的步骤映射成软件结构。L.Constantine和E.Yourdon等人提出结构图是进行软件设计的有力工具。l在需求分析阶段,信息六是考虑的关键问题。我们用数据流图来描述信息在系统中的流动情况。通常所说的结构化方法也就是基于数据流的设计方法。现在学习的是第52页,共64页5.6.1 数据流的类型数据流的类型 l变换型数据流图l事务型数据流图 现在学习的是第53页,共64页1.变换型数据流图变换型数据流图 现在学习的是第54页,共64页2.事务型的数据流图事务型的数据流图现在学习的是第55页,共64页5.6.2 过程步骤过程步骤l(1)精

24、华数据流图 l(2)确定数据流图类型l(3)找出变换中心l(4)第一层分解l(5)第二层分解l(6)根据优化准则对软件结构求精l(7)描述模块功能、接口及全局数据结构l(8)复查,如果有错,转(2)修改完善,否则进入详细设计现在学习的是第56页,共64页5.6.3 变换分析设计变换分析设计 l1.确定数据流图中的变换中心、逻辑输入和逻辑输出l2.设计软件结构的顶层和第一层变换结构l3.设计中、下层模块l4.设计的优化现在学习的是第57页,共64页5.6.4 事务分析设计事务分析设计 l1)确定数据流图中的事务中心和加工路径l2)设计软件结构的顶层和第一层事务结构,事务型软件结构应包括接收分支和

25、发送分支两个部分。l(1)接收分支:负责接收数据l(2)发送分支:通常包含一个调度模块,它控制管理所有的下层的事务处理模块。l3)事务结构中、下层模块的设计、优化等工作同变换结构。现在学习的是第58页,共64页5.6.5 混合流设计混合流设计 l混合数据流图的映射步骤l(1)确定数据流图整体上的类型l(2)标出局部的数据流图范围,确定其类型l(3)按整体和局部的数据流图特征,设计出软件结构l分层数据流图的映射方法l(1)主图是变换型,子图是事务型l(2)主图是事务型,子图是变换型现在学习的是第59页,共64页5.6.6 结构化设计方法应用示例结构化设计方法应用示例l销售管理系统的数据流图转换为

26、软件结构图。分析该系统的0层图,它有4个主要功能,即订货处理、进货处理、缺货处理和销售统计。其中,订货处理包括订单处理和供货处理两部分。这4个处理可平行工作,因此从整体上分析可按事务型数据流图来设计,根据功能键来选择4个处理中的一个。现在学习的是第60页,共64页5.6.7 设计的后的处理设计的后的处理l(1)为每个模块提供一份接口说明l(2)为每个模块写一份处理说明l(3)给出设计约束或限制l(4)数据结构说明l(5)进行设计评审l(6)设计优化现在学习的是第61页,共64页5.7 IDEF0图设计方法图设计方法 l在系统总体设计时,一般按照IDEF0图的分解层次,逐层将其转换成软件结构图。

27、对于某一层的IDEF0图按以下方法转换:l(1)找出该层IDEF0图的父图,搞清父、子图之间的输入/输出、控制关系l(2)以父图的活动为上层模块,子图中的活动为下层模块,画出系统的单层结构图l(3)根据IDEF0图各个活动的输入/输出数据、控制信息及数据库的结构、数据项定义等,确定模块的接口l(4)混合所有层次的结构图,得到系统初始的软件结构图l(5)根据软件结构的优化准则进行精化现在学习的是第62页,共64页5.8 软件结构优化软件结构优化l5.8.1 软件结构设计优化准则软件结构设计优化准则l模块独立性准则l控制与作用范围之间的准则l结构特征准则l模块的接口准则l5.8.2 软件结构的软件结构的HIPO图实例图实例现在学习的是第63页,共64页5.9 小结小结l软件设计的重要性l设计过程 l软件总体设计 l设计基本原理 l体系结构设计 l结构化设计 lIDEF0图设计方法 l软件结构优化 现在学习的是第64页,共64页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁