在第三届“敏捷中国”技术大会上,我们听到了很多关于敏捷开发的相关论题,其中不乏互联网公司代表腾讯公司的敏捷开发的实例,也不乏ThoughtWorks首席科学家的亲身经历,在具体的敏捷开发过程中,究竟是哪一点最为吸引人们的目光?敏捷开发吸引人的潜力在何处?我们来听听作为作为敏捷开发过程中的开发者Paulo Caroli,他是如何理解敏捷开发的魅力的?他对敏捷开发又是如何理解的呢?
Paulo Caroli, 有13年的软件开发经验,是ThoughtWorks公司的一名敏捷教练和高级开发者,今天,他带来的是Agile Evolutionary Design: from simple to well structured design.(演进性的敏捷设计:从结构简单到结构良好的设计)
“作为ThoughtWorks公司的架构建筑师,我拥有的只是传统的JAVA的资质,这与很多做开发的同仁差不多,但从在ThoughtWorks的多年的敏捷开发的接触以来,我更深刻地理解了敏捷的运动。要在这里称其为‘运动’其实是有原因的,在下面,我也将为大家一一道来。”
传统的开发形式,如果你很小心地做,也能做得很好,为什么这么说呢?在整个开发过程中,每一个迭代中,一旦出现任何问题,到最后都不会得到你想要的成果。
传统的软件开发,采用的是瀑布式的开发模式:大家可以想象一下,一个斜坡向下的瀑布,在前面开发阶段,整个流程都是依据需求在进展,从最初的需求提出到需求分析,从功能的设计到编码,最后到编码的测试、整合与部署,所以说,如果你很小心,也能做得很好。在整个项目开发结束后,水流到最后才能取到,这个时候,取到的是一整桶水,也就是你最初设计想要得到的那一桶水!然而,这桶水是来之不易的。然而,目前,我们的项目过程中,却经常返工;这其中一个很重要的原因就是——变化是永恒存在的,敏捷对于要求不停地在变化,我们拿到的是许多小桶水,可能是一杯水,如果客户觉得好的话,我们会把它留下来,最后,水量是一样的,但是敏捷是小桶水汇到一块的,而传统的是一整桶。
传统的分析过程,有很多决定和策划,当还是用过去这套方法的时候,我们开始的设计都是分析,想象,图标的构建,但是敏捷里,都是测试做驱动,没有时间去画漂亮的流程图,但是,这个设计的过程在哪儿去了呢?
设计无处不在,不进开发的人要设计,所有参与的人都要设计,而且从第一天到最后完成,设计无处不在。
传统的设计只在开始阶段做,之后就停止了。而现在,我们所说的敏捷开发,在最初的数据分析阶段,我们也称之为项目的启动阶段,一般会需要两周或六周。这个启动阶段,我们有迭代。但总体来说,迭代的时间比较短,只有两周左右;我们有进程,所有的人都是为了同一个事情做事。
所以,在这个敏捷开发的过程中,我们的成果可以多次发布,一直持续到最后的最终版本的发布。
发起阶段,虽然有很多的迭代,发起阶段需要搜集客户的要求,不一定很多,但是要考虑到规模,测试的战略,最初两周的需求和策略是怎样的。另外一个就是构架,你不可能不想构架就去开始实施,以后返工的话,代价就太大了。
你是自动化的部署还是其他,一开始就要像清楚,迭代的最初。项目初始阶段,分析师不断设想,有什么新的需求出现。过程中不断测试,等迭代通过,这个时候,你就可以发布你此时成功的测试成功,也就是说,不用等到最后那一桶水,你即可拥有很多杯水。