软件工程(原书第8版)

软件工程(原书第8版)
作 者: 萨默维尔
出版社: 机械工业出版社
丛编项: 计算机科学丛书
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 软件方法/软件工程
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  本书提供作译者介绍Ian Sommerville英国著名软件工程专家,曾任教于兰卡斯特大学,现为圣安德鲁斯大学软件工程学教授。他在软件工程的教学和科研方面有20多年的经验。他是IEEE CS组织编撰“软件工程知识体系”(SWEBOK) 的专家委员会成员之一。他的研究领域包括计算机系统工程、需求工程、系统可靠性以及软件进化。...

内容简介

本书是著名软件工程学家Ian Sommerville系统介绍软件工程理论的经典教材,自1982年初版以来,随着软件工程学科的发展不断更新,培养了一代又一代软件工程人才,对学科本身也产生了重大影响。本版重在论述在开发大型复杂软件系统时可以采用的一些实用方法。全书重新组织为7篇,第1~6篇涵盖了整个软件开发过程各个阶段的内容,从初始的需求导出到设计和开发,再到软件项目管理。最后一篇论述了一些重要的软件工程的新技术。.本书既有理论高度又有具体操作,非常适合作为高等院校本科生或研究生的教材,对软件工程的管理者和参与者而言亦是必不可少的参考书。本书是系统介绍软件工程理论的经典教材,自1982年初版以来,随着软件工程学科的发展不断更新,培养了一代又一代软件工程人才,对学科本身也产生了重大影响。全书共分7篇,涵盖了整个软件开发过 程各个阶段的内容,从初始的需求导出到设计和开发,再到软件项目管理。本书适合作为本科生和研究 生的教材,同时也可供软件工程人员参考。..本书特点·包括了软件工程理论与实践的最新进展,并讨论了系统工程的相关主题。·详述了敏捷方法与复用的相关知识。·涵盖了系统安全性、保险性与可靠性,给出了在开发关键系统时的最佳实践。·通过一个信息系统和一个控制系统的案例分析,阐述了软件生命周期的步骤。与以前的版本相比,第8版更新了部分内容,并增加了有关最新主题的三章·信息安全工程,介绍了有关安全软件的描述和设计中需要考虑的诸多问题。·面向服务的软件工程,解释了如何将可复用的Web服务用于开发新的应用。·面向方面的软件开发,描述了基于关注点分离的新技术。该书英文原版设有专门的网站 (http://www.pearsoned.co.uk/sommerville),提供了对该书相关资料的链接,主要包括PowerPoint和PDF两种形式的讲稿、在线测验题、案例分析、进一步阅读的建议等。...

图书目录

出版者的话

专家指导委员会

前言

第1篇 概 览

第1章 概述 2

1.1 软件工程中的常见问题 3

1.1.1 什么是软件 3

1.1.2 什么是软件工程 4

1.1.3 软件工程和计算机科学的区别 4

1.1.4 软件工程和系统工程有何区别 4

1.1.5 什么是软件过程 4

1.1.6 什么是软件过程模型 5

1.1.7 什么是软件工程的成本 5

1.1.8 什么是软件工程方法 7

1.1.9 什么是CASE 7

1.1.10 什么是优良软件的属性 7

1.1.11 软件工程所面临的主要问题 8

1.2 职业和道德上的责任 8

要点 10

进一步的阅读资料 10

练习 11

第2章 社会-技术系统 12

2.1 系统总体特性 13

2.2 系统工程 15

2.2.1 系统需求定义 16

2.2.2 系统设计 16

2.2.3 系统建模 18

2.2.4 子系统开发 19

2.2.5 系统集成 20

2.2.6 系统进化 20

2.2.7 系统退役 20

2.3 机构. 人员和计算机系统 21

2.4 遗留系统 23

要点 24

进一步的阅读资料 25

练习 25

第3章 要求极高的系统 26

3.1 一个简单的安全性要求极高的系统 27

3.2 系统可依赖性 29

3.3 可用性和可靠性 30

3.4 安全性 33

3.5 信息安全性 35

要点 36

进一步的阅读资料 37

练习 37

第4章 软件过程 38

4.1 软件过程模型 39

4.1.1 “瀑布”模型 39

4.1.2 进化式开发 41

4.1.3 基于组件的软件工程 42

4.2 过程反复 43

4.2.1 增量式开发 43

4.2.2 螺旋式开发 44

4.3 过程活动 45

4.3.1 软件描述 45

4.3.2 软件设计和实现 46

4.3.3 软件有效性验证 48

4.3.4 软件进化 50

4.4 Rational统一过程 50

4.5 计算机辅助软件工程 52

要点 55

进一步的阅读资料 55

练习 55

第5章 项目管理 57

5.1 管理活动 58

5.2 项目规划 59

5.2.1 项目计划 60

5.2.2 项目里程碑和可交付的文档 60

5.3 项目调度 61

5.4 风险管理 65

5.4.1 风险识别 66

5.4.2 风险分析 67

5.4.3 风险规划 67

5.4.4 风险监控 68

要点 69

进一步的阅读资料 69

练习 69

第2篇 需 求

第6章 软件需求 72

6.1 功能需求和非功能需求 73

6.1.1 功能需求 73

6.1.2 非功能需求 74

6.1.3 领域需求 76

6.2 用户需求 77

6.3 系统需求 79

6.4 接口描述 82

6.5 软件需求文档 83

要点 85

进一步的阅读资料 85

练习 85

第7章 需求工程过程 87

7.1 可行性研究 88

7.2 需求导出和分析 89

7.2.1 需求发现 91

7.2.2 深入实际 96

7.3 需求有效性验证 97

7.4 需求管理 98

7.4.1 持久的和易变的需求 98

7.4.2 需求管理规划 99

7.4.3 需求变更管理 100

要点 101

进一步的阅读资料

练习 101

第8章 系统模型

8.1 上下文模型

8.2 行为模型

8.2.1 数据流模型

8.2.2 状态机模型 106

8.3 数据模型 109

8.4 对象模型 110

8.4.1 继承模型 111

8.4.2 对象聚合 113

8.4.3 对象行为建模 113

8.5 结构化方法 114

要点 115

进一步的阅读资料 116

练习

第9章 要求极高的系统的描述

9.1 风险驱动的描述

9.1.1 风险识别 118

9.1.2 风险分析和分类 119

9.1.3 风险分解 120

9.1.4 风险降低评估

9.2 安全性描述 122

9.3 信息安全性描述

9.4 软件可靠性描述

9.4.1 可靠性度量

9.4.2 非功能性的可靠性需求

要点 129

进一步的阅读资料

练习

第10章 形式化描述 132

10.1 软件过程中的形式化描述 133

10.2 子系统接口描述 135

10.3 行为描述 139

要点 144

进一步的阅读资料 144

练习 144

第3篇 设 计

第11章 体系结构设计 148

11.1 体系结构设计决策 150

11.2 系统组成 151

11.2.1 容器模型 151

11.2.2 客户机/服务器模型 152

11.2.3 分层模型 153

11.3 模块化分解类型 154

11.3.1 面向对象的分解 155

11.3.2 面向功能的流水线操作 155

11.4 控制类型 156

11.4.1 集中式控制 157

11.4.2 事件驱动的系统 158

11.5 参考体系结构 159

要点 161

进一步的阅读资料 161

练习 161

第12章 分布式系统体系结构 163

12.1 多处理器体系结构 164

12.2 客户机/服务器体系结构 165

12.3 分布式对象体系结构 168

12.4 机构间分布式计算 172

12.4.1 对等体系结构 173

12.4.2 面向服务的系统体系结构 174

要点 177

进一步的阅读资料 177

练习 177

第13章 应用体系结构 179

13.1 数据处理系统 180

13.2 事务处理系统 182

13.3 事件处理系统 186

13.4 语言处理系统 188

要点 189

进一步的阅读资料 190

练习 190

第14章 面向对象的设计 191

14.1 对象和对象类 192

14.2 面向对象设计过程 196

14.2.1 系统上下文和使用模型 197

14.2.2 体系结构的设计 198

14.2.3 对象识别 198

14.2.4 设计模型 200

14.2.5 对象接口描述 202

14.3 设计进化 203

要点 204

进一步的阅读资料 204

练习 205

第15章 实时软件的设计 206

15.1 系统设计 208

15.2 实时操作系统 210

15.3 监控系统 212

15.4 数据采集系统 216

要点 218

进一步的阅读资料 219

练习 219

第16章 用户界面设计 221

16.1 设计问题 223

16.1.1 用户交互 224

16.1.2 信息表示 225

16.2 用户界面设计过程 230

16.3 用户分析 230

16.4 用户界面原型构造 233

16.5 界面评估 234

要点 235

进一步的阅读资料 236

练习 236

第4篇 开 发

第17章 快速软件开发 240

17.1 敏捷方法 243

17.2 极限编程 ..244

17.2.1 极限编程中的测试 246

17.2.2 结对编程 248

17.3 快速应用开发 248

17.4 软件原型构造 251

要点 253

进一步的阅读资料 253

练习 254

第18章 软件复用 255

18.1 复用概览 257

18.2 设计模式 258

18.3 基于生成器的复用 260

18.4 应用框架 262

18.5 应用系统复用 263

18.5.1 商业现成产品的复用 263

18.5.2 软件产品线 265

要点 268

进一步的阅读资料 268

练习 268

第19章 基于组件的软件工程 270

19.1 组件和组件模型 271

19.1.1 组件模型 273

19.1.2 面向复用的组件开发 275

19.2 CBSE过程 276

19.3 组件合成 278

要点 282

进一步的阅读资料 283

练习 283

第20章 要求极高的系统的开发 284

20.1 可靠的过程 286

20.2 可靠的编程 287

20.2.1 保护的信息 287

20.2.2 安全的编程 288

20.2.3 异常处理 289

20.3 容错 292

20.3.1 缺陷检测和损害评估 292

20.3.2 缺陷恢复和修补 296

20.4 容错体系结构 297

要点 299

进一步的阅读资料 299

练习 300

第21章 软件进化 301

21.1 程序进化的动态特性 302

21.2 软件维护 303

21.3 进化过程 307

21.4 遗留系统的进化 310

要点 313

进一步的阅读材料 314

练习 314

第5篇 检验和有效性验证

第22章 检验和有效性验证 316

22.1 检验和有效性验证规划 318

22.2 软件审查 320

22.3 自动静态分析 323

22.4 检验和形式化方法 325

要点 328

进一步的阅读资料 328

练习 329

第23章 软件测试 330

23.1 系统测试 332

23.1.1 集成测试 332

23.1.2 发布测试 334

23.1.3 性能测试 336

23.2 组件测试 336

23.3 测试用例设计 339

23.3.1 基于需求的测试 339

23.3.2 划分测试 340

23.3.3 结构化测试 342

23.3.4 路径测试 343

23.4 测试自动化 345

要点 346

进一步的阅读资料 347

练习 347

第24章 要求极高的系统的验证 349

24.1 可靠性验证 350

24.1.1 操作简档 351

24.1.2 可靠性预测 352

24.2 安全性保证 354

24.2.1 安全性论证 355

24.2.2 过程保证 356

24.2.3 运行时安全检查 358

24.3 信息安全评估 359

24.4 安全和可靠性案例 360

要点 362

进一步的阅读资料 362

练习 362

第6篇 管 理

第25章 人员管理 366

25.1 职员挑选 367

25.2 职员激励 369

25.3 团队管理 371

25.3.1 小组的组成 371

25.3.2 小组的凝聚力 372

25.3.3 小组的沟通 374

25.3.4 小组的结构 374

25.3.5 工作环境 375

25.4 人员能力成熟度模型 377

要点 378

进一步的阅读资料 378

练习 378

第26章 软件成本估算 380

26.1 软件生产率 381

26.2 估算技术 384

26.3 算法成本建模 386

26.3.1 COCOMO模型 387

26.3.2 项目规划中的算法成本模型 393

26.4 项目的工期和人员配备 395

要点 396

进一步的阅读资料 396

练习 396

第27章 质量管理 398

27.1 过程和产品质量 399

27.2 质量保证和质量标准 400

27.2.1 ISO9000 401

27.2.2 文档化标准 403

27.3 质量规划 404

27.4 质量控制 404

27.5 软件测量和度量 406

27.5.1 测量过程 407

27.5.2 产品度量 408

27.5.3 测量的分析 409

要点 410

进一步的阅读资料 411

练习 411

第28章 过程改善 412

28.1 过程和产品质量 413

28.2 过程分类 414

28.3 过程度量 416

28.4 过程分析和建模 417

28.5 过程变更 420

28.6 CMMI过程改善框架 421

28.6.1 分阶段CMMI模型 423

28.6.2 连续CMMI模型 424

要点 424

进一步的阅读资料 425

练习 425

第29章 配置管理 426

29.1 配置管理规划 428

29.1.1 配置项识别 428

29.1.2 配置数据库 429

29.2 变更管理 429

29.3 版本和发布管理 432

29.3.1 版本标识 432

29.3.2 发布管理 434

29.4 系统构建 436

29.5 用于配置管理的CASE工具 436

29.5.1 变更管理支持 437

29.5.2 版本管理支持 437

29.5.3 系统构建支持 438

要点 439

进一步的阅读资料 440

练习 440

第7篇 新兴技术

第30章 信息安全工程 444

30.1 信息安全的概念 445

30.2 信息安全风险管理 447

30.2.1 初步风险评估 447

30.2.2 生存期风险评估 449

30.3 面向信息安全的设计 450

30.3.1 体系结构设计 451

30.3.2 设计准则 453

30.3.3 针对部署的设计 455

30.4 系统生存能力 456

要点 458

进一步的阅读资料 459

练习 459

第31章 面向服务的软件工程 460

31.1 服务作为可复用的组件 462

31.2 服务工程 465

31.2.1 可选服务识别 465

31.2.2 服务接口设计 467

31.2.3 服务实现和部署 468

31.2.4 遗留系统服务 469

31.3 使用服务的软件开发 470

31.3.1 工作流设计和实现 472

31.3.2 服务测试 474

要点 475

进一步的阅读资料 475

练习 476

第32章 面向方面的软件开发 477

32.1 关注点的分离 478

32.2 方面. 连接点和切入点 480

32.3 采用方面的软件工程 483

32.3.1 面向关注点的需求工程 484

32.3.2 面向方面的设计和编程 486

32.3.3 检验和有效性验证 488

要点 490

进一步的阅读资料 490

练习 491

术语表 492

索引 500

译后记 514