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

软件工程--总体设计说明

第八章基于构件的软件工程
第五章系统设计
1
西北师大数学与信息科学学院
4
5.1 设计过程 5.2 设计原理 5.3 启发规则 5.4 描绘软件结构的图形工具 5.5 面向数据流的设计方法
2
西北师大数学与信息科学学院
软件设计
软件设计阶段要解决“怎么做”的问题,是整个 软件开发过程的核心问题,所有的开发工作都将根据 设计的方案进行。系统的总体结构在该阶段决定,因 此软件的总体设计决定了系统的质量。软件设计分为 总体设计和详细设计两个阶段。
1. 非直接耦合 2. 数据耦合 3. 特征耦合 4. 控制耦合 5. 外部耦合 6. 公共耦合 7. 内容耦合
弱耦合 中耦合 强耦合
模块A 模块B
内容耦合
• 访问其它模块的内部数据
• 直接跳到其他模块内部执行
非直接耦合 模块之间没有信息传递
数据耦合
通过简单变量 交换数据
模块1
模块2
特征耦合
通过数据结 构交换数据
程序模块 编码
测试
集成并确 认的软件
软件开发阶段的信息流
4
西北师大数学与信息科学学院
总体设计的任务
●任务:确定系统的软件结构,分解模块 , 确定系统的模块层次关系。
●目标: 编写软件的 “总体设计说明书”
●工具:采用的工具 数据流图 层次图 HIPO图 软件结构图
5
西北师大数学与信息科学学院
软件设计的目标
修改
修改
需求
软件
说明书 总体 结构
设计
复审
可接受
详细 设计 模块描述
复审
设计说 明书
1、设计阶段结束要交付的文档是设计说明书,根据 设计方法的不同,有不同的设计文档。
2、每个设计步骤完成后,都应进行复审。
3
西北师大数学与信息科学学院
软件设计的过程
信息描述
功能描述 行为描述
设计
其他需求
数据设计 过程设计
结构化设计(SD)技术
1、确定系统的软件结构,分解模块 ,确定系统 的模块层次关系
2、确定每个模块功能的算法、数据结构
数据流图的特征
启发式规则
分层的DFD图
初始的结构图
最终的结构图
转换
优化
(层次图表示)
(事务型、变换型(特征) )
确定每个模块功能的算
法、数据结构
6
西北师大数学与信息科学学院
5.1 设计过程
审查和 复审
功能 分解
制订测 试计划
书写 文档
8
西北师大数学与信息科学学院
设计软 件结构
数据库 设计
• 系统说明 • 用户手册 • 测试计划 • 详细的实现计划 • 数据库设计结果
5.2 系统设计的基本原则
5.2.1 模块化 5.2.2 抽象 5.2.3 信息隐蔽 5.大数学与信息科学学院
13
西北师大数学与信息科学学院
5.2.4 信息隐蔽和局部化
信息隐蔽指:是指在设计和确定模块时,使得一个
模块内包含的信息(过程或数据),对于不需要这些
信息的其他模块来说, 是不能访问的;即将那些自
身的实现细节与数据“隐藏”起来。
信息局部化指:局部化是指把一些关系密切的软件
元素物理地放得彼此靠近。在模块中使用局部数据
15
西北师大数学与信息科学学院
模块间的耦合
耦合性是程序结构中各个模块之间相互关联的度量 它取决于各个模块之间接口的复杂程度、调用模块的方 式以及那些信息通过接口。
低 非直接 耦合

数据 耦合
耦合性
特征 控制 外部 耦合 耦合 耦合
模块独立性
公共 耦合
高 内容 耦合

16
西北师大数学与信息科学学院
1、耦合
5.2.1 软件设计原理
1、模块 是由边界元素限定的相邻的程序元素(例如, 数据说明,可执行的语句)的序列,而且有一个总体标 识符来代表它。即能够单独命名并独立地完成一定功 能的程序语句的集合。
模块化:把程序划分成若干个模块,每个模块完成 一个子功能,把这些模块集成起来组成一个整体, 可以完成指定的功能,满足问题的功能。
模块3
模块4
模块A
模块B
模块C
模块D
全局性数据结构 公共耦合 17
模块L 模块N
模块1
控制耦合
模块之间传递 的是控制信息
T
F
Flag=1?
全 局 性简单变量
S1
S2
外部耦合
西北师大数学与信息科学学院
设计原则:尽量使用数据耦合,
过程、函数、子程序和宏等,都可作为模块。 面向对象范型中的对象是模块,对象内的方法也是 模块。模块是构成程序的基本构件。
10
西北师大数学与信息科学学院
3、模块化原理
有两个函数:C(x)表示问题x的复杂程度;E(x)表示解决 问题x所需要的工作量(时间)。
对于两个问题P1和P2,如果:C(P1)>C(P2) 则:E(P1)>E(P2)
元素是局部化的一个例子。
信息隐蔽
局部和的关系?
14
西北师大数学与信息科学学院
5.2.5 模块独立
模块独立概念是模块化、抽象、逐步求精和信息 隐藏等概念的直接结果,也是完成有效的模块设计 的基本标准。
模块的独立程度可以由两个定性标准来度量,这 两个标准分别称为内聚和耦合。耦合衡量不同模块 彼此间互相依赖(连接)的紧密程度;内聚衡量一个 模块内部各个元素彼此结合的紧密程度。以下分别 详细阐述。
软件设计分为:
结构设计
总体设计(概要设计)
过程设计
详细设计
总体设计过程分两个阶段:
系统设计阶段:确定系统的具体设计方案;
结构设计阶段:确定软件结构(划分模块)。
7
西北师大数学与信息科学学院
系统设计过程
设想供选 择的方案
选取合 理的方案
推荐最 佳方案
数据流图
• 系统流程图 • 组成系统的物理元素清单 • 成本/效益分析 • 实现系统的进度计划
另一个有趣的特性是:C(P1+P2)>C(P1)+C(P2)
根据前面的结论,我们可以得出下面的不等式: E(P1+P2)>E(P1)+E(P2) 这个不等式表明:单独解决问题P1和P2所需的工作量之和, 比把P1和P2合起来作为一个问题来解决时所需的工作量要少。
11
西北师大数学与信息科学学院
模块化和软件成本的关系
最小成本区 M
软件总成本 接口成本
成本或工作量
模块数目
12
西北师大数学与信息科学学院
5.2.2 抽象
我们在考虑问题时,集中考虑和当前问题有关的方 面,而忽略和当前问题无关的方面,这就是抽象。或 者说抽象就是抽出事物的本质特性而暂时不考虑它们 的细节。
5.2.3 逐步求精
逐步求精是人类解决复杂问题时采用的基本技 术,也是许多软件工程技术(例如,规格说明技术, 设计和实现技术、测试和集成技术)的基础。逐步 求精定义为:“为了能集中精力解决主要问题而尽
相关主题