软件工程案例教程:软件项目开发实践 第3版
作者 : 韩万江,姜立新
出版日期 : 2017-03-06
ISBN : 978-7-111-55984-9
适用人群 : 既适合作为高等院校计算机及相关各专业软件工程、软件
定价 : 45.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 339
开本 : 16
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书以一个贯穿始终的软件项目案例为基础,讲述了软件项目开发中需求分析、概要设计、详细设计、编码、测试、交付以及维护等各个过程中涉及的理论、方法、技术、提交的产品和文档等。本书注重实效、系统、全面,通过贯穿始终案例的讲述可以让学习者在短时间内掌握软件项目开发的基本知识、基本过程,并有效提高实践能力。

图书特色

本书是理论与实践相结合的典范之作,前两版被国内众多高校选为“软件工程”课程的教材,赢得了广大师生的一致赞誉。第3版呈现了软件工程理论近年来的新发展,同时一如既往地融会了作者多年的教学经验和项目实践经验。全书按照软件开发过程模型展开讲解,通过一个贯穿全书的综合案例,详细介绍了软件开发的需求分析、概要设计、详细设计、编码、产品交付以及维护等软件开发过程。
本书特色
全面更新。面向软件工程新技术,总结了软件开发实践的过程、经验和方法,重新甄选案例并对内容进行了精心梳理,更利于理论知识的落地。
注重实效。全面涵盖软件工程流程中开发、测试、生产和运维的实践过程,同时各章案例又有不同侧重,使得篇章结构更加清晰有效,易于阅读。
立体教学。为教师提供教辅资源,为学生提供相关文档和代码下载,部分操作还配有视频讲解,可访问书中提供的网址或扫描二维码查看。

图书前言

本书第1、2版出版后得到了广大读者的好评,被众多高校选为教材,也收获了很多反馈,其中既有热情的赞扬,也有很多中肯的建议,在此表示深深的感谢。参考这些建议,同时结合近年对软件工程理论新发展的研究,以及多年的教学经验和项目实践,我们对第2版进行了全面修订。第3版的主要更新之处包括:面向软件工程新技术,总结了软件开发实践的过程、经验和方法;重新甄选项目案例,并对这些案例进行了精心整理。本书是理论与实践相结合的典范,每章都有对应的项目案例展示和分析,并且提供案例文档。通过对软件工程中的需求分析、概要设计、详细设计、编码、测试、产品交付、维护等过程的学习,学生可以掌握软件开发的基本流程;同时结合每章的案例分析,学生可以更加深入地理解软件开发实践过程,在短时间内提高软件开发技能。
本书是一本系统的、有针对性且有实效性的书籍,对从事软件项目开发以及希望学习软件开发的人员都有非常好的借鉴作用。
本书由韩万江、姜立新编著,感谢陆天波、杨金翠、孙艺、孙泉、杨元民、岳鹏、郭士榕等的参与,同时对薛忆非、陈甜、韩新雨、郭捷、钱蕴哲、王镱臻等的贡献也一并表示感谢!
由于作者水平有限,书中难免有疏漏之处,诚请各位读者批评指正,并希望你们将使用本书的体会和遇到的问题告诉我们,以便我们在下一版中进行完善。

韩万江
casey_han@263.net
2016年12月于北京

上架指导

计算机\软件工程

封底文字

【普通高等教育“十二五”国家级规划教材】

本书是理论与实践相结合的典范之作,前两版被国内众多高校选为“软件工程”课程的教材,赢得了广大师生的一致赞誉。第3版呈现了软件工程理论近年来的新发展,同时一如既往地融会了作者多年的教学经验和项目实践经验。全书按照软件开发过程模型展开讲解,通过一个贯穿全书的综合案例,详细介绍了软件开发的需求分析、概要设计、详细设计、编码、产品交付以及维护等软件开发过程。

本书特色
·全面更新。面向软件工程新技术,总结了软件开发实践的过程、经验和方法,重新甄选案例并对内容进行了精心梳理,更利于理论知识的落地。
·注重实效。全面涵盖软件工程流程中开发、测试、生产和运维的实践过程,同时各章案例又有不同侧重,使得篇章结构更加清晰有效,易于阅读。
·立体教学。为教师提供教辅资源,为学生提供相关文档和代码下载,部分操作还配有视频讲解,可访问书中提供的网址或扫描二维码查看。

作者简介

韩万江:暂无

姜立新:暂无

图书目录

前言
第1章 软件工程概述 1
1.1 软件工程的背景 1
1.2 软件工程知识体系 3
1.3 软件工程的三段论 5
1.4 软件工程模型 6
1.4.1 软件项目开发路线图 8
1.4.2 软件项目管理路线图 8
1.4.3 软件过程改进路线图 9
1.5 软件开发模型 12
1.5.1 瀑布模型 12
1.5.2 V模型 13
1.5.3 原型模型 13
1.5.4 增量式模型 14
1.5.5 喷泉模型 14
1.5.6 智能模型 14
1.5.7 敏捷生存期模型 14
1.6 软件工程中的复用原则 22
1.7 小结 24
1.8 练习题 24
第2章 软件工程方法学 26
2.1 软件工程方法比较 26
2.2 结构化软件工程方法 27
2.2.1 结构化需求分析 28
2.2.2 结构化设计 28
2.2.3 结构化编码 29
2.2.4 结构化测试 29
2.2.5 结构化维护 29
2.3 面向对象软件工程方法 29
2.3.1 面向对象分析 30
2.3.2 面向对象设计 31
2.3.3 面向对象编程 31
2.3.4 面向对象测试 31
2.3.5 面向对象维护 31
2.3.6 面向对象建模工具UML 32
2.4 面向构件软件工程方法 34
2.5 面向代理软件工程方法 35
2.6 软件工程方法总结 36
2.7 软件逆向工程 36
2.8 基于容器技术的软件工程化管理 37
2.9 项目案例说明 38
2.10 小结 38
2.11 练习题 38
第3章 软件项目的需求分析 40
3.1 软件项目需求概述 40
3.1.1 需求定义 40
3.1.2 需求类型 41
3.1.3 需求的重要性 42
3.2 需求工程 42
3.2.1 需求获取 43
3.2.2 需求分析 45
3.2.3 需求规格说明编写 46
3.2.4 需求验证 47
3.2.5 需求变更 47
3.3 结构化需求分析方法 48
3.3.1 数据流图方法 49
3.3.2 系统流程图 50
3.3.3 实体关系图 50
3.4 面向对象需求分析方法 52
3.4.1 UML需求建模图示 53
3.4.2 UML需求建模过程 56
3.5 其他需求建模方法 65
3.6 原型设计工具 66
3.6.1 Axure RP 66
3.6.2 Balsamiq Mockups 67
3.6.3 Prototype Composer 67
3.6.4 GUI Design Studio 67
3.7 需求规格说明文档 67
3.8 项目案例分析 70
3.9 小结 72
3.10 练习题 73
第4章 软件项目的概要设计 75
4.1 软件设计简介 75
4.1.1 软件设计的定义 75
4.1.2 概要设计的定义 76
4.2 体系结构设计 76
4.2.1 H/T体系结构 77
4.2.2 C/S体系结构 78
4.2.3 B/S体系结构 78
4.2.4 多层体系结构 80
4.2.5 面向服务的体系结构 84
4.2.6 面向工作流引擎 85
4.2.7 云架构 88
4.2.8 应用程序框架结构 90
4.3 模块(构件)设计 94
4.3.1 模块分解 94
4.3.2 耦合度 95
4.3.3 内聚度 96
4.4 数据模型设计 98
4.4.1 数据库设计 99
4.4.2 文件设计 106
4.5 接口设计 107
4.5.1 用户界面设计 107
4.5.2 外部接口和内部接口设计 109
4.6 结构化设计方法 109
4.6.1 变换流与事务流 110
4.6.2 功能模块划分 111
4.6.3 数据流映射为结构图 113
4.6.4 输入/输出设计 113
4.7 面向对象的设计方法 114
4.7.1 UML的设计图示 116
4.7.2 识别对象类 121
4.7.3 确定属性 121
4.7.4 定义对象的操作 122
4.7.5 确定对象之间的通信 122
4.7.6 完成对象类的定义 122
4.8 软件设计指导原则 128
4.9 概要设计文档标准 129
4.10 项目案例分析 131
4.10.1 体系结构 131
4.10.2 模块设计 132
4.10.3 数据库设计 133
4.10.4 界面设计 135
4.11 小结 135
4.12 练习题 135
第5章 软件项目的详细设计 138
5.1 详细设计的概念 138
5.2 详细设计的内容 138
5.3 结构化详细设计方法 139
5.3.1 详细设计工具 139
5.3.2 JSD方法 145
5.3.3 Warnier方法 147
5.3.4 结构化详细设计的例子 148
5.4 面向对象详细设计方法 150
5.4.1 详细设计工具 150
5.4.2 详细设计步骤 151
5.4.3 面向对象详细设计的例子 152
5.5 详细设计文档 154
5.6 项目案例分析 155
项目详细设计简介 155
5.7 小结 163
5.8 练习题 163
第6章 软件项目的编码 165
6.1 编码概述 165
6.2 编码方法 165
6.2.1 结构化编程 166
6.2.2 面向对象编程 170
6.2.3 面向组件编程 172
6.3 编码策略 172
6.3.1 自顶向下的开发策略 172
6.3.2 自底向上的开发策略 173
6.3.3 自顶向下和自底向上相结合的开发策略 173
6.3.4 线程模式的开发策略 173
6.4 McCabe程序复杂度 173
6.5 编码语言、编码规范和编码文档 174
6.5.1 编码语言 174
6.5.2 编码标准和规范 175
6.5.3 编码文档 180
6.6 重构理念和重用原则 180
6.6.1 重构理念 180
6.6.2 重用原则 181
6.7 项目案例分析 182
6.7.1 项目开发环境的建立 182
6.7.2 编码标准和规范 182
6.7.3 代码说明 205
6.8 小结 211
6.9 练习题 212
第7章 软件项目的测试 213
7.1 软件测试概述 213
7.1.1 什么是软件测试 213
7.1.2 软件测试技术综述 214
7.2 静态测试 215
7.2.1 文档审查 216
7.2.2 代码检查 217
7.2.3 技术评审 218
7.3 白盒测试方法 219
7.3.1 语句覆盖 220
7.3.2 判定覆盖 220
7.3.3 条件覆盖 220
7.3.4 判定/条件覆盖 221
7.3.5 条件组合覆盖 221
7.3.6 路径覆盖 221
7.3.7 其他覆盖准则 222
7.4 黑盒测试方法 224
7.4.1 边界值分析 225
7.4.2 等价类划分 225
7.4.3 规范导出法 227
7.4.4 错误猜测法 227
7.4.5 基于故障的测试方法 227
7.4.6 因果图法 228
7.4.7 决策表法 229
7.4.8 场景法 231
7.5 其他测试技术 234
7.5.1 回归测试 234
7.5.2 随机测试 235
7.5.3 探索性测试 235
7.6 软件测试级别 236
7.6.1 单元测试 236
7.6.2 集成测试 238
7.6.3 系统测试 241
7.6.4 验收测试 243
7.6.5 上线测试 243
7.7 面向对象的测试 243
7.7.1 面向对象分析的测试 244
7.7.2 面向对象设计的测试 244
7.7.3 面向对象的单元测试 245
7.7.4 面向对象的集成测试 246
7.7.5 面向对象的系统测试 247
7.8 测试过程管理 247
7.8.1 软件测试计划 247
7.8.2 软件测试设计 248
7.8.3 软件测试开发 252
7.8.4 软件测试执行 253
7.8.5 软件测试跟踪 253
7.8.6 软件测试评估与总结 257
7.9 自动化测试 260
7.10 软件测试过程的文档 265
7.10.1 测试计划文档 265
7.10.2 测试设计文档 266
7.10.3 软件测试报告 274
7.11 项目案例分析 276
7.11.1 测试设计案例 277
7.11.2 测试执行结果 277
7.11.3 测试报告案例 278
7.12 小结 281
7.13 练习题 281
第8章 软件项目的交付 283
8.1 产品交付概述 283
8.2 安装部署 284
8.2.1 软件安装 284
8.2.2 软件部署 284
8.3 验收测试 284
8.4 培训 286
8.4.1 培训对象 286
8.4.2 培训方式 286
8.4.3 培训指南 286
8.5 用户文档 287
8.5.1 用户手册 287
8.5.2 系统管理员手册 287
8.5.3 其他文档 287
8.6 软件项目交付文档 287
8.6.1 验收测试报告 288
8.6.2 用户手册 291
8.6.3 系统管理员手册 292
8.6.4 产品交付文档 293
8.7 项目案例分析 294
8.7.1 安装部署 295
8.7.2 用户手册 309
8.8 小结 309
8.9 练习题 309
第9章 软件项目的维护 310
9.1 软件项目维护概述 310
9.2 软件项目维护的类型 311
9.2.1 纠错性维护 311
9.2.2 适应性维护 312
9.2.3 完善性维护 312
9.2.4 预防性维护 312
9.3 软件再工程过程 312
9.4 软件项目维护的过程 313
9.4.1 维护申请 314
9.4.2 维护实现 315
9.4.3 维护产品发布 315
9.5 软件维护过程文档 315
9.6 软件维护的代价 315
9.7 项目案例分析 316
9.7.1 SPM安全漏洞维护方案 317
9.7.2 SPM安全漏洞维护评估 328
9.8 小结 329
9.9 练习题 329
参考文献 331

教学资源推荐
作者: (美)Michael J.Laszlo
作者: [美]罗杰 S.普莱斯曼(Roger S. Pressman),[美]布鲁斯 R. 马克西姆(Bruce R. Maxim) 著
作者: 窦万峰
作者: Timothy C.Lethbridge Robert Laganiere