《实用软件工程(第二版)》是2014年清华大学出版社出版的图书,作者是陆惠恩、张成姝。
本书着重从实用角度讲述软件工程的基本概念、原理和方法,系统地介绍目前较成熟的、广泛使用的软件工程技术。内容包括软件工程概述,软件计划(软件定义、可行性分析、需求分析),结构化设计(概要设计、详细设计、界面设计和数据代码设计等),软件编码与软件测试,软件维护,面向对象方法学与统一建模语言UML,面向对象软件设计与实现,软件工程技术发展 (CASE技术、软件重用、RUP统一过程、Rational Rose简介、软件构件模型比较),软件工程管理,软件开发实例。每章都有小结供读者复习总结,精心挑选了习题供读者选用,部分习题有参考答案。本书可作为应用型本科计算机相关专业的教材,也可供从事计算机软件开发及应用的广大科技人员 参考。
目录
- 第1章概述 1
- 1.1软件工程的产生 1
- 1.1.1软件工程发展史 1
- 1.1.2软件危机 2
- 1.2软件工程学 4
- 1.2.1什么是软件 4
- 1.2.2什么是软件工程 4
- 1.2.3软件工程学的内容 4
- 1.2.4软件过程 7
- 1.2.5软件工程基本原理 7
- 1.3软件生命周期 7
- 1.3.1软件生命周期定义 7
- 1.3.2软件生命周期划分阶段的原则 8
- 1.3.3软件生命周期各阶段的任务 8
- 1.4软件开发模型 9
- 1.4.1瀑布模型 9
- 1.4.2快速原型模型 11
- 1.4.3增量模型 12
- 1.4.4喷泉模型 13
- 1.4.5螺旋模型 14
- 1.4.6统一过程 15
- 小结 16
- 习题1 17
- 第2章软件计划 19
- 2.1软件问题定义及可行性研究 19
- 2.1.1软件问题定义 19
- 2.1.2可行性研究 20
- 2.1.3制定项目开发计划 21
- 2.2需求分析的任务 22
- 2.2.1确定目标系统的具体要求 22
- 2.2.2建立目标系统的逻辑模型 24
- 2.2.3软件需求规格说明 24
- 2.2.4修正系统开发计划 25
- 2.2.5制定初步的系统测试计划 25
- 2.2.6编写初步的用户手册 25
- 2.2.7编写数据要求说明书 26
- 2.3需求分析步骤 27
- 2.3.1进行调查研究 27
- 2.3.2分析和描述系统的逻辑模型 27
- 2.3.3复审 28
- 2.4实体-关系图 28
- 2.4.1实体 29
- 2.4.2属性 29
- 2.4.3关系 29
- 2.5数据流图 30
- 2.5.1数据流图四种基本符号 30
- 2.5.2数据流图几种附加符号 31
- 2.5.3画数据流图的步骤 32
- 2.5.4几点注意事项 32
- 2.6状态转换图 35
- 2.7数据字典 36
- 2.7.1数据字典的内容 36
- 2.7.2数据字典使用的符号 37
- 2.7.3数据字典与图形工具 38
- 2.8需求分析的其他图形工具 38
- 2.8.1层次图 39
- 2.8.2Warnier图 39
- 2.8.3IPO图 40
- 2.9软件计划阶段文档 40
- 2.9.1软件计划阶段文档的编写步骤 40
- 2.9.2软件计划实例 41
- 小结 46
- 习题2 46
- 第3章结构化设计 48
- 3.1软件设计步骤 48
- 3.1.1概要设计步骤 49
- 3.1.2详细设计的基本任务 50
- 3.2软件结构设计 51
- 3.2.1软件结构设计的基本原理 51
- 3.2.2模块化 53
- 3.2.3模块独立性 54
- 3.2.4模块设计启发规则 58
- 3.3软件结构设计的图形工具 59
- 3.3.1层次图(或HIPO图) 59
- 3.3.2结构图 59
- 3.4面向数据流的设计方法 61
- 3.5过程设计工具 63
- 3.5.1流程图 63
- 3.5.2盒图(N-S) 67
- 3.5.3PAD图 69
- 3.5.4判定表 70
- 3.5.5判定树 71
- 3.5.6过程设计语言 71
- 3.6系统人机界面设计 72
- 3.6.1人机界面设计问题 72
- 3.6.2人机界面设计过程 73
- 3.6.3评估界面设计的标准 73
- 3.6.4界面设计指南 74
- 3.7数据代码设计 75
- 3.7.1代码设计目的 75
- 3.7.2代码设计原则 76
- 3.7.3代码种类 76
- 3.7.4代码设计方法 78
- 3.8面向数据结构的设计方法 78
- 3.9软件设计文档 82
- 3.9.1概要设计说明书 82
- 3.9.2数据库设计说明书 83
- 3.9.3详细设计说明书 84
- 3.9.4操作手册编写提示 85
- 小结 86
- 习题3 86
- 第4章软件编码和软件测试 89
- 4.1结构化程序设计 89
- 4.1.1程序设计语言的选择 89
- 4.1.2程序设计风格 91
- 4.2软件测试目标 93
- 4.3软件测试方法 94
- 4.3.1静态分析与动态测试 94
- 4.3.2黑盒法与白盒法 94
- 4.4软件测试步骤 95
- 4.4.1模块测试 95
- 4.4.2集成测试 95
- 4.4.3程序审查会和人工运行 96
- 4.4.4确认测试 97
- 4.4.5平行运行 97
- 4.5设计软件测试方案 98
- 4.5.1等价类划分法 98
- 4.5.2边界值分析法 99
- 4.5.3错误推测法 99
- 4.5.4逻辑覆盖法 99
- 4.5.5程序环形复杂度的度量 102
- 4.5.6因果图法 105
- 4.5.7用基本路径覆盖法设计测试用例 107
- 4.6软件测试原则和策略 110
- 4.6.1软件测试原则 110
- 4.6.2实用测试策略 111
- 4.7软件调试、验证与确认 111
- 4.7.1软件调试 111
- 4.7.2软件验证 112
- 4.7.3软件确认 112
- 4.8软件测试文档 113
- 小结 114
- 习题4 114
- 第5章软件维护 118
- 5.1软件维护的种类、过程和副作用 118
- 5.1.1软件维护的种类 118
- 5.1.2软件维护的特点 119
- 5.1.3软件维护的过程 120
- 5.1.4软件维护的副作用 123
- 5.2软件的可维护性 124
- 5.2.1决定可维护性的因素 124
- 5.2.2可维护性的度量 124
- 5.2.3如何提高软件的可维护性 125
- 小结 126
- 习题5 126
- 第6章面向对象方法学与UML 128
- 6.1面向对象方法概述 128
- 6.1.1面向对象方法学的要素和优点 129
- 6.1.2面向对象方法的概念 130
- 6.2UML概述 133
- 6.2.1UML的发展 133
- 6.2.2UML的内容 133
- 6.3UML图 135
- 6.3.1用例图 135
- 6.3.2类图和包 137
- 6.3.3对象图 141
- 6.3.4状态图 142
- 6.3.5顺序图 143
- 6.3.6活动图 144
- 6.3.7协作图 144
- 6.3.8构件图 145
- 6.3.9部署图 145
- 6.4UML的应用 147
- 6.4.1UML模型 147
- 6.4.2UML视图 148
- 6.4.3UML使用准则 150
- 6.4.4UML的扩展机制 151
- 6.4.5UML的应用领域 152
- 小结 153
- 习题6 153
- 第7章面向对象软件设计与实现 155
- 7.1面向对象分析 155
- 7.1.1面向对象分析过程 155
- 7.1.2面向对象分析原则 156
- 7.2建立对象模型 157
- 7.2.1建立对象模型的基本方法 157
- 7.2.2确定对象和类 158
- 7.2.3确定类的相互关系 159
- 7.2.4划分主题 163
- 7.3建立动态模型 164
- 7.4建立功能模型 167
- 7.5面向对象设计 169
- 7.5.1系统设计 169
- 7.5.2对象设计 172
- 7.5.3面向对象设计的准则 173
- 7.5.4面向对象设计的启发规则 174
- 7.6面向对象系统的实现 174
- 7.6.1选择程序设计语言 174
- 7.6.2面向对象程序设计风格 175
- 7.6.3面向对象实现的人员分工 177
- 7.7面向对象的测试 177
- 7.7.1面向对象测试策略 177
- 7.7.2面向对象的测试步骤 179
- 7.8面向对象方法实例 183
- 7.8.1面向对象分析实例 183
- 7.8.2面向对象的设计实例 188
- 小结 193
- 习题7 194
- 第8章软件工程技术的发展 196
- 8.1CASE技术 196
- 8.2软件工具 198
- 8.2.1软件工具的功能 198
- 8.2.2软件工具的性能 199
- 8.2.3软件工具的分类 199
- 8.3软件开发环境 200
- 8.4软件重用 202
- 8.4.1可重用的软件成分 202
- 8.4.2软件重用过程模型 203
- 8.4.3开发可重用的软件构件 204
- 8.4.4分类和检索软件构件 205
- 8.5RUP统一过程 206
- 8.6RationalRose简介 208
- 8.6.1RationalRose界面 210
- 8.6.2RationalRose模型的四个视图 211
- 8.6.3RationalRose的使用 212
- 8.7几种软件构件模型比较 213
- 8.7.1CORBA 213
- 8.7.2COM+/DCOM 214
- 8.7.3JavaBean 214
- 8.7.4三种构件模型的分析比较 216
- 8.7.5软件构架技术 217
- 小结 218
- 习题8 218
- 第9章软件工程管理 219
- 9.1软件工程管理概述 219
- 9.2软件规模估算 220
- 9.2.1软件开发成本估算方法 220
- 9.2.2代码行技术 221
- 9.2.3功能点技术 222
- 9.2.4COCOMO2模型 223
- 9.3进度计划 225
- 9.3.1Gantt图 225
- 9.3.2工程网络技术 226
- 9.4人员组织 228
- 9.5软件配置管理 231
- 9.6软件质量保证 233
- 9.6.1软件质量的特性 233
- 9.6.2软件质量保证措施 234
- 9.7软件开发风险管理 235
- 9.7.1软件开发风险的分类 236
- 9.7.2软件开发风险的识别 237
- 9.7.3软件开发的风险预测 237
- 9.7.4处理软件开发风险的策略 239
- 9.8软件工程标准与软件文档 240
- 9.8.1软件工程标准 240
- 9.8.2软件文档的编写 242
- 小结 243
- 习题9 243
- 第10章实例——招聘考试成绩管理系统 245
- 10.1问题定义 245
- 10.2可行性研究 245
- 10.2.1技术可行性 245
- 10.2.2经济可行性 246
- 10.3需求分析 246
- 10.4概要设计 248
- 10.4.1数据库结构设计 248
- 10.4.2系统结构设计 248
- 10.4.3设计测试方案 249
- 10.5详细设计 250
- 10.5.1系统界面设计 250
- 10.5.2考前处理 251
- 10.5.3输入设计 251
- 10.5.4成绩处理 252
- 10.5.5录用过程设计 252
- 10.5.6输出设计 253
- 10.5.7测试用例设计 253
- 10.6程序设计提示 255
- 10.7软件测试 256
- 习题10 256
- 附录A部分习题解答 258
- 参考文献 271