新書推薦:
《
血色帝国:近代英国社会与美洲移民
》
售價:HK$
59.8
《
海外中国研究·王羲之:六朝贵族的世界(艺术系列)
》
售價:HK$
182.9
《
唐宋绘画史 全彩插图版
》
售價:HK$
101.2
《
“御容”与真相:近代中国视觉文化转型(1840-1920)
》
售價:HK$
113.9
《
海洋、岛屿和革命:当南方遭遇帝国(文明的另一种声音)
》
售價:HK$
109.3
《
铝合金先进成型技术
》
售價:HK$
273.7
《
英雄之旅:把人生活成一个好故事
》
售價:HK$
89.7
《
分析性一体的涌现:进入精神分析的核心
》
售價:HK$
125.4
|
內容簡介: |
本书共十章,涵盖了软件产品、敏捷软件工程、特征、场景和用户叙述、软件架构、基于云的软件、微服务架构、安全和隐私,可信赖编程、测试、DevOps和代码管理等内容。
|
關於作者: |
【加照片】伊恩萨默维尔(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 Scrum27
要点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
|
內容試閱:
|
软件产品(例如单机程序、Web应用和服务、移动App等)改变了我们的日常生活和工作。全世界有几万家软件产品公司和几十万名软件工程师在从事软件产品开发工作。
与一些人的想法不同,我认为软件产品工程化需要的技能远比编程技能多得多,因此撰写了本书,旨在介绍一些重要的软件工程活动,这些活动对开发高可信、高安全性的软件产品至关重要。
本书是写给哪些读者的?
本书面向刚刚开始学习软件工程课程的学生。对于那些准备进行软件产品开发又没有多少软件工程经验的技术人员来说,本书也非常适用。
为什么需要一本关注软件产品的软件工程书籍?
大多数软件工程教材关注基于项目的软件工程,核心思想是客户给出需求规约,公司开发软件。然而,用于大规模项目开发的软件工程技术和方法并不适合软件产品的开发。
学生通常很难理解大型定制软件系统,我的看法是,当学生关注他们经常使用的软件类型时,就会发现理解软件工程技术其实并不难。同样,当学生在做项目时,若更多地关注产品工程化技术而不是面向项目的技术,就会更容易理解软件工程技术。
本书是作者其他软件工程教材的新版本吗?
不是,本书考虑的是完全不同的方法,除了几幅图之外,没有重用任何来自《软件工程》(第10版)的资料。
本书包含哪些内容?
本书共10章,讨论的主题分别是:软件产品,敏捷软件工程,特征、场景和用户故事,软件架构,基于云的软件,微服务架构,安全和隐私,可信赖编程,测试,DevOps和代码管理。
本书适合一个学期的软件工程课程。
本书与其他软件工程导论教材有什么不同?
正如前面所说,本书关注产品而不是项目,介绍的技术是其他软件工程教材所没有涉及的,如人物角色和场景、云计算、微服务、安全和DevOps等。由于产品创新不是来自高校的学术研究工作,所以书中没有应用或提及这个方面,并且全书的写作风格也是非学术的。
如何从书中学到有用的知识?
阅读本书前最好具有现代面向对象语言的编程经验,例如,能熟练地使用Java或者Python语言编程,知道如何使用有意义的命名。同时,也应当熟悉基本的计算概念,如对象、类和数据库等。书中的实例程序尽管是用Python语言编写的,但任何具有编程经验的人都能轻松理解。
本书为教师提供哪些教辅资源?
1. 教师手册中包含每章的习题和测验问题的参考答案。
2. 一些有关如何在一个学期的软件工程课程中使用本书的建议。
3. 教学讲义(Keynote、PowerPoint和PDF三种形式)。
你可以通过访问网站https:www.pearsonhighered.comsommerville获得这些材料。本书的其他辅助材料可以通过网站https:iansommerville.comengineering-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
|
|