实用软件工程教程

-
【作 者】阎菲 主编
【I S B N 】978-7-5084-3930-9
【责任编辑】郭东青
【适用读者群】本科
【出版时间】2008-02-01
【开 本】16开本
【装帧信息】平装(光膜)
【版 次】第1版
【页 数】312
【千字数】
【印 张】
【定 价】¥28
【丛 书】21世纪高等院校计算机系列教材
【备注信息】
简介
本书特色
前言
章节列表
精彩阅读
下载资源
相关图书
本书强调软件工程的理论与实践相结合、技术与管理相结合、方法与设计工具相结合的理念,并以应用性极强的系统为例,全面地阐述了软件工程的内涵:同时自始至终贯穿反映学科最新发展方向的新内容,加强了计算机网络、面向对象软件技术实用技术的编写。
全书内容主要包括:软件工程的基础知识,软件过程,软件工程项目管理,计算机系统工程,需求分析,总体设计,详细设计,编码与测试,软件维护,面向对象技术,快速原型技术,软件重用技术等。本书努力做到内容精练,重点突出,概念清楚,针对性和实际操作性强。
本书可作为本科计算机及相关专业学生的教材,也可作为软件开发人员的参考书。
本书的特点是反映学科最新发展方向的新内容,加强计算机网络、面向对象软件实用技术,对统一建模语言(UML)和统一过程(RUP)作了深入浅出的介绍,进一步强调软件工程的理论与实践相结合、技术与管理相结合、方法与设计工具相结合的理念。
社会经济和计算机技术迅速发展,国际国内信息化持续向前推进,使得软件建设的人才十分紧缺,软件工程的理论与方法不断遇到新的挑战。作为高校大学生的教材,本书力求做到既反映这个领域新的发展,又能使学生掌握软件工程的基本方法与技能,培养学生分析解决本专业实际问题的能力。
本书的特点是反映学科最新发展方向的新内容,加强计算机网络、面向对象软件实用技术,对统一建模语言(UML)和统一过程(RUP)作了深入浅出的介绍,进一步强调软件工程的理论与实践相结合、技术与管理相结合、方法与设计工具相结合的理念。
本书努力做到:内容安排适当,呈现方式清晰,让学生很快找出需要的章节;文笔流畅,用语准确,加强学生对重点、难点的理解。
全书主要内容如下:
第1~2章是软件工程基础,主要讨论软件工程的基础理论、软件工程的过程与软件工程的项目管理。
第3~4章论述计算机工程及需求分析。
第5~10章讨论软件系统分析、设计与系统实施的方法,软件工程开发的项目管理与运行维护的基本知识。
第11~14章讨论面向对象方法。
第15~16章构成本书的最后一部分,专门介绍比较新颖、颇具发展潜力的软件开发技术。
本书每章都附有习题,其中有的是复习思考题,有的可作为课外作业或课程设计的内容。
成功的软件工作人员无不经过大量工程实践的锻炼,只有在学习书本内容的同时辅以相应的实际练习和实验环节,才能真正掌握书中介绍的知识和技能。为指导读者进行软件工程实践,本教材提供了相应的软件工程素材。
本书由阎菲任主编,潘正清、吴年志任副主编。各章主要编写人员分工如下:第1、3、4、11、12、13章由阎菲编写,第2、5、6、7、8、9、10、14、16章和附录由潘正清编写,第15章由吴年志编写,阎菲、潘正清统稿并校对。参加本书编写的还有:向郑涛、陈宇峰、裘子煦、薛礼、胡志慧、刘振章、李发海、周应仙、曹霞、史建芳、雷平、张海涛、王丽、吴涛、赵峰林等。
由于时间仓促,水平有限,书中难免有错误和不妥之处,敬请读者与专家指正。如有意见和建议,请与作者联系。作者的E-mail:yanfei131@163.com。
编 者
2006年6月
第1章 软件工程概述 1
1.1 软件工程中的常见问题 1
1.1.1 软件 2
1.1.2 软件危机 2
1.2 软件工程 4
1.2.1 软件工程的定义与原理 4
1.2.2 软件工程与计算机科学 5
1.2.3 软件工程目标 6
1.2.4 软件工程面临的挑战 7
1.3 软件过程和软件生命周期 7
1.3.1 软件过程 7
1.3.2 软件生命周期 8
1.4 软件开发模型 10
1.4.1 瀑布模型 10
1.4.2 演化模型 11
1.4.3 原型模型 12
1.4.4 螺旋模型 13
1.4.5 喷泉模型及面向对象的开发过程 14
1.4.6 基于四代技术的模型 14
1.4.7 智能模型 15
1.5 职业道德 15
1.6 本章小结 16
习题 16
第2章 软件项目管理 17
2.1 软件项目管理概述 17
2.1.1 软件项目管理的概念 17
2.1.2 软件项目管理的特点 18
2.1.3 软件项目管理的内容 19
2.1.4 项目的组织模式 20
2.1.5 项目的人员管理 21
2.1.6 软件配置管理 22
2.2 软件项目规划 23
2.2.1 项目规划的基本概念 23
2.2.2 项目规划的步骤 24
2.2.3 项目规划的原则 24
2.2.4 项目规划的形成文件 25
2.2.5 项目规划过程之间的相互联系 27
2.3 软件项目风险管理 27
2.3.1 风险管理概述 27
2.3.2 软件项目的风险策略 28
2.3.3 软件风险 28
2.3.4 风险管理的过程 28
2.3.5 软件风险的总结 35
2.4 软件项目进度管理 35
2.4.1 项目进度的基本概念 35
2.4.2 制定进度计划 36
2.4.3 面向网络化管理 36
2.4.4 建立里程碑事件 37
2.4.5 实施保证 38
2.5 软件项目质量管理 38
2.5.1 基本定义 38
2.5.2 质量管理主要内容 39
2.5.3 技术与方法 41
2.5.4 质量管理实施 43
2.6 本章小结 46
习题 46
第3章 软件系统及可行性研究 47
3.1 用户中心设计——UCD方法 47
3.2 计算机系统 48
3.2.1 硬件和硬件工程 50
3.2.2 软件和软件工程 51
3.2.3 人机工程 54
3.2.4 数据库和数据库工程 54
3.3 可行性研究 55
3.3.1 可行性研究的任务 55
3.3.2 技术可行性 56
3.3.3 操作可行性 56
3.3.4 经济可行性 56
3.3.5 可行性研究的步骤 58
3.3.6 方案选择 59
3.4 系统开发过程的新体系结构——快速原型与面向对象 60
3.5 本章小结 61
习题 62
第4章 需求分析 63
4.1 需求分析基础 63
4.1.1 分析的任务与原则 63
4.1.2 需求建模 67
4.1.3 开发原型系统 68
4.2 结构化分析方法 68
4.2.1 结构化分析的策略 69
4.2.2 数据流图 70
4.2.3 数据字典 73
4.2.4 小说明 75
4.2.5 结构化分析实施步骤 75
4.3 其他分析方法与图形工具 77
4.4 实体—关系图 80
4.4.1 数据对象、属性与关系 80
4.4.2 E-R方法和实体模型 81
4.4.3 数据结构的规范化 82
4.5 需求规格说明与评审 83
4.5.1 需求规格说明书的目标与内容 84
4.5.2 需求评审 86
4.6 本章小结 87
习题 87
第5章 总体设计 89
5.1 总体设计的任务及过程 89
5.1.1 设计供选择的方案 89
5.1.2 功能解剖和设计软件结构 90
5.1.3 数据库设计 90
5.1.4 制定测试计划 91
5.1.5 文档的编写 91
5.1.6 进行审查和复查 91
5.2 软件设计基本原理 91
5.2.1 模块化 91
5.2.2 抽象 93
5.2.3 信息隐蔽 94
5.2.4 模块独立性 94
5.3 设计准则 97
5.4 总体设计的图形描述工具 100
5.4.1 层次图 100
5.4.2 HIPO图 101
5.4.3 结构图 101
5.5 结构化设计方法 102
5.5.1 数据流图的类型 103
5.5.2 设计步骤 104
5.5.3 变换设计 105
5.5.4 事务设计 110
5.5.5 设计的后处理 111
5.6 本章小结 112
习题 113
第6章 详细设计 114
6.1 结构化程序设计 114
6.2 详细设计工具 116
6.2.1 程序流程图 116
6.2.2 盒图(N-S图) 117
6.2.3 PAD图 118
6.2.4 过程设计语言(PDL) 120
6.2.5 判定表 120
6.2.6 判定树 121
6.3 Jackson程序设计方法 121
6.3.1 Jackson方法 122
6.3.2 Jackson图 122
6.3.3 Jackson程序设计方法 123
6.4 Warnier 程序设计方法简介 127
6.4.1 Warnier 图 127
6.4.2 Warnier 程序设计方法的步骤 127
6.5 人机界面设计 128
6.5.1 人机界面设计概述 128
6.5.2 人机界面风格 130
6.5.3 人机界面实现的原则 130
6.5.4 人机界面的设计过程 132
6.6 本章小结 134
习题 134
第7章 软件编码 136
7.1 程序设计语言 136
7.1.1 程序设计语言概述 136
7.1.2 程序设计语言的分类 137
7.1.3 程序设计语言的特点 140
7.1.4 程序设计语言的选择 143
7.2 程序设计风格 144
7.3 编码的质量要求 147
7.4 编码工具 148
7.5 本章小结 149
习题 149
第8章 软件测试 150
8.1 软件测试的概述 150
8.1.1 软件测试的定义 150
8.1.2 软件测试的基本原则 151
8.1.3 软件测试的步骤 152
8.1.4 软件测试信息流 152
8.1.5 测试人员组织 153
8.2 软件测试方法 154
8.2.1 黑盒测试 154
8.2.2 白盒测试 155
8.3 测试用例设计 156
8.3.1 逻辑覆盖 156
8.3.2 等价类划分 158
8.3.3 边界值分析 159
8.3.4 因果图 160
8.3.5 错误推测法 160
8.4 软件测试的步骤 161
8.4.1 单元测试 161
8.4.2 集成测试 163
8.4.3 有效性测试 166
8.4.4 系统测试 167
8.5 调试 168
8.5.1 调试的步骤 168
8.5.2 调试的策略 168
8.6 软件可靠性 170
8.6.1 软件可靠性的定义 171
8.6.2 软件正确性证明 171
8.7 验收测试 171
8.7.1 验收测试的步骤 172
8.7.2 Alpha测试和Beta测试 173
8.8 测试工具 173
8.8.1 人工测试 173
8.8.2 自动测试工具 175
8.9 本章小结 176
习题 176
第9章 软件维护 177
9.1 软件维护的概念 177
9.1.1 软件维护的定义 177
9.1.2 软件维护的种类 177
9.1.3 影响维护工作量的因素 178
9.1.4 软件维护的策略 179
9.2 软件维护的特点 180
9.2.1 软件工程与软件维护的关系 180
9.2.2 维护成本 181
9.2.3 维护的问题 181
9.3 软件维护过程 182
9.3.1 维护机构 182
9.3.2 维护申请报告 183
9.3.3 维护的工作流程 183
9.3.4 维护记录 184
9.3.5 维护评价 185
9.4 软件可维护性 185
9.4.1 软件可维护性的度量 185
9.4.2 提高软件可维护性的方法 186
9.5 软件维护的副作用 187
9.6 本章小结 189
习题 189
第10章 软件过程改进 190
10.1 基本概念 190
10.2 软件过程的改进方法 191
10.2.1 CMM 介绍 191
10.2.2 SPICE介绍 195
10.2.3 AGILE 介绍 197
10.3 本章小结 198
习题 199
第11章 面向对象概念 200
11.1 传统方法学与面向对象方法比较 200
11.1.1 传统方法学 200
11.1.2 面向对象方法学 201
11.2 面向对象基础概念 203
11.2.1 对象 203
11.2.2 其他概念 205
11.3 面向对象的特性 207
11.3.1 抽象性 207
11.3.2 封装性 209
11.3.3 继承性 209
11.3.4 多态性 210
11.4 本章小结 211
习题 212
第12章 面向对象的分析 213
12.1 面向对象建模 213
12.2 对象模型 214
12.2.1 表示类—&—对象的图形符号 214
12.2.2 表示结构的图形符号 214
12.2.3 实例 217
12.3 动态模型 218
12.3.1 术语 218
12.3.2 表示方法 219
12.4 功能模型 220
12.5 UML概述 220
12.5.1 UML的主要内容 220
12.5.2 UML的主要元素 221
12.6 UML的图形 222
12.6.1 用例图 223
12.6.2 类图 224
12.6.3 序列图 224
12.6.4 状态图与活动图 225
12.7 UML的示例 226
12.8 本章小结 227
习题 228
第13章 面向对象设计 229
13.1 从面向对象分析到面向对象设计 230
13.2 问题域部分(PDC)设计之一——基础理论 231
13.2.1 为什么需要问题域部分设计 232
13.2.2 如何进行问题域部分设计 233
13.3 人机交互部分(HIC)设计 235
13.3.1 为什么需要人机交互部分 235
13.3.2 如何设计人机交互部分 236
13.4 任务管理部分(TMC)设计 238
13.4.1 为什么需要有任务管理部分 238
13.4.2 怎样设计任务管理部分 238
13.5 数据管理部件(DMC)的设计 239
13.6 面向对象设计的实例 240
13.6.1 系统总体结构和使用模型 241
13.6.2 体系结构的设计 242
13.6.3 识别对象的类 243
13.6.4 设计模型 245
13.6.5 对象接口描述 247
13.7 本章小结 248
习题 249
第14章 面向对象测试 250
14.1 面向对象测试的基本概念 250
14.1.1 概述 250
14.1.2 测试模型简介 251
14.2 面向对象测试用例设计 254
14.2.1 测试用例设计的复杂性 254
14.2.2 类测试用例设计 254
14.3 面向对象的测试分析工具 255
14.3.1 面向对象的测试分析工具LOGISCOPE简介 255
14.3.2 面向对象的测试分析工具WinRunner简介 257
14.3.3 面向对象的测试分析工具LoadRunner简介 258
14.4 本章小结 260
习题 260
第15章 软件重用技术 261
15.1 软件重用 261
15.1.1 软件重用的概念和意义 261
15.1.2 软件重用技术的理解 261
15.1.3 软件重用的过程 263
15.1.4 可重用软件的设计过程 264
15.2 软部件库的构造 265
15.2.1 基于域分析的软部件选取 265
15.2.2 软部件的开发 265
15.2.3 软部件库的组织与检索 266
15.3 面向对象的软件重用技术 268
15.4 本章小结 269
习题 269
第16章 软件工程的深入研究 270
16.1 软件的再生工程 270
16.1.1 重构 270
16.1.2 逆向工程 270
16.1.3 前向工程 271
16.2 基于C/S与B/S的软件工程 271
16.2.1 基于C/S的软件开发 271
16.2.2 基于B/S的Web系统开发 272
16.3 计算机辅助软件工程(CASE) 274
16.3.1 定义 274
16.3.2 CASE工具在软件开发中的作用 274
16.3.3 CASE 工具的分类 274
16.3.4 CASE工具的定位 275
16.4 基于构件的软件工程 276
16.4.1 构件技术 276
16.4.2 基于构件的开发方法 277
16.4.3 构件模型 277
16.4.4 构件标准规范模型简介 278
16.5 本章小结 281
习题 281
附录1 可行性研究报告规范 282
附录2 项目开发计划规范 285
附录3 需求规格说明书规范 287
附录4 概要设计说明书规范 290
附录5 详细设计说明规范 292
附录6 项目开发总结报告规范 294
附录7 用Word撰写文档规范 296
参考文献 299
- C语言同步案例习题精解 [主编 肖朝晖]
- Python程序设计 [李国燕 王新强 刘佳 等编著]
- 高等数学(下册) [秦红兵]
- 智慧畜牧业技术 [主编 连卫民 张志明 王辉]
- Python程序设计项目化教程 [主编 卢凤伟]
- 人工智能算法与实践 [主编 梁琨 张翼英]
- 网页设计与制作 [主编 王潇 章明珠]
- Python办公自动化—玩转Excel [郝春吉 刘智杨 周永福 黄 诠]
- 人工智能概论(第二版) [张广渊 周风余 朱振方 著]
- Web安全基础及项目实践 [主编 郑丽 安厚霖 崔俊鹏]
- 电路与电子技术Ⅲ——模拟电子技术 [主编 刘峰]
- 线性代数 [主编 惠小健 王震 卢鸿艳]
- 信息安全技术基础(第二版) [主编 张浩军 陈莉 王峰]
- 电气与控制工程项目管理 [邹红利 滕璇璇 陈德山 编著]
- 计算机网络技术项目化教程(微课版) [主编 王艳萍 安华萍]
- 自然拼读背单词:基础英语4000词(微课版) [陈雪 编著]
- 剪枝——庭院常见植物修剪 [[英]大卫·斯夸尔]
- 电子产品生产与检测 [主编 李恒 杨国辉 练斌]
- Web前端开发项目化教程(微课版) [主编 郭立文 王洪波]
- 数据清洗 [黄源 刘智杨 孙大松]
- 计算机应用基础与实践(Windows 7平台与Office 2016应用) [主编 吕波 何敏]
- 程序员考前冲刺100题 [黄少年 李竹村 曾哲军 编著]
- 办公自动化高级应用案例教程(微课版) [高海波 张诚 杨顺]
- UI创意设计 [主 编 赵艳莉]
- Photoshop图形图像处理项目式教程(微课版) [主 编 韦连春]
- 摄影与剪辑(微课版) [主编 康永斌 杨华 李建伟 副]
- 美国儿童英语自然拼读法(中外教精讲版)(上、下册) [好想学英语教研组 编著]
- 零基础英语语法趣味自学 [宣利 著 黎娟 译]
- “五小工”劳动技能培训教程 [张希跃 王其梁]
- 数据挖掘算法—基于C++及CUDA C [蒂莫西•马斯特斯(Timothy]