敏捷开发是一种新型软件开发方式,用以应对快速变化需求的软件开发能力。以用户需求为核心,持续迭代,循序渐进。敏捷开发并不在意需求是否变更,即便是在项目开发的后期,敏捷开发依然乐于接受需求的变更。这一点对于取得客户的满意度来说,无疑是非常具有竞争力的。

瀑布式开发。事先拿到一份完整详尽的需求文档,逐个功能Coding,测试部署上线。不需要再次确认需求,不会有人打断思路。没有需求更改,只要自己不犯错,不存在推倒重来这才是大部分开发人员最舒服的工作方式吧,简直太完美了。但是,如果一个公司每个项目都这么做,那么客户就都跑到别人家去了。
“敏捷”在互联网和软件开发领域从涓涓细流逐渐演变为行业潮流,往小了说是改进了开发方法,往大了说是革了瀑布流式的命——把产品开发引向了快速迭代、小步快跑的路线上。

敏捷开发的核心是迭代开发(iterative development)。这种开发方式是将一个大任务,分解成多次连续的开发,本质就是逐步改进。开发者先快速发布一个有效但不完美的最简版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,添加新功能。通过频繁的发布,以及跟踪对前一次迭代的反馈,最终接近较完善的产品形态。
迭代不是重复而是增量。"增量开发",指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。

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

敏捷软件开发宣言
我们一直在实践中探寻更好的软件开发方法,
身体力行的同时也帮助他人。由此我们建立了如下价值观:
个体和互动高于 流程和工具
工作的软件高于 详尽的文档
客户合作高于 合同谈判
响应变化高于 遵循计划
也就是说,尽管右项有其价值,
我们更重视左项的价值。


