大多数软件工程教材关注基于项目的软件工程,核心思想是客户给出需求规约,公司开发软件。然而,用于大规模项目开发的软件工程技术和方法,不适合软件产品开发。本书共10章,涵盖了软件产品、敏捷软件工程、特征、场景和用户叙述、软件架构、基于云的软件、微服务架构、安全和隐私,可信赖编程、测试、DevOps和代码管理等内容。
出版者的话
译者序
前言
第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