显然,应用这两种方法对团队,客户,投资回报率等的影响差异很大,并且是许多书籍和无休止的讨论和会议的主题.
但是,当我更多地考虑它时,我很难找到两者之间的任何差异,这些差异最终不会映射到单个根差异,即释放的频率.
瀑布花费时间在设计上,然后编写代码,然后测试并最终发布.但是敏捷完成了同样的一系列步骤 - 只是每个步骤都更小.
敏捷方法的一个关键部分是从每个版本中学习并使用它来让更大的设计出现,而不是在开始时尝试预测它.
但瀑布也是这样做的.只是不是每隔3或4周学习一次,瀑布团队每6或9个月只能学习一次.但瀑布设计仍然出现.也就是说,瀑布版本2将反映在版本1中学到的内容.因此,该过程并没有不同,只是它以不同的速度执行.
敏捷专注于密切的客户协作.但瀑布也是这样做的.它只是因为瀑布具有更长的迭代时间,所以需要以合同形式列出的需求列表,以使所有人在很长一段时间内保持在同一页面上.但同样,这只是一个频率的工件.交货频率越高,合同需求越低.
我还缺少其他原始差异 - 或者它只是频率?
小智 8
瀑布:
敏捷:
user story
)(在您完成的每个功能之后或在包装时间之后(通常称为sprint
或iteration
))
差异非常清楚.
使用Agile,您可以通过频繁提供小块软件来调整构建内容.你有足够的时候可以停下来.
更快的反馈 - 在所有规模上,而不仅仅是发布,肯定是许多敏捷实践中的一个常见因素.但我并不认为这是敏捷和瀑布之间的主要区别.例如:
瀑布团队倾向于围绕一组狭隘的专业化建立.分析师/建筑师/设计师/编码员/测试人员往往是独立工作的人群.敏捷团队一起工作.
瀑布流程取决于大量的文档和切换.敏捷团队围绕工作代码/产品.
我不同意瀑布专注于客户协作.只有一小部分联系人,只有一小部分整个开发团队,通常只在流程开始时.敏捷是围绕整个开发过程中的持续协作而构建的.非常不一样.
瀑布流程围绕着这样的想法而建立,即您可以在开发之前完全定义产品和架构.敏捷流程围绕着您随时发现产品/架构的想法而构建.