如何提升Scrum下软件质量的思考

2010-10-12  金鑫 

[如需转载,请在转载时注明出处,并保证本文的完整性]


1986年,竹内弘高和野中郁次郎阐述了一种新的整体性的方法 ,该方法能够提高商业新产品开发的速度和灵活性:他们将这种新的'整体性方法橄榄球相比较,前者各阶段相互重叠,并且由一个跨职能团队在不同的阶段完成整个过程,而后者整个团队"tries to go to the distance as a unit, passing the ball back and forth"。他们对来自汽车,照片机器,计算机和打印机等产业的案例进行了研究。1991年,DeGrace和Stahl在《Wicked Problems, Righteous Solutions》一书中将这种方法称为 Scrum,在竹内弘高和野中郁次郎的文章中又再次提到这个来自橄榄球术语。


 


Scrum,原本是橄榄球的术语,意指两队争球的动作。软件开发的 Scrum 之所以会从橄榄球借来这个词,其实是出自野中郁次郎与竹内弘高两位日本知名教授在1986年于哈佛商业评论发表了《新产品发展游戏》(The New New Product Development Game) 一文,文中采用"橄榄球"这个比喻,来描述新产品发展的速度和弹性,就好像整个橄榄球队有默契地在球场中移动和传球一般。

野中郁次郎竹内弘高两位所写的The Knowledge-Creating Company一书中,和橄榄球式相对的新产品开发方式,接力赛的方式。

A、在接力赛的方式下,新的软件产品的开发,遵循的是概念、可行性分析、需求分解、产品设计coding、测试等等不同阶段循序渐进,由不同的部门持棒子交给另一个部门。在接力赛中,分工清楚,各部间各有职掌。它的主要缺点是产品发展的前置期较长,优点则是由于各个阶段职责清晰,每个部门可以竭尽全力的追求完美,以致产品能达到较高的交付标准。

B、而相对的橄榄球,它的危险之处在于为了要维持团体的和谐与一致性,它可能会向较低的标准而妥协。

目前的软件行业,通常把这种循序渐进、一棒接一棒的接力模式,称为Waterfall,瀑布式的开发流程,也是最传统,也最常见的方法。那么,Waterfall的开发方式,相较于Scrum的方式,是否真能如野中与竹内两位管理大师所说的,能够达到更高的标准?

时下大家常常津津乐道的Scrum方式,是否又能真正意义的取代以往的传统开发模式呢?经过多年的测试工作,我看过的瀑布式的软件项目也不少,个中方式下的产品质量,孰优孰劣,难见高下。(当然不排除项目管理中的诸多因素,诸如成本、进度,当然还有人的因素)

先让我们摒弃开发模式上无谓的PK吧!那么,撇开流程的问题,那么真正问题在哪里

抱着大师的书翻来覆去地想,我想通了大师的话了。大师其实已点明了问题,橄榄球式的危险之处在于为了要维持团体的和谐与一致性,而可能会向较低的标准而妥协。

因此,真正的问题在于团队的组织文化,是不是会为了要"和谐",而把产品的交付标准给和谐掉了!在这种文化下,采用waterfall的开发流程,就会比较不和谐吗?这倒也未必,如果在上游的市场与产品管理,对设计、研发影响力较强,那么这就已经开始向低标准倾斜。试想下,在下游执行开发、测试的部门,也不容易提出较突破的创新科技与良性的质量保持方案。

不过,两位大师的理论还是给了我一些思考,在推动Scrum的时候,千万不要在强调跨部门合作的同时,流于过度强调整体的和谐与一致,反而把大家推向最低的标准妥协。因此,在软件项目开始之初计划阶段,包括产品的概念定义、测试的策略都要澄清具体,而"完成的定义(Definition of Done)" 也要透过密集的讨论以达成决议,一旦概念与策略决定,各个Team各自像橄榄球队般的运作,沿着沟通的目标,大家一起发力,不断相互传接配合,并共同达成目标。

寄希望能在Scrum下的提高软件的质量的窝友,切忌不要太过激进,建立良好的沟通机制与团队文化,才是克敌制胜的法宝。毕竟没有绝对好与坏之分的项目,也没有绝对优与之分的流程,怕只怕 的人来实施。

注:本文部分概念引用网络与书籍

593°/5889 人阅读/5 条评论 发表评论

徐明明  2010-10-12

事实上,回归是经常发生的。瀑布模式还是一种比较理想状态下的开发形式。


罗恒  2010-10-13

如果在上游的市场与产品管理,对设计、研发影响力较强,那么这就已经开始向低标准倾斜? 未必。。。


金鑫  2010-10-13

罗恒: 如果在上游的市场与产品管理,对设计、研发影响力较强,那么这就已经开始向低标准倾斜? 未必。。。
对,事无绝对,但求常理。


林子新  2010-10-18

产品的重复很多取决于“需求”的不确定因素,如果需求定了,那么反复的测试其实可以减轻很多啦。所以有些因素并不仅仅只是测试这方能够解决,而是贯穿着整个软件的周期,测试只能是解决其中一方面的高效。


徐磊  2011-08-04

这个不是敏捷吗


登录 后发表评论