第一部分 软件分析与设计基础第1章 软件分析与设计概述 2
1.1 什么是软件 2
1.1.1 软件定义与特性 2
1.1.2 软件的演化 3
1.1.3 软件危机 3
1.1.4 软件危机的解决途径 3
1.2 什么是软件分析与设计 4
1.2.1 基本原理 4
1.2.2 基本原则 5
1.3 软件系统开发范型 6
1.3.1 结构化开发范型 6
1.3.2 面向对象开发范型 6
1.4 软件生产活动 7
1.5 小结 8
习题 8
第2章 软件分析与设计过程及其模型 9
2.1 软件生命周期 9
2.2 敏捷软件开发 10
2.2.1 敏捷方法与开发原则 10
2.2.2 极限编程及其模型 11
2.3 结对编程方法 12
2.3.1 什么是结对编程 12
2.3.2 结对编程分析 15
2.3.3 分布式结对编程 16
2.4 软件过程模型 17
2.4.1 传统软件过程模型 17
2.4.2 面向对象过程模型 21
2.5 能力成熟度模型CMM 24
2.5.1 什么是能力成熟度模型 24
2.5.2 CMM的5级模型 25
2.6 小结 26
习题 27
第3章 案例研究 28
3.1 案例研究中涵盖的内容 28
3.2 案例1:POS机系统 28
3.3 案例2:ATM系统 28
3.4 案例3:图书馆系统 29
3.5 案例4:电子商务系统 29
3.6 案例5:胰岛素输送系统 29
3.7 案例6:分布式结对编程系统 30
3.8 小结 30
习题 30
第二部分 结构化分析与设计第4章 需求分析 32
4.1 软件系统需求 32
4.2 需求分析过程 33
4.3 需求分析技术 36
4.3.1 会谈技术 36
4.3.2 问卷调查技术 36
4.3.3 场景分析技术 36
4.3.4 用例分析技术 37
4.4 小结 43
习题 44
第5章 结构化分析方法 45
5.1 结构化分析 45
5.2 结构化分析模型 45
5.3 数据实体建模方法 46
5.4 数据流建模方法 47
5.4.1 数据流建模 47
5.4.2 图书馆系统案例分析 50
5.5 状态转换建模方法 52
5.6 小结 52
习题 52
第6章 结构化设计基础 53
6.1 软件设计过程 53
6.1.1 概要设计 53
6.1.2 详细设计 55
6.2 模块化设计原理 56
6.2.1 分解 56
6.2.2 抽象 57
6.2.3 信息隐蔽 57
6.2.4 逐步求精 58
6.2.5 模块独立性 58
6.3 模块独立性度量 58
6.3.1 内聚性 58
6.3.2 耦合性 59
6.4 软件组成结构 59
6.4.1 软件结构图 60
6.4.2 结构优化 60
6.5 软件体系结构 61
6.5.1 系统构成模型 61
6.5.2 系统控制模式 63
6.6 小结 64
习题 64
第7章 结构化概要设计方法 65
7.1 数据流模型 65
7.1.1 变换型数据流 65
7.1.2 事务型数据流 65
7.1.3 混合型数据流 65
7.2 面向数据流的设计方法 66
7.2.1 设计过程 66
7.2.2 变换流设计 67
7.2.3 事务流设计 68
7.2.4 混合流设计 68
7.3 面向数据的设计方法 69
7.3.1 数据结构的表示 70
7.3.2 面向数据结构的设计过程 70
7.3.3 信用卡记账系统案例分析 71
7.4 图书馆系统概要设计 73
7.4.1 问题定义和数据流描述 73
7.4.2 系统结构图 73
7.5 小结 75
习题 75
第8章 结构化详细设计 77
8.1 结构化详细设计的结构和优点 77
8.2 结构化详细设计工具 78
8.2.1 程序流程图 78
8.2.2 N-S盒图 78
8.2.3 PAD 79
8.2.4 HIPO图 81
8.2.5 判定表与判定树 83
8.2.6 过程描述语言 85
8.3 人机交互界面设计 86
8.3.1 交互界面分析 86
8.3.2 交互界面设计步骤 88
8.3.3 交互界面设计指南 89
8.3.4 CAD系统绘图操作案例分析 89
8.4 数据库设计 90
8.5 编码实现 92
8.5.1 编码语言 92
8.5.2 编码风格 92
8.6 小结 93
习题 94
第三部分 面向对象分析与设计第9章 面向对象基础 98
9.1 面向对象概念 98
9.2 面向对象模型 98
9.3 统一建模语言UML 101
9.3.1 UML的组成 101
9.3.2 UML模型 102
9.4 UML与面向对象方法学的关系 102
9.5 小结 102
习题 103
第10章 面向对象分析 104
10.1 用例驱动分析 104
10.2 领域与业务建模 107
10.2.1 识别业务类或分析类 108
10.2.2 开发业务类图与交互图 109
10.2.3 识别属性和操作 111
10.2.4 开发协作图 111
10.3 系统行为建模 113
10.3.1 建立系统顺序图 113
10.3.2 建立操作契约 114
10.3.3 开发UML顺序图 115
10.4 建立系统状态模型 116
10.4.1 建立系统状态图 116
10.4.2 POS机案例分析 117
10.5 分布式结对编程系统案例分析 119
10.6 小结 122
习题 122
第11章 面向对象设计 123
11.1 面向对象设计概述 123
11.1.1 系统逻辑架构 123
11.1.2 面向对象设计模型 123
11.2 构件级设计 125
11.2.1 构件 125
11.2.2 构件级设计步骤 126
11.2.3 基于构件的设计原则 127
11.3 确定并发性 128
11.4 使用设计模式 129
11.4.1 基于职责的对象设计 130
11.4.2 常见的设计模式 130
11.5 面向对象详细设计 134
11.5.1 领域模型精化 134
11.5.2 逻辑架构的精化设计 138
11.5.3 分层设计 139
11.5.4 POS机案例分析 142
11.6 类精化设计 152
11.7 数据存储与持久性设计 154
11.7.1 数据存储 154
11.7.2 持久性设计 154
11.8 部署与构件图 160
11.9 面向对象设计案例分析 161
11.9.1 POS机系统 161
11.9.2 分布式结对编程系统 164
11.10 小结 167
习题 167
第12章 统一过程与模型 168
12.1 概述 168
12.1.1 统一过程是用例驱动的过程 168
12.1.2 统一过程是迭代、增量的过程 168
12.2 用例驱动开发过程 169
12.2.1 捕获用例 169
12.2.2 ATM系统案例分析 170
12.3 软件构架 174
12.3.1 什么是软件构架 174
12.3.2 构架描述 175
12.4 需求捕获工作流 176
12.4.1 需求捕获过程 177
12.4.2 电子商务交易系统案例分析 178
12.5 分析工作流 180
12.5.1 分析过程 181
12.5.2 电子商务交易系统案例分析 182
12.6 设计工作流 185
12.6.1 设计过程 185
12.6.2 设计工作活动与应用 186
12.7 实现工作流 191
12.7.1 实现模型 192
12.7.2 实现活动 192
12.8 小结 194
习题 194
第13章 高要求系统的分析与设计 195
13.1 概述 195
13.2 高要求系统的特性及其关系 196
13.2.1 高要求系统的特性 196
13.2.2 可用性和可靠性的关系 197
13.2.3 安全性和保密性的关系 197
13.3 高要求系统的需求分析 198
13.3.1 系统的风险描述 199
13.3.2 系统的安全性描述 200
13.3.3 系统的保密性描述 201
13.3.4 系统的可靠性描述 202
13.4 案例分析 203
13.4.1 胰岛素输送系统的需求分析 203
13.4.2 ATM系统的可靠性需求 207
13.5 形式化描述方法 207
13.5.1 系统的形式化描述方法 207
13.5.2 接口的形式化描述方法 208
13.5.3 对象约束语言 212
13.5.4 系统行为的形式化描述 214
13.5.5 胰岛素输送系统案例分析 214
13.6 高要求系统的设计 215
13.6.1 系统设计过程 215
13.6.2 监控系统 216
13.6.3 案例分析 216
13.7 高要求系统的开发策略 219
13.7.1 可靠的软件过程 220
13.7.2 可靠的编程 220
13.7.3 容错设计 221
13.7.4 容错体系结构 222
13.8 系统验证 223
13.8.1 可靠性验证 223
13.8.2 安全性保证 224
13.8.3 信息安全评估 225
13.8.4 胰岛素输送系统案例分析 226
13.9 小结 228
习题 229
第四部分 软件分析与设计工具第14章 结构化分析工具Visio 232
14.1 概述 232
14.2 Visio的基本使用 232
14.2.1 Visio初步 233
14.2.2 Visio提供的文件类型 234
14.3 数据流模型绘制 235
14.3.1 数据流图 235
14.3.2 案例分析 235
14.4 状态机模型 237
14.4.1 状态图 237
14.4.2 案例分析 238
14.5 JSD模型 239
14.5.1 Jackson图 239
14.5.2 案例分析 240
14.6 实体-关系模型 241
14.6.1 实体-关系图 241
14.6.2 案例分析 242
14.7 小结 242
习题 242
第15章 面向对象分析与设计工具Rose 244
15.1 概述 244
15.2 Rational Rose的基本使用 244
15.2.1 Rational Rose主界面 244
15.2.2 Rational Rose基本操作 246
15.2.3 Rational Rose模型 247
15.3 用例模型 248
15.3.1 用例图 248
15.3.2 案例分析 248
15.4 类模型与类图 251
15.4.1 类模型 252
15.4.2 类图 252
15.4.3 案例分析 254
15.5 交互模型 255
15.5.1 协作图与案例分析 255
15.5.2 顺序图与案例分析 257
15.5.3 顺序图与协作图的转换 258
15.6 部署模型 259
15.6.1 部署图 259
15.6.2 案例分析 259
15.7 小结 260
习题 260
第16章 面向数据分析与设计工具PowerDesigner 261
16.1 概述 261
16.2 PowerDesigner基本操作 262
16.2.1 PowerDesigner操作步骤 262
16.2.2 PowerDesigner模型 263
16.3 概念数据模型构建 265
16.3.1 概念数据模型的功能 265
16.3.2 概念数据视图 265
16.3.3 案例分析 269
16.4 业务处理模型构建 274
16.4.1 业务处理模型图 274
16.4.2 案例分析 275
16.5 物理数据模型构建 279
16.5.1 物理数据模型 279
16.5.2 物理数据视图 279
16.6 小结 287
习题 288
参考文献 289