现代软件工程:面向软件产品(英文版)
作者 : [英]伊恩·萨默维尔(Ian Sommerville) 著
丛书名 : 经典原版书库
出版日期 : 2021-01-05
ISBN : 978-7-111-67156-5
定价 : 99.00元
教辅资源下载
扩展信息
语种 : 英文
页数 : 340
开本 : 16
原书名 : Engineering Software Products: An Introduction to Modern Software Engineering
原出版社: Pearson Education Inc.
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

本书共十章,涵盖了软件产品、敏捷软件工程、特征、场景和用户叙述、软件架构、基于云的软件、微服务架构、安全和隐私,可信赖编程、测试、DevOps和代码管理等内容。

图书特色

现代软件工程:面向软件产品(英文版)
Engineering Software Products: An Introduction to Modern Software Engineering

[英]伊恩·萨默维尔(Ian Sommerville) 著

图书前言

软件产品(例如单机程序、Web应用和服务、移动App等)改变了我们的日常生活和工作。全世界有几万家软件产品公司和几十万名软件工程师在从事软件产品开发工作。
与一些人的想法不同,我认为软件产品工程化需要的技能远比编程技能多得多,因此撰写了本书,旨在介绍一些重要的软件工程活动,这些活动对开发高可信、高安全性的软件产品至关重要。
本书是写给哪些读者的?
本书面向刚刚开始学习软件工程课程的学生。对于那些准备进行软件产品开发又没有多少软件工程经验的技术人员来说,本书也非常适用。
为什么需要一本关注软件产品的软件工程书籍?
大多数软件工程教材关注基于项目的软件工程,核心思想是客户给出需求规约,公司开发软件。然而,用于大规模项目开发的软件工程技术和方法并不适合软件产品的开发。
学生通常很难理解大型定制软件系统,我的看法是,当学生关注他们经常使用的软件类型时,就会发现理解软件工程技术其实并不难。同样,当学生在做项目时,若更多地关注产品工程化技术而不是面向项目的技术,就会更容易理解软件工程技术。
本书是作者其他软件工程教材的新版本吗?
不是,本书考虑的是完全不同的方法,除了几幅图之外,没有重用任何来自《软件工程》(第10版)的资料。
本书包含哪些内容?
本书共10章,讨论的主题分别是:软件产品,敏捷软件工程,特征、场景和用户故事,软件架构,基于云的软件,微服务架构,安全和隐私,可信赖编程,测试,DevOps和代码管理。
本书适合一个学期的软件工程课程。
本书与其他软件工程导论教材有什么不同?
正如前面所说,本书关注产品而不是项目,介绍的技术是其他软件工程教材所没有涉及的,如人物角色和场景、云计算、微服务、安全和DevOps等。由于产品创新不是来自高校的学术研究工作,所以书中没有应用或提及这个方面,并且全书的写作风格也是“非学术”的。
如何从书中学到有用的知识?
阅读本书前最好具有现代面向对象语言的编程经验,例如,能熟练地使用Java或者Python语言编程,知道如何使用有意义的命名。同时,也应当熟悉基本的计算概念,如对象、类和数据库等。书中的实例程序尽管是用Python语言编写的,但任何具有编程经验的人都能轻松理解。
本书为教师提供哪些教辅资源?
1. 教师手册中包含每章的习题和测验问题的参考答案。
2. 一些有关如何在一个学期的软件工程课程中使用本书的建议。
3. 教学讲义(Keynote、PowerPoint和PDF三种形式)。
你可以通过访问网站https://www.pearsonhighered.com/sommerville获得这些材料。本书的其他辅助材料可以通过网站https://iansommerville.com/engineering-software-products/获得。
致谢
感谢所有的评审人,他们在评审本书的初始写作计划时给出了有建设性的建议,他们是:
Paul Eggert—加州大学洛杉矶分校
Jeffrey Miller—南加州大学
Harvey Siy—内布拉斯加大学奥马哈分校
Edmund S. Yu—雪城大学
Gregory Gay—南加州大学
Josh Delinger—陶森大学
Rocky Slavin—得克萨斯大学圣安东尼奥分校
Bingyang Wei—中西部州立大学
感谢圣安德鲁斯大学的Adam Barker,他帮我与本书的制作人Rose Kernan建立了很好的联系。
和以前一样,我要感谢我的家人,他们在撰写本书的过程中给了我无私的帮助和支持。特别感谢我的女儿Jane,她阅读了大量的书稿并给出了评论。她是个严格的编辑!她提出的修改意见大大提高了本书的质量。
最后,特别感谢我们家的新成员—我可爱的小孙子Cillian。他在我撰写本书期间出生,他活泼的个性和开心的微笑驱散了写书和编辑工作中的枯燥。

Ian Sommerville

上架指导

计算机\软件工程

封底文字

本书由国际知名的软件工程专家Ian Sommerville撰写,系统地介绍了软件产品工程化的基本思想、原理和方法。与同类书籍不同的是,本书重点关注与软件产品相关的工程化过程和技术,而不是传统的以过程为基础的项目驱动型软件工程技术。

本书的核心内容包括软件产品、软件架构、敏捷软件工程、人物角色、场景、用户故事、基于云的软件、微服务架构、安全和隐私以及DevOps等。建议读者具有一定的Java或Python等面向对象语言的编程经验,在学习过程中注重从产品工程化的视角来理解软件工程技术,从而为开发高质量、高安全性、高可靠性的软件产品打好基础。

本书特色
·从软件产品工程化的视角全面讨论软件产品开发所需的方法和技术。
·涵盖同类书籍较少涉及的主题,如人物角色和场景、云计算、微服务、安全和DevOps等。
·内容组织灵活,每章都包含大量的示例、图表、要点分析、推荐阅读和习题等。

作者简介

[英]伊恩·萨默维尔(Ian Sommerville) 著:
【加照片】伊恩·萨默维尔(Ian Sommerville) 英国著名软件工程专家,曾任圣安德鲁斯大学软件工程系教授,2014年退休。他在软件工程的教学和科研方面有40多年的经验,研究领域包括需求工程、大规模复杂系统和系统可靠性等。他撰写的软件工程教材畅销全球,销量超过75万册。

图书目录

第1章 软件产品 1
1.1 产品愿景 7
1.2 软件产品管理 11
1.3 产品原型设计 16
要点 17
推荐阅读 18
习题 19
第2章 敏捷软件工程 20
2.1 敏捷方法 20
2.2 极限编程 24
2.3 Scrum 27
要点 47
推荐阅读 48
习题 48
第3章 特征、场景和用户故事 50
3.1 人物角色 54
3.2 场景 59
3.3 用户故事 66
3.4 特征识别 70
要点 79
推荐阅读 80
习题 80
第4章 软件架构 82
4.1 为什么架构很重要 84
4.2 架构设计 88
4.3 系统分解 92
4.4 分布架构 103
4.5 技术议题 109
要点 113
推荐阅读 114
习题 115
第5章 基于云的软件 116
5.1 虚拟化和容器 118
5.2 一切即服务 124
5.3 软件即服务 127
5.4 多租户系统和多实例系统 132
5.5 云软件架构 140
要点 147
推荐阅读 148
习题 149
第6章 微服务架构 150
6.1 微服务 154
6.2 微服务架构 157
6.3 RESTful服务 173
6.4 服务部署 179
要点 182
推荐阅读 183
习题 184
第7章 安全和隐私 185
7.1 攻击和防范 188
7.2 认证 195
7.3 授权 201
7.4 加密 203
7.5 隐私 213
要点 217
推荐阅读 218
习题 219
第8章 可信赖编程 221
8.1 避免错误 223
8.2 输入验证 242
8.3 失效管理 249
要点 256
推荐阅读 256
习题 257
第9章 测试 259
9.1 功能测试 262
9.2 自动化测试 273
9.3 测试驱动开发 281
9.4 安全测试 285
9.5 代码评审 288
要点 292
推荐阅读 292
习题 293
第10章 DevOps和代码管理 295
10.1 代码管理 299
10.2 DevOps自动化 310
10.3 DevOps度量 321
要点 326
推荐阅读 326
习题 327


Contents
Chapter 1 Software Products 1
1.1 The product vision 7
1.2 Software product management 11
1.3 Product prototyping 16
Key Points 17
Recommended Reading 18
Exercises 19
Chapter 2 Agile Software Engineering 20
2.1 Agile methods 20
2.2 Extreme Programming 24
2.3 Scrum 27
Key Points 47
Recommended Reading 48
Exercises 48
Chapter 3 Features, Scenarios, and Stories 50
3.1 Personas 54
3.2 Scenarios 59
3.3 User stories 66
3.4 Feature identification 70
Key Points 79
Recommended Reading 80
Exercises 80
Chapter 4 Software Architecture 82
4.1 Why is architecture important? 84
4.2 Architectural design 88
4.3 System decomposition 92
4.4 Distribution architecture 103
4.5 Technology issues 109
Key Points 113
Recommended Reading 114
Exercises 115
Chapter 5 Cloud-Based Software 116
5.1 Virtualization and containers 118
5.2 Everything as a service 124
5.3 Software as a service 127
5.4 Multi-tenant and multi-instance systems 132
5.5 Cloud software architecture 140
Key Points 147
Recommended Reading 148
Exercises 149
Chapter 6 Microservices Architecture 150
6.1 Microservices 154
6.2 Microservices architecture 157
6.3 RESTful services 173
6.4 Service deployment 179
Key Points 182
Recommended Reading 183
Exercises 184
Chapter 7 Security and Privacy 185
7.1 Attacks and defenses 188
7.2 Authentication 195
7.3 Authorization 201
7.4 Encryption 203
7.5 Privacy 213
Key Points 217
Recommended Reading 218
Exercises 219
Chapter 8 Reliable Programming 221
8.1 Fault avoidance 223
8.2 Input validation 242
8.3 Failure management 249
Key Points 256
Recommended Reading 256
Exercises 257
Chapter 9 Testing 259
9.1 Functional testing 262
9.2 Test automation 273
9.3 Test-driven development 281
9.4 Security testing 285
9.5 Code reviews 288
Key Points 292
Recommended Reading 292
Exercises 293
Chapter 10 DevOps and Code Management 295
10.1 Code management 299
10.2 DevOps automation 310
10.3 DevOps measurement 321
Key Points 326
Recommended Reading 326
Exercises 327

教学资源推荐
作者: Karl E.Wiegers
作者: Glynn Winskel
作者: 吕云翔 王洋 王昕鹏 编著
参考读物推荐
作者: [美]卡尔 T. 乌利齐(Karl T. Ulrich) 史蒂文 D. 埃平格(Steven D. Eppinger) 著
作者: Alan Shalloway, James R.Trott