第1章 初识软件工程 1
1.1软件与软件危机 1
1.1.1理解软件的概念 1
1.1.2软件的特点 2
1.1.3产生软件危机的原因 3
1.2软件工程的由来 5
1.2.1软件工程的产生和发展 5
1.2.2浅谈软件工程的定义 6
1.2.3理解软件工程的作用 6
1.2.4软件工程研究的内容 8
1.3软件的开发方法 8
1.3.1面向过程的方法 8
1.3.2面向数据的方法 9
1.3.3面向对象的方法 10
1.4软件生存周期 11
1.5了解软件开发模型 12
1.5.1瀑布模型 13
1.5.2快速原型模型 13
1.5.3渐增模型 15
1.5.4螺旋模型 15
1.5.5快速应用开发模型 17
1.6小结 17
1.7习题 18
第2章 软件需求分析 19
2.1需求分析的任务 19
2.2需求分析的步骤 20
2.3实体—关系图 22
2.4数据流图 24
2.5数据字典 25
2.6需求分析图形工具 26
2.7需求分析的文档 28
2.8案例分析 30
2.9小结 33
2.10习题 34
第3章 软件设计 35
3.1软件设计概述 35
3.1.1软件设计概念与重要性 35
3.1.2软件设计的任务与策略 36
3.1.3软件设计基本原则 37
3.2概要设计 38
3.2.1概要设计的任务和步骤 38
3.2.2面向数据流图的设计方法 39
3.2.3面向对象的设计方法 43
3.3模块和模块化 46
3.3.1模块 46
3.3.2模块化 46
3.3.3模块分割评价标准 48
3.3.4模块设计规则 50
3.4详细设计 51
3.4.1详细设计的目标与任务 51
3.4.2面向过程详细设计 52
3.4.3面向数据详细设计 55
3.4.4面向对象详细设计 55
3.5Jackson程序设计方法 60
3.6Warmer程序设计方法 62
3.7用户界面设计 63
3.8软件设计规格说明书 66
3.9案例分析 68
3.10小结 69
3.11习题 70
第4章 程序编码 71
4.1程序编码概述 71
4.2结构化程序设计 72
4.3程序设计风格 73
4.3.1源程序文件 73
4.3.2语句构造方法 74
4.3.3输入/输出技术 75
4.4程序设计效率 75
4.5程序设计语言的选择 77
4.6小结 82
4.7习题 83
第5章 面向对象技术 85
5.1面向对象技术的概念 85
5.1.1面向对象方法概述 85
5.1.2面向对象的概念 86
5.1.3面向对象方法的主要优点 91
5.2面向对象分析 91
5.2.1面向对象的分析过程 91
5.2.2面向对象的分析原则 97
5.3面向对象设计 98
5.3.1系统设计 99
5.3.2对象设计 102
5.3.3面向对象设计的准则 103
5.3.4面向对象设计的启发规则 103
5.4面向对象系统的实现 104
5.5案例分析 105
5.6小结 109
5.7习题 109
第6章 统一建模语言UML 111
6.1UML概述 111
6.1.1UML的形成 111
6.1.2UML的内容 112
6.1.3UML的特点 114
6.1.4UML的应用领域 114
6.2UML的静态建模机制 115
6.2.1用例图 115
6.2.2类图、对象图和包 117
6.2.3构件图和配置图 123
6.3UML的动态建模机制 125
6.3.1状态图 126
6.3.2顺序图 127
6.3.3协作图 127
6.3.4活动图 127
6.4案例分析 128
6.5小结 131
6.6习题 131
第7章 软件测试 133
7.1基本概念 133
7.1.1软件测试的目标 133
7.1.2软件测试的原则 134
7.2软件测试方法 134
7.2.1静态分析与动态测试 135
7.2.2黑盒测试与白盒测试 135
7.3黑盒测试用例设计 136
7.3.1等价类划分法 136
7.3.2边界值分析法 137
7.3.3错误推测法 138
7.3.4因果图法 138
7.4白盒测试用例设计 141
7.4.1逻辑覆盖法 141
7.4.2路径覆盖法 143
7.4.3循环覆盖法 144
7.5软件测试步骤 145
7.5.1单元测试 146
7.5.2集成测试 147
7.5.3确认测试 150
7.5.4系统测试 151
7.6面向对象的软件测试 153
7.6.1OOA和OOD模型的测试 153
7.6.2面向对象的测试策略 156
7.7案例分析 157
7.8小结 158
7.9习题 159
第8章 软件维护 161
8.1软件维护过程 161
8.1.1软件维护的种类 161
8.1.2软件维护的策略 163
8.1.3软件维护的成本 163
8.1.4软件维护的困难 164
8.1.5软件维护的副作用 164
8.2软件可维护性 166
8.2.1决定软件可维护性的因素 166
8.2.2可维护性的度量 167
8.2.3提高软件的可维护性 167
8.3软件逆向工程与再工程 169
8.4小结 170
8.5习题 170
第9章 软件工程管理 171
9.1软件工程管理概述 171
9.2软件规模估算 172
9.2.1软件开发成本估算方法 172
9.2.2代码行技术和任务估算技术 173
9.2.3COCOMO模型 174
9.3软件项目的组织与计划 175
9.3.1软件项目管理的特点 176
9.3.2软件开发进度计划 177
9.3.3人员配备与组织 180
9.4软件质量 182
9.4.1软件质量特性 182
9.4.2软件质量保证措施 183
9.5ISO 9000软件质量体系 183
9.5.1ISO 9000国际标准 184
9.5.2企业软件质量体系的建立和实施 184
9.6软件配置管理 187
9.7CMM软件能力成熟度模型 190
9.8软件工程标准与软件文档 195
9.8.1软件工程标准 195
9.8.2软件文档的编写 196
9.9小结 199
9.10习题 200
第10章 软件复用与构件技术 201
10.1软件复用 201
10.2基于构件的软件开发 203
10.2.1开发可复用的软件构件 203
10.2.2软件构件的组织 205
10.2.3分类和检索软件构件 206
10.3面向对象的软件重用技术 209
10.4小结 211
10.5习题 211
第11章 软件工具与集成化环境 213
11.1软件开发工具 213
11.2软件工程环境 215
11.3CASE技术 217
11.4小结 219
11.5习题 219
第12章 综合实例——网站新闻管理系统 221
12.1问题定义 221
12.2需求分析 221
12.2.1用例图 221
12.2.2类图 223
12.3软件设计 225
12.3.1系统体系结构 225
12.3.2数据库设计 225
12.3.3功能设计 227
12.3.4界面设计 228
12.4系统测试 230
第13章 实训指导 233
实训1初识Visio 2003 233
实训2初识Rational Rose 2003 239
实训3需求分析 245
实训4数据库设计 247
实训5面向对象分析 252
参考文献 255