第1章 软件工程与软件设计 1
1.1 软件工程 1
1.1.1 软件概述 2
1.1.2 软件危机 4
1.1.3 软件工程的概念 5
1.1.4 软件工程的目标与原则 6
1.2 软件的生存周期 8
1.3 软件开发过程模型 12
1.3.1 瀑布模型 13
1.3.2 快速原型模型 14
1.3.3 螺旋模型 15
1.3.4 统一软件开发过程 16
1.4 软件设计 18
1.4.1 软件设计的重要性 18
1.4.2 软件设计的特征 19
1.4.3 软件设计的要素 20
1.4.4 软件设计的知识体 21
1.5 软件体系结构 24
1.5.1 软件体系结构的定义 24
1.5.2 软件体系结构的发展历程 25
1.5.3 软件体系结构的内容 26
小结 28
习题1 28
参考文献 29
第2章 统一建模语言UML 30
2.1 UML概述 30
2.1.1 UML的发展历程 30
2.1.2 UML的特点和用途 32
2.1.3 UML 2.0的建模机制 33
2.2 面向对象开发方法 35
2.2.1 基本概念 36
2.2.2 面向对象方法的优势 36
2.3 UML 2.0结构建模 38
2.3.1 类图 38
2.3.2 包图 41
2.3.3 对象图 43
2.3.4 构件图 44
2.3.5 组合结构图 46
2.3.6 部署图 48
2.4 UML 2.0行为建模 49
2.4.1 活动图 49
2.4.2 顺序图 51
2.4.3 通信图 55
2.4.4 交互概览图 55
2.4.5 时序图 57
2.4.6 状态图 58
2.4.7 用例图 61
小结 63
习题2 64
参考文献 64
第3章 软件设计基础 65
3.1 软件设计的基本概念 65
3.1.1 抽象与逐步求精 66
3.1.2 模块化与信息隐藏 67
3.1.3 内聚与耦合 69
3.2 软件设计过程 71
3.2.1 软件设计的一般过程 72
3.2.2 软件设计的主要活动 73
3.3 软件设计的质量 79
3.4 软件体系结构设计 81
3.4.1 软件体系结构设计方法概述 81
3.4.2 软件体系结构设计的步骤 89
3.5 高可信软件设计 95
3.5.1 可信软件的特点 96
3.5.2 容错设计 97
3.5.3 软件失效模式和影响分析 99
3.5.4 软件故障树分析 100
3.5.5 形式化方法 101
3.5.6 净室方法 103
3.5.7 嵌入式和实时软件设计 105
3.6 软件设计规格说明 109
3.7 软件设计评审 111
小结 113
习题3 114
参考文献 115
第4章 面向对象的软件设计方法 116
4.1 基于UML的分析与设计过程 116
4.2 用例分析与设计 119
4.2.1 确定用例 120
4.2.2 生成用例图 121
4.2.3 用例设计描述 123
4.3 概念模型与顶层架构设计 128
4.3.1 概念模型设计 128
4.3.2 顶层架构设计 130
4.4 用户界面设计 132
4.5 数据模型设计 136
4.6 设计精化 138
4.6.1 精化软件架构 139
4.6.2 调整软件构成类 140
4.6.3 精化交互模型 141
4.6.4 精化类之间的关系 142
4.7 类设计 144
4.7.1 精化类的属性与操作 144
4.7.2 类的行为模型设计 145
4.8 部署模型设计 149
小结 150
习题4 151
参考文献 151
第5章 面向数据流的软件设计方法 152
5.1 数据流图与数据字典 152
5.2 实体关系图 155
5.3 面向数据流的分析过程 157
5.3.1 建立数据流模型 158
5.3.2 过程规格说明 160
5.4 面向数据流的设计过程 160
5.4.1 变换流与事务流 161
5.4.2 变换分析 162
5.4.3 事务分析 168
5.5 启发式设计策略 173
小结 174
习题5 174
参考文献 174
第6章 用户界面设计 176
6.1 界面设计的基本原则 176
6.2 设计良好界面的主要途径 179
6.2.1 使系统处于用户控制之中 179
6.2.2 减少用户记忆负担 180
6.2.3 保持界面一致性 180
6.3 用户界面的分析与设计过程 181
6.3.1 界面交互方式 181
6.3.2 界面分析和设计模型 182
6.3.3 分析与设计过程 183
6.4 用户界面分析 184
6.4.1 用户分析 184
6.4.2 任务分析和建模 187
6.4.3 内容展示分析 190
6.4.4 工作环境分析 190
6.5 用户界面设计 191
6.5.1 界面对象、动作和布局的定义 192
6.5.2 界面设计需考虑的问题 194
6.6 用户界面原型 199
6.7 界面设计的评估 200
小结 202
习题6 203
参考文献 204
第7章 软件体系结构风格与设计模式 205
7.1 基本概念 205
7.2 软件体系结构描述语言 206
7.2.1 Wright ADL 206
7.2.2 图形化体系结构描述语言 208
7.3 软件体系结构风格 210
7.3.1 管道/过滤器风格 211
7.3.2 层次风格 213
7.3.3 客户/服务器风格 216
7.4 设计模式 218
7.4.1 Factory Method(工厂方法) 219
7.4.2 Abstract Factory(抽象工厂) 221
7.4.3 Singleton(单件) 225
7.4.4 Composite(组合) 229
7.4.5 Proxy(代理) 230
7.4.6 Iterator(迭代器) 231
7.4.7 Observer(观察者) 235
小结 239
习题7 239
参考文献 239
第8章 基于分布构件的体系结构 240
8.1 EJB分布构件框架 241
8.1.1 EJB简介 241
8.1.2 实例 242
8.1.3 原理分析 244
8.1.4 其他说明 247
8.2 DCOM分布构件框架 247
8.2.1 DCOM的基本概念 248
8.2.2 整体结构 249
8.2.3 实例 250
8.2.4 对原理的进一步分析 268
8.3 CORBA分布构件框架 269
8.3.1 基本体系结构 270
8.3.2 实例分析 271
8.3.3 完整体系结构 277
小结 278
习题8 279
参考文献 279
第9章 软件体系结构评估 280
9.1 软件体系结构评估概述 280
9.1.1 评估时机和参与人员 281
9.1.2 评估结果和质量属性 282
9.1.3 评估的益处和代价 284
9.2 软件体系结构评估方法 286
9.2.1 ATAM方法 286
9.2.2 SAAM方法 291
9.2.3 ARID方法 295
9.3 实例分析 297
9.3.1 ATAM方法实例 297
9.3.2 SAAM方法实例 305
小结 313
习题9 313
参考文献 314
第10章 软件设计的进化 315
10.1 遗留系统 315
10.2 软件的进化策略 316
10.2.1 进化策略的分类 317
10.2.2 进化策略的选择 317
10.3 软件再工程 320
10.3.1 业务过程重构 321
10.3.2 软件再工程的过程模型 322
10.3.3 软件再工程中的经济因素 324
10.3.4 信息恢复的级别和方法 325
10.4 软件体系结构的进化 326
10.4.1 软件体系结构进化的过程 328
10.4.2 软件体系结构的恢复 329
10.4.3 软件体系结构的改善 331
10.5 代码重构和数据重构 332
10.6 软件移植 333
小结 337
习题10 337
参考文献 338