在2008年6月21日的第三届”敏捷中国“技术大会的现场,不乏犀利的观众提出的一些项目实施过程中的实际疑难,我们的敏捷开发者是如何解惑的呢?
A问:在开发过程中,我们如何分工?项目的初期,哪些是最需要解决的问题?
Paulo Caroli:设计是不断发展的设计,如系统基本的构架,在发起阶段,在做第一个迭代的时候,我们应该讨论,与其他后面的迭代相比,要花更多的时间在初 期,因为大多数的设计工作室在初期来做的,如果项目比较简单,如果比较大,复杂,可能就需要花更多时间来做初期阶段的设计。
传统的分析过程,有很多决定和策划,当还是用过去这套方法的时候,我们开始的设计都是分析,想象,图标的构建,但是敏捷里,都是测试做驱动,没有时间去画漂亮的流程图,但是,这个设计的过程在哪儿去了呢?
设计无处不在,即使不负责写代码的人,也要参与设计。所有参与的人都要设计,而且从项目开始的第一天,一直到整个项目最后完成,设计都无处不在、无时不在!
传统的设计只在开始阶段做,之后就停止了。而现在,我们所说的敏捷开发,在最初的数据分析阶段,我们也称之为项目的启动阶段,一般会需要两周或六周。这个启动阶段,我们有迭代。但总体来说,迭代的时间比较短,只有两周左右;我们有进程,所有的人都是为了同一个事情做事。
所以,在这个敏捷开发的过程中,我们的成果可以多次发布,一直持续到最后的最终版本的发布。
发起阶段,虽然有很多的迭代,发起阶段需要搜集客户的要求,不一定很多,但是要考虑到规模,测试的战略,最初两周的需求和策略是怎样的。另外一个就是构架,你不可能不想构架就去开始实施,以后返工的话,代价就太大了。
B问:参与开发人员可能技能层次各不相同,怎么办?
Paulo Caroli:有一个做法我还没说,我们进行比较型的编程,在持续的整合的时候,里面所有人都有组成的部分,编程能力比较差的话,可以寻求高级编程人员的 帮助,在初期,设计会让高级的多做,后期的应用,则有低级程序员来做,高级程序员也可以更多地关注低级程序员的进步。
你说,都是可检测,在测试中出现问题,第一天就做TDD的话,不可能出现问题,但是,在工作中,有一些真的是不可测试的,要测试的话也很困难,但是又必须解决。
所以在一开始,就加入一个测试的工作,使之在过程中随时检测自己的迭代的准确与否。
大的团队中大的项目,是否可以使用敏捷?回答是肯定的,而且很多人都问过这个问题,(笑),所以,你的这个问题可以算是一个出名的问题了。
团队的架构可能是一个非常复杂的需求,开始的工作非常复杂。敏捷开发,对大的项目其实是比较有效的,最为重头的工作就是TDD的实践了。
C问:RUP与敏捷开发是否有联系?
Paulo Caroli:RUP其实就是敏捷开发的一种形式,RUP还是有很多的误解,主要是一种头脑的状态,你可以区别有些项目是否适合RUP来实施。
D问:在开发过程中,有的程序实在无法测试,如何解决?
Paulo Caroli:现在都可以测试,有时很难测试,但是我们认为我们可以测试所有的东西,有些东西是不可自动化的,是需要人工去测试的,不是编码的测试,如我 们把客户找过来,看对方是否满意,这样也是一种测试;当然,如果你有问题,你可以联系thoughtworks,他们会帮你解决自动化测试的过程。
附:Paulo Caroli简介
Paulo Caroli,www.caroli.org,是ThoughtWorks公司的一名敏捷教练和高级开发者。他的专长在于敏捷开发和面向对象方面,精通各种相关的技术。他在电子商务和电信领域由丰富的 经验。在长达13年多的软件开发生涯中,他成功的担任了软件开发过程中的多种角色,包括:开发者、应用架构师、项目经理、业务分析师以及教练。