当前位置:文档之家› 软件工程总体设计

软件工程总体设计

❖ 若一个模块内各元素(语句之间、程序段之 间)联系的越紧密,则它的内聚性就越.
❖ 设计目标:高内聚
信息科学与技术学院 闵笛
软件工程
巧合内聚(偶然内聚)
❖ 块内各组成成份在功能上是互不相关的。
模块 M 中的三个语句没有任何联系。 缺点:可理解性差,可修改性差
信息科学与技术学院 闵笛
软件工程
逻辑内聚
❖ 把几种相关功能(逻辑上相似的功能)组合 在一模块内,每次调用由传给模块的参数确 定执行哪种功能。
信息科学与技术学院 闵笛
软件工程
逻辑内聚模块
信息科学与技术学院 闵笛
软件工程
时间内聚(经典内聚)
❖ 模块完成的功能必须在同一时间内执行,这 些功能只因时间因素关联在一起。
❖ 例:初始化系统模块 ❖ 系统结束模块、 ❖ 紧急故障处理模块等
❖ 接口:指模块的输入与输出。 ❖ 功能:指模块实现什么功能。 ❖ 模块化好处: ❖ 模块化使软件容易测试和调试,因而有助提
高软件的可靠性。 ❖ 模块化能提高软件的可修改性。 ❖ 模块化有助于软件开发工程的组织管理。
信息科学与技术学院 闵笛
软件工程
5.2.2 抽象( Abstraction )
❖ ① 什么是抽象?
信息科学与技术学院 闵笛
软件工程
改控制耦合为数据耦合举例
信息科学与技术学院 闵笛
软件工程
特征耦合
❖ 两个模块通过传递数据结构加以联系,或都 与一个数据结构有关系,则称这两个模块间 存在特征耦合。
❖ 可能出现的情况:当把整个数据结构作为参 数传递时,被调用的模块虽然只需要使用其 中的一部分数据元素,但实际可以使用的数 据多于它真正需要的数据,这将导致对数据 访问失去控制。
公共环境耦合
❖ 一组模块引用同一个公用数据区(也称全局 数据区、公共数据环境)。
❖ 公共数据区指: ❖ 全局数据结构。 ❖ 共享通讯区。 ❖ 内存公共覆盖区等。
信息科学与技术学院 闵笛
软件工程
公共环境耦合举例
❖ 模块 A 、 B 、 C 间存在错综复杂的联系
信息科学与技术学院 闵笛
软件工程
公共耦合存在的问题
信息科学与技术学院 闵笛
软件工程
5 . 2 . 1 模块化(Modularity )
❖ ① 什么是模块和模块化思想? ❖ 采取自顶向下的方式,逐层把软件系统划分
成若干可单独命名和可编址的部分- “ 模 块” ,每个模块完成一个特定的子功能;所 有模块按某种方法组成一个整体,完成整个 系统所要求的功能。 ❖ 软件系统就是通过这些模块的组合来实现。
信息科学与技术学院 闵笛
软件工程
3 、衡量模块独立性的两个准则
❖ ① 耦合性( coupling ) ❖ ② 内聚性( cohesion )
信息科学与技术学院 闵笛
软件工程
① 耦合性( coupling )
❖ 也称块间的联系。是对软件系统结构中,各 模块间相互联系紧密程度的一种度量。
❖ 设计目标:低耦合
信息科学与技术学院 闵笛
软件工程
② 模块化的优点
❖ 模块化是软件解决复杂问题所具备的手段, 可降低软件复杂性,减少开发工作量,从而 降低开发成本,提高软件生产率,以下是模 块化的依据。
信息科学与技术学院 闵笛
软件工程
③ 模块化与软件成本的关系
接口
信息科学与技术学院 闵笛
软件工程
④ 模块的基本属性
信息科学与技术学院 闵笛
软件工程
无直接耦合
❖ 两个模块没有直接关系,模块独立性最强。
信息科学与技术学院 闵笛
软件工程
数据耦合
❖ 属松散耦合。一模块访问另一模块时,通过 数据参数交换输入、输出信息。
信息科学与技术学院 闵笛
软件工程
控制耦合
❖ 模块之间传递的是控制信息(如开关、标志、 名字等),控制被调用模块的内部逻辑。
❖ 但耦合是直接的主导因素,内聚则辅助耦合 共同对模块独立性进行衡量。
❖ 设计要求:低耦合,高内聚
信息科学与技术学院 闵笛
软件工程
5 .3 启发规则
外表
抽象 形体 衣着 性格 头发 脸形 领带 逐步求精
信息科学与技术学院 闵笛
软件工程
自顶向下,逐步求精的基本思想
❖ 将功能、信息的说明分为多个层次,最高层 也最抽象 ― 仅仅只是概念性地描述功能或信 息,不提供功能的内部工作情况或信息的内 部结构;
❖ 设计者从最高层开始,仔细推敲,进行功能 和信息的细化,给出下层实现的细节;
信息科学与技术学院 闵笛
软件工程
特征耦合举例
❖ 说明:
❖ “住户情况”是一个数据结构,图中模块都与此数
据结构有关。 ❖ “计算水费”和“计算电费”本无关,由于引用了
此数据结构产生依赖关系,它们之间也是特征偶合。
信息科学与技术学院 闵笛
软件工程
将特征耦合修改为数据耦合举例
信息科学与技术学院 闵笛
软件工程
软件工程
将需求分析模型转换为软件设计
❖ 软件结构设计以需求分析中得到的数据流图 为基础而进行。
信息科学与技术学院 闵笛
软件工程
第一个阶段总体设计的任务
❖ ① 制定规范 ❖ ② 设计软件系统结构(简称软件结构) ❖ ③ 处理方式设计 ❖ ④数据结构及数据库设计 ❖ ⑤ 可靠性设计 ❖ ⑥ 编写概要设计文档 ❖ ⑦ 概要设计评审
信息科学与技术学院 闵笛
软件工程
软件设计的目标和任务
❖ 软件需求:解决“做什么”
❖ 软件设计:解决“怎么做”.
❖ 软件设计的任务:以软件需求规格说明书为 依据,着手实现软件的需求,并将设计的结 果反映在“设计规格说明书”文档中。
❖ 软件设计的重要性:是软件开发阶段的第一
步,最终影响软件实现的成败和软件维护的
❖ 一模块对另一模块的引用 ❖ 一模块向另一模块传递的数据量 ❖ 一模块施加到另一模块的控制的数量 ❖ 模块间接口的复杂程度
信息科学与技术学院 闵笛
软件工程
降低耦合度的设计原则
❖ 1、根据问题特点,选择合适的 耦合类型。 尽量使用数据耦合,少用控制耦合和特征耦 合,限制公共耦合的范围,完全不用内容耦 合
❖ 2 、降低模块接口的复杂性。 ❖ 减少每个模块的参数个数;尽量使用标准过
程调用方式,少用直接引用的方式;传送的 信息以标准、直接的方式提供。 ❖ 3 、把模块的通信信息放在信缓息科冲学区与中技术。学院 闵笛
软件工程
② 内聚性( cohesion )
❖ 又称块内联系。指一个模块内部各个元素彼 此结合的紧密程度的度量。
信息科学与技术学院 闵笛
软件工程
过程内聚(顺序性组合)
❖ 模块内各处理成分相关,且必须以特定次序 执行。
信息科学与技术学院 闵笛
软件工程
通信内聚
❖ 模块内各部分使用相同的输入数据,或产生 相同的输出结果
信息科学与技术学院 闵笛
软件工程
顺序内聚
❖ 模块完成多个功能,各功能都在同一数据结 构上操作,每一功能有唯一入口。
学生

认识复杂事物和现象时, 抽出事物本质的共同特
大学生
性而暂不考虑它们的细 节。
湛江师范学院的学生
❖ ② 软件开发中的抽象 湛师信息学院的学生
❖ 过程的抽象 ❖ 数据的抽象
湛师信息学院11计本的 学生
信息科学与技术学院 闵笛
软件工程
抽象
❖ 什么是抽象思想?
在认识事物、分析和解决问题的过程中,忽略那 些与当前研究目标不相关的部分, 以便将注意力 集中于与当前目标相关的方面
关概念; ❖ 2 、描绘软件结构的图形工具的运用; ❖ 3 、面向数据流设计方法概念;变换分析、
事务分析法过程和应用。 ❖ 理解: ❖ 1 、典型的总体设计过程包括的步骤; ❖ 2 、设计中的启发式规则;信息科学与技术学院 闵笛
软件工程
重点和难点
❖ 重点: ❖ 软件设计过程中应遵循的基本原理; ❖ 面向数据流的设计方法 ❖ 难点: ❖ 变换分析、事务分析法的过程和应用
信息科学与技术学院 闵笛
软件工程
控制耦合举例
信息科学与技术学院 闵笛
软件工程
去除模块间控制耦合的方法
❖ 控制耦合增加了理解和编程的复杂性,调用 模块必须知道被调模块的内部逻辑,增加了 相互依赖。解决方法:
❖ (1)将被调用模块内的判定上移到调用模块 中进行
❖ (2)被调用模块分解成若干单一功能模块
软件工程
第五章总体设计
❖ 5 . 1 设计过程 ❖ 5 . 2 设计原理 ❖ 5 . 3 启发规则 ❖ 5 . 4 描绘软件结构的图形工具 ❖ 5 . 5 面向数据流的设计方法 ❖ 5 . 6 小结 ❖ 习题
信息科学与技术学院 闵笛
软件工程
学习要求
❖ 掌握: ❖ 1 、软件设计过程中应遵循的基本原理和相
❖ 局部化:将一些关系密切的软件元素物理地 放得彼此靠近。
信息科学与技术学院 闵笛
软件工程
5.2.5 模块独立
❖ 1 、什么是模块独立性( module independence)
❖ 模块只完成系统要求的相对独立的功能 ❖ 符合信息隐蔽原则 ❖ 模块间关联和依赖程度尽量小 ❖ 2 、模块独立的优点 ❖ 容易开发、测试和维护
❖ ( 1 )软件可理解性降低 ❖ ( 2 )诊断错误困难 ❖ ( 3 )软件可维护性差 ❖ ( 4 )软件可靠性差
信息科学与技术学院 闵笛
软件工程
内容耦合
❖ 有下列情况之一的。是最不好的耦合形式!
信息科学与技术学院 闵笛
软件工程
模块间耦合强度
信息科学与技术学院 闵笛
软件工程
耦合强度依赖的因素:
相关主题