敏捷开发

一、迭代开发 (重复开发)

迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。开发者先快速发布一个有效但不完美的最简版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,添加新功能。通过频繁的发布,以及跟踪对前一次迭代的反馈,最终接近较完善的产品形态。

二、增量开发

所谓"增量开发",指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。

三、敏捷开发的好处

3.1 早期交付
早期交付,降低成本。

3.2 降低风险
及时了解市场需求,降低产品不适用的风险。

四、如何进行每一次迭代

每次迭代都是一个完整的软件开发周期,必须按照软件工程的方法论,进行正规的流程管理, 每个迭代大约持续2~6周。
敏捷开发
1.需求分析(requirements analysis)
2.设计(design)
3.编码(coding)
4.测试(testing)
5.部署和评估(deployment / evaluation)

五、敏捷开发的价值观

程序员的主观能动性,以及程序员之间的互动,优于既定流程和工具。
软件能够运行,优于详尽的文档。
跟客户的密切协作,优于合同和谈判。
能够响应变化,优于遵循计划。

六、十二条原则

1.通过早期和持续交付有价值的软件,实现客户满意度。
2.欢迎不断变化的需求,即使是在项目开发的后期。要善于利用需求变更,帮助客户获得竞争优势。
3.不断交付可用的软件,周期通常是几周,越短越好。
4.项目过程中,业务人员与开发人员必须在一起工作。
5.项目必须围绕那些有内在动力的个人而建立,他们应该受到信任。
6.面对面交谈是最好的沟通方式。
7.可用性是衡量进度的主要指标。
8.提倡可持续的开发,保持稳定的进展速度。
9.不断关注技术是否优秀,设计是否良好。
10.简单性至关重要,尽最大可能减少不必要的工作。
11.最好的架构、要求和设计,来自团队内部自发的认识。
12.团队要定期反思如何更有效,并相应地进行调整。