extreme programming和waterfall的对比
昨天(2007年4.30日)从微软check out的时候有两个感受和想法:
1,离开了工作近两年的地方,很是恋恋不舍
2,决定写一系列的关于微软extreme programming之scrum的流程和感受,跟大家分享
介于本人可能认识还不够,经验还不够丰富,如有不对之处,请大家批评指正,谢谢!
在这篇文章里我打算介绍一下waterfall模型和XP的一些区别。
两种模型的示意图如下:
Waterfall process
Scrum process
1,离开了工作近两年的地方,很是恋恋不舍
2,决定写一系列的关于微软extreme programming之scrum的流程和感受,跟大家分享
介于本人可能认识还不够,经验还不够丰富,如有不对之处,请大家批评指正,谢谢!
在这篇文章里我打算介绍一下waterfall模型和XP的一些区别。
两种模型的示意图如下:
Plan → Spec → Develop → Test → Deploy → Maintain
Waterfall process
Scrum process
- 如何应对变化
对于软件开发来说唯一不变的就是变化(Requirements are always changing.)。对于Waterfall来说,我们从需求分析到最后交货是一个可能很长的过程,如果发生大的变化可能需要我们对整个项目进行重新规划,重新设计。如果经常出现大的变化,可能导致项目的delay,甚至fail。究其原因,大部分是因为需求分析做的不完全,项目进行过程中出现大的需求变化。
那么Scrum是怎样来解决这个问题的呢?在Scrum里面,我们把整个项目分为若干个Sprint,对于每个Sprint来说,我们的需求基本上是固定的,在每个Scrum的开始,我们都把需要完成的feature list写道spec里面。在为其一个月的Sprint里面,spec基本上不会出现大的修改。
- 各个阶段的交接和过渡
对于Waterfall来说,我们有大量的spec和文档,在每个阶段我们需要做非常详细的交接。
对于Scrum来说,每个阶段的spec都比较简单和直接,没有大规模的阶段性交接。
对于Scrum来说,每个阶段的spec都比较简单和直接,没有大规模的阶段性交接。
- 提交给用户
对于Waterfall来说,只有最后才把产品提交给用户,所有产品价值只有此时才能体现给用户。
相反,Scrum可以在每个阶段给用户展示产品的开发结果并获得用户的反馈。
Waterfall面对变化的成本如下图:相反,Scrum可以在每个阶段给用户展示产品的开发结果并获得用户的反馈。