第1章 软件工程概论 1
1.1软件危机 1
1.1.1软件危机简介 1
1.1.2产生软件危机的原因 1
1.1.3消除软件危机的途径 2
1.2软件工程 3
1.2.1软件工程简介 3
1.2.2软件工程的基本原理 3
1.2.3软件工程方法学 3
1.3软件生命周期 4
1.4软件过程 5
习题 11
习题解答 13
第2章 结构化分析 17
2.1可行性研究的目的 17
2.2可行性研究过程 17
2.3需求分析的任务 18
2.4与用户沟通的方法 18
2.5分析建模与规格说明 19
2.6实体-联系图 20
2.7数据流图 20
2.8数据字典 21
2.9状态转换图 21
2.10其他图形工具 22
2.11验证软件需求 23
2.12成本/效益分析 23
2.12.1成本估计 23
2.12.2成本/效益分析方法 23
2.13形式化说明技术 24
习题 25
习题解答 27
第3章 结构化设计 45
3.1软件设计的任务 45
3.1.1概要设计 45
3.1.2详细设计 45
3.2分析与设计的关系 46
3.3设计原理 47
3.3.1模块化与模块独立 47
3.3.2抽象 47
3.3.3逐步求精 48
3.3.4信息隐藏 49
3.3.5局部化 49
3.4度量模块独立性的标准 49
3.4.1内聚 49
3.4.2耦合 49
3.5启发规则 50
3.6描绘软件结构的图形工具 50
3.7面向数据流的设计方法 50
3.7.1数据流的类型 51
3.7.2设计步骤 51
3.8人机界面设计 52
3.8.1应该考虑的设计问题 53
3.8.2人机界面设计过程 54
3.8.3人机界面设计指南 54
3.9过程设计 55
3.10过程设计的工具 55
3.11面向数据结构的设计方法 57
3.12程序复杂程度的定量度量 58
3.12.1 McCabe方法 58
3.12.2 Halstead方法 58
习题 59
习题解答 63
第4章 结构化实现 83
4.1编码 83
4.1.1选择程序设计语言 83
4.1.2编码风格 84
4.2软件测试基础 84
4.3单元测试 85
4.4集成测试 86
4.5白盒测试技术 88
4.5.1逻辑覆盖 88
4.5.2控制结构测试 89
4.6黑盒测试技术 90
4.6.1等价划分 90
4.6.2边界值分析 91
4.6.3错误推测 92
4.7调试 92
4.7.1调试过程 92
4.7.2调试途径 92
4.8软件可靠性 93
4.8.1基本概念 93
4.8.2估算平均无故障时间的方法 94
习题 96
习题解答 98
第5章 维护 109
5.1软件维护的定义 109
5.2软件维护的特点 110
5.3软件维护过程 111
5.4软件的可维护性 112
5.4.1决定软件可维护性的因素 112
5.4.2文档 113
5.4.3可维护性复审 113
5.5预防性维护 114
5.6软件再工程过程 114
习题 116
习题解答 117
第6章 面向对象方法学引论 121
6.1面向对象方法学概述 121
6.1.1面向对象方法学的要点 121
6.1.2面向对象方法学的优点 122
6.1.3面向对象的软件过程 124
6.2面向对象的概念 125
6.2.1对象 125
6.2.2其他概念 126
6.3面向对象建模 127
6.4对象模型 128
6.4.1类图的基本符号 128
6.4.2表示关系的符号 129
6.5动态模型 130
6.6功能模型 130
6.6.1用例图 131
6.6.2用例建模 132
6.7三种模型之间的关系 133
习题 133
习题解答 134
第7章 面向对象分析 141
7.1面向对象分析的基本过程 141
7.1.1概述 141
7.1.2 3个子模型与5个层次 142
7.2需求陈述 142
7.3建立对象模型 143
7.3.1确定类与对象 143
7.3.2确定关联 144
7.3.3划分主题 145
7.3.4确定属性 145
7.3.5识别继承关系 145
7.3.6反复修改 146
7.4建立动态模型 146
7.4.1编写脚本 146
7.4.2画事件跟踪图 147
7.4.3画状态图 147
7.4.4审查动态模型 148
7.5建立功能模型 148
7.6定义服务 148
习题 149
习题解答 150
第8章 面向对象设计 155
8.1面向对象设计的准则 155
8.2启发规则 156
8.3软件重用 157
8.3.1概述 157
8.3.2类构件 158
8.3.3软件重用的效益 159
8.4系统分解 159
8.5设计问题域子系统 160
8.6设计人机交互子系统 161
8.7设计任务管理子系统 161
8.8设计数据管理子系统 162
8.9设计类中的服务 163
8.10设计关联 163
8.11设计优化 164
习题 165
习题解答 166
第9章 面向对象实现 175
9.1程序设计语言 175
9.2程序设计风格 176
9.3面向对象的测试策略 177
9.4设计测试用例 178
9.4.1测试类的技术 178
9.4.2集成测试技术 179
习题 179
习题解答 180
第10章 软件项目管理 197
10.1估算软件规模 197
10.1.1代码行技术 197
10.1.2功能点技术 197
10.2估算工作量 199
10.2.1静态单变量模型 199
10.2.2动态多变量模型 199
10.2.3 COCOMO2模型 199
10.3进度计划 200
10.3.1估算开发时间 200
10.3.2 Gantt图 201
10.3.3工程网络 201
10.3.4估算工程进度 201
10.3.5关键路径 202
10.3.6机动时间 202
10.4人员组织 202
10.4.1民主制程序员组 203
10.4.2主程序员组 203
10.4.3现代程序员组 203
10.5质量保证 204
10.5.1软件质量 204
10.5.2软件质量保证措施 204
10.6软件配置管理 204
10.6.1软件配置 204
10.6.2软件配置管理过程 205
10.7能力成熟度模型 206
习题 207
习题解答 209
附录 215
附录A 模拟试题 215
试卷一 215
试卷二 217
试卷三 219
附录B 模拟试题参考答案 222
试卷一参考答案 222
试卷二参考答案 224
试卷三参考答案 226
参考文献 229