软件工程:实践者的研究方法(原书第8版 本科教学版) pdf

软件工程:实践者的研究方法(原书第8版 本科教学版)

内容简介

《软件工程:实践者的研究方法(原书第8版 本科教学版)》自第1版出版至今,30多年来在软件工程界产生了巨大而深远的影响。第8版继承了之前版本的风格与优势,系统地讲解软件过程、建模、质量管理、项目管理等基础知识,涵盖相关概念、原则、方法和工具,并且提供丰富的辅助阅读资源和网络资源,指导有兴趣的读者进行更深入的学习和研究。本书是面向本科生的版本,保留了完整版中的基础内容,压缩或删除了一些高级内容,更加适合作为高等院校计算机、软件工程及相关专业的软件工程课程教材。

作者简介

Roger S. Pressman 软件过程改善和软件工程技术方面的国际知名人士,目前还担任R. S. Pressman and Associates 公司总裁。30多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终工作在软件工程领域。Pressman博士著有6部著作,并撰写了很多技术文章,是多种行业期刊的固定撰稿人,曾任多个行业杂志的编委,多年来一直担任 《IEEE Software》杂志的Manager专栏的编辑。Pressman博士是知名的演讲者,曾在许多行业会议上演讲,他还是美国计算机协会 (ACM)、美国电气与电子工程师协会(IEEE)等组织的成员。

目录

出版者的话
改编者序
译者序
前言
第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
习题与思考题 8
扩展阅读与信息资源 8
第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
习题与思考题 19
扩展阅读与信息资源 19
第一部分 软件过程
第3章 软件过程结构 22
3.1 通用过程模型 23
3.2 定义框架活动 24
3.3 明确任务集 24
3.4 过程模式 25
习题与思考题 27
扩展阅读与信息资源 27
第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
习题与思考题 43
扩展阅读与信息资源 43
第5章 敏捷开发 45
5.1 什么是敏捷 46
5.2 敏捷及变更成本 47
5.3 什么是敏捷过程 47
5.3.1 敏捷原则 48
5.3.2 敏捷开发战略 49
5.4 极限编程 49
5.4.1 极限编程过程 49
5.4.2 工业极限编程 51
5.5 其他敏捷过程模型 53
5.5.1 Scrum 53
5.5.2 动态系统开发方法 54
5.5.3 敏捷建模 55
5.5.4 敏捷统一过程 56
5.6 敏捷过程工具集 57
习题与思考题 58
扩展阅读与信息资源 58
第6章 软件工程的人员方面 60
6.1 软件工程师的特质 60
6.2 软件工程心理学 61
6.3 软件团队 62
6.4 团队结构 63
6.5 敏捷团队 64
6.5.1 通用敏捷团队 64
6.5.2 XP团队 65
6.6 社交媒体的影响 66
6.7 软件工程中云的应用 67
6.8 协作工具 67
6.9 全球化团队 68
习题与思考题 69
扩展阅读与信息资源 69
第二部分 建模
第7章 理解需求 72
7.1 需求工程 73
7.2 建立根基 78
7.2.1 确认利益相关者 78
7.2.2 识别多重观点 78
7.2.3 协同合作 79
7.2.4 首次提问 79
7.3 获取需求 80
7.3.1 协作收集需求 80
7.3.2 质量功能部署 82
7.3.3 使用场景 83
7.3.4 获取工作产品 84
7.3.5 敏捷需求获取 84
7.3.6 面向服务的方法 84
7.4 开发用例 85
7.5 构建分析模型 88
7.5.1 分析模型的元素 89
7.5.2 分析模式 91
7.5.3 敏捷需求工程 91
7.5.4 自适应系统的需求 91
7.6 避免常见错误 92
习题与思考题 92
扩展阅读与信息资源 93
第8章 需求建模:基于场景的方法 95
8.1 需求分析 96
8.1.1 总体目标和原理 96
8.1.2 分析的经验原则 97
8.1.3 域分析 97
8.1.4 需求建模的方法 99
8.2 基于场景建模 100
8.2.1 创建初始用例 100
8.2.2 细化初始用例 102
8.2.3 编写正式用例 103
8.3 补充用例的UML模型 105
8.3.1 开发活动图 105
8.3.2 泳道图 106
习题与思考题 107
扩展阅读与信息资源 107
第9章 需求建模:基于类的方法 108
9.1 识别分析类 108
9.2 描述属性 111
9.3 定义操作 111
9.4 类–职责–协作者建模 113
9.5 关联和依赖 118
9.6 分析包 118
习题与思考题 119
扩展阅读与信息资源 119
第10章 需求建模:行为和模式 121
10.1 生成行为模型 121
10.2 识别用例事件 122
10.3 状态表达 122
10.4 需求建模的模式 125
10.4.1 发现分析模式 125
10.4.2 需求模式举例:执行器–传感器 126
习题与思考题 129
扩展阅读与信息资源 129
第11章 设计概念 131
11.1 软件工程中的设计 132
11.2 设计过程 134
11.2.1 软件质量指导原则和属性 134
11.2.2 软件设计的演化 136
11.3 设计概念 137
11.3.1 抽象 137
11.3.2 体系结构 137
11.3.3 模式 138
11.3.4 关注点分离 138
11.3.5 模块化 138
11.3.6 信息隐蔽 139
11.3.7 功能独立 139
11.3.8 求精 140
11.3.9 方面 140
11.3.10 重构 141
11.3.11 面向对象的设计概念 141
11.3.12 设计类 142

感悟与笔记

软件是:(1)指令的集合(计算机程序),通过执行这些指令可以满足预期的特性、功能和性能需求;(2)数据结构,使得程序可以合理利用信息;(3)软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序的操作和使用。IEEE对软件工程下的定义是:(1)将系统化的、规范化的、可量化的方法应用于软件的开发、运行和维护,即将软件工程化方法应用于软件;(2)对(1)中所述方法的研究。作者认为我们需要规范,也需要可适应性和灵活性。

第一部分是软件过程,软件工程的通用过程框架定义了五种框架活动:沟通、策划、建模、构建以及部署,此外,还有一系列普适活动:项目跟踪控制、分线管理、质量保证、配置管理、技术评审以及其他活动。过程模式有惯用过程模式、专用过程模式和统一过程。惯用过程模型有:瀑布模型(变体V模型)、增量过程模型、演化过程模型(原型开发、螺旋模型)、并发模型;专用过程模型有:基于构建的开发、形式化方法模型、面向方面的软件开发。敏捷开发推崇:让客户满意且尽早的增量发布;小而高度自主的项目团队;非正式的方法;最小化软将工程工作产品以及整体精简开发。极限编程是敏捷开发中使用最广泛的一种方法。XP关键活动有策划、设计、编码和测试。

第二部分是建模部分,主要内容有指导实践的原则、理解需求、需求建模和设计。软件工程是以一系列核心原则作为指导的,这些原则有指导过程的原则和指导实践的原则。构建一个软件系统最困难的部分是确定构建什么,它会严重的影响随后所开发的系统,于是出现了需求工程。需求工程的任务是为设计和构建活动建立一个可靠且坚固的基础。软件团队成员需要完成7个不同的需求工程任务:起始、获取、细化、协商、规格说明、确认和管理。需求建模有基于场景的方法、基于类的方法以及行为、模式和Web/移动App。软件设计是一个迭代的过程,通过这个过程,需求被变换为用于构建软件的“蓝图”。本书设计内容有:体系结构设计、构件级设计、用户界面设计、基于模式的设计、web App设计和移动App设计。

第三部分是质量管理。什么是质量?质量是一个复杂多面的概念,设计质量和符合质量两方面都需要软件工程师考虑。质量很重要,但是用户不满意,其他的事就都不重要了。这是Robert Glass给出的一个“直观的公式”:用户满意度=合格的产品+好的质量+按预算和进度安排交付。对于质量管理,相关的技术和方法有:评审技术、软件质量保证、软件测试策略和安全性工程。

第四部分是管理软件项目。管理设计的范围包括人员、产品、过程和项目。在这里就需要考虑过程的度量和项目的度量以及软件项目的估算。软件项目管理还涉及项目进度安排、风险管理和维护与再工程。关于人员管理,人月神话中Brooks用一章来讲团队组成的重要性,使用“外科手术团队”来打比方。在本书中,作者也用了不少篇幅来讲团队的重要性。作者用了两章依次来讲过程度量与项目度量和软件项目估算。软件测量的方法有面向规模的度量、面向功能的度量、调和代码行度量和功能点度量、面向对象的度量、面向用例的度量和WebApp项目的度量。软件项目估算使用经验估算模型来预测工作量,本书中展示了典型的估算模型、COCOMO II模型和软件方程。软件方程是一个动态的多变量模型,它假定在软件开发项目的整个生命周期中有特定的工作量分布。

第五部分是软件工程高级课程。这里,作者介绍了软件过程改进(SPI)和软件工程的一些新趋势。SPI方法是迭代和连续的,它包括5个步骤:1、当前软件过程的评估;2、对业务人员和管理者的教育和培训;3、过程要素、软件工程方法以及工具的选区和合理性判定;4、SPI计划的实现;5、基于计划结果的评价和调整。SPI框架评价一个组织软件过程的“成熟度”,并提供成熟度等级定性的表示。CMMI(Capability Maturity Model Integration成熟度模型集成)以两种不同的方式表示过程元模型:一个连续式模型,一个分级式模型。连续式CMMI元模型定义了6个能力等级,分别是:不完全级、已执行级、已管理级、已定义级、定量管理级和优化级。分级式的CMMI元模型定义了5个成熟度等级,分别是:初始级、已管理级、已定义级、定量管理级和优化级。

Copyright © 2021-2022 知识猫. All Rights Reserved.