第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