敏捷开发为什么敏捷

以往的开发都是模拟一般的传统工业进行的。人们把软件当做一个产品,一个流水线上的产品。所以就出现了先搞可行性分析(其实真正开发的时候没人去搞这玩意儿,既然都要开发了还分析个什么劲~),然后是需求分析,遇到负责的开发团队偶尔会画画图,要是遇到奇葩的开发团队很有可能一个需求闯天下了。整个软件的开发周期中只有一个需求文档其他的什么都没有的开发团队随处可见,因为没有文档所以做不了升级所以只能推倒重来,于是开发人员感觉文档更加没用,如此一来恶心循环。(这个关于文档的内容不属于本篇博客讨论的话题)下面就带着读者来看一下敏捷开发是如何从传统的开发模式演变而来,或者说软件开发是如何一步一步的走向“成熟”(成熟是永远达不到的,只是一个不断追求的目标而已)。

第一层次

一般开发团队中的搞需求的只负责与客户交流然后传递信息,开发人员只负责编码,测试人员(如果有的话)只负责测试。这样以来就导致同一个时间只能有一拨人在干活其他人都需要等待。如果某一个阶段有问题那么只能回滚到上一个阶段,在这期间的效率就大大降低了。

第二层次

后来人们将软件分模块,这样一来开发人员可以不用等待需求人员把整个需求搞清楚再去着手开发,而测试人员也可以尽早的介入,及时发现问题。这大大的提高了效率,使得软件开发更像是流水线上的产品,只不过这时把软件拆分以达到提高效率的目的。需要注意的是这一切一切的前提是模块的合理划分(Maven就源于此)。

在敏捷开发中每次迭代都被成为一个sprint,中文意为“冲刺”,可见其速度与效率

第三层次

模块化提高了开发效率,但是人们是永远不满足的,还希望让软件开发更加高效。于是人们发现在上一个层次中浪费时间的阶段就是交接阶段。所以然们就在想如果让一个开发人员从需求到开发到测试一气呵成岂不是再次的提高效率,于是scrum的雏形出现了。每个成员负责一个模块的全部,从需求分析到编码实现,到测试。(众多scrum工具就源于此)。

第四层次

分模块,一人独揽的确提高了开发的效率但是就像运动会的标语“更快,更高,更强”开发还可以更加高效!在整个的开发过程中人们发现虽然每个模块消耗的时间或者说人员成本基本相同,但是每个模块儿自身的价值是不一样的。于是人们在上一个层次的基础之上加入了优先级的概念,如此一来同样的时间解决最有价值的问题大大提高了公司的效益。(在开发的后期客户会自己根据投入产出比选择是否继续升级或者添加新的功能)

纵观敏捷开发的发展,是一个实事求是的过程,是一个永不满足的过程。在敏捷开发中最重要的几个方面:具有全局观的组长,具有多种技能的成员(多面手),具有爱心的团队。只有这样敏捷才能敏捷,否则只会是一个形式,一切活动归根结底都是人的活动,如果人的能动性没有了,工具再先进,思想再超前也是白搭。

posted @ 2013-09-29 17:54  郗晓勇  阅读(1049)  评论(0编辑  收藏  举报