目录 1
编者的话 1
前言 1
第1章 软件工程的由来 1
1.1 计算机软件的发展 1
1.1.1 什么是软件 1
1.1.2 软件开发的历史 3
1.1.3 软件危机 5
1.2 软件工程的引入 6
1.2.1 什么是软件工程 7
1.2.2 软件工程与计算机科学的关系 7
1.2.3 软件工程的目标 7
1.3 软件开发过程 8
1.4 软件工程的研究内容 9
1.5 软件工程实践的参与者 11
第2章 软件过程模型 13
2.1 软件过程的基本概念 13
2.1.1 什么是软件过程 14
2.1.2 软件生命周期 16
2.2 软件过程模型 20
2.2.1 瀑布模型(Waterfall Model) 21
2.2.2 V模型(V Model) 22
2.2.3 快速原型模型(Fast Prototype Model) 23
2.2.4 增量模型(Incremental Model) 24
2.2.5 螺旋模型(Spiral Model) 25
2.2.6 喷泉模型(Fountain Model) 27
2.2.7 智能模型(Intelligent Model) 28
2.3 软件过程建模 28
2.3.1 传统方法学与面向对象方法学 29
2.3.2 过程建模方法、工具和技术 31
2.3.3 典型面向对象建模方法简介 35
第3章 软件过程改进指南:CMM模型 40
3.1 过程改进 40
3.1.1 过程改进的两种模式 40
3.1.2 过程改进的原则和通用步骤 41
3.1.3 软件组织的成熟与不成熟 41
3.2 CMM的概念 43
3.2.1 CMM的历史 43
3.2.2 几个关键概念 44
3.2.3 软件过程成熟度的5个等级 45
3.2.4 成熟度等级的行为特征 46
3.2.5 成熟度等级之间的关系 48
3.3 CMM的可操作定义 49
3.3.1 CMM的内部结构 49
3.3.2 关键过程域和目标 50
3.3.4 关键实践 54
3.3.3 共同特点 54
3.4 CMM的应用 55
3.4.1 软件过程评估和软件能力评价方法 55
3.4.2 软件过程评估和软件能力评价方法之间的差异 57
3.4.3 在具体背景下使用CMM 57
3.5 CMM的发展 58
3.5.1 集成能力成熟度模型CMMI 59
3.5.2 个体软件过程PSP 62
3.5.3 团体软件过程TSP 66
第4章 抓住用户需求 70
4.1 需求过程 70
4.1.1 需求的获取与分析 71
4.1.2 需求描述 73
4.1.3 快速原型和评价 79
4.1.4 需求文档化 81
4.1.5 需求的验证 81
4.1.6 需求过程的参与者 83
4.2 需求的层次与种类 84
4.2.1 需求的层次 84
4.2.2 功能需求(Functional Requirements) 84
4.2.3 非功能需求(Nonfunctional Requirements) 85
4.3 需求文档 86
4.3.1 需求定义文档(Requirements Definition) 86
4.3.2 需求规格说明(Requirenents Specification) 87
4.4 需求的验证 91
4.4.1 需求评审 91
4.4.2 测试需求 93
4.5 需求的管理 93
第5章 面向对象开发 95
5.1 什么是OO 95
5.1.1 类和对象 96
5.1.2 消息和方法 97
5.1.3 继承和多态 98
5.2 OO需求分析 99
5.2.1 OO需求分析概述 99
5.2.2 建立对象模型 100
5.2.3 建立动态模型 102
5.2.4 建立功能模型 104
5.3 用例(Use-Case)模型 104
5.3.1 什么是用例 104
5.3.2 UML的用例模型 105
5.4 OO系统设计 106
5.4.1 系统设计的原则 106
5.4.2 系统划分 107
5.4.3 对象设计 108
5.5 OO程序设计 109
5.5.1 OO程序设计风格 110
5.5.2 面向对象编程语言 112
5.5.3 Demeter法则 114
第6章 系统设计 117
6.1 什么是设计 117
6.1.1 概要设计 117
6.1.2 详细设计 120
6.2 如何设计 123
6.2.1 分解和模块化 123
6.2.2 体系结构风格 125
6.2.3 其他设计要素 127
6.3 什么是好的设计 131
6.3.1 构件独立性 131
6.3.2 异常识别与处理 133
6.3.3 防错与容错 134
6.4 设计评估与验证 135
6.4.1 设计评审 135
6.4.2 设计质量的度量 137
6.4.3 设计比较 138
第7章 编写程序 140
7.1 什么是好程序 140
7.1.1 质量及其性质 140
7.1.2 Garvin的5类质量观 140
7.1.3 好程序的标准 141
7.2 程序设计风格 142
7.2.1 名字 142
7.2.2 表达式和语句 143
7.2.3 程序注释 146
7.2.4 程序风格标准 147
7.3 程序设计指导 147
7.3.1 控制结构 147
7.3.2 算法和数据结构 149
7.4.1 排错系统 150
7.3.3 一般性指导 150
7.4 程序排错 150
7.4.2 可重现的错误 151
7.4.3 不可重现的错误 152
7.5 程序文档 152
第8章 测试程序和系统 154
8.1 软件测试概述 154
8.1.1 几个术语 155
8.1.2 产生缺陷的原因 155
8.1.3 软件测试目的 156
8.1.4 软件测试类型 157
8.2 静态测试 158
8.2.1 静态测试的内容 158
8.2.2 静态测试方法 159
8.2.3 一个静态测试的实例 160
8.2.4 静态测试的效果 161
8.3 结构性测试 161
8.3.1 控制流测试 162
8.3.2 数据流测试 163
8.4 功能测试 164
8.4.1 子域分解 164
8.4.2 边界值分析 166
8.4.3 因果图和决策表 167
8.5 软件测试过程 169
8.5.1 单元测试 169
8.5.2 集成测试 170
8.5.3 系统测试 172
8.5.4 验收及安装测试 173
8.6.1 植错法 174
8.6.2 可靠性、可用性和可维护性 174
8.6 何时停止 174
8.6.3 测量可靠性、可用性和可维护性 175
8.6.4 软件可靠性预测 176
8.7 过程、文档及管理 176
8.7.1 测试计划 176
8.7.2 测试规范 177
8.7.3 测试用例表 177
8.7.4 问题报告表 178
8.7.5 测试分析报告 178
第9章 软件度量和系统评价 179
9.1 软件度量的概述 179
9.1.1 什么是度量 179
9.1.2 度量的基本理论 179
9.1.3 软件度量 181
9.2.1 过程度量 182
9.2 过程和项目度量 182
9.2.2 项目度量 183
9.3 软件结构复杂性度量 184
9.3.1 控制结构复杂性度量 184
9.3.2 源代码的度量 185
9.4 软件质量的度量 186
9.4.1 影响软件质量的因素 186
9.4.2 软件质量的衡量标准 187
9.4.3 软件质量的度量 189
9.5 面向对象系统的度量 191
9.5.1 C K度量集 191
9.5.2 MOOD和MOOD2度量集 193
9.5.3 L K软件规模度量 196
9.6 软件度量实施 197
10.1.1 项目管理的范围 200
10.1.2 人员 200
10.1 项目管理的概念 200
第10章 软件项目管理 200
10.1.3 资源 202
10.1.4 过程 203
10.1.5 资金 203
10.1.6 文档 204
10.2 软件项目计划 204
10.2.1 确定目标和范围 204
10.2.2 资源配置 205
10.2.3 成本及进度估算 205
10.2.4 里程碑 206
10.3 工作量估计 206
10.3.1 专家的判断 207
10.3.2 经验估算模型 208
10.3.3 COCOMOII 208
10.3.4 找到合适的模型 209
10.4 风险管理 210
10.4.1 风险的类型 211
10.4.2 识别风险 211
10.4.3 风险管理活动 213
10.5 跟踪项目的进展 214
10.5.1 工作分解结构和活动图 214
10.5.2 预计项目完成时间 216
第11章 项目管理实例研究 218
11.1 院校环境的特点 218
11.2 软件项目管理 219
11.2.1 配置管理 219
11.2.2 缺陷跟踪 220
11.2.3 任务分配与管理 223
11.2.4 程序风格和界面风格 224
11.2.5 日常项目管理 224
11.2.6 开发自己的项目管理工具软件 225
11.3.1 缺陷跟踪过程文档 226
11.3.2 程序设计风格标准 226
11.3 项目管理规范文档 226
11.3.3 界面设计风格标准 229
附录A UML简介 230
A.1 引言 230
A.1.1 UML历史 230
A.1.2 UML的目标 231
A.2 UML语言基础 231
A.2.1 UML的基本构造部分 232
A.2.2 UML的规则 236
A.2.3 UML中的公共机制 237
A.3 对结构建模 239
A.3.1 类图 239
A.3.2 对象图 242
A.4.1 用例图 243
A.4 对行为建模 243
A.4.2 顺序图 244
A.4.3 协作图 245
A.4.4 状态图 246
A.4.5 活动图 247
A.5 对体系结构建模 248
A.5.1 构件图 248
A.5.2 部署图 249
A.6 Rational统一开发过程 250
A.6.1 特点 250
A.6.2 二维开发模型 252
A.6.3 各个阶段和里程碑 252
A.6.4 核心工作流(Core Workflows) 253
A.6.5 迭代和增量的开发过程 255
参考文献 257