《计算机科学丛书 软件工程 原书第10版》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(英)伊恩·萨默维尔(Ian Sommerville)著;彭鑫,赵文耘译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2018
  • ISBN:9787111589105
  • 页数:515 页
图书介绍:本书是系统介绍软件工程理论的经典教材,共包含四个部分:第一部分(第1~9章)是对软件工程的一般性介绍,介绍了软件工程的一些重要概念(如软件过程和敏捷方法),描述了基本的软件开发活动(从需求规格说明一直到系统演化);第二部分(第10~14章)关注软件系统可依赖性和信息安全等重要话题;第三部分(第15~21章)介绍更高级的软件工程话题;第四部分(第22~25章)介绍一系列的管理话题,关注技术管理问题。本书适合作为软件和系统工程专业本科生或研究生教材,同时也是软件工程师难得的参考书。

第一部分 软件工程导论 2

第1章 概述 2

1.1 专业化软件开发 3

1.1.1 软件工程 5

1.1.2 软件工程的多样性 6

1.1.3 互联网软件工程 8

1.2 软件工程职业道德 9

1.3 案例研究 11

1.3.1 胰岛素泵控制系统 12

1.3.2 心理健康治疗病人信息系统 13

1.3.3 野外气象站 14

1.3.4 学校数字化学习环境 15

要点 16

阅读推荐 17

网站 17

练习 17

参考文献 18

第2章 软件过程 19

2.1 软件过程模型 20

2.1.1 瀑布模型 21

2.1.2 增量式开发 23

2.1.3 集成与配置 25

2.2 过程活动 26

2.2.1 软件规格说明 26

2.2.2 软件设计和实现 27

2.2.3 软件确认 29

2.2.4 软件演化 30

2.3 应对变化 31

2.3.1 原型 32

2.3.2 增量式交付 33

2.4 过程改进 34

要点 36

阅读推荐 36

网站 37

练习 37

参考文献 37

第3章 敏捷软件开发 39

3.1 敏捷方法 40

3.2 敏捷开发技术 42

3.2.1 用户故事 43

3.2.2 重构 44

3.2.3 测试先行的开发 45

3.2.4 结对编程 46

3.3 敏捷项目管理 47

3.4 敏捷方法的伸缩 50

3.4.1 敏捷方法的实践问题 51

3.4.2 敏捷和计划驱动的方法 52

3.4.3 面向大型系统的敏捷方法 54

3.4.4 面向整个组织的敏捷方法 56

要点 57

阅读推荐 57

网站 58

练习 58

参考文献 58

第4章 需求工程 60

4.1 功能性需求和非功能性需求 62

4.1.1 功能性需求 63

4.1.2 非功能性需求 64

4.2 需求工程过程 66

4.3 需求抽取 67

4.3.1 需求抽取技术 69

4.3.2 故事和场景 71

4.4 需求规格说明 73

4.4.1 自然语言规格说明 74

4.4.2 结构化规格说明 75

4.4.3 用况 76

4.4.4 软件需求文档 77

4.5 需求确认 79

4.6 需求变更 80

4.6.1 需求管理计划 81

4.6.2 需求变更管理 82

要点 83

阅读推荐 83

网站 84

练习 84

参考文献 85

第5章 系统建模 86

5.1 上下文模型 87

5.2 交互模型 89

5.2.1 用况建模 90

5.2.2 顺序图 91

5.3 结构模型 93

5.3.1 类图 93

5.3.2 泛化 95

5.3.3 聚集 95

5.4 行为模型 96

5.4.1 数据驱动的建模 96

5.4.2 事件驱动的建模 97

5.4.3 模型驱动的工程 99

5.5 模型驱动的体系结构 100

要点 102

阅读推荐 103

网站 103

练习 103

参考文献 104

第6章 体系结构设计 105

6.1 体系结构设计决策 107

6.2 体系结构视图 109

6.3 体系结构模式 110

6.3.1 分层体系结构 111

6.3.2 知识库体系结构 112

6.3.3 客户-服务器体系结构 113

6.3.4 管道和过滤器体系结构 115

6.4 应用体系结构 116

6.4.1 事务处理系统 117

6.4.2 信息系统 118

6.4.3 语言处理系统 119

要点 121

阅读推荐 122

网站 122

练习 122

参考文献 123

第7章 设计和实现 125

7.1 使用UML的面向对象设计 126

7.1.1 系统上下文和交互 126

7.1.2 体系结构设计 128

7.1.3 对象类识别 129

7.1.4 设计模型 130

7.1.5 接口规格说明 133

7.2 设计模式 134

7.3 实现问题 136

7.3.1 复用 137

7.3.2 配置管理 138

7.3.3 宿主机-目标机开发 139

7.4 开源开发 141

7.4.1 开源许可证 142

要点 143

阅读推荐 143

网站 144

练习 144

参考文献 145

第8章 软件测试 146

8.1 开发测试 149

8.1.1 单元测试 150

8.1.2 选择单元测试用例 151

8.1.3 构件测试 153

8.1.4 系统测试 155

8.2 测试驱动的开发 157

8.3 发布测试 159

8.3.1 基于需求的测试 159

8.3.2 场景测试 160

8.3.3 性能测试 161

8.4 用户测试 161

要点 163

阅读推荐 164

网站 164

练习 164

参考文献 165

第9章 软件演化 166

9.1 演化过程 168

9.2 遗留系统 170

9.2.1 遗留系统管理 173

9.3 软件维护 176

9.3.1 维护预测 178

9.3.2 软件再工程 179

9.3.3 软件重构 181

要点 182

阅读推荐 182

网站 183

练习 183

参考文献 183

第二部分 系统可依赖性和信息安全 186

第10章 可依赖系统 186

10.1 可依赖性属性 187

10.2 社会技术系统 189

10.2.1 规章与守约 191

10.3 冗余和多样性 192

10.4 可依赖的过程 193

10.5 形式化方法与可依赖性 195

要点 197

阅读推荐 198

网站 198

练习 198

参考文献 199

第11章 可靠性工程 200

11.1 可用性和可靠性 202

11.2 可靠性需求 203

11.2.1 可靠性度量 204

11.2.2 非功能性可靠性需求 205

11.2.3 功能性可靠性规格说明 207

11.3 容错体系结构 207

11.3.1 保护性系统 208

11.3.2 自监控系统体系结构 208

11.3.3 N版本编程 210

11.3.4 软件多样性 211

11.4 可靠性编程 212

11.5 可靠性度量 216

11.5.1 运行概况 218

要点 218

阅读推荐 219

网站 219

练习 219

参考文献 220

第12章 安全工程 221

12.1 安全关键系统 222

12.2 安全需求 224

12.2.1 危险识别 225

12.2.2 危险评估 226

12.2.3 危险分析 227

12.2.4 风险降低 229

12.3 安全工程过程 229

12.3.1 安全保证过程 230

12.3.2 形式化验证 232

12.3.3 模型检测 233

12.3.4 静态程序分析 234

12.4 安全案例 235

12.4.1 结构化论证 237

12.4.2 软件的安全论证 238

要点 240

阅读推荐 241

网站 241

练习 241

参考文献 242

第13章 信息安全工程 244

131信息安全和可依赖性 245

13.2 信息安全和组织 248

13.2.1 信息安全风险评估 249

13.3 信息安全需求 249

13.3.1 滥用案例 252

13.4 信息安全系统设计 253

13.4.1 设计风险评估 254

13.4.2 体系结构设计 257

13.4.3 设计准则 259

13.4.4 信息安全系统编程 263

13.5 信息安全测试和保证 263

要点 265

阅读推荐 265

网站 265

练习 266

参考文献 266

第14章 韧性工程 268

14.1 网络安全 270

14.2 社会技术韧性 273

14.2.1 人为错误 275

14.2.2 运行和管理过程 277

14.3 韧性系统设计 279

要点 284

阅读推荐 284

网站 285

练习 285

参考文献 285

第三部分 高级软件工程 288

第15章 软件复用 288

15.1 复用概览 290

15.2 应用框架 292

15.3 软件产品线 294

15.4 应用系统复用 298

15.4.1 可配置的应用系统 299

15.4.2 集成的应用系统 301

要点 303

阅读推荐 303

网站 304

练习 304

参考文献 305

第16章 基于构件的软件工程 306

16.1 构件和构件模型 307

16.1.1 构件模型 310

16.2 CBSE过程 311

16.2.1 面向复用的CBSE 312

16.2.2 基于复用的CBSE 314

16.3 构件组装 316

要点 321

阅读推荐 321

网站 322

练习 322

参考文献 322

第17章 分布式软件工程 324

17.1 分布式系统 325

17.1.1 交互模型 327

17.1.2 中间件 329

17.2 客户-服务器计算 330

17.3 分布式系统的体系结构模式 331

17.3.1 主从体系结构 332

17.3.2 两层客户-服务器体系结构 332

17.3.3 多层客户-服务器体系结构 334

17.3.4 分布式构件体系结构 335

17.3.5 对等体系结构 338

17.4 软件即服务 340

要点 342

阅读推荐 343

网站 343

练习 343

参考文献 344

第18章 面向服务的软件工程 345

18.1 面向服务的体系结构 348

18.1.1 SOA中的服务构件 349

18.2 RESTful服务 351

18.3 服务工程 354

18.3.1 可选服务识别 354

18.3.2 服务接口设计 356

18.3.3 服务实现和部署 358

18.4 服务组合 359

18.4.1 工作流设计与实现 361

18.4.2 服务组合测试 363

要点 364

阅读推荐 364

网站 365

练习 365

参考文献 366

第19章 系统工程 367

19.1 社会技术系统 370

19.1.1 涌现特性 372

19.1.2 不确定性 373

19.1.3 成功准则 374

19.2 概念设计 375

19.3 系统采购 377

19.4 系统开发 380

19.5 系统运行和演化 383

19.5.1 系统演化 384

要点 385

阅读推荐 385

网站 385

练习 386

参考文献 386

第20章 系统之系统 388

20.1 系统复杂度 390

20.2 系统之系统的分类 393

20.3 还原论和复杂系统 395

20.4 系统之系统工程 397

20.4.1 接口开发 398

20.4.2 集成和部署 399

20.5 系统之系统的体系结构 400

20.5.1 系统之系统的体系结构模式 402

要点 404

阅读推荐 405

网站 405

练习 405

参考文献 406

第21章 实时软件工程 407

21.1 嵌入式系统设计 408

21.1.1 实时系统建模 411

21.1.2 实时编程 413

21.2 实时软件体系结构模式 413

21.2.1 观察和反应模式 414

21.2.2 环境控制模式 415

21.2.3 处理管道模式 417

21.3 时序分析 418

21.4 实时操作系统 421

21.4.1 进程管理 422

要点 423

阅读推荐 424

网站 424

练习 424

参考文献 425

第四部分 软件管理 428

第22章 项目管理 428

22.1 风险管理 430

22.1.1 风险识别 431

22.1.2 风险分析 432

22.1.3 风险计划 433

22.1.4 风险监控 434

22.2 人员管理 435

22.2.1 激励人员 435

22.3 团队协作 437

22.3.1 成员的挑选 439

22.3.2 小组的结构 440

22.3.3 小组的沟通 442

要点 443

阅读推荐 443

网站 443

练习 444

参考文献 444

第23章 项目计划 445

23.1 软件报价 446

23.2 计划驱动的开发 447

23.2.1 项目计划 448

23.2.2 计划过程 449

23.3 项目进度安排 450

23.3.1 进度安排表示方法 451

23.4 敏捷计划 453

23.5 估算技术 455

23.5.1 算法成本建模 456

23.6 COCOMO成本建模 458

23.6.1 应用组合模型 459

23.6.2 早期设计模型 460

23.6.3 复用模型 460

23.6.4 后体系结构模型 462

23.6.5 项目的工期和人员配备 464

要点 464

阅读推荐 465

网站 465

练习 465

参考文献 467

第24章 质量管理 468

24.1 软件质量 469

24.2 软件标准 471

24.2.1 ISO 9001标准框架 473

24.3 评审与审查 475

24.3.1 评审过程 475

24.3.2 程序审查 476

24.4 质量管理与敏捷开发 478

24.5 软件度量 479

24.5.1 产品量度 481

24.5.2 软件构件分析 483

24.5.3 度量歧义 484

24.5.4 软件解析 485

要点 486

阅读推荐 486

网站 487

练习 487

参考文献 487

第25章 配置管理 489

25.1 版本管理 492

25.2 系统构建 495

25.3 变更管理 499

25.4 发布版本管理 503

要点 505

阅读推荐 505

网站 506

练习 506

参考文献 506

术语表 507