第一部分 理论部分 3
第1章 软件工程概述 3
1.1 软件的概念、特点与分类 3
1.2 软件工程概述 4
1.3 关于软件工程的问题 6
1.3.1 软件工程不同于计算机科学 6
1.3.2 软件工程不同于系统工程 6
1.3.3 软件工程不同于传统工程 6
1.3.4 软件工程不同于信息系统工程 7
1.3.5 软件工程不只是程序设计 7
1.3.6 软件工程涉及的人员 8
1.3.7 什么是好的软件 8
1.3.8 软件工程所面临的主要问题 9
1.4 软件工程的基本原理 9
1.5 软件的开发方法 10
1.5.1 结构化开发方法 10
1.5.2 模块化开发方法 11
1.5.3 面向数据结构开发方法 12
1.5.4 面向对象开发方法 13
1.5.5 软件开发方法的评价与选择 14
1.6 软件工程的应用 15
1.7 如何培养软件工程的思维与方法 15
1.8 软件工程的发展方向 16
1.8.1 敏捷软件开发方法 16
1.8.2 软件技术的发展趋势 18
小结 19
软件水平考试试题解析 19
习题 19
第2章 软件生命周期模型 20
2.1 软件生命周期 20
2.2 瀑布模型 22
2.3 原型模型 24
2.4 增量模型 26
2.5 迭代模型 27
2.6 螺旋模型 29
2.7 敏捷方法 30
2.8 软件生命周期模型的总结 31
小结 32
软件水平考试试题解析 32
习题 33
第3章 软件过程 34
3.1 软件过程概述 34
3.2 统一过程 34
3.3 统一过程的实施步骤 36
3.3.1 需求工作流 36
3.3.2 分析工作流 37
3.3.3 设计工作流 37
3.3.4 实现工作流 38
3.3.5 测试工作流 38
3.4 软件过程的改进 39
3.5 软件能力成熟度模型 41
3.5.1 软件能力成熟度模型的框架结构 42
3.5.2 软件能力成熟度模型的过程改进步骤 44
小结 45
软件水平考试试题解析 45
习题 46
第4章 可重用性和可移植性 47
4.1 重用的概念 47
4.1.1 软件成分的重用级别 48
4.1.2 典型的可重用软件成分 49
4.1.3 软件成分重用的过程 49
4.1.4 软件重用形式的划分 50
4.2 软件构件技术 50
4.2.1 构件研究的内容 51
4.2.2 构件实现规范与标准 51
4.2.3 可重用软件构件的生产和使用 52
4.3 软件重用的实施与组织 53
4.4 重用的障碍 55
4.5 可移植性 56
4.6 实现可移植性的技术 56
小结 57
软件水平考试试题解析 57
习题 58
第5章 模块和对象 59
5.1 模块的概念 59
5.2 内聚 60
5.2.1 偶然性内聚 60
5.2.2 逻辑性内聚 61
5.2.3 时间性内聚 61
5.2.4 过程性内聚 61
5.2.5 通信性内聚 62
5.2.6 功能性内聚 62
5.2.7 信息性内聚 62
5.2.8 内聚的设计原则 63
5.3 耦合 63
5.3.1 内容耦合 63
5.3.2 共用耦合 63
5.3.3 控制耦合 63
5.3.4 印记耦合 64
5.3.5 数据耦合 64
5.3.6 耦合的设计原则 64
5.4 抽象和数据封装 64
5.5 信息隐藏 65
5.6 对象 65
小结 66
软件水平考试试题解析 66
习题 67
第6章 测试 68
6.1 测试的基础 68
6.1.1 测试的概念 68
6.1.2 指导测试的基本准则 70
6.1.3 测试的分类 71
6.2 测试的管理 71
6.2.1 软件测试团队组织管理. 72
6.2.2 软件测试计划管理 73
6.2.3 软件缺陷(错误)跟踪管理. 73
6.2.4 软件测试件管理 73
6.2.5 软件测试管理工具 74
6.3 非执行测试 74
6.3.1 走查 74
6.3.2 审查 74
6.4 执行测试 75
6.4.1 实用性 75
6.4.2 可靠性 75
6.4.3 健壮性 76
6.4.4 性能 76
6.4.5 正确性 76
6.5 正确性证明 76
6.6 何时停止测试 77
6.6.1 错误植入法 77
6.6.2 分别测试法 77
6.6.3 估算平均无故障时间(MF) 78
6.6.4 其他的停止测试的标准 79
小结 80
软件水平考试试题解析 80
习题 80
第7章 项目的计划和管理 82
7.1 软件度量 82
7.1.1 软件度量的基本概念 82
7.1.2 面向规模的度量 83
7.1.3 面向功能的度量 84
7.1.4 代码行与功能点度量的比较 85
7.2 软件项目估算 86
7.2.1 工作量估算 87
7.2.2 经验估算模型 87
7.3 软件质量度量 88
7.3.1 软件质量定义 89
7.3.2 软件质量要素 89
7.3.3 软件质量要素评价准则 90
7.4 软件复杂性度量 91
7.4.1 软件复杂性及度量原则 91
7.4.2 控制结构的复杂性度量 92
7.4.3 文本复杂性度量 93
7.5 软件可靠性度量 93
7.5.1 软件可靠性的概念 93
7.5.2 软件的有效性 94
7.6 软件开发过程的管理 94
7.6.1 风险分析 95
7.6.2 进度安排 97
7.6.3 软件质量保证(SQA) 100
7.6.4 人员的组织与分工 101
7.7 项目管理计划的组成 102
7.7.1 项目计划的内容 102
7.7.2 项目计划的制订 103
7.7.3 计划文档 106
7.7.4 古董买卖估价管理软件项目开发计划 107
小结 110
软件水平考试试题解析 110
习题 111
第8章 用户界面的设计 112
8.1 用户心理学 112
8.2 人机界面的设计风格及规则 113
8.2.1 HCl的发展 113
8.2.2 界面设计的原则 113
8.3 界面分析和建模 116
8.4 界面设计过程 117
8.5 设计评估 118
8.6 界面建模工具 118
小结 120
习题 120
第9章 UML简介 121
9.1 UML简介 121
9.1.1 UML语言的基本结构 121
9.1.2 UML语言的模型和图形 122
9.1.3 UML语言的公共机制 123
9.2 用例图 124
9.2.1 UseCase图 124
9.2.2 参与者 124
9.2.3 用例 125
9.2.4 用例图表示法 125
9.3 类图和对象图 126
9.3.1 类 126
9.3.2 类间关系 126
9.3.3 对象图 128
9.4 交互图 128
9.4.1 顺序图 129
9.4.2 协作图 129
9.5 状态图 130
9.5.1 状态机 130
9.5.2 转移与状态图 130
9.6. 活动图 131
9.6.1 活动图的基本元素 131
9.6.3 并发 131
9.7 包 132
9.7.1 包及其联系 132
9.7.2 包图 132
9.8 实现图 133
9.8.1 组件图 133
9.8.2 部署图 133
小结 134
软件水平考试试题解析 134
习题 135
第二部分 实践部分 139
第10章 需求 139
10.1 需求概述 139
10.2 应用域理解 140
10.3 建立商业模型 140
10.4 初始需求 143
10.5 古董买卖管理软件实例的研究 143
10.5.1 古董买卖领域的初始理解 143
10.5.2 古董交易的商业模型 144
10.5.3 古董交易的初始需求 145
10.5.4 古董交易的需求继续 146
10.5.5 测试阶段 149
10.6 需求流的CASE工具 150
10.7 需求阶段的注意事项 151
小结 151
软件水平考试试题解析 151
习题 151
第11章 分析 153
11.1 结构化分析 153
11.1.1 结构化分析方法的表示 153
11.1.2 结构化分析的步骤 156
11.2 面向对象分析 157
11.2.1 实体类模型 157
11.2.2 动态模型 158
11.2.3 功能建模 159
11.2.4 抽象边界类和控制类 159
11.2.5 面向对象分析中的相关问题 160
11.3 面向对象分析:古董商买卖管理系统实例研究 160
11.3.1 古董商问题的功能模型 160
11.3.2 古董商问题的实体类模型 161
11.3.3 古董商问题的动态模型 164
11.3.4 古董商问题的抽象边界类和控制类 164
11.3.5 古董商问题的分析测试 164
11.4 面向对象分析的CASE工具 165
11.5 面向对象分析阶段注意事项 165
小结 165
软件水平考试试题解析 166
习题 166
第12章 设计 167
12.1 结构化设计 167
12.1.1 数据流图的类型 167
12.1.2 古董商问题的结构化设计 169
12.2 面向对象设计 173
12.3 设计阶段的测试 176
12.4 设计阶段的CASE工具 177
12.5 面向对象设计阶段的注意事项 178
小结 178
软件水平考试试题解析 179
习题 179
第13章 编码 180
13.1 程序设计语言 181
13.1.1 程序设计语言的分类 181
13.1.2 程序设计语言的选择 182
13.2 应用编程标准的意义 183
13.3 编程的指导方针 184
13.3.1 使用合理的控制结构 184
13.3.2 设计适合的算法 185
13.3.3 选择恰当的数据结构 186
13.3.4 一般指导原则 186
13.4 编码中的文档问题 187
小结 192
软件水平考试试题解析 193
习题 193
第14章 测试 194
14.1 系统前期阶段的测试 195
14.2 系统实现阶段的测试 196
14.2.1 单元测试 196
14.2.2 集成测试 206
14.2.3 系统测试 209
小结 213
软件水平考试试题解析 214
习题 215
第15章 软件维护 216
15.1 系统的类型 216
15.2 软件维护的任务及特点 218
15.3 软件维护的类型 219
15.4 软件维护的过程 220
15.5 软件的可维护性 223
15.6 软件再工程 223
15.6.1 源代码转换 224
15.6.2 反向工程 224
15.6.3 程序结构改善 225
15.6.4 程序模块化 225
15.6.5 数据再工程 226
15.7 古董买卖管理软件维护实例 228
小结 229
软件水平考试试题解析 230
习题 230
学期项目:网上图书销售管理系统 231
参考文献 232