内容简介
本书自第1版出版至今,30多年来在软件工程界产生了巨大而深远的影响。第8版不仅加入了移动应用软件项目等与时俱进的内容,而且调整了篇章结构,更利于教师针对不同课程进行选择。同时,第8版全面继承了之前版本的风格与优势,全面且系统地讲解软件过程、建模、质量管理、项目管理等基础知识,涵盖相关概念、原则、方法和工具,并且提供丰富的辅助阅读资源和网络资源,指导有兴趣的读者进行更深入的学习和研究。本书适合作为软件工程相关专业高年级本科生和研究生教材,也可供软件专业技术人员和管理人员阅读参考。
作者简介
罗杰 S. 普莱斯曼(Roger S. Pressman),普莱斯曼是软件工程领域国际知名的顾问和作家。40多年来,他作为工程师、经理人、教授、作家、咨询师和企业家始终奋战在这一领域。
普莱斯曼博士现任一家咨询公司(R. S. Pressman & Associates, Inc.)的总裁,该公司致力于协助企业建立有效的软件工程实践。这些年来,他已经开发了一套用于改进软件工程实践的技术和工具。他还是一家创业公司(Teslaccessories,LLC)的创始人,这家制造公司专门为特斯拉Model S系列电动车生产定制产品。
普莱斯曼博士是9本书的作者,其中包括两本小说。他还写了许多技术和管理方面的文章。他曾任《IEEE Software》和《The Cutter IT Journal》等行业杂志的编委,以及《IEEE Software》杂志“Manager”专栏的编辑。
普莱斯曼博士还是演讲家,曾在许多重要的行业会议上做主题演讲,在国际软件工程会议和一些行业会议上做辅导讲座,并且一直是ACM(美国计算机协会)、IEEE(美国电气与电子工程师协会)以及Tau Beta Pi、Phi Kappa Phi、Eta Kappa Nu和Pi Tau Sigma等组织的成员。
布鲁斯 R. 马克西姆(Bruce R. Maxim)马克西姆博士30多年来曾任软件工程师、项目经理、教授、作家和咨询师。他的研究兴趣涉及软件工程、人机交互、游戏设计、社交媒体、人工智能以及计算机科学教育等领域。
马克西姆博士现任密歇根大学迪尔伯恩分校计算机与信息科学系副教授,他曾为该校工程与计算机科学学院建立游戏实验室。他曾经发表多篇有关计算机算法动画、游戏开发以及工程教育方面的论文。他还是畅销的计算机科学导论课本的作者之一。在密歇根大学工作期间,马克西姆博士曾监管了几百个产业界软件开发项目。
马克西姆博士的专业经验包括在医学院管理研究信息系统,为某医学校区指导计算教学,并承担统计程序员的工作。他还曾担任某游戏开发公司的首席技术官。
马克西姆博士是若干教学奖以及某社团组织服务奖的获得者。他还是Sigma Xi、Upsilon Pi Epsilon、Pi Mu Epsilon、ACM、IEEE、美国工程教育协会、女工程师协会以及国际游戏开发者联盟等社会组织的成员。
目录
Software Engineering: A Practitioner’s Approach, Eighth Edition
出版者的话
译者序
前言
作者简介
第1章 软件的本质 1
1.1 软件的本质 3
1.1.1 定义软件 3
1.1.2 软件应用领域 4
1.1.3 遗留软件 5
1.2 软件的变更本质 6
1.2.1 WebApp 6
1.2.2 移动 App 7
1.2.3 云计算 7
1.2.4 产品线软件 8
1.3 小结 8
习题与思考题 8
扩展阅读与信息资源 9
第2章 软件工程 10
2.1 定义软件工程学科 11
2.2 软件过程 11
2.2.1 过程框架 12
2.2.2 普适性活动 12
2.2.3 过程的适应性调整 13
2.3 软件工程实践 13
2.3.1 实践的精髓 14
2.3.2 通用原则 14
2.4 软件开发神话 16
2.5 这一切是如何开始的 18
2.6 小结 19
习题与思考题 19
扩展阅读与信息资源 19
第一部分 软件过程
第3章 软件过程结构 22
3.1 通用过程模型 23
3.2 定义框架活动 24
3.3 明确任务集 24
3.4 过程模式 25
3.5 过程评估与改进 27
3.6 小结 28
习题与思考题 28
扩展阅读与信息资源 28
第4章 过程模型 29
4.1 惯用过程模型 30
4.1.1 瀑布模型 30
4.1.2 增量过程模型 32
4.1.3 演化过程模型 32
4.1.4 并发模型 36
4.1.5 演化过程的最终评述 37
4.2 专用过程模型 38
4.2.1 基于构件的开发 38
4.2.2 形式化方法模型 39
4.2.3 面向方面的软件开发 39
4.3 统一过程 40
4.3.1 统一过程的简史 41
4.3.2 统一过程的阶段 41
4.4 个人过程模型和团队过程模型 42
4.4.1 个人软件过程 42
4.4.2 团队软件过程 43
4.5 过程技术 44
4.6 产品和过程 45
4.7 小结 46
习题与思考题 46
扩展阅读与信息资源 47
第5章 敏捷开发 48
5.1 什么是敏捷 49
5.2 敏捷及变更成本 50
5.3 什么是敏捷过程 50
5.3.1 敏捷原则 51
5.3.2 敏捷开发战略 52
5.4 极限编程 52
5.4.1 极限编程过程 52
5.4.2 工业极限编程 54
5.5 其他敏捷过程模型 56
5.5.1 Scrum 56
5.5.2 动态系统开发方法 57
5.5.3 敏捷建模 58
5.5.4 敏捷统一过程 59
5.6 敏捷过程工具集 60
5.7 小结 61
习题与思考题 61
扩展阅读与信息资源 62
第6章 软件工程的人员方面 64
6.1 软件工程师的特质 64
6.2 软件工程心理学 65
6.3 软件团队 66
6.4 团队结构 67
6.5 敏捷团队 68
6.5.1 通用敏捷团队 68
6.5.2 XP团队 69
6.6 社交媒体的影响 70
6.7 软件工程中云的应用 71
6.8 协作工具 71
6.9 全球化团队 72
6.10 小结 73
习题与思考题 73
扩展阅读与信息资源 74
第二部分 建模
第7章 指导实践的原则 76
7.1 软件工程知识 77
7.2 核心原则 77
7.2.1 指导过程的原则 78
7.2.2 指导实践的原则 78
7.3 指导每个框架活动的原则 80
7.3.1 沟通原则 80
7.3.2 策划原则 81
7.3.3 建模原则 83
7.3.4 构建原则 87
7.3.5 部署原则 89
7.4 工作实践 90
7.5 小结 91
习题与思考题 92
扩展阅读与信息资源 92
第8章 理解需求 94
8.1 需求工程 95
8.2 建立根基 100
8.2.1 确认利益相关者 100
8.2.2 识别多重观点 100
8.2.3 协同合作 101
8.2.4 首次提问 101
8.2.5 非功能需求 102
8.2.6 可追溯性 102
8.3 获取需求 103
8.3.1 协作收集需求 103
8.3.2 质量功能部署 105
8.3.3 使用场景 106
8.3.4 获取工作产品 106
8.3.5 敏捷需求获取 107
8.3.6 面向服务的方法 107
8.4 开发用例 107
8.5 构建分析模型 111
8.5.1 分析模型的元素 112
8.5.2 分析模式 114
8.5.3 敏捷需求工程 114
8.5.4 自适应系统的需求 114
8.6 协商需求 115
8.7 需求监控 116
8.8 确认需求 117
8.9 避免常见错误 117
8.10 小结 118
习题与思考题 118
扩展阅读与信息资源 119
第9章 需求建模:基于场景的
方法 121
9.1 需求分析 122
9.1.1 总体目标和原理 122
9.1.2 分析的经验原则 123
9.1.3 域分析 123
9.1.4 需求建模的方法 125
9.2 基于场景建模 126
9.2.1 创建初始用例 126
9.2.2 细化初始用例 128
9.2.3 编写正式用例 129
9.3 补充用例的UML模型 131
9.3.1 开发活动图 131
9.3.2 泳道图 132
9.4 小结 133
习题与思考题 133
扩展阅读与信息资源 133
第10章 需求建模:基于类的方法 135
10.1 识别分析类 135
10.2 描述属性 138
10.3 定义操作 138
10.4 类–职责–协作者建模 140
10.5 关联和依赖 145
10.6 分析包 14
前言/序言
Software Engineering: A Practitioner’s Approach, Eighth Edition如果有这样一款计算机软件,它能满足用户的需求,能在相当长的时间内无故障地运行,修改起来轻松便捷,使用起来更是得心应手,那么,这款软件必定是成功的,它切实改善了我们的生活。但是,如果有这样一款软件,它令用户失望,错误频出,修改起来困难重重,使用起来更是举步维艰,那么,这必定是一款失败的软件,它使我们的生活一团糟。谁都希望开发出优秀的软件,为我们的生活带来便利,而不是把自己陷入失败的深渊。要想使软件获得成功,在设计和构建软件时就需要有规范,需要采用工程化的方法。
自本书第1版问世以来的近35年中,软件工程已经从少数倡导者提出的一些朦胧概念发展成为一门正规的工程学科,已被公认为是一个值得深入研究、认真学习和热烈讨论的课题。在整个行业中,软件工程师已经代替程序员成为人们优先选择的工作岗位,软件过程模型、软件工程方法和软件工具都已在全行业的所有环节成功采用。
尽管管理人员和一线专业人员都承认需要有更为规范的软件方法,但他们却始终在争论应该采用什么样的规范。有许多个人和公司至今仍在杂乱无章地开发着自己的软件,甚至即使他们正在开发的系统要服务于当今最为先进的技术,状况也仍是如此。许多专业人员和学生并不了解现代方法,这导致他们所开发的软件质量很差,因而造成了严重的后果。此外,有关软件工程方法真实本质的争论一直持续进行着。软件工程的地位问题已成为一门对比研究课题。人们对软件工程的态度已经有所改善,研究工作已取得了进展,不过要成为一门完全成熟的学科,我们还有大量的工作要做。
我们希望本书能够成为引导读者进入正在走向成熟的软件工程学科的入门读物,和以前的7个版本一样,第8版对学生和专业人员同样具有很强的吸引力。它既是软件专业人员的工作指南,也是高年级本科生和一年级研究生的综合性参考书。
第8版中包含了许多新的内容,它绝不只是前一版的简单更新。这一版不仅对内容做了适当的修改,而且调整了全书的结构,以改进教学顺序;同时更加强调一些新的和重要的软件工程过程和软件工程实践知识。此外,本书进一步加强了“支持系统”,为学生、教师和专业人员提供了更为丰富的知识资源。读者可访问专门为本书建立的网站(www.mhhe.com/pressman)查阅这些信息。
篇章结构本书共39章,分为五个部分。这种划分有利于那些无法在一个学期内讲完全书内容的教师灵活安排教学。
第一部分“软件过程”给出了有关软件过程的各种不同观点,讨论了所有重要的过程模型,还涉及惯用过程和敏捷过程在指导思想上的分歧。第二部分“建模”给出了分析方法和设计方法,重点讲解面向对象方法和UML建模,同时也介绍了基于模式的设计以及基于WebApp和移动App的设计。第三部分“质量管理”介绍了有关质量管理的概念、规程、技术和方法,使得软件团队能够很好地评估软件质量,评审软件工程工作产品,实施软件质量保证规程,并正确地运用有效的测试策略和战术。此外,这一部分还讨论了形式化建模和验证方法。第四部分“管理软件项目”介绍了与计划、管理和控制软件开发项目的人员有关的问题。第五部分“软件工程高级课题”讨论了软件过程改进和软件工程的发展趋势。
第8版沿用了前面几个版本的做法,在各章中都提供了大量的辅助阅读信息,包括一个虚拟软件团队在工作中遇到困难时展开的对话,还包括对各章相关知识给出的补充方法和工具。
第8版中五个部分的划分有利于教师根据学时和教学要求安排课堂内容。在一个学期内可以安排一个部分的内容,也可以安排多个部分的内容。软件工程概论课程可以从五个部分中选择若干章作为教材。侧重分析和设计的软件工程课程可以从第一部分和第二部分中选取素材。面向测试的软件工程课程则可以从第一部分和第三部分中选取素材,还应加上第二部分中的一些内容。侧重管理的课程应突出第一部分和第四部分的内容。我们用上述方式组织第8版的内容,意在给教师提供多种教学安排的选择。但无论如何选择这些内容,都可以从“支持系统”中获得补充资源。
相关资源学生资源本书为学生提供的各种学习资料包括:在线学习中心提供的各章学习指南,实践测验,题解以及多种在线资源(软件工程检查单、一套正在演化的微型工具、综合案例研究和工作产品模板等)。此外,1000多种网络参考文献可供学生更深入地探究软件工程问题,还有500多篇可下载的参考文献,这些都为读者提供了关于高级软件工程课题的更为详尽的信息。
教师资源本书为教师提供的各种教学资料包括:在线(也可下载)教师指南,由700多个PPT组成的教辅资源和试题库。当然,学生资源(如微型工具、网络参考文献及可下载参考文献)和专业人员资源也可供教师使用。
在本书的教师指南中,我们为各种类型的软件工程课程提出了建议,介绍了与课程配合开展的软件项目、部分问题的题解和许多有用的教学辅助工具。
专业人员资源本书为产业界专业人员(也包括在校学生)提供的各种资料包括:软件工程文档和其他工作产品的
软件工程:实践者的研究方法(原书第8版) epub pdf mobi txt 电子书 下载 2024
软件工程:实践者的研究方法(原书第8版) 下载 epub mobi pdf txt 电子书 2024