1. 用户故事:将客户的需求拆分成不同的用户故事,每一个用户故事代表一个独立的业务价值,对于未来不确定的潜在特性(变化风险最大),用用户故事的方式占位(Placeholder),当需求发生变化时,尽量只影响其中的一个用户故事(最好的情况是之前预估过风险还未进入开发),而不影响其他用户故事的业务价值;
2. 迭代交付:将需求放在不同迭代进行交付,每个迭代都给予客户对下个迭代需求进行变化的机会,当需求变化真正产生变化时,还没有实质的开发工作量产生;
3. 重构:鼓励持续地对系统架构进行优化和重构,降低系统的耦合程度,让一个需求的变化不会或尽可能少的对现有的其他功能产生额外的工作量;
4. 持续集成:大量使用自动化测试和构建持续基础环境,让可能产生于每次提交的缺陷(对现有功能的影响)及时暴露,越早发现,越减少可能产生在被影响的其他功能上返工工作量。