第1章 面向对象技术概述 1
1.1 软件危机及软件工程 1
1.1.1 软件及其特性 1
1.1.2 软件危机 3
1.1.3 软件工程 4
1.1.4 软件的质量特性 7
1.2 对软件开发的基本认识 8
1.2.1 控制软件复杂性的基本方法 8
1.2.2 传统软件开发方法中存在的问题 10
1.3 面向对象技术 13
1.3.1 面向对象技术概述 13
1.3.2 面向对象领域中的基本概念 15
习题 21
2.1.1 为什么要建模 23
2.1 面向对象建模 23
第2章 软件建模和软件开发过程 23
2.1.2 建模原则 25
2.2 面向对象的软件开发过程 26
2.2.1 理解软件开发统一过程 26
2.2.2 RUP的特点 27
2.2.3 RUP的生命周期 28
2.2.4 RUP的核心工作流 30
2.2.5 统一过程的模型 31
习题 32
第3章 统一建模语言UML简介 33
3.1 UML概述 33
3.1.1 UML的产生背景 33
3.1.2 什么是UML 34
3.1.3 UML中的视图 35
3.2.1 UML的体系结构 36
3.2 UML的构成 36
3.2.2 UML的模型元素 37
3.2.3 UML的模型结构 37
3.2.4 UML的模型图 38
3.2.5 UML建模规则 39
3.2.6 UML的公用机制 39
3.3 一个UML的例子 40
3.3.1 用例图 40
3.3.2 活动图 41
3.3.3 顺序图 42
3.3.4 协作图 42
3.3.5 类图 43
3.3.6 状态图 43
3.3.7 组件图 44
习题 45
3.3.8 部署图 45
第4章 用例建模 46
4.1 用例模型 46
4.1.1 系统 47
4.1.2 参与者 48
4.1.3 用例与用例图 48
4.1.4 用例之间的关系 51
4.2 建立用例模型 54
4.2.1 建立用例模型概述 54
4.2.2 识别参与者 54
4.2.3 寻找用例的方法 55
4.2.4 常见问题分析 56
4.2.5 建立用例模型应用举例 59
习题 62
5.1.1 什么是面向对象的分析 63
第5章 结构建模 63
5.1 面向对象的分析概述 63
5.1.2 结构模型概述 65
5.2 类图 66
5.2.1 类图与对象图 66
5.2.2 识别类与对象 70
5.2.3 识别属性 74
5.2.4 定义操作 76
5.3 建立关系 77
5.3.1 关联 78
5.3.2 聚合 83
5.3.3 泛化 85
5.3.4 依赖 88
5.3.5 应用举例 89
5.4 接口与实现 90
5.4.1 接口 91
5.4.2 实现关系 92
5.5 包图 93
5.5.1 包的定义 93
5.5.2 设计包的原则 95
5.5.3 包的划分方法 96
5.6 构造型 97
5.7 建立结构模型应用举例 98
5.7.1 识别对象 99
5.7.2 识别属性 99
5.7.3 识别关联 99
习题 100
6.1 行为模型概述 102
6.1.1 行为模型 102
第6章 行为建模 102
6.1.2 消息 103
6.2 状态图 104
6.2.1 事件 105
6.2.2 状态和状态图 106
6.2.3 状态的构成 107
6.2.4 变迁的构成 108
6.2.5 子状态 111
6.2.6 信号 113
6.2.7 建立状态模型 114
6.3 活动图 116
6.3.1 活动图的内容 116
6.3.2 分支与并发活动 117
6.3.3 泳道 118
6.3.4 建立活动图 119
6.4 交互模型 120
6.4.1 交互模型概述 120
6.4.2 顺序图 122
6.4.3 协作图 127
6.5 建立行为模型应用举例 130
6.5.1 动态用例分析 130
6.5.2 建立交互模型 131
6.5.3 描述对象操作 132
6.5.4 对象状态分析 133
习题 134
第7章 软件系统体系架构建模 135
7.1 面向对象设计概述 135
7.1.1 面向对象的总体设计 136
7.1.2 面向对象的详细设计 136
7.2 逻辑体系架构建模 136
7.2.1 软件体系架构设计概述 137
7.2.2 典型的系统架构 138
7.2.3 子系统划分 142
7.2.4 识别并发性 143
7.2.5 选择软件控制策略 144
7.3 物理体系架构建模 145
7.3.1 组件和组件图 145
7.3.2 常见的物理关系 147
7.3.3 组件图应用举例 149
7.3.4 部署图 149
7.3.5 物理体系架构设计 150
7.4 对象约束语言 151
7.4.1 约束 151
7.4.2 对象约束语言 153
7.4.3 OCL的构成 153
7.5.2 部署设计 160
7.5 软件体系架构建模应用举例 160
7.5.1 系统的体系架构 160
习题 161
第8章 系统详细设计 162
8.1 面向对象设计原则 162
8.1.1 开闭原则 162
8.1.2 Liskov替换原则 164
8.1.3 依赖倒置原则 164
8.1.4 接口分离原则 165
8.2 系统详细设计 166
8.2.1 为重用类而增加结构 166
8.2.2 细化和重组类 168
8.2.3 按编程语言调整继承 169
8.2.4 调整与完善属性 171
8.2.5 验证操作的职责分配 173
8.2.6 提高性能 175
8.2.7 应用举例 177
8.3 人机界面设计 179
8.3.1 人机界面设计概述 179
8.3.2 人机界面的功能特征 180
8.3.3 界面设计中应考虑的因素 181
8.3.4 建立界面需求规格模型 182
8.3.5 用面向对象概念表达界面元素 184
8.3.6 应用举例 184
8.4 数据建模 186
8.4.1 选择数据存储管理模式 186
8.4.2 数据库设计的基本过程 187
8.4.3 对象数据库模型 189
8.4.4 关系数据库模型 191
习题 198
第9章 面向对象软件实现 199
9.1 面向对象程序设计语言概述 199
9.1.1 面向对象语言的技术特点 199
9.1.2 面向对象语言的选择 202
9.1.3 面向对象的程序设计风格 202
9.2 面向对象的实现策略 204
9.2.1 实现面向对象概念 204
9.2.2 实现关联 207
9.2.3 实现状态图 214
9.3 面向对象软件的测试 216
9.3.1 面向对象软件测试概述 216
9.3.2 面向对象分析的测试 218
9.3.3 面向对象设计的测试 219
9.3.4 面向对象的单元测试 220
9.3.5 面向对象的集成测试 221
9.3.6 面向对象的系统测试 222
习题 222
第10章 Web建模 223
10.1 Web建模概述 223
10.2 Web应用系统的体系结构 225
10.3 Web建模 227
10.3.1 页面建模 227
10.3.2 表单建模 231
10.3.3 框架建模 233
10.3.4 Web的其他构造型 233
10.4 应用举例 235
10.4.1 用例建模 235
10.4.2 建立结构模型 237
10.4.3 建立行为模型 238
10.4.4 系统总体设计 241
10.4.5 系统详细设计 244
习题 247
第11章 软件设计模式 248
11.1 设计模式概述 248
11.1.1 设计模式的历史 248
11.1.2 为什么要使用设计模式 249
11.1.3 设计模式的组成元素 250
11.1.4 设计模式的分类 251
11.2 设计模式实例 252
11.2.1 Facade模式 252
11.2.2 Adapter模式 255
11.2.3 Abstract Factory设计模式 258
11.2.4 Observer设计模式 260
习题 263
12.1.1 软件开发工具概述 264
第12章 面向对象的软件建模工具 264
12.1 建模工具简介 264
12.1.2 面向对象软件建模工具所应具有的功能 266
12.1.3 支持UML的常见工具 268
12.2 Rational Rose简介 271
12.2.1 Rose界面 272
12.2.2 在Rose中创建数据模型 273
12.2.3 在Rose中使用设计模式 276
12.2.4 在Rose中的Web建模 278
习题 283
第13章 嵌入式软件系统应用实例 284
13.1 系统概述 284
13.2 建立用例模型 285
13.2.1 确定系统边界 285
13.2.3 识别用例 286
13.2.2 识别参与者 286
13.2.4 绘制用例图 288
13.2.5 绘制顺序图 288
13.3 建立分析模型 289
13.3.1 识别对象类 289
13.3.2 识别属性 290
13.3.3 提取关系 290
13.4 建立设计模型 291
13.4.1 识别系统外部事件 291
13.4.2 系统架构设计 292
13.4.3 建立交互模型 292
13.4.4 建立活动与状态模型 293
13.4.5 建立设计类图 295
参考文献 296