《软件工程 实践者的研究方法 原书第8版 本科教学版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)罗杰·S.普莱斯曼(RogerS.Pressman),(美)布鲁斯R.马克西姆(BruceR.Maxim)著;郑人杰,马素霞等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2017
  • ISBN:7111555015
  • 页数:394 页
图书介绍:本书自第1版出版至今,30多年来在软件工程界产生了巨大而深远的影响。第8版继承了之前版本的风格与优势,系统地讲解软件过程、建模、质量管理、项目管理等基础知识,涵盖相关概念、原则、方法和工具,并且提供丰富的辅助阅读资源和网络资源,指导有兴趣的读者进行更深入的学习和研究。本书是面向本科生的版本,保留了完整版中的基础内容,压缩或删除了一些高级内容,更加适合作为高等院校计算机、软件工程及相关专业的软件工程课程教材。

第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

第一部分 软件过程 22

第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

第二部分 建模 72

第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

11.3.13 依赖倒置 144

11.3.14 测试设计 145

11.4 设计模型 145

11.4.1 数据设计元素 146

11.4.2 体系结构设计元素 146

11.4.3 接口设计元素 147

11.4.4 构件级设计元素 148

11.4.5 部署级设计元素 149

习题与思考题 149

扩展阅读与信息资源 150

第12章 体系结构设计 152

12.1 软件体系结构 153

12.1.1 什么是体系结构 153

12.1.2 体系结构为什么重要 154

12.1.3 体系结构描述 154

12.1.4 体系结构决策 155

12.2 体系结构类型 156

12.3 体系结构风格 156

12.3.1 体系结构风格的简单分类 157

12.3.2 体系结构模式 159

12.3.3 组织和求精 160

12.4 体系结构考虑要素 160

12.5 体系结构决策 162

12.6 体系结构设计 162

12.6.1 系统环境的表示 163

12.6.2 定义原型 163

12.6.3 将体系结构细化为构件 164

12.6.4 描述系统实例 165

12.6.5 WebApp的体系结构设计 166

13.6.6 移动App的体系结构设计 166

12.7 评估候选的体系结构设计 167

12.7.1 体系结构描述语言 168

12.7.2 体系结构评审 169

12.8 经验学习 169

12.9 基于模式的体系结构评审 170

12.10 体系结构一致性检查 171

12.11 敏捷性与体系结构 171

习题与思考题 172

扩展阅读与信息资源 173

第13章 构件级设计 175

13.1 什么是构件 176

13.1.1 面向对象的观点 176

13.1.2 传统的观点 177

13.1.3 过程相关的观点 179

13.2 设计基于类的构件 180

13.2.1 基本设计原则 180

13.2.2 构件级设计指导方针 182

13.2.3 内聚性 183

13.2.4 耦合性 184

13.3 实施构件级设计 185

13.4 WebApp的构件级设计 190

13.4.1 构件级内容设计 190

13.4.2 构件级功能设计 190

13.5 设计传统构件 190

13.6 基于构件的开发 191

13.6.1 领域工程 191

13.6.2 构件的合格性检验、适应性修改与组合 191

13.6.3 体系结构不匹配 193

13.6.4 复用的分析与设计 193

13.6.5 构件的分类与检索 194

习题与思考题 195

扩展阅读与信息资源 195

第14章 用户界面设计 197

14.1 黄金规则 198

14.1.1 把控制权交给用户 198

14.1.2 减轻用户的记忆负担 199

14.1.3 保持界面一致 200

14.2 用户界面的分析和设计 201

14.2.1 用户界面分析和设计模型 201

14.2.2 过程 202

14.3 界面分析 203

14.3.1 用户分析 203

14.3.2 任务分析和建模 204

14.3.3 显示内容分析 207

14.3.4 工作环境分析 207

14.4 界面设计步骤 208

14.4.1 应用界面设计步骤 208

14.4.2 用户界面设计模式 210

14.4.3 设计问题 210

14.5 设计评估 212

习题与思考题 213

扩展阅读与信息资源 214

第三部分 质量管理 216

第15章 质量概念 216

15.1 什么是质量 217

15.2 软件质量 218

15.2.1 Garvin的质量维度 218

15.2.2 McCall的质量因素 219

15.2.3 ISO 9126质量因素 220

15.2.4 定向质量因素 220

15.2.5 过渡到量化观点 221

15.3 软件质量困境 222

15.3.1 “足够好”的软件 222

15.3.2 质量的成本 223

15.3.3 风险 225

15.3.4 疏忽和责任 225

15.3.5 质量和安全 225

15.3.6 管理活动的影响 226

15.4 实现软件质量 226

15.4.1 软件工程方法 227

15.4.2 项目管理技术 227

15.4.3 质量控制 227

15.4.4 质量保证 227

习题与思考题 227

扩展阅读与信息资源 228

第16章 软件质量保证 229

16.1 背景问题 230

16.2 软件质量保证的要素 230

16.3 软件质量保证的过程和产品特性 232

16.4 软件质量保证的任务、目标和度量 232

16.4.1 软件质量保证的任务 232

16.4.2 目标、属性和度量 233

16.5 软件质量保证的形式化方法 234

16.6 统计软件质量保证 235

16.6.1 一个普通的例子 235

16.6.2 软件工程中的六西格玛 236

16.7 软件可靠性 237

16.7.1 可靠性和可用性的测量 237

16.7.2 软件安全 238

16.8 ISO 9000质量标准 239

16.9 软件质量保证计划 240

16.10 产品度量框架 240

16.10.1 测度、度量和指标 241

16.10.2 产品度量的挑战 241

16.10.3 测量原则 242

16.10.4 面向目标的软件测量 242

16.10.5 有效软件度量的属性 243

习题与思考题 244

扩展阅读与信息资源 244

第17章 软件测试策略 246

17.1 软件测试的策略性方法 247

17.1.1 验证与确认 247

17.1.2 软件测试组织 248

17.1.3 软件测试策略——宏观 249

17.1.4 测试完成的标准 250

17.2 策略问题 251

17.3 传统软件的测试策略 251

17.3.1 单元测试 251

17.3.2 集成测试 253

17.4 面向对象软件的测试策略 257

17.4.1 面向对象环境中的单元测试 257

17.4.2 面向对象环境中的集成测试 257

17.5 确认测试 258

17.5.1 确认测试准则 258

17.5.2 配置评审 258

17.5.3 α测试和β测试 258

17.6 系统测试 260

17.6.1 恢复测试 260

17.6.2 安全测试 260

17.6.3 压力测试 260

17.6.4 性能测试 261

17.6.5 部署测试 261

17.7 调试技巧 262

17.7.1 调试过程 262

17.7.2 心理因素 263

17.7.3 调试策略 264

17.7.4 纠正错误 265

习题与思考题 265

扩展阅读与信息资源 266

第18章 测试传统的应用软件 268

18.1 软件测试基础 269

18.2 测试的内部视角和外部视角 270

18.3 白盒测试 271

18.4 基本路径测试 271

18.4.1 流图表示 271

18.4.2 独立程序路径 273

18.4.3 生成测试用例 274

18.5 控制结构测试 276

18.6 黑盒测试 277

18.6.1 等价类划分 277

18.6.2 边界值分析 278

18.7 基于模型的测试 278

习题与思考题 279

扩展阅读与信息资源 279

第19章 测试面向对象的应用 281

19.1 扩展测试的视野 282

19.2 测试OOA和OOD模型 282

19.2.1 OOA和OOD模型的正确性 283

19.2.2 面向对象模型的一致性 283

19.3 面向对象测试策略 284

19.3.1 面向对象环境中的单元测试 284

19.3.2 面向对象环境中的集成测试 285

19.3.3 面向对象环境中的确认测试 285

19.4 面向对象测试方法 285

19.4.1 面向对象概念的测试用例设计含义 286

19.4.2 传统测试用例设计方法的可应用性 286

19.4.3 基于故障的测试 286

19.4.4 基于场景的测试设计 287

19.5 类级可应用的测试方法 287

19.5.1 面向对象类的随机测试 287

19.5.2 类级的划分测试 288

19.6 类间测试用例设计 289

19.6.1 多类测试 289

19.6.2 从行为模型导出的测试 290

习题与思考题 291

扩展阅读与信息资源 291

第20章 安全性工程 293

20.1 安全性需求分析 294

20.2 网络世界中的安全性与保密性 295

20.2.1 社交媒体 295

20.2.2 移动App 296

20.2.3 云计算 296

20.2.4 物联网 296

20.3 安全性工程分析 296

20.3.1 安全性需求获取 297

20.3.2 安全性建模 297

20.3.3 测度设计 298

20.3.4 正确性检查 298

20.4 安全性保证 299

20.4.1 安全性保证过程 299

20.4.2 组织和管理 300

20.5 安全性风险分析 300

20.6 传统软件工程活动的作用 302

20.7 可信性系统验证 303

习题与思考题 304

扩展阅读与信息资源 305

第21章 软件配置管理 306

21.1 软件配置管理概述 307

21.1.1 SCM场景 307

21.1.2 配置管理系统的元素 308

21.1.3 基线 309

21.1.4 软件配置项 310

21.1.5 依赖性和变更管理 310

21.2 SCM中心存储库 311

21.2.1 一般特征和内容 311

21.2.2 SCM特征 312

21.3 SCM过程 312

21.3.1 软件配置中的对象标识 313

21.3.2 版本控制 314

21.3.3 变更控制 315

21.3.4 影响管理 317

21.3.5 配置审核 318

21.3.6 状态报告 318

习题与思考题 319

扩展阅读与信息资源 319

第四部分 管理软件项目 322

第22章 项目管理概念 322

22.1 管理涉及的范围 323

22.1.1 人员 323

22.1.2 产品 323

22.1.3 过程 324

22.1.4 项目 324

22.2 人员 324

22.2.1 利益相关者 324

22.2.2 团队负责人 325

22.2.3 软件团队 325

22.2.4 敏捷团队 327

22.2.5 协调和沟通问题 328

22.3 产品 329

22.3.1 软件范围 329

22.3.2 问题分解 329

22.4 过程 330

22.4.1 合并产品和过程 330

22.4.2 过程分解 330

22.5 项目 331

22.6 W5HH原则 332

22.7 关键实践 333

习题与思考题 333

扩展阅读与信息资源 334

第23章 过程度量与项目度量 336

23.1 过程领域和项目领域中的度量 337

23.1.1 过程度量和软件过程改进 337

23.1.2 项目度量 339

23.2 软件测量 340

23.2.1 面向规模的度量 341

23.2.2 面向功能的度量 342

23.2.3 调和代码行度量和功能点度量 342

23.2.4 面向对象的度量 343

23.2.5 面向用例的度量 344

23.3 软件质量的度量 345

23.3.1 测量质量 345

23.3.2 缺陷排除效率 346

习题与思考题 347

扩展阅读与信息资源 348

第24章 软件项目估算 350

24.1 对估算的观察 351

24.2 项目计划过程 352

24.3 软件范围和可行性 352

24.4 资源 353

24.4.1 人力资源 354

24.4.2 可复用软件资源 354

24.4.3 环境资源 354

24.5 软件项目估算 354

24.6 分解技术 355

24.6.1 软件规模估算 355

24.6.2 基于问题的估算 356

24.6.3 基于LOC估算的实例 357

24.6.4 基于FP估算的实例 358

24.6.5 基于过程的估算 359

24.6.6 基于过程估算的实例 360

24.6.7 基于用例的估算 360

24.6.8 基于用例点估算的实例 361

24.6.9 调和不同的估算方法 362

24.7 经验估算模型 363

24.7.1 估算模型的结构 363

24.7.2 COCOMO Ⅱ模型 363

24.7.3 软件方程 363

24.8 面向对象项目的估算 364

习题与思考题 365

扩展阅读与信息资源 365

第25章 项目进度安排 366

25.1 基本概念 367

25.2 项目进度安排概述 368

25.2.1 基本原则 369

25.2.2 人员与工作量之间的关系 370

25.2.3 工作量分配 371

25.3 为软件项目定义任务集 372

25.3.1 任务集举例 372

25.3.2 主要任务的细化 373

25.4 定义任务网络 373

25.5 进度安排 374

25.5.1 时序图 375

25.5.2 跟踪进度 375

25.5.3 跟踪面向对象项目的进展 377

25.6 挣值分析 378

习题与思考题 379

扩展阅读与信息资源 380

第26章 风险管理 382

26.1 被动风险策略和主动风险策略 383

26.2 软件风险 383

26.3 风险识别 384

26.3.1 评估整体项目风险 385

26.3.2 风险因素和驱动因子 386

26.4 风险预测 387

26.4.1 建立风险表 387

26.4.2 评估风险影响 388

26.5 风险细化 390

26.6 风险缓解、监测和管理 390

26.7 RMMM计划 392

习题与思考题 393

扩展阅读与信息资源 394