第1章软件工程概述1
1.1软件与软件危机1
1.1.1软件的发展1
1.1.2软件的特征2
1.1.3软件危机3
1.2软件工程4
1.2.1软件工程的概念4
1.2.2软件工程的基本原理4
1.2.3软件工程的基本目标6
1.3软件生存周期6
1.4软件开发模型8
1.4.1瀑布模型8
1.4.2快速原型模型9
1.4.3增量模型10
1.4.4螺旋模型11
1.4.5喷泉模型13
1.4.6形式化方法模型13
1.5软件开发方法和软件开发工具15
1.5.1软件开发方法的概念15
1.5.2软件开发的基本方法16
1.5.3软件开发工具17
1.6传统软件工程和面向对象软件工程17
1.6.1传统的软件工程17
1.6.2面向对象的软件工程18
习题19
第2章软件需求分析22
2.1软件需求分析概述22
2.1.1实例分析22
2.1.2软件需求分析的任务25
2.1.3软件需求分析的步骤26
2.2软件需求获取的方法27
2.2.1常规的软件需求获取的方法27
2.2.2快速原型法在软件需求分析中的应用29
2.3分析建模30
2.3.1分析模型30
2.3.2分析建模的描述工具31
2.4软件需求说明38
2.5结构化分析方法40
2.5.1画出分层数据流图40
2.5.2确定数据定义与加工策略44
2.5.3复审45
2.6需求验证45
2.7软件需求规格说明书书写范例46
习题48
第3章总体设计51
3.1总体设计的任务和步骤51
3.1.1总体设计的任务51
3.1.2总体设计的步骤51
3.2总体设计的概念与原则52
3.2.1模块化53
3.2.2抽象54
3.2.3信息隐蔽54
3.2.4模块独立性55
3.2.5结构设计准则57
3.3面向数据流的设计方法59
3.3.1系统结构图(SC图)59
3.3.2数据流图的类型60
3.3.3设计过程61
3.3.4变换分析62
3.3.5事务分析63
3.3.6设计优化64
3.3.7教材购销系统的结构设计示例65
3.4总体设计规格说明书与评审70
3.5总体设计文档写作范例71
习题73
第4章详细设计75
4.1详细设计的任务与原则75
4.1.1详细设计的任务75
4.1.2详细设计的原则76
4.2详细设计的方法76
4.2.1详细设计的工具76
4.2.2Jackson图80
4.2.3详细设计示例84
4.3详细设计规格说明与评审87
4.3.1详细设计说明书87
4.3.2详细设计复审87
4.4详细设计文档写作范例87
4.4.1详细设计文档的编写87
4.4.2详细设计文档的实例89
习题91
第5章软件的编码与测试94
5.1编码设计的目的94
5.2程序设计语言95
5.2.1程序设计语言的分类95
5.2.2程序设计语言的选择97
5.3编码风格98
5.3.1使用好程序内部的文档98
5.3.2数据说明原则99
5.3.3语句结构的规则99
5.3.4输入/输出规则100
5.3.5高效率的原则100
5.4软件测试101
5.4.1软件测试目标101
5.4.2软件测试的原则102
5.4.3软件测试的方法103
5.4.4软件测试的过程104
5.4.5软件测试与开发各阶段的关系105
5.5测试用例的设计105
5.5.1逻辑覆盖105
5.5.2等价分类法108
5.5.3边界值分析法109
5.5.4错误猜测法110
5.5.5实用综合测试策略110
5.6测试步骤110
5.6.1单元测试111
5.6.2集成测试114
5.6.3验收测试115
5.6.4系统测试116
5.7调试技术117
5.7.1调试过程117
5.7.2调试技术117
5.7.3调试原则118
习题119
第6章面向对象方法学引论122
6.1面向对象方法学概述122
6.1.1面向对象方法的发展历程122
6.1.2面向对象方法学的优点123
6.1.3面向对象方法学的不足125
6.2面向对象的基本概念126
6.2.1对象126
6.2.2类和实例127
6.2.3消息和方法128
6.3面向对象的基本特征129
6.3.1继承性(inheritance)129
6.3.2封装性(encapsulation)131
6.3.3多态性(polymorphism)和重载(overloading)131
6.4面向对象的软件工程132
6.5面向对象的建模135
6.5.1面向对象的建模概述135
6.5.2对象模型136
6.5.3动态模型136
6.5.4功能模型137
6.6面向对象的开发方法137
6.6.1Booch方法138
6.6.2Coad方法138
6.6.3OMT方法139
6.6.4Jacobson方法140
习题140
第7章面向对象的分析144
7.1面向对象的分析144
7.1.1概述144
7.1.2对象模型的层次145
7.1.3需求陈述145
7.2对象模型147
7.2.1确定类-&-对象147
7.2.2确定关联149
7.2.3确定主题151
7.2.4确定属性151
7.2.5对象模型的精化152
7.3动态模型154
7.3.1概述154
7.3.2编写系统交互式活动的脚本154
7.3.3构造交互过程的用户界面155
7.3.4构造事件跟踪图156
7.3.5构造系统对象的状态图157
7.3.6动态模型的合并和精化158
7.4功能模型158
7.4.1基本系统模型159
7.4.2功能级数据流图159
7.4.3描述处理框功能160
7.4.4类和对象中服务的定义160
习题161
第8章面向对象设计163
8.1面向对象设计的概念163
8.1.1面向对象设计的准则163
8.1.2面向对象设计应遵循的原则164
8.1.3面向对象设计的内容165
8.2问题域部分的设计166
8.3人-机交互子系统的设计168
8.3.1界面系统的设计原则168
8.3.2分类用户和描述用户169
8.3.3界面元素及命令层次的设计169
8.4任务管理子系统设计170
8.5数据管理子系统设计171
8.5.1数据存储管理的3种模式171
8.5.2数据管理子系统的设计内容172
8.5.3类中提供的服务的设计173
习题173
第9章统一建模语言UML175
9.1UML概述175
9.1.1UML的产生和发展175
9.1.2UML的主要内容176
9.1.3UML的主要特点177
9.1.4UML的应用178
9.2UML静态建模机制178
9.2.1用例图178
9.2.2类图和对象图182
9.2.3包187
9.2.4构件图188
9.2.5配置图189
9.3UML动态建模机制189
9.3.1消息190
9.3.2顺序图190
9.3.3协作图191
9.3.4状态图192
9.3.5活动图194
9.4统一建模过程195
习题196
第10章面向对象的实现198
10.1程序设计语言198
10.1.1面向对象的语言与非面向对象的语言198
10.1.2面向对象的语言的技术支持199
10.1.3选择面向对象语言的原则201
10.2面向对象程序设计风格202
10.2.1提高可重用性202
10.2.2提高可扩充性203
10.2.3提高稳健性203
10.3测试策略204
10.3.1面向对象测试概述204
10.3.2测试OOA.OOD模型205
10.3.3面向对象测试策略205
10.4设计测试用例206
10.4.1设计类测试用例207
10.4.2测试类间测试用例208
习题208
第11章软件维护210
11.1软件维护的种类210
11.2软件维护的特点212
11.2.1软件维护面临的困难212
11.2.2产生软件维护问题的根源212
11.2.3非结构化维护213
11.2.4结构化维护213
11.3软件维护的实施213
11.3.1维护机构213
11.3.2软件维护申请报告214
11.3.3软件维护工作流程214
11.3.4维护档案记录216
11.3.5维护评价216
11.4软件的可维护性216
11.4.1影响可维护性的因素216
11.4.2软件可维护性的度量217
11.4.3提高可维护性的方法219
11.5软件维护的副作用222
习题223
第12章软件项目的计划和
成本估计225
12.1软件的目标与项目计划225
12.1.1软件开发项目的特点225
12.1.2项目计划目的与作用226
12.1.3项目计划制定的原则227
12.1.4项目计划的内容227
12.1.5项目计划编制过程229
12.1.6项目计划内容确定231
12.2成本估算233
11.2.1成本估算的方法233
12.2.2成本估算的经验模型235
12.3进度计划237
12.3.1进度安排的制定过程237
12.3.2任务的并行性238
12.3.3进度安排的方法238
习题240
第13章控制管理242
13.1软件配置管理242
13.1.1软件管理的危机242
13.1.2软件配置管理243
13.1.3软件配置管理活动243
13.2软件质量管理246
13.2.1软件质量的定义246
13.2.2软件质量要素246
13.2.3软件质量评价准则247
13.2.4软件质量度量248
13.2.5全面质量管理248
13.3软件风险管理250
13.3.1什么是风险250
13.3.2风险管理251
13.3.3风险识别251
13.3.4风险估计253
13.3.5风险评估254
13.3.6风险管理策略256
13.3.7风险驾驭和监控256
习题257
第14章组织与文档技术259
14.1人员分配259
14.1.1组织结构259
14.1.2人员配备260
14.1.3团队管理260
14.2软件工程文档262
14.2.1软件工程文档的分类262
14.2.2软件工程文档的作用263
14.2.3编制规范的软件工程文件264
14.3软件工程标准化266
14.3.1软件工程标准化的意义266
14.3.2软件工程标准的层次267
14.3.3我国的软件工程标准化工作268
习题269
参考文献271