软件工程(第二版)

-
【作 者】闫菲 主编
【I S B N 】978-7-5084-3032-4
【责任编辑】张玉玲
【适用读者群】高职高专
【出版时间】2009-01-01
【开 本】16开本
【装帧信息】平装(光膜)
【版 次】2005年07月第2版
【页 数】240
【千字数】
【印 张】
【定 价】¥20
【丛 书】21世纪高职高专新概念教材
【备注信息】
简介
本书特色
前言
章节列表
精彩阅读
下载资源
相关图书
本书是在第一版的基础上,依据教育部《高职高专教育基础课程教学的基本要求》和《高职高专教育专业人才培养目标与规格》经过全面修订而成的。在修订中强调内容的实用性,以问题带知识点的方式来阐述,反映学科最新发展方向的新内容,加强了计算机网络、面向对象软件技术等实用技术的介绍,对统一建模语言(UML)和统一过程(RUP)作了深入浅出的介绍。
本书共14章,内容主要包括:软件危机与软件工程、软件生命周期及软件开发模型、计算机系统工程、需求分析、总体设计、详细设计、编码与测试、软件维护、面向对象方法学引论、面向对象的分析、面向对象系统设计、快速原型技术、软件重用技术。
本书内容精练,重点突出,概念清楚,强调专业知识与工程实践相结合,注重专业技术与技能的训练,引入典型工程案例。书中含有丰富的例题与习题,便于教学与自学。适合作为高职高专、成人高校计算机及相关专业学生的教材,也可作为软件开发人员的参考书。
第二版前言
本书第一版自2001年7月出版以来,颇受读者欢迎,在不到三年的时间内共印刷了6次,不少相应高校用其作为“软件工程”课程的教材。在教材使用过程中,收到许多反馈意见以及很多好的建议,在此感谢读者的厚爱。
软件工程是正在发展中的领域。社会经济和计算机技术迅速发展,国际国内信息化持续向前推进,使得软件建设的人才十分紧缺,软件工程的理论与方法不断遇到新的挑战。
然而第一版的内容主要取材于2001年以前出版的书籍或文章和著者的实践总结,经过三年多的时间,作为高校大学生的教材,应当力求做到既反映这个领域的新的发展,又能使学生掌握软件工程的基本方法与技能,培养学生分析解决本专业实际问题的能力,在此基础上,编者对原书作了全面认真的修订。
这次修订的指导思想主要有3点:
(1)坚持以应用为目的,以“必需、够用为度”的原则,继续采用“问题(任务)驱动”的编写方式,引入案例教学和启发式教学方法,特别根据多年使用本教材的体会,着重把基本概念、原理、技术和方法讲懂讲透,强调理论与实践相结合,注重基础的培养,因此,在第二版中保留了第一版的基本内容。
(2)增加了反映学科最新方向的新内容,加强了计算机网络、面向对象软件技术等实用技术的介绍,吸取了国内外论述面向对象方法学众多书刊的精华,并结合自己使用面向对象方法从事科学研究、开发软件的经验和体会,对统一建模语言(UML)和统一过程(RUP)作了深入浅出的介绍,进一步强调软件工程的理论与实践相结合、技术与管理相结合、方法与设计工具相结合,读者可以在教材的基础上进行面向对象方法分析、设计和实现软件的实践。
(3)在修订时对第一版的内容作了十分慎重的斟酌,删除了前后重复的第15章以及不十分必要的图表和文字,适当压缩全书的篇幅,以降低成本,减轻读者负担。
成功的软件工作人员无不经过大量工程实践的锻炼,只有在学习书本内容的同时辅以相应的实际练习和实验环节,才能真正掌握书中介绍的知识和技能。
本书第二版由闫菲主编,向郑涛、吴年志任副主编。闫菲编写第1~4章及第10~12章,向郑涛编写第5~7章及第9章,吴年志编写第13章和第14章,陈宇峰编写第8章。参加本书大纲讨论及部分编写工作的还有黄兴奎、刘翌南、段昌盛、柯敏毅等。
由于作者水平所限,书中难免有错误和不足之处,恳请各位读者批评指正。我们期待广大读者对本书提出宝贵意见,以便进一步改进,使教材不断完善。如有意见和建议,请与作者联系。作者的工作单位是:湖北汽车工业学院,E-mail地址为:yanfei131@163.com。
第二版前言
第一版前言
第1章 软件危机与软件工程 1
1.1 软件危机 1
1.1.1 软件的代价 1
1.1.2 软件开发和维护中的严重问题 2
1.1.3 产生软件危机的原因 3
1.1.4 克服危机的途径 3
1.2 软件工程 4
1.2.1 软件工程的定义与基本原理 4
1.2.2 软件工程的目标 5
1.2.3 软件工程框架及原则 6
本章小结 7
习题1 7
第2章 软件生命周期及软件开发模型 8
2.1 软件生命周期 8
2.2 软件生命周期过程和活动 9
2.2.1 瀑布模型 10
2.2.2 演化模型 11
2.2.3 原型模型 12
2.2.4 螺旋模型 13
2.2.5 喷泉模型 14
本章小结 15
习题2 15
第3章 计算机系统工程 16
3.1 基于计算机的系统 16
3.1.1 计算机系统工程 17
3.1.2 硬件工程 20
3.1.3 软件工程 22
3.1.4 人机工程 26
3.1.5 数据库工程 27
3.2 可行性研究 28
3.2.1 可行性研究的任务 28
3.2.2 市场可行性 29
3.2.3 经济可行性 29
3.2.4 技术可行性 31
3.2.5 方案选择 32
3.3 系统开发过程的新体系结构——快速原型与面向对象 33
本章小结 34
习题3 35
第4章 需求分析 36
4.1 需求分析基础 36
4.1.1 分析的任务与原则 36
4.1.2 初步需求获取技术 38
4.1.3 需求建模 39
4.1.4 开发原型系统 40
4.2 结构化分析方法 41
4.2.1 结构化分析的策略 41
4.2.2 数据流图 42
4.2.3 数据字典 46
4.2.4 小说明 48
4.2.5 结构化分析实施步骤 48
4.3 其他分析方法与图形工具 49
4.4 实体——关系图 52
4.4.1 数据对象、属性与关系 53
4.4.2 E-R方法和实体模型 54
4.4.3 数据结构的规范化 55
4.5 需求规格说明与评审 57
4.5.1 需求规格说明书的目标与内容 57
4.5.2 需求评审 59
本章小结 60
习题4 61
第5章 总体设计 62
5.1 总体设计的过程 62
5.1.1 设计供选择的方案 62
5.1.2 推荐最佳实现方案 63
5.1.3 功能解剖和设计软件结构 63
5.1.4 数据库设计 64
5.1.5 制定测试计划 65
5.1.6 文档的编写 65
5.1.7 进行审查和复查 65
5.2 软件设计基本原理 65
5.2.1 模块化 65
5.2.2 抽象 68
5.2.3 信息隐蔽 68
5.2.4 模块独立性 69
5.3 设计准则 72
5.4 总体设计的图形描述工具 74
5.4.1 层次图 74
5.4.2 HIPO图 75
5.4.3 结构图 76
5.5 结构化设计方法 77
5.5.1 数据流图的类型 77
5.5.2 设计步骤 79
5.5.3 变换设计 79
5.5.4 事务设计 85
5.5.5 设计的后处理 86
本章小结 87
习题5 87
第6章 详细设计 88
6.1 结构化程序设计 88
6.2 详细设计工具 90
6.2.1 程序流程图 90
6.2.2 盒图(N-S图) 91
6.2.3 PAD图 92
6.2.4 过程设计语言(PDL) 94
6.2.5 判定表 94
6.2.6 判定树 95
6.3 Jackson程序设计方法 96
6.3.1 Jackson方法 96
6.3.2 Jackson图 97
6.3.3 Jackson程序设计方法 98
6.4 Warnier 程序设计方法简介 102
6.4.1 Warnier 图 102
6.4.2 Warnier 程序设计方法的步骤 102
本章小结 102
习题6 103
第7章 编码 105
7.1 程序设计语言 105
7.1.1 程序设计语言的概述 105
7.1.2 程序设计语言的分类 106
7.1.3 程序设计语言的特点 110
7.1.4 程序设计语言的选择 112
7.2 程序设计风格 113
7.2.1 程序内部的文档 113
7.2.2 数据说明 114
7.2.3 语句构造 115
7.2.4 输入/输出 115
7.2.5 效率 116
7.3 编码的质量要求 117
7.4 编码工具 118
本章小结 118
习题7 119
第8章 软件测试 120
8.1 软件测试的基本概念 120
8.1.1 软件测试的定义 120
8.1.2 软件测试的基本原则 121
8.1.3 软件测试的步骤 122
8.1.4 软件测试信息流 122
8.1.5 测试人员组织 123
8.2 软件测试方法 124
8.2.1 黑盒测试 124
8.2.2 白盒测试 125
8.3 测试用例的设计 126
8.3.1 逻辑覆盖 126
8.3.2 等价类划分 129
8.3.3 边界值分析 130
8.3.4 因果图 130
8.3.5 错误推测法 131
8.4 软件测试的步骤 131
8.4.1 单元测试 131
8.4.2 集成测试 134
8.4.3 有效性测试 137
8.4.4 系统测试 138
8.5 调试 139
8.5.1 调试的步骤 139
8.5.2 调试的策略 139
8.6 软件可靠性 142
8.6.1 软件可靠性的定义 142
8.6.2 软件正确性证明 142
8.7 验收测试 143
8.7.1 验收测试的步骤 143
8.7.2 Alpha测试和Beta测试 144
8.8 测试工具 145
8.8.1 人工测试 145
8.8.2 自动测试工具 147
本章小结 147
习题8 148
第9章 软件维护 149
9.1 软件维护的概念 149
9.1.1 软件维护的种类 149
9.1.2 影响维护工作量的因素 150
9.1.3 软件维护的策略 151
9.2 软件维护的特点 152
9.2.1 软件工程与软件维护的关系 152
9.2.2 维护成本 153
9.2.3 维护的问题 154
9.3 软件维护过程 154
9.3.1 维护机构 154
9.3.2 维护申请报告 155
9.3.3 维护的工作流程 155
9.3.4 维护记录 157
9.3.5 维护评价 157
9.4 软件可维护性 158
9.4.1 软件可维护性的度量 158
9.4.2 提高软件可维护性的方法 159
9.5 软件维护的深化——再生工程 160
9.5.1 重构 160
9.5.2 逆向工程 161
9.5.3 前向工程 161
9.6 软件维护的副作用 161
本章小结 162
习题9 163
第10章 面向对象方法学引论 164
10.1 传统方法学与面向对象方法学比较 164
10.1.1 传统方法学 164
10.1.2 面向对象方法学 165
10.2 面向对象的基本任务 167
10.2.1 抽象 167
10.2.2 封装 169
10.3 面向对象基础概念 169
10.3.1 对象 169
10.3.2 其他概念 172
本章小结 175
习题10 176
第11章 面向对象的分析 177
11.1 面向对象建模 177
11.2 对象模型 178
11.2.1 表示类—&—对象的图形符号 178
11.2.2 表示结构的图形符号 179
11.2.3 实例 181
11.3 动态模型 182
11.3.1 术语 182
11.3.2 表示方法 183
11.4 功能模型 184
11.5 UML概述 184
11.6 UML的图形 186
11.6.1 用例图(use case diagram) 187
11.6.2 类图(class diagram) 188
11.6.3 顺序图(Sequence diagram) 189
11.6.4 状态图(State chart diagram) 189
本章小结 190
习题11 191
第12章 面向对象系统设计 192
12.1 从面向对象分析到面向对象设计 193
12.2 问题域部分(PDC)设计之一——基础理论 194
12.2.1 为什么需要问题域部分设计 195
12.2.2 如何进行问题域部分设计 196
12.3 人机交互部分(HIC)设计 198
12.3.1 为什么需要人机交互部分 198
12.3.2 如何设计人机交互部分 199
12.4 任务管理部分(TMC)设计 200
12.4.1 为什么需要有任务管理部分 201
12.4.2 怎样设计任务管理部分 201
12.5 数据管理部件(DMC)的设计 202
本章小结 204
习题12 204
第13章 快速原型技术 205
13.1 快速原型方法 205
13.1.1 原型的定义和作用 205
13.1.2 原型的分类 206
13.1.3 原型开发的应用 207
13.1.4 快速原型的构造过程 207
13.2 基于快速原型技术的进化式软件开发(螺旋模型) 208
13.2.1 螺旋模型 208
13.2.2 螺旋模型的评价 210
13.3 快速原型开发技术 210
本章小结 210
习题13 211
第14章 软件重用技术 212
14.1 软件重用 212
14.1.1 软件重用的概念和意义 212
14.1.2 软件重用技术的理解 212
14.1.3 软件重用的过程 215
14.1.4 可重用软件的设计过程 215
14.2 软部件库的构造 216
14.2.1 基于域分析软部件选取 216
14.2.2 软部件的开发 217
14.2.3 软部件库的组织 219
14.2.4 软部件的检索与提取 220
14.3 面向对象的软件重用技术 220
本章小结 222
习题14 222
参考文献 223