基本概念篇 3
第1章 基本概念 3
1.1 软件 3
1.1.1 软件定义 3
1.1.2 软件分类 4
1.2 软件危机 5
1.3 软件工程 7
1.4 计算模型 8
1.4.1 单机计算模型 8
1.4.2 分布计算模型 8
1.4.3 并行计算模型 9
1.4.4 网格计算模型 9
1.4.5 普适计算模型 10
1.4.6 云计算模型 10
1.5 计算服务 11
思考题 11
软件方法篇·基于软件过程的方法 15
第2章 瀑布型方法 15
2.1 软件过程 15
2.1.1 软件过程的提出 15
2.1.2 软件过程的含义 15
2.1.3 软件过程的规范 16
2.1.4 软件工程的评估与改进 17
2.2 瀑布型方法 18
思考题 20
第3章 快速原型方法 21
3.1 快速原型方法的产生 21
3.2 快速原型方法 22
3.2.1 进化式原型开发 24
3.2.2 抛弃式原型开发 25
3.3 快速原型方法案例 27
思考题 28
第4章 其他方法 29
4.1 增量方法 29
4.1.1 增量方法的产生 29
4.1.2 增量方法 29
4.1.3 增量方法案例 31
4.2 螺旋方法 33
4.3 敏捷方法 34
4.3.1 敏捷方法的产生 34
4.3.2 敏捷方法 36
4.3.3 敏捷方法案例 37
4.4 面向复用的方法 40
4.5 形式化方法 41
4.6 净室方法 42
思考题 43
第5章 需求分析 44
5.1 需求分析的概念 44
5.1.1 软件需求定义 44
5.1.2 软件需求分析 45
5.1.3 需求分析的要求 46
5.1.4 需求分析的重要性 46
5.2 需求分析的任务 47
5.2.1 需求分析的过程 47
5.2.2 需求分析的内容 48
5.2.3 需求分析的任务 49
5.3 需求分析的方法 50
5.4 需求描述工具 53
5.4.1 数据流图 53
5.4.2 数据字典 54
5.4.3 结构化语言 55
5.4.4 判定表 56
5.4.5 判定树 57
5.5 需求分析文档 58
5.5.1 需求文档完成的目标 58
5.5.2 需求文档的特点 59
5.5.3 需求文档编写的一般原则 59
5.5.4 需求文档编写格式 60
5.6 进行需求评审 60
5.6.1 需求评审的方法 60
5.6.2 需求评审的内容 61
5.6.3 需求评审的测试 62
思考题 62
第6章 概要设计 63
6.1 概要设计概论 63
6.2 概要设计原理 64
6.2.1 模块化 64
6.2.2 抽象化 65
6.2.3 逐步求精 66
6.2.4 信息隐藏和局部化 67
6.2.5 模块独立性 67
6.2.6 模块层次化 69
6.2.7 启发式规则 70
6.3 概要设计方法总结 71
6.4 概要设计文档 71
思考题 72
第7章 界面设计 73
7.1 用户界面设计 73
7.2 用户界面设计原则 74
7.3 信息输入方式 76
7.4 信息输出方式 77
7.5 帮助系统 80
7.5.1 错误消息 81
7.5.2 用户文档 83
7.6 界面评价 83
思考题 85
第8章 详细设计 86
8.1 详细设计的作用 86
8.2 详细设计的工具 87
思考题 88
第9章 测试 89
9.1 软件测试定义 89
9.1.1 测试的目的 89
9.1.2 测试的基本原则 90
9.2 软件测试模型 90
9.3 软件测试方法 93
9.3.1 黑盒测试方法 93
9.3.2 白盒测试方法 95
9.3.3 灰盒测试方法 97
9.4 测试过程与测试文档 98
思考题 99
第10章 维护和演化 100
10.1 软件维护 100
10.2 软件演化的产生 101
10.3 软件演化理论 102
10.3.1 演化与维护的关系 102
10.3.2 软件演化的分类 103
思考题 103
软件方法篇·基于构造粒度的方法 107
第11章 面向对象方法 107
11.1 UML概述 107
11.1.1 UML产生的背景 107
11.1.2 UML定义 108
11.2 UML的研究内容 109
11.2.1 UML语言的定义 109
11.2.2 UML的图形表示法 110
11.3 UML建模过程 113
11.3.1 UML建模过程 114
11.3.2 UML在RUP中的应用 114
思考题 115
第12章 面向构件方法 116
12.1 软件体系结构的形成 116
12.1.1 无体系结构阶段 116
12.1.2 萌芽阶段 116
12.1.3 初级阶段 117
12.1.4 高级阶段 117
12.2 软件体系结构的概念 118
12.3 软件体系结构的要素 119
12.3.1 构件 119
12.3.2 连接件 121
12.3.3 约束(配置) 122
12.4 软件体系结构的作用 123
12.5 基于体系结构的软件开发过程 124
思考题 131
第13章 面向Agent方法 132
13.1 面向Agent的技术 132
13.1.1 Agent的基本概念 133
13.1.2 Agent的体系架构 134
13.1.3 Agent的组织类型 135
13.1.4 Agent与组件的对比 136
13.1.5 语义复用的Agent和组件 138
13.2 面向Agent的软件工程 140
13.2.1 面向Agent的研究内容 140
13.2.2 面向Agent的开发过程 142
13.3 面向Agent的经典开发方法 144
13.3.1 Gaia方法 144
13.3.2 Tropos方法 145
13.3.3 MASE方法 146
思考题 149
第14章 面向SOA方法 150
14.1 面向服务体系架构的产生 150
14.1.1 传统的软件体系结构 150
14.1.2 基于组件的软件体系结构 151
14.1.3 面向服务体系阶段 152
14.2 SOA的基本概念 153
14.2.1 SOA的定义 153
14.2.2 SOA的架构 154
14.2.3 SOA的优点 156
14.3 支持SOA的Web Service技术 157
14.3.1 SOA的基本原则 157
14.3.2 基于SOA的解决方案 158
14.3.3 Web Service技术 160
14.3.4 SOA架构的不足 162
14.4 适于SOA的建模方法 164
14.4.1 MDA 164
14.4.2 敏捷方法 164
14.4.3 SOA的五视图法 165
14.5 基于SOA架构的软件开发方法 166
14.5.1 面向服务的架构 167
14.5.2 基于SOA架构技术的优势 167
14.5.3 SOA应用的构建步骤 169
14.5.4 SOAD与传统软件开发的区别 170
思考题 171
第15章 面向云计算方法 172
15.1 云计算的基本概念和主要特征 172
15.1.1 云计算的基本概念 172
15.1.2 云计算的主要特征 174
15.1.3 云计算的分类 176
15.1.4 云计算与网格计算 177
15.1.5 云计算的现状和发展趋势 179
15.2 云计算的原理与关键技术 182
15.2.1 云计算的原理 182
15.2.2 云计算的实现机制 182
15.2.3 Google云计算技术 183
思考题 207
软件工具篇 211
第16章 CASE工具 211
16.1 CASE工具概念 211
16.1.1 CASE定义 211
16.1.2 CASE相关概念 211
16.1.3 CASE开发环境 212
16.1.4 CASE工具组成 212
16.2 CASE优势 213
16.3 CASE工具实例 213
16.3.1 CASE工具的产生 213
16.3.2 常见CASE的工具 213
16.4 CASE发展趋势 217
思考题 219
软件管理篇 223
第17章 软件项目 223
17.1 项目立项 223
17.1.1 项目基本概念 223
17.1.2 软件项目的特点 224
17.1.3 软件项目的立项 225
17.1.4 软件立项文档 227
17.2 项目招投标 227
17.2.1 项目招标与投标的概念 228
17.2.2 项目招标与投标的过程 229
17.2.3 招标书与投标书的编写 230
17.3 项目合同签署 231
17.3.1 合同的概念 232
17.3.2 签订合同 232
思考题 233
第18章 人员管理 234
18.1 软件开发人员构成 234
18.2 人思维的局限性 236
18.2.1 记忆结构 236
18.2.2 问题的解决 238
18.2.3 工作动力 238
18.3 小组协作 240
18.3.1 小组的构成 240
18.3.2 小组的凝聚力 241
18.3.3 小组的沟通 242
18.4 选择和留住职员 243
18.5 激励制度 244
思考题 245
第19章 进度管理 246
19.1 项目进度 246
19.2 条形图和活动网络图 247
思考题 250
第20章 成本管理 251
20.1 软件成本和报价 251
20.2 软件生产率 252
20.3 成本估算技术 255
20.4 成本估算模型 257
思考题 258
第21章 质量管理 259
21.1 软件质量定义 259
21.2 软件质量模型 259
21.3 软件质量保证 261
21.3.1 质量标准 261
21.3.2 质量规划 263
21.3.3 质量控制 264
21.3.4 质量评估 265
思考题 268
第22章 风险管理 269
22.1 风险识别 270
22.2 风险分析 271
22.3 风险规划 272
22.4 风险监控 273
22.5 常见风险及其处理 274
思考题 275
软件实践篇 279
第23章 基于软件过程方法的实验 279
23.1 需求分析 279
23.1.1 数据流图 279
23.1.2 数据字典 280
23.2 概要设计 281
23.3 软件界面设计 282
23.3.1 菜单设计 282
23.3.2 窗体设计 283
23.4 详细设计 283
23.5 软件编码 284
23.6 软件测试 284
第24章 基于构造粒度方法的实验 286
24.1 类制作 286
24.1.1 窗体设计 286
24.1.2 DBHelper类制作 287
24.1.3 DBHelper类使用 291
24.2 构件制作 293
24.2.1 DLL的简单介绍 294
24.2.2 用VB做一个DLL文件 294
24.2.3 对ActiveX DLL的测试 295
24.2.4 OCX控件的介绍 296
24.2.5 用VB做一个OCX控件 297
24.2.6 对OCX控件的测试 298
24.3 SOA实现 300
24.3.1 SOA的定义 300
24.3.2 SOA的实现 301
24.4 云平台体验 306
24.4.1 云平台介绍 306
24.4.2 云平台实例 306
第25章 CASE工具制作 308
25.1 CASE工具介绍 308
25.2 CASE工具制作 308
软件文档篇 315
附录 软件工程项目文档模板 315
附录A 可行性研究报告(ISO标准) 315
附录B 需求分析文档[需求规格说明书(ISO标准版)] 319
附录C 项目计划书 321
附录D 数据要求说明书 324
附录E 概要设计文档 325
附录F 详细设计文档 328
附录G 模块开发说明 330
附录H 软件测试报告 331
附录I 软件维护报告 333
附录J 软件使用手册 334
附录K 开发招标书 337
附录L 开发合同样本 338
参考文献 342