软件工程导论(原书第4版)
作者 : [美] 弗兰克•徐(Frank Tsui) 奥兰多•卡拉姆(Orlando Karam) 芭芭拉•博纳尔(Barbara Bernal)著
译者 : 崔展齐 潘敏学 王林章 译
丛书名 : 计算机科学丛书
出版日期 : 2018-09-03
ISBN : 978-7-111-60723-6
定价 : 69.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 248
开本 : 16
原书名 : Essentials of Software Engineering, Fourth Edition
原出版社: Jones and Bartlet Publishers
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

高校本科软件工程导论教材,适合一学期讲授,提供系统的工程方法来讲述软件工程的原籍和方法学。全书内容全面而且具体简洁。

图书特色

图书前言

本书源自我们软件工程导论的教学经验。尽管市面上已有不少同类图书,但很少有仅介绍核心内容,适用于一门为期一学期(授课16周,每周大约3学时)的课程的教材。随着小规模网络应用的激增,许多信息技术新人尚未完全理解软件工程必备知识就进入软件工程领域。本书适用于经验有限的新生和打算在软件工程领域开始新职业的经验丰富的信息技术专业人员。本书覆盖软件系统完整的生命周期,范围从初始阶段到发布阶段直至支持阶段。
本书内容的基础是我们的从业经验和职业背景—第一位作者曾在IBM、Blue Cross Blue Shield、MARCAM和RCA等公司从事构建、支持和管理大型复杂的关键业务软件等工作,有着超过25年的工作经验;第二位作者具有在微软和亚马逊等公司使用敏捷方法构建较小规模软件的大量经验;第三位作者具有双语能力,对美国大学生和非美国的西班牙语学生都有着丰富的软件工程教学经验。
尽管新思想和新技术会不断涌现,书中介绍的一些原理可能需要更新,但我们相信本书中介绍的底层的、基础的概念会保留下来。
第4版前言
第3版出版后,计算机行业更快地朝着服务应用和社交媒体的方向发展。虽然软件工程的基础仍然相对稳定,但我们还是决定做一些修改以反映软件工程领域的某些变化,包括增加一些教学辅助。我们的目标是保持本书的内容足够精练,以便用于为期一学期16周的课程教学。
下面是第4版主要增加的内容:
第5章中看板方法的讨论
第7章中REST分布式处理架构
第7章中数据设计、分析以及“大数据”
第9章中代码重用
第9章中云计算
此外,我们对书中部分语句的表达做了细微修改以突出重点和强化理解。我们也听取了来自不同大学,使用本书第1版、第2版、第3版读者的反馈,修改了一些语法和拼写错误。书中可能还会有一些错误,责任完全在我们。
本书的第1版、第2版、第3版被许多高等院校使用,感谢他们的耐心和反馈,我们从中受益匪浅。我们希望对所有未来的读者而言,第4版是更好的一本书。
本书组织结构
第1、2章展示小型编程项目和构造关键业务软件系统所需工作之间的差异。我们特意用两章内容来说明这个概念,强调一个单人“车库作坊”和构建一个大型“专业”系统所需的项目团队之间的区别。这两章中的讨论给出了学习和理解软件工程的基本原理。第3章第一次更加正式地讨论软件工程。这一章也介绍了软件工程职业的道德规范。
第4、5章涵盖软件过程、过程模型和方法学等传统主题。为了反映这个领域取得的大量进展,这两章非常详细地介绍了如何通过软件工程研究所(Software Engineering Institute,SEI)提出的能力成熟度模型来评价过程。
第6、7、9、10、11章在宏观层面上依次介绍了从需求到产品发布的开发活动。第7章用一个HTML-Script-SQL设计和实现示例,对UI设计展开讨论。在介绍软件设计的章节之后,第8章回顾并讨论了在评估概要设计和详细设计中使用的设计特征和度量指标。第11章不仅讨论了产品发布,还介绍了配置管理的基本概念。
第12章探讨了软件系统在发布给客户和用户后的相关支持和维护活动。涵盖的主题包括来电管理、问题修复和功能点发布等。在这一章中,进一步强调了配置管理的必要性。第13章总结了项目管理的不同阶段,同时介绍了一些具体的项目计划和监控技术。这章仅是一个概要总结,并没有包括团队建设、领导才能等主题。软件项目管理过程区别于开发和支持过程。第14章总结全书,介绍软件工程领域当前面临的问题,并展望了该领域未来的主题。
附录部分通过团队计划、软件开发计划、需求规格说明、设计计划和测试计划的“概要示例”让读者和学生深入理解软件开发主要活动可能产生的结果。一个常见的问题是需求文档或测试计划应该写成什么样。为帮助回答这个问题,并提供一个切入点,我们给出了计划、需求、设计和测试计划4项活动可能产生的文档样例格式。具体如下:
附录A:软件开发计划概要
附录B:软件需求规约概要
示例1:SRS概要—描写
示例2:SRS概要—面向对象
示例3:SRS概要—IEEE标准
示例4:SRS概要—叙述法
附录C:软件设计概要
示例1:软件设计概要—UML
示例2:软件设计概要—结构化
附录D:测试计划概要
很多时候,对于新手软件工程师组成的团队项目,在开发过程中需要对如何使用文档描述过程进行特别指导。这4个附录用于给读者提供具体的概要大纲示例。每一个附录都提供大纲及相应的解释。这为教师开展课堂活动、分配团队项目和独立任务补充了具体材料。
本书涵盖的主题反映了IEEE计算机学会倡议的《软件工程知识体系》(SWEBOK)和《软件工程本科学位计划软件工程课程指南(2004)》强调的内容。有一个未突出强调但贯穿全书的主题是质量—一个需要集成到所有活动中去解决的主题。它不仅仅是测试人员的关注点,本书多个章节中都讨论了质量,这反映了其广泛的影响和跨越多个活动的特性。
建议教学方案
本书所有章节都可以在一个学期内学完。当然,不同教师的侧重点可能会有所不同:
希望聚焦于直接开发活动的教师应该在第6~11章多花时间。
希望关注间接和通用活动的教师应该在第1、12和13章多花时间。
应当指出,直接开发活动和间接支持活动都很重要,它们共同构成了软件工程学科。
每章后面都有针对本章的复习题和练习题。对于复习题,学生可以在书中直接找到答案。而练习题则用于课堂讨论、作业或小型项目。
致谢
首先要感谢我们的家庭,特别是我们的妻子Lina Colli和Teresa Tsui。当我们把更多的时间用在编写本书而不是陪伴她们的时候,她们仍然给予了鼓励和理解。我们的孩子—Colleen和Nicholas、Orlando和Michelle以及Victoria、Liz和Alex—也积极地支持我们的工作。
另外,还要感谢那些在多方面帮助我们改进本书的审阅人。我们要特别感谢对本书第3版有贡献的下列人员:
Brent Auernheimer,加州州立大学弗雷斯诺分校(California State University,Fresno)
Ayad Boudiab,乔治亚佩雷米特学院(Georgia Perimeter College)
Kai Chang,奥本大学(Auburn University)
David Gustafson,堪萨斯州立大学(Kansas State University)
Theresa Jefferson,乔治华盛顿大学(George Washington University)
Dar-Biau Liu,加州州立大学长滩分校(California State University,Long Beach)
Bruce Logan,莱斯利大学(Lesley University)
Jeanna Matthews,克拉克森大学(Clarkson University)
Michael Oudshoorn,蒙大拿州立大学(Montana State University)
Frank Ackerman,蒙大拿技术学院(Montana Tech)
Mark Hall,哈斯汀学院(Hastings College)
Dr. Dimitris Papamichail,新泽西学院(The College of New Jersey)
Dr. Jody Paul,丹佛大都会州立大学(Metro State Denver)
Dr. David A. Cook,斯蒂夫奥斯汀州立大学(Stephen F. Austin State University)
Dr. Reza Eftekari,乔治华盛顿大学、马里兰大学帕克分校(George Washington Uni-versity,University of Maryland at College Park)
Dr. Joe Hoffert,印第安纳卫斯理大学(Indiana Wesleyan University)
Dr. Sofya Poger,佛里森学院(Felician College)
Dr. Stephen Hughes,寇伊学院(Coe College)
Ian Cottingham,内布拉斯加大学林肯分校杰弗里S.莱克斯学院(Jeffrey S. Raikes School at The University of Nebraska,Lincoln)
Dr. John Dalbey,加州理工州立大学(California Polytechnic State University)
Dr. Michael Murphy,康考迪亚大学得克萨斯分校(Concordia University Texas)
Dr. Edward G. Nava,新墨西哥大学(University of New Mexico)
Dr. Yenumula B. Reddy,关柏林州立大学(Grambling State University)
Alan C. Verbit,特拉华县社区学院(Delaware County Community College)
Dr. David Burris,萨姆休斯顿州立大学(Sam Houston State University)
我们还要感谢对本书第4版有贡献的下列人员:
Savador Almanza-Garcia,Vector CANtech公司
Dr. Ronand Finkbine,印第安纳大学东南分校(Indiana University Southeast)
Dr. Christopher Fox,詹姆斯麦迪逊大学(James Madison University)
Paul G. Garland,约翰霍普金斯大学(Johns Hopkins University)
Dr. Emily Navarro,加州大学尔湾分校(University of California,Irvine)
Benjamin Sweet,罗伦斯科技大学(Lawrence Technological University)
Ben Geisle,威斯康星大学绿湾分校(University of Wisconsin,Green Bay)
我们还要感谢Jones & Bartlett Learning出版社Taylor Ferracane、Laura Pagluica、Bharathi Sanjeev、Amy Rose、Mary Menzemer以及其他员工对本书的帮助。书中还存在的问题都是作者的错误。

—Frank Tsui
—Orlando Karam
—Barbara Bernal

上架指导

计算机\软件工程

封底文字

本书是一本概要介绍软件工程核心内容的导论性教材。全书共14章,完整覆盖了从初始阶段到发布、支持阶段的软件系统生命周期,讨论了贯穿软件生命周期的过程、质量保障及项目管理等问题。
软件工程是一门实践性很强的学科,本书的三位作者Frank Tsui、Orlando Karam和Barbara Bernal,除积累了软件工程课程教学的丰富经验外,还拥有多年在IBM、微软和亚马逊等公司从事软件研发和管理的工作经历。本书中也融入了他们的丰富工程经验和职业背景,并用生动的示例贯穿全书,使读者更易理解相关概念。
本书包含对编程思想、系统分析和设计、软件工程原理、开发和支持过程、方法、软件测试和质量以及产品管理的全面概述,内容精练,案例丰富。新版增加了大数据设计和在“云”中进行开发等新内容,使之更加符合当今软件技术发展和高校软件工程课程的需求。

主要特点
覆盖了软件工程领域的广阔范围,适用于入门课程。
明确区分并解释了软件工程及软件过程、软件开发和软件管理等子主题。
可在一个学期(16周)内简要地讲授相关主题。
新版增加了关于大数据设计、“云”开发的两章,并更新了敏捷开发过程(如看板方法)和大数据技术(如Hadoop)的内容。

作者简介

[美] 弗兰克•徐(Frank Tsui) 奥兰多•卡拉姆(Orlando Karam) 芭芭拉•博纳尔(Barbara Bernal)著:弗兰克·徐(Frank Tsui)在软件和IT产业有30多年的从业经验,曾担任多家跨国软件企业的研发主管或VP。他目前是南方州立理工大学计算机和软件工程学院的全职教授,还是佐治亚理工学院和堪萨斯州立大学的兼职教授。
奥兰多·卡拉姆(Orlando Karam)目前是堪萨斯州立大学教员。他在敏捷开发和开源软件社区非常活跃,还积极参与软件复杂性的研究。
芭芭拉·博纳尔(Barbara Bernal)目前是堪萨斯州立大学软件工程教授,她的专长是用户界面和以用户为中心的设计领域。她还积极参与美国工程教育协会和软件工程师教育学会的工作。

译者序

本书是一本概要介绍软件工程核心内容的教材。全书共14章,完整覆盖了从初始阶段到发布、支持阶段的软件系统生命周期,讨论了贯穿软件生命周期的过程、质量保障及项目管理等问题。软件工程是一门实践性很强的学科,本书的三位作者积累了丰富的软件工程课程教学经验,并拥有多年在IBM、微软和亚马逊等公司从事软件研发和管理的工作经历。本书中也融入了他们的丰富工程经验和职业背景,并用生动的示例贯穿全书,使读者更易理解相关概念。
在机械工业出版社引进该书版权后,我们应姚蕾编辑的邀请,于2017年4月开始了本书的翻译工作。本书译者包括崔展齐、潘敏学、王林章,并由崔展齐和王林章对译稿进行了审核。在翻译过程中,得到了南京大学计算机科学与技术系研究生潘秋红、陆申明、周风顺、朱亚伟等的帮助,在此对他们的辛勤工作表示感谢。
翻译工作虽前后历时近一年,但因是在繁忙的教学、科研等工作之余完成的,仍感时间紧张,有些内容的翻译表达仍不够理想。此外,本书翻译虽力求忠实于原著,但由于水平所限,译文表达难免有不当之处,敬请读者批评指正。
总之,这是一本适合于高校学生和软件从业人员的很好的软件工程导论性读物。在多年的软件工程相关课程的教学过程中,我们也认为需要这样一本内容精练但覆盖相对全面的教材。我们很高兴向读者推荐本书。相信通过本书的阅读,会使读者对软件工程有一个初步的总体认识。

译 者
2018年6月

图书目录

出版者的话
译者序
前言
第1章 创建一个程序1
1.1 一个简单的问题1
1.1.1 决策1
1.1.2 功能需求2
1.1.3 非功能需求3
1.1.4 设计约束3
1.1.5 设计决策4
1.2 测试4
1.3 估算工作量5
1.4 实现6
1.4.1 关于实现的几个要点6
1.4.2 基本设计7
1.4.3 使用JUnit进行单元测试8
1.4.4 StringSorter的实现8
1.4.5 用户界面12
1.5 总结14
1.6 复习题14
1.7 练习题15
1.8 参考文献和建议阅读15
第2章 构建一个系统16
2.1 构建一个系统的特征16
2.1.1 规模和复杂度16
2.1.2 开发和支持的技术考虑17
2.1.3 开发和支持的非技术考虑19
2.2 系统构建示例20
2.2.1 薪资管理系统需求21
2.2.2 设计薪资管理系统22
2.2.3 薪资管理系统编码和单元测试23
2.2.4 薪资管理系统的集成和功能测试24
2.2.5 发布薪资管理系统24
2.2.6 支持和维护25
2.3 协调工作25
2.3.1 过程25
2.3.2 产品26
2.3.3 人员26
2.4 总结26
2.5 复习题27
2.6 练习题27
2.7 参考文献和建议阅读27
第3章 工程化软件28
3.1 软件失败的示例和特点28
3.1.1 项目失败28
3.1.2 软件产品失效29
3.1.3 协调和其他关注点30
3.2 软件工程30
3.2.1 什么是软件工程30
3.2.2 软件工程的定义31
3.2.3 软件工程与软件的相关性31
3.3 软件工程职业与道德规范32
3.3.1 软件工程道德准则32
3.3.2 职业行为33
3.4 软件工程的原则34
3.4.1 早期由Davis提出的软件工程原则34
3.4.2 更现代的Royce原则35
3.4.3 Wasserman提出的软件工程基础概念36
3.5 总结37
3.6 复习题37
3.7 练习题37
3.8 参考文献和建议阅读38
第4章 软件过程模型39
4.1 软件过程39
4.1.1 软件过程模型的目标39
4.1.2 “最简单”的过程模型40
4.2 传统过程模型40
4.2.1 瀑布模型40
4.2.2 主程序员制团队方法41
4.2.3 增量模型41
4.2.4 螺旋模型43
4.3 一个更加现代的过程44
4.3.1 Rational统一过程框架的一般基础44
4.3.2 RUP的阶段44
4.4 进入和退出标准46
4.4.1 进入标准47
4.4.2 退出标准47
4.5 过程评估模型48
4.5.1 SEI的能力成熟度模型48
4.5.2 SEI的能力成熟度集成模型50
4.6 过程定义和通信55
4.7 总结55
4.8 复习题56
4.9 练习题56
4.10 参考文献和建议阅读56
第5章 新兴过程方法58
5.1 什么是敏捷过程58
5.2 为什么使用敏捷过程59
5.3 一些过程方法59
5.3.1 极限编程60
5.3.2 水晶系列方法63
5.3.3 敏捷统一过程65
5.3.4 Scrum66
5.3.5 看板方法:一个新增的敏捷方法67
5.3.6 开源软件开发68
5.3.7 过程总结69
5.4 过程的选择70
5.4.1 每一种过程更适用的项目和环境70
5.4.2 敏捷过程的主要风险和缺点71
5.4.3 敏捷过程的主要优点71
5.5 总结71
5.6 复习题71
5.7 练习题72
5.8 参考文献和建议阅读72
第6章 需求工程73
6.1 需求处理73
6.1.1 需求处理的准备73
6.1.2 需求工程过程74
6.2 需求获取与收集75
6.2.1 获取高层次的需求76
6.2.2 获取详细的需求77
6.3 需求分析79
6.3.1 通过业务流进行需求分析和聚类79
6.3.2 通过面向对象用例进行需求分析和聚类80
6.3.3 通过面向视点的需求定义进行需求分析和聚类82
6.3.4 需求分析与排序82
6.3.5 需求可追踪性84
6.4 需求定义、原型化和审查84
6.5 需求规约与需求协商87
6.6 总结88
6.7 复习题88
6.8 练习题89
6.9 参考文献和建议阅读89
第7章 设计:架构与方法论91
7.1 设计简介91
7.2 架构设计92
7.2.1 什么是软件架构92
7.2.2 视图与视角92
7.2.3 元架构知识:风格、模式、策略和参考架构93
7.2.4 基于网络的Web参考架构—REST97
7.3 详细设计98
7.3.1 功能分解98
7.3.2 关系型数据库设计100
7.3.3 大数据设计103
7.3.4 面向对象设计和UML104
7.3.5 用户界面设计108
7.3.6 进一步的设计问题112
7.4 HTML-Script-SQL设计示例112
7.5 总结114
7.6 复习题115
7.7 练习题115
7.8 参考文献和建议阅读115
第8章 设计的特征与度量117
8.1 设计描述117
8.2 设计属性的传统特征117
8.2.1 Halstead复杂度度量118
8.2.2 McCabe圈复杂度118
8.2.3 Henry-Kafura信息流119
8.2.4 高层次复杂度度量120
8.3 “好”的设计属性120
8.3.1 内聚121
8.3.2 耦合123
8.4 面向对象设计度量125
8.4.1 面向方面的编程127
8.4.2 Demeter法则127
8.5 用户界面设计127
8.5.1 好的UI的特征127
8.5.2 易用性的评估与测试128
8.6 总结129
8.7 复习题129
8.8 练习题130
8.9 参考文献和建议阅读130
第9章 实现133
9.1 实现简介133
9.2 好的实现的特征133
9.2.1 编程风格和代码规范134
9.2.2 注释136
9.3 实现的实践137
9.3.1 调试137
9.3.2 断言和防御性编程138
9.3.3 性能优化138
9.3.4 重构139
9.3.5 代码重用140
9.4 云开发140
9.4.1 基础设施即服务141
9.4.2 平台即服务142
9.4.3 云应用服务142
9.4.4 面向开发者的云服务143
9.4.5 云的优缺点143
9.5 总结143
9.6 复习题144
9.7 练习题144
9.8 参考文献和建议阅读144
第10章 测试和质量保证146
10.1 测试和质量保证简介146
10.2 测试147
10.3 测试技术148
10.3.1 等价类划分151
10.3.2 边界值分析151
10.3.3 路径分析152
10.3.4 条件组合156
10.3.5 自动化单元测试和测试驱动开发156
10.3.6 测试驱动开发示例157
10.4 何时停止测试160
10.5 检查和审查161
10.6 形式化方法162
10.7 静态分析163
10.8 总结164
10.9 复习题164
10.10 练习题165
10.11 参考文献和建议阅读165
第11章 配置管理、集成和构建167
11.1 软件配置管理167
11.2 策略、过程和软件制品167
11.2.1 业务策略对配置管理的影响169
11.2.2 过程对配置管理的影响170
11.3 配置管理框架171
11.3.1 命名模型171
11.3.2 存储和访问模型172
11.4 构建与集成174
11.5 配置管理工具175
11.6 管理配置管理框架177
11.7 总结177
11.8 复习题178
11.9 练习题178
11.10 参考文献和建议阅读178
第12章 软件支持和维护180
12.1 客户支持180
12.1.1 用户问题到达速率180
12.1.2 客户接口和来电管理182
12.1.3 技术问题/修复183
12.1.4 交付及安装补丁184
12.2 产品维护升级和发布周期186
12.3 变更控制187
12.4 总结188
12.5 复习题188
12.6 练习题188
12.7 参考文献和建议阅读189
第13章 软件项目管理190
13.1 项目管理190
13.1.1 项目管理的必要性190
13.1.2 项目管理过程190
13.1.3 项目管理的规划阶段191
13.1.4 项目管理的组织阶段193
13.1.5 项目管理的监测阶段194
13.1.6 项目管理的调整阶段196
13.2 项目管理技术197
13.2.1 项目工作量估算197
13.2.2 工作分解结构203
13.2.3 使用挣值跟踪项目状态205
13.2.4 测度项目属性和GQM207
13.3 总结208
13.4 复习题209
13.5 练习题209
13.6 参考文献和建议阅读210
第14章 结语及当代软件工程的若干问题212
14.1 安全和软件工程213
14.2 逆向工程和软件混淆213
14.3 软件确认和验证的方法及工具214
14.4 参考文献和建议阅读215
附录A 软件开发计划概要217
附录B 软件需求规约概要218
附录C 软件设计概要222
附录D 测试计划概要224
术语225
索引227

教学资源推荐
作者: 郑人杰 马素霞 等编著
作者: (以色列)Doron A. Peled 著
参考读物推荐
作者: Glenford J.Myers,Tom Badgett,Todd M. Thomas,Corey Sandler
作者: (美)John McGarry,David Card,Cheryl Jones等
作者: [加] 克雷格·拉尔曼(Craig Larman)[荷]巴斯·沃代(Bas Vodde) 著
作者: (德)Colin Atkinson 等