Engineering Software Products: An Introduction to Modern Software Engineering
出版者的话
译者序
前言
第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 使用Git 259
10.2 DevOps自动化 263
10.2.1 持续集成 264
10.2.2 持续交付和部署 268
10.2.3 基础设施即代码 270
10.3 DevOps度量 272
要点 276
推荐阅读 276
习题 277
索引 279