软件工程--总体设计
西北师大数学与信息科学学院
软件设计
内
内聚性 顺序 内聚 通信 内聚
聚
高 功能 内聚 强
低
时间 内聚 逻辑 内聚 弱 偶然 性内 聚
过程 内聚
模块独立性
19
西北师大数学与信息科学学院
2、内聚
内聚:一个模块内各个元素彼此结合的紧密程度。
低内聚 偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。 逻辑内聚:若干个逻辑功能类似的任务组成一个模块。 时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。
11
西北师大数学与信息科学学院
模块化和软件成本的关系
软件总成本 最小成本区
M
接口成本
成本或工作量
模块数目
12
西北师大数学与信息科学学院
5.2.2
抽象
我们在考虑问题时,集中考虑和当前问题有关的方 面,而忽略和当前问题无关的方面,这就是抽象。或 者说抽象就是抽出事物的本质特性而暂时不考虑它们 的细节。 5.2.3 逐步求精 逐步求精是人类解决复杂问题时采用的基本技 术,也是许多软件工程技术(例如,规格说明技术,
25
西北师大数学与信息科学学院
5.4 表示软件结构的图形工具
5.4.1 5.4.2 5.4.3 层次图 HIPO图 结构图
26
西北师大数学与信息科学学院
5.4.1
层次图和HIPO图
通常使用层次图描绘软件的层次结构。
1、层次图
层次图用来描绘软件的层次结构,很适于在自顶向下 设计软件的过程中使用。 在层次图中一个矩形框代表一个模块,框间的连线表 示调用关系(位于上方的矩形框所代表的模块调用位于 下方的矩形框所代表的模块)。
37
西北师大数学与信息科学学院
A
M
B (a )
C
T1
T2 (b )
T3
4.3 选择调用和循环调用的表示
(a) 选择调用; (b) 循环调用
38
西北师大数学与信息科学学院
产生最佳解 好输入 解 解
好 输 入
得到好输入
计算最佳解
输出结果
原始输入 原始输入 读输入
编辑结果
1、耦合
1. 2. 3. 非直接耦合 数据耦合 特征耦合 弱耦合
模块A
内容耦合 • 访问其它模块的内部数据 • 直接跳到其他模块内部执行 非直接耦合 模块之间没有信息传递
模块B 数据耦合 通过简单变量 交换数据 模块3
4.
5. 6. 7.
控制耦合
外部耦合 公共耦合 内容耦合
模块1
模块2
中耦合
特征耦合 通过数据结 构交换数据
第八章基于构件的软件工程
第五章系统设计
1
西北师大数学与信息科学学院
4
5.1 5.2 5.3 5.4 5.5 设计过程 设计原理 启发规则 描绘软件结构的图形工具 面向数据流的设计方法
2
西北师大数学与信息科学学院
软件设计
软件设计阶段要解决“怎么做”的问题,是整个 软件开发过程的核心问题,所有的开发工作都将根据 设计的方案进行。系统的总体结构在该阶段决定,因 此软件的总体设计决定了系统的质量。软件设计分为 总体设计和详细设计两个阶段。
数据设计
其他需求
程序模块 过程设计 编码
软件开发阶段的信息流
4
西北师大数学与信息科学学院
总体设计的任务
●任务:确定系统的软件结构,分解模块 , 确定系统的模块层次关系。 ●目标: 编写软件的 “总体设计说明书” ●工具:采用的工具 数据流图 层次图 HIPO图 软件结构图
5
西北师大数学与信息科学学院
修 需求 说明书 软件 总体 结构 设计 改
修
改
设计说 明书 复审
复审
详细 可接受 设计 模块描述
1、设计阶段结束要交付的文档是设计说明书,根据 设计方法的不同,有不同的设计文档。 2、每个设计步骤完成后,都应进行复审。 3
西北师大数学与信息科学学院
软件设计的过程
信息描述 功能描述 设计 行为描述 集成并确 认的软件 测试
详细阐述。
15
西北师大数学与信息科学学院
模块间的耦合
耦合性是程序结构中各个模块之间相互关联的度量 它取决于各个模块之间接口的复杂程度、调用模块的方 式以及那些信息通过接口。
低 非直接 耦合 强 数据 耦合 特征 耦合 耦合性 控制 耦合 模块独立性 外部 耦合 公共 耦合 高 内容 耦合 弱
16
西北师大数学与信息科学学院
数据流图
• 组成系统的物理元素清单 • 成本/效益分析 • 实现系统的进度计划 审查和 复 审
8
制订测 试计划
数据库 设 计 • 系统说明 • 用户手册 • 测试计划 • 详细的实现计划 • 数据库设计结果
书写 文档
西北师大数学与信息科学学院
5.2 系统设计的基本原则
5.2.1 模块化
5.2.2 抽象 5.2.3 信息隐蔽 5.2.4 模块独立性
过程、函数、子程序和宏等,都可作为模块。 面向对象范型中的对象是模块,对象内的方法也是 模块。模块是构成程序的基本构件。
10
西北师大数学与信息科学学院
3、模块化原理
有两个函数: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) 这个不等式表明:单独解决问题P1和P2所需的工作量之和, 比把P1和P2合起来作为一个问题来解决时所需的工作量要少。
尾部是空心圆表示传递的是数据 实心圆表示传递的是控制信息
34
西北师大数学与信息科学学院
描绘软件结构的图形工具
结构图的组成 有6种类型的模块:传入模块、传出模块、变换模块、协调模 块,如下图所示,还有两种: 源模块:不调用其它模块的传 入模块,只适用于传入部分的始端。最初的输入; 漏模块: 不调用其它模块的传出模块,只适用于传出部分的末端。最后 的输出。
14
西北师大数学与信息科学学院
5.2.5 模块独立
模块独立概念是模块化、抽象、逐步求精和信息
隐藏等概念的直接结果,也是完成有效的模块设计
的基本标准。 模块的独立程度可以由两个定性标准来度量,这 两个标准分别称为内聚和耦合。耦合衡量不同模块
彼此间互相依赖(连接)的紧密程度;内聚衡量一个
模块内部各个元素彼此结合的紧密程度。以下分别
强耦合
模块4 控制耦合 模块之间传递 的是控制信息
模块A
模块L 模块1
模块B
模块C
模块D
模块N
T 全 局 性简单变量 外部耦合 S1 Flag=1? F S2
全局性数据结构 公共耦合 17
西北师大数学与信息科学学院
设计原则:尽量使用数据耦合, 少用控制耦合,限制公共环境耦合, 完全不用内容耦合。
18
软件设计的目标
结构化设计(SD)技术
1、确定系统的软件结构,分解模块 ,确定系统 的模块层次关系 2、确定每个模块功能的算法、数据结构 数据流图的特征 分层的DFD图
启发式规则
最终的结构图 优化 确定每个模块功能的算 法、数据结构
初始的结构图
(层次图表示)
转换
(事务型、变换型(特征) )
6
西北师大数学与信息科学学院
尾部是空心圆表示传递的是数据 实心圆表示传递的是控制信息
33
西北师大数学与信息科学学院
5.4.1 结构图
结构图和层次图类似也是描绘软件结构的图形工具。 结构图的基本符号 方框代表模块,框内注明模块的名字或主要功能;
箭头表示模块的调用关系,为了简单起见,可以只 用直线而不用箭头表示模块间的调用关系。
设计和实现技术、测试和集成技术)的基础。逐步
求精定义为:“为了能集中精力解决主要问题而尽
量推迟对问题细节的考虑。”
1隐蔽和局部化
信息隐蔽指:是指在设计和确定模块时,使得一个 模块内包含的信息(过程或数据),对于不需要这些 信息的其他模块来说, 是不能访问的;即将那些自 身的实现细节与数据“隐藏”起来。 信息局部化指:局部化是指把一些关系密切的软件 元素物理地放得彼此靠近。在模块中使用局部数据 元素是局部化的一个例子。 信息隐蔽 局部和的关系?
描绘软件结构的图形工具
在层次图(H图)里除了最顶层的方框之外,每个方框都加编 号。编号规则和数据流图的编号规则相同,例如,图加了编号后 得到图0。像这样带编号的层次图称为HIPO图(层次图加输入/ 处理/输出图的英文缩写)。
图学生成绩管理系统HIPO图
30
西北师大数学与信息科学学院
图4.6
31
IPO图的一个例子
TOP TOP TOP
A
B
A
B
A
B
C
D
C
D
C
D
E ( a)
F
E (b)
F
E ( c)
F
图 模块的判定作用范围
(a) 差的结构图; (b) 不理想的结构图; (c) 理想的结构图
24
西北师大数学与信息科学学院
5.力争降低模块接口的复杂程度。 模块接口复杂是软件发生错误的一个主要 原因。 6.设计单入口单出口的模块,避免“病态 连接” 7.模块功能应该可以预测 。 防止模块功能过分局限
5.1 设计过程
软件设计分为: 结构设计 总体设计(概要设计) 过程设计 详细设计 总体设计过程分两个阶段: 系统设计阶段:确定系统的具体设计方案; 结构设计阶段:确定软件结构(划分模块)。