软件工程总体设计方案(PPT 111页)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息科学与技术学院 闵笛
软件工程
控制耦合举例
信息科学与技术学院 闵笛
软件工程
去除模块间控制耦合的方法
控制耦合增加了理解和编程的复杂性,调用 模块必须知道被调模块的内部逻辑,增加了 相互依赖。解决方法:
(1)将被调用模块内的判定上移到调用模块 中进行
(2)被调用模块分解成若干单一功能模块
软件结构设计以需求分析中得到的数据流图 为基础而进行。
信息科学与技术学院 闵笛
软件工程
第一个阶段总体设计的任务
① 制定规范 ② 设计软件系统结构(简称软件结构) ③ 处理方式设计 ④数据结构及数据库设计 ⑤ 可靠性设计 ⑥ 编写概要设计文档 ⑦ 概要设计评审
信息科学与技术学院 闵笛
接口:指模块的输入与输出。 功能:指模块实现什么功能。 模块化好处: 模块化使软件容易测试和调试,因而有助提
高软件的可靠性。 模块化能提高软件的可修改性。 模块化有助于软件开发工程的组织管理。
信息科学与技术学院 闵笛
软件工程
5.2.2 抽象( Abstraction )
① 什么是抽象?
信息科学与技术学院 闵笛
软件工程
③ 处理方式设计
包括: 功能设计:确定实现功能算法,评估算法的
性能. 性能设计:确定实现性能需求必须的算法和
模块间的控制方式
信息科学与技术学院 闵笛
软件工程
5.1 设计的过程
信息科学与技术学院 闵笛
软件工程
5. 2 设计原理
5.2.1模块化 5.2.2抽象 5.2.3逐步求精 5.2.4信息隐蔽和局部化 5.2.5模块独立
外表
抽象 形体 衣着 性格 头发 脸形 领带 逐步求精
信息科学与技术学院 闵笛
软件工程
自顶向下,逐步求精的基本思想
将功能、信息的说明分为多个层次,最高层 也最抽象 ― 仅仅只是概念性地描述功能或信 息,不提供功能的内部工作情况或信息的内 部结构;
设计者从最高层开始,仔细推敲,进行功能 和信息的细化,给出下层实现的细节;
信息科学与技术学院 闵笛
软件工程
功能内聚
模块仅包括为完成某个功能所必须的所有成 分。
模块所有成分共同完成一个功能,缺一不可
内聚性最强
信息科学与技术学院 闵笛
软件工程
模块间内聚的类型
信息科学与技术学院 闵笛
软件工程
总结:耦合、内聚与模块独立性关系
耦合与内聚都是模块独立性的定性标准,都 反映模块独立性的良好程度。
事务分析法过程和应用。 理解: 1 、典型的总体设计过程包括的步骤; 2 、设计中的启发式规则;信息科学与技术学院 闵笛
软件工程
重点和难点
重点: 软件设计过程中应遵循的基本原理; 面向数据流的设计方法 难点: 变换分析、事务分析法的过程和应用
信息科学与技术学院 闵笛
局部化:将一些关系密切的软件元素物理地 放得彼此靠近。
信息科学与技术学院 闵笛
软件工程
5.2.5 模块独立
1 、什么是模块独立性( module independence)
模块只完成系统要求的相对独立的功能 符合信息隐蔽原则 模块间关联和依赖程度尽量小 2 、模块独立的优点 容易开发、测试和维护
若一个模块内各元素(语句之间、程序段之 间)联系的越紧密,则它的内聚性就越.
设计目标:高内聚
信息科学与技术学院 闵笛
软件工程
巧合内聚(偶然内聚)
块内各组成成份在功能上是互不相关的。
模块 M 中的三个语句没有任何联系。 缺点:可理解性差,可修改性差
信息科学与技术学院 闵笛
软件工程
逻辑内聚
一模块对另一模块的引用 一模块向另一模块传递的数据量 一模块施加到另一模块的控制的数量 模块间接口的复杂程度
信息科学与技术学院 闵笛
软件工程
降低耦合度的设计原则
1、根据问题特点,选择合适的 耦合类型。 尽量使用数据耦合,少用控制耦合和特征耦 合,限制公共耦合的范围,完全不用内容耦 合
信息科学与技术学院 闵笛
软件工程
过程内聚(顺序性组合)
模块内各处理成分相关,且必须以特定次序 执行。
信息科学与技术学院 闵笛
软件工程
通信内聚
模块内各部分使用相同的输入数据,或产生 相同的输出结果
信息科学与技术学院 闵笛
软件工程
顺序内聚
模块完成多个功能,各功能都在同一数据结 构上操作,每一功能有唯一入口。
信息科学与技术学院 闵笛
软件工程
无直接耦合
两个模块没有直接关系,模块独立性最强。
信息科学与技术学院 闵笛
软件工程
数据耦合
属松散耦合。一模块访问另一模块时,通过 数据参数交换输入、输出信息。
信息科学与技术学院 闵笛
软件工程
控制耦合
模块之间传递的是控制信息(如开关、标志、 名字等),控制被调用模块的内部逻辑。
软件工程
软件设计的两个阶段
第一阶段:概要设计(总体设计)
根据软件需求,设计软件系统结构和数据结
构,确定程序的组成模块及模块之间的相互 关系。
回答“概括地说,系统应该如何实现?”。
其重要性是:站在全局高度,从较抽象的层
次上分析对比多种可能的系统实现方案和软
件结构,从中选出最佳方案和最合理的软件
软件工程 章总体设计
5.1设计过程
5.2设计原理
5.3启发规则
5.4描绘软件结构的图形工具
信息科学与技术学院 闵笛
软件工程
学习要求
掌握: 1 、软件设计过程中应遵循的基本原理和相
关概念; 2 、描绘软件结构的图形工具的运用; 3 、面向数据流设计方法概念;变换分析、
2 、降低模块接口的复杂性。 减少每个模块的参数个数;尽量使用标准过
程调用方式,少用直接引用的方式;传送的 信息以标准、直接的方式提供。 3 、把模块的通信信息放在信缓息科冲学区与中技术。学院 闵笛
软件工程
② 内聚性( cohesion )
又称块内联系。指一个模块内部各个元素彼 此结合的紧密程度的度量。
信息科学与技术学院 闵笛
软件工程
改控制耦合为数据耦合举例
信息科学与技术学院 闵笛
软件工程
特征耦合
两个模块通过传递数据结构加以联系,或都 与一个数据结构有关系,则称这两个模块间 存在特征耦合。
可能出现的情况:当把整个数据结构作为参 数传递时,被调用的模块虽然只需要使用其 中的一部分数据元素,但实际可以使用的数 据多于它真正需要的数据,这将导致对数据 访问失去控制。
信息科学与技术学院 闵笛
软件工程
特征耦合举例
说明:
“住户情况”是一个数据结构,图中模块都与此数
据结构有关。 “计算水费”和“计算电费”本无关,由于引用了
此数据结构产生依赖关系,它们之间也是特征偶合。
信息科学与技术学院 闵笛
软件工程
将特征耦合修改为数据耦合举例
信息科学与技术学院 闵笛
软件工程
信息科学与技术学院 闵笛
软件工程
5 . 2 . 1 模块化(Modularity )
① Fra Baidu bibliotek么是模块和模块化思想? 采取自顶向下的方式,逐层把软件系统划分
成若干可单独命名和可编址的部分- “ 模 块” ,每个模块完成一个特定的子功能;所 有模块按某种方法组成一个整体,完成整个 系统所要求的功能。 软件系统就是通过这些模块的组合来实现。
( 1 )软件可理解性降低 ( 2 )诊断错误困难 ( 3 )软件可维护性差 ( 4 )软件可靠性差
信息科学与技术学院 闵笛
软件工程
内容耦合
有下列情况之一的。是最不好的耦合形式!
信息科学与技术学院 闵笛
软件工程
模块间耦合强度
信息科学与技术学院 闵笛
软件工程
耦合强度依赖的因素:
信息科学与技术学院 闵笛
软件工程
② 模块化的优点
模块化是软件解决复杂问题所具备的手段, 可降低软件复杂性,减少开发工作量,从而 降低开发成本,提高软件生产率,以下是模 块化的依据。
信息科学与技术学院 闵笛
软件工程
③ 模块化与软件成本的关系
接口
信息科学与技术学院 闵笛
软件工程
④ 模块的基本属性
学生
认识复杂事物和现象时, 抽出事物本质的共同特
大学生
性而暂不考虑它们的细 节。
湛江师范学院的学生
② 软件开发中的抽象 湛师信息学院的学生
过程的抽象 数据的抽象
湛师信息学院11计本的学 生
信息科学与技术学院 闵笛
软件工程
抽象
什么是抽象思想?
在认识事物、分析和解决问题的过程中,忽略那 些与当前研究目标不相关的部分, 以便将注意力 集中于与当前目标相关的方面
结构,从而用较低成本开发出较高质量的软
件系统。
信息科学与技术学院 闵笛
软件工程
软件设计的两个阶段
第二阶段:详细设计(过程设计) 确定模块内部的算法和数据结构;选定某种
过程的表达形式来描述各种算法;产生精确 描述各模块程序过程的详细文档,并进行评 审。
信息科学与技术学院 闵笛
软件工程
将需求分析模型转换为软件设计
但耦合是直接的主导因素,内聚则辅助耦合 共同对模块独立性进行衡量。
设计要求:低耦合,高内聚
信息科学与技术学院 闵笛
软件工程
5 .3 启发规则
改进原则 :高内聚、低耦合
① 改进软件结构,提高模块独立性
② 模块规模适中
软件工程
① 制定规范
为软件开发小组制定在进行软件设计时,应 该共同遵守的标准,以便协调组内各成员的 工作。
信息科学与技术学院 闵笛
软件工程
② 软件结构设计
包括: 将系统按功能划分成模块 确定每个模块的功能 确定模块之间的调用关系 确定模块之间的接口,即模块之间传递的信息 评价模块结构的质量
公共环境耦合
一组模块引用同一个公用数据区(也称全局 数据区、公共数据环境)。
公共数据区指: 全局数据结构。 共享通讯区。 内存公共覆盖区等。
信息科学与技术学院 闵笛
软件工程
公共环境耦合举例
模块 A 、 B 、 C 间存在错综复杂的联系
信息科学与技术学院 闵笛
软件工程
公共耦合存在的问题
把几种相关功能(逻辑上相似的功能)组合 在一模块内,每次调用由传给模块的参数确 定执行哪种功能。
信息科学与技术学院 闵笛
软件工程
逻辑内聚模块
信息科学与技术学院 闵笛
软件工程
时间内聚(经典内聚)
模块完成的功能必须在同一时间内执行,这 些功能只因时间因素关联在一起。
例:初始化系统模块 系统结束模块、 紧急故障处理模块等
软件开发实际上就是一个从高层次抽象到低 层次抽象逐步过渡的过程。
一个复杂的系统先用一些高级的抽象概念构 造和理解,这些高级概念又用较低级的概念 构造和理解,如此进行下去,直到具体元素。
信息科学与技术学院 闵笛
软件工程
抽象例子
抽象
外表
形体 衣着 性格
信息科学与技术学院 闵笛
软件工程
5 . 2. 3 逐步求精
逐步求精:为了能集中精力解决主要问题而 尽量推迟对问题细节的考虑。
可把逐步求精看作是一项把一个时期内必须 解决的种种问题按优先级排序的技术。
逐步求精是一种自顶向下的设计策略,按这 种设计策略,程序的体系结构是通过逐步精 化处理过程的层次而设计出来的。
信息科学与技术学院 闵笛
软件工程 逐步求精的例子
信息科学与技术学院 闵笛
软件工程
3 、衡量模块独立性的两个准则
① 耦合性( coupling ) ② 内聚性( cohesion )
信息科学与技术学院 闵笛
软件工程
① 耦合性( coupling )
也称块间的联系。是对软件系统结构中,各 模块间相互联系紧密程度的一种度量。
设计目标:低耦合
随着每个后续细化逐步的完成,提供越来越
多的细节,最终得出用程序设计语言表达的
程序。
信息科学与技术学院 闵笛
软件工程 结合了模块化和逐步细化思想建立的软件结构图
信息科学与技术学院 闵笛
软件工程
5.2.4 信息隐蔽和局部化
信息隐蔽:在设计和确定模块时,使得一个 模块内包含的信息(过程或数据),不允许 其它不需要这些信息的模块访问,独立的模 块间仅仅交换为完成系统功能而必须交换的 信息。
软件工程
软件设计的目标和任务
软件需求:解决“做什么”
软件设计:解决“怎么做”.
软件设计的任务:以软件需求规格说明书为 依据,着手实现软件的需求,并将设计的结 果反映在“设计规格说明书”文档中。
软件设计的重要性:是软件开发阶段的第一
步,最终影响软件实现的成败和软件维护的
难易程度。
信息科学与技术学院 闵笛