软件工程课件第五章_第1页
软件工程课件第五章_第2页
软件工程课件第五章_第3页
软件工程课件第五章_第4页
软件工程课件第五章_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1第五章总体设计2教学内容5.1设计过程5.2设计原理5.3启发规则5.4描绘软件结构的图形工具5.5面向数据流的设计方法5.6小结3学习目标掌握:

1、软件设计过程中应遵循的基本原理和相关概念;

2、描绘软件结构的图形工具的运用;

3、面向数据流设计方法概念;变换分析、事务分析法过程和应用。理解:

1、典型的总体设计过程包括的步骤;

2、设计中的启发式规则;4重点和难点重点:

软件设计过程中应遵循的基本原理;面向数据流的设计方法。难点:

变换分析、事务分析法的过程和应用。5前言软件设计的目标和任务

软件需求:解决“做什么”

软件设计:解决“怎么做”

●软件设计的任务:以软件需求规格说明书为依据,着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中。●软件设计的重要性:是软件开发阶段的第一步,最终影响软件实现的成败和软件维护的难易程度。6软件设计的两个阶段

第一阶段:概要设计(总体设计)

根据软件需求,设计软件系统结构和数据结构,确定程序的组成模块及模块之间的相互关系。回答“概括地说,系统应该如何实现?”。其重要性是:站在全局高度,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。7第二阶段:详细设计(过程设计)

确定模块内部的算法和数据结构;选定某种过程的表达形式来描述各种算法;产生精确描述各模块程序过程的详细文档,并进行评审。8

软件结构设计以需求分析中得到的数据流图为基础而进行。将需求分析模型转换为软件设计9SA与SD的关系10第一个阶段总体设计的任务

制定规范②设计软件系统结构(简称软件结构)③处理方式设计④数据结构及数据库设计⑤可靠性设计⑥编写概要设计文档⑦概要设计评审前进11①制定规范

为软件开发小组制定在进行软件设计时,应该共同遵守的标准,以便协调组内各成员的工作。返回12②软件结构设计

包括:将系统按功能划分成模块确定每个模块的功能确定模块之间的调用关系确定模块之间的接口,即模块之间传递的信息评价模块结构的质量返回13③处理方式设计包括:

●功能设计:确定实现功能需求必须的算法,评估算法的性能

●性能设计:确定实现性能需求必须的算法和模块间的控制方式

返回14§5.1概要设计的过程

15§5.2设计遵循的基本原理

5.2.1模块化5.2.2抽象5.2.3逐步求精5.2.4信息隐蔽和局部化5.2.5模块独立前进16§5.2.1模块化(Modularity)

①什么是模块和模块化思想?

采取自顶向下的方式,逐层把软件系统划分成若干可单独命名和可编址的部分——“模块”,每个模块完成一个特定的子功能;所有模块按某种方法组成一个整体,完成整个系统所要求的功能。软件系统就是通过这些模块的组合来实现。17②模块化的优点

模块化是软件解决复杂问题所具备的手段,可降低软件复杂性,减少开发工作量,从而降低开发成本,提高软件生产率,是模块化的依据。

设,函数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)18③模块化与软件成本的关系

19④模块的基本属性接口:指模块的输入与输出。功能:指模块实现什么功能。逻辑:描述内部如何实现要求的功能及所需的数据。状态:该模块的运行环境。返回20§5.2.2抽象(Abstraction)①什么是抽象?认识复杂事物和现象时,抽出事物本质的共同特性而暂不考虑它们的细节。②软件开发中的抽象过程的抽象数据的抽象

返回21§5.2.3逐步细化

由NiklausWirth提出的设计策略,适用于大而复杂的软件系统开发。

Miller法则:一个人在任何时候都只能把注意力同时集中在(7±2)个知识块上。但是,在开发软件的过程中,软件工程师在一段时间内需要考虑的知识块数远远多于7个。

22自顶向下,逐步细化的基本思想●将功能、信息的说明分为多个层次,最高层也最抽象——仅仅只是概念性地描述功能或信息,不提供功能的内部工作情况或信息的内部结构;●设计者从最高层开始,仔细推敲,进行功能和信息的细化,给出下层实现的细节;●随着每个后续细化逐步的完成,提供越来越多的细节,最终得出用程序设计语言表达的程序。23结合了模块化和逐步细化思想建立的软件结构图

返回24§5.2.4信息隐蔽和局部化

信息隐蔽:在设计和确定模块时,使得一个模块内包含的信息(过程或数据),不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。局部化:将一些关系密切都软件元素物理地放得彼此靠近。返回25§5.2.5模块独立

1、什么是模块独立性(moduleindependence)

●模块只完成系统要求的相对独立的功能●符合信息隐蔽原则●模块间关连和依赖程度尽量小2、模块独立的优点容易开发、测试和维护返回263、衡量模块独立性的两个准则

①耦合性(coupling)②内聚性(cohesion)27①耦合性(coupling)

也称块间的联系。是对软件系统结构中,各模块间相互联系紧密程度的一种度量。

设计目标:低耦合

图形表示耦合关系28无直接耦合(NondirectCoupling)两个模块没有直接关系,模块独立性最强。图例:模块1与模块2;模块3与模块429

属松散耦合。一模块访问另一模块时,通过数据参数交换输入、输出信息。数据耦合(DataCoupling)30控制耦合(ControlCoupling)

模块之间传递的是控制信息(如开关、标志、名字等),控制被调用模块的内部逻辑31控制耦合举例

32去除模块间控制耦合的方法

控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖。解决方法:

(1)将被调用模块内的判定上移到调用模块中进行

(2)被调用模块分解成若干单一功能模块33模块间耦合强度

34

•一模块对另一模块的引用•一模块向另一模块传递的数据量•一模块施加到另一模块的控制的数量•

模块间接口的复杂程度耦合强度依赖的因素:35降低耦合度的设计原则

1、根据问题特点,选择合适的耦合类型。

尽量使用数据耦合,少用控制耦合和外部耦合,限制公共耦合的范围,完全不用内容耦合。

2、降低模块接口的复杂性。

减少每个模块的参数个数;尽量使用标准过程调用方式,少用直接引用的方式;传送的信息以标准、直接的方式提供。

3、把模块的通信信息放在缓冲区中。返回36②内聚性(cohesion)

又称块内联系。指一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系的越紧密,则它的内聚性就越高。

设计目标:高内聚37巧合内聚(偶然内聚,CoincidentalCohesion)

块内各组成成份在功能上是互不相关的。38逻辑内聚(LogicalCohesion)

把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。39逻辑内聚模块

40模块间内聚的类型

41总结:耦合、内聚与模块独立性关系

耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。

设计要求:低耦合,高内聚

返回42§5.3启发规则

改进原则:高内聚、低耦合①改进软件结构,提高模块独立性②模块规模适中③深度、宽度、扇出和扇入适中④将模块的影响限制在控制范围内⑤降低模块接口的复杂性⑥设计单入口单出口的模块⑦模块功能可预测43①改进软件结构,提高模块独立性通过模块分解或合并,降低耦合提高内聚。44②模块规模适中

模块过大:可理解程度下降模块过小:开销大于有效操作系统接口复杂在考虑模块的独立性同时,为了增加可理解性,模块的大小最好在50-150条语句左右,可以用1-2页打印纸打印,便于人们阅读与研究。45③深度、宽度、扇出和扇入适中

46例:避免平铺结构47增加中间层降低扇出48§5.4描绘软件结构的图形工具§5.4.1层次图和HIPO图

描述软件的层次结构。层次图中,一个方框代表一个模块,方框间的连线表示调用关系。

HIPO图=层次图+IPO图49正文加工系统

50酒店管理信息系统功能结构图51§5.4.2结构图(SCStructureChart)

调用直线边的小箭头,表示调用时从一个模块传给另一个模块的数据,也指出了传送方向。52§5.5面向数据流的设计方法§5.5.1概念

数据流可分为两种类型:●变换型数据流●事务型数据流53变换型数据流基本模型特点:具有明确的传入、变换(或称主加工)和传出界面的DFD54另一种表示图:55变换型数据流举例

56●事务型数据流基本模型57例1:汽车数字仪表板功能(教材P96-101面)1)通过A/D转换实现传感器和微处理器接口,2)在发光二极管面板上显示数据,3)指示每小时英里数(mph),行驶的里程,每加伦油行驶的英里数(mpg)等等。4)指示加速或减速;5)超速警告:如果车速超过55英里/小时,则发出超速警告铃声。§5.5.2变换分析5859§5.5.3事务分析适用情况:数据流具有明显的事务中心。事务分析步骤

(1)在DFD上确定事务中心、接收部分和发送部分。(2)画出SC框架,把DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块。(3)分解细化接收分支和发送分支,完成初始SC。60总结:面向数据流方法的设计过程

61总结:面向数据流设计方法的设计步骤

(1)精化DFD(2)确定DFD类型(3)把

温馨提示

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

评论

0/150

提交评论