新書推薦:
《
唯美手编16:知性优雅的编织
》
售價:NT$
250.0
《
情绪的惊人力量:跟随内心的指引,掌控情绪,做心想事成的自己
》
售價:NT$
230.0
《
棉的全球史(历史·文化经典译丛)
》
售價:NT$
500.0
《
超越百岁看这本就够了
》
售價:NT$
254.0
《
亚洲戏剧史·南亚卷
》
售價:NT$
653.0
《
中国历代竹器图谱与数字活化
》
售價:NT$
2540.0
《
EDA技术与设计(第2版)
》
售價:NT$
387.0
《
揉碎浪漫(全两册)
》
售價:NT$
320.0
|
內容簡介: |
大多数软件工程教材关注基于项目的软件工程,核心思想是客户给出需求规约,公司开发软件。然而,用于大规模项目开发的软件工程技术和方法,不适合软件产品开发。本书共10章,涵盖了软件产品、敏捷软件工程、特征、场景和用户叙述、软件架构、基于云的软件、微服务架构、安全和隐私,可信赖编程、测试、DevOps和代码管理等内容。
|
關於作者: |
【加照片】伊恩萨默维尔(Ian Sommerville) 英国软件工程专家,曾任圣安德鲁斯大学软件工程系教授,2014年退休。他在软件工程的教学和科研方面有40多年的经验,研究领域包括需求工程、大规模复杂系统和系统可靠性等。他撰写的软件工程教材畅销全球,销量超过75万册。
|
目錄:
|
出版者的话
译者序
前言
第1章 软件产品1
1.1 产品愿景6
1.2 软件产品管理9
1.2.1 产品愿景管理11
1.2.2 产品路线图管理11
1.2.3 用户故事和场景开发11
1.2.4 产品待定项管理12
1.2.5 验收测试12
1.2.6 客户测试12
1.2.7 用户界面设计12
1.3 产品原型设计13
要点14
推荐阅读15
习题16
第2章 敏捷软件工程17
2.1 敏捷方法17
2.2 极限编程20
2.3 Scrum争球模型22
2.3.1 产品待定项27
2.3.2 限时冲刺30
2.3.3 自组织团队35
要点39
推荐阅读39
习题40
第3章 特征、场景和用户故事42
3.1 人物角色46
3.2 场景50
3.3 用户故事55
3.4 特征识别59
3.4.1 特征推导62
3.4.2 特征列表64
要点67
推荐阅读67
习题68
第4章 软件架构69
4.1 为什么架构很重要71
4.2 架构设计74
4.3 系统分解77
4.4 分布架构86
4.5 技术议题91
4.5.1 数据库92
4.5.2 传播平台93
4.5.3 服务器93
4.5.4 开源94
4.5.5 开发技术95
要点95
推荐阅读96
习题97
第5章 基于云的软件98
5.1 虚拟化和容器100
5.2 一切即服务104
5.3 软件即服务107
5.4 多租户系统和多实例系统111
5.4.1 多租户系统111
5.4.2 多实例系统116
5.5 云软件架构118
5.5.1 数据库组织118
5.5.2 可扩展性和可恢复性120
5.5.3 软件结构121
5.5.4 云平台122
要点124
推荐阅读125
习题126
第6章 微服务架构127
6.1 微服务130
6.2 微服务架构133
6.2.1 架构设计决策135
6.2.2 服务通信136
6.2.3 数据分发与共享139
6.2.4 服务协调142
6.2.5 故障管理144
6.3 RESTful服务147
6.4 服务部署151
要点154
推荐阅读155
习题156
第7章 安全和隐私157
7.1 攻击和防范159
7.1.1 注入攻击160
7.1.2 跨站点脚本攻击161
7.1.3 会话劫持攻击162
7.1.4 拒绝服务攻击163
7.1.5 暴力攻击164
7.2 认证165
7.2.1 联合身份167
7.2.2 移动设备认证169
7.3 授权170
7.4 加密172
7.4.1 对称和非对称加密173
7.4.2 TLS和数字签名176
7.4.3 数据加密177
7.4.4 密钥管理179
7.5 隐私181
要点184
推荐阅读184
习题186
第8章 可信赖编程187
8.1 避免错误189
8.1.1 程序复杂度190
8.1.2 设计模式198
8.1.3 重构202
8.2 输入验证204
8.2.1 正则表达式206
8.2.2 数字检查209
8.3 失效管理210
要点216
推荐阅读216
习题217
第9章 测试219
9.1 功能测试221
9.1.1 单元测试223
9.1.2 特征测试226
9.1.3 系统和发布测试227
9.2 自动化测试230
9.3 测试驱动开发238
9.4 安全测试241
9.5 代码评审243
要点246
推荐阅读247
习题248
第10章 DevOps和代码管理250
10.1 代码管理253
10.1.1 源代码管理基础254
10.1.2 使用Git259
10.2 DevOps自动化263
10.2.1 持续集成264
10.2.2 持续交付和部署268
10.2.3 基础设施即代码270
10.3 DevOps度量272
要点276
推荐阅读276
习题277
索引279
|
內容試閱:
|
软件产品(例如独立程序、Web应用和服务、移动应用等)改变了我们的日常生活和工作。全世界有几万家软件产品公司,几十万名软件工程师从事软件产品开发。
与一些人的想法不同,我认为软件产品工程化需要的技能远比编码技能多得多,因此撰写了本书,旨在介绍一些重要的软件工程活动,这些活动对开发高可信、高安全性的软件产品至关重要。
本书读者对象
本书的读者对象是刚刚开始学习软件工程课程的学生。对那些准备进行软件产品开发又没有多少软件工程经验的技术人员来说,本书也非常适用。
需要一本关注产品的软件工程书籍的原因
大多数软件工程教材关注基于项目的软件工程。基于项目的软件工程的核心思想是:客户给出需求规约,公司开发软件。然而,用于大规模项目开发的软件工程技术和方法,不适合软件产品开发。
学生们通常很难理解大的定制软件系统。我的看法是,当学生关注他们经常使用的软件类型时,他们会发现理解软件工程技术其实并不难。同样,当学生在做项目时,若更多地关注产品工程化技术而不是面向项目的技术,他们会更容易理解软件工程技术。
本书是作者其他的软件工程教材的新版本吗?
不是,这本书考虑的是完全不同的方法,除了几幅图之外,没有重用任何来自《软件工程》(第10版)的材料。
本书内容
本书共10章,涵盖了软件产品、敏捷软件工程、特征场景和用户故事、软件架构、基于云的软件、微服务架构、安全和隐私、可信赖编程、测试、DevOps和代码管理等内容。
本书适合一个学期的软件工程课程使用。
本书与其他的软件工程导论教材的不同
正如前面所说,本书关注产品而不是项目,介绍的技术是其他软件工程教材没有的,如人物角色和场景、云计算、微服务、安全和DevOps等。 由于产品创新不是来自高校科研,所以书中没有应用或提及科研成果,本书的写作风格也是非正式的。
如何才能从本书获得价值?
只需要你具有现代面向对象语言的编程经验,例如,你能熟练地使用Java或者Python语言编程,熟悉有意义的命名,也熟悉基本的计算概念,如对象、类和数据库等。书中的示例程序尽管是用Python语言写的,但任何具有编程经验的人都能轻松理解。
教辅资源
1. 教师手册,其中包含每章习题和测验问题的解答。
2. 有关如何在一个学期的软件工程课程中使用本书的建议。
3. 教学讲义(Keynote、PowerPoint和PDF三种形式)。
你可以通过访问网站https:www.pearsonhighered.comsommerville获得这些材料。本书的其他辅助材料(PPT、视频、拓展链接)也可以从如下网站获得: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
|
|