敏捷开发走过十年

  • 来源:计算机世界
  • 关键字:敏捷,开发,十年
  • 发布时间:2010-09-27 09:29
  如果以“敏捷宣言”的发布作为敏捷开发正式推出的标志的话,那么掐指算来,敏捷开发已经走过10个年头了。2001 年,10 位软件开发界著名的大师聚集在一起共同发布了“敏捷宣言”,敏捷开发方法才为大众所熟知。

  数据显示,在欧美发达国家,采用敏捷开发的企业已经接近半数,其实用性业已得到证明,但在我国其接受程度要差一些,大约20% .30% 左右。另一 方面,像很多新生事物一样,作为一种有别于瀑布式开发方法的新的软件开发方式,敏捷开发也受到很多人的质疑,这也注定敏捷开发成为主流还有很长的路要走。

  软件开发不同于

  工业生产

  在软件开发历史上,最有影响的事件是软件工程学的提出。

  在计算机刚走出实验室、开始服务于普罗大众之初的上个世纪50、60 年代,软件开发更多地表现为开发者的个人行为,基本上处于一种完全无序的状态,没有流程,也谈不上控制。随着计算机的普及,对软件需求的快速膨胀,这种无序开发状态的恶果马上显现出来,开发周期、成本无法控制,软件缺陷率居高不下,最后引发了软件危机,这才有软件工程理论的提出。

  软件工程的最大贡献在于,它借鉴了工业生产,特别是流水线生产的管理方法,强调流程的可控性,它提出的经典瀑布式软件开发至今仍然是最为主流的开发方式。在那个年代,软件工程的先进性无容置疑。瀑布式软件开发强调软件开发过程应该严格按照需求分析、设计、编码、测试、维护来进行,从而极大地增加了软件项目的可控性,成本变得可以预测了,这对于大规模的软件开发是非常必要的。而它的不足也很明显,它比照流水线生产来管理软件开发,而忽略了软件开发是一件需要程序员想象力和创造力的工作。

  “工业生产追求的是生产效率,如何更快地生产出更多的产品,这一追求跟软件开发的目的是完全不一样的。”

  ThoughtWorks 中国区总经理郭晓介绍说。ThoughtWorks 是一家提供定制软件开发的公司,这家拥有1000 多名程序员的公司从1999 年起就已全面转向了敏捷开发。

  郭晓认为,软件开发是一种创造性的、高附加值的、需要发挥人的主观能动性的工作,不是只靠流程改进就可以提高效率的。软件开发区别于传统制造业的另一个不同在于,软件的价值并不在于多长时间内生产出多少份软件,而是在于给业务提供了什么价值。

  “软件工程强调的是流程,而敏捷开发颠覆了软件工程这一理论,它的核心理念是人比流程重要。”郭晓说。

  帮你做正确的事情

  严格说来,敏捷开发并不是一种软件开发,而是一类软件开发方法的总称。“敏捷宣言”中提出了敏捷开发四原则,即个体和交互胜过过程和工具、能工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划,只要是复合这四项原则的开发方法都可以算做敏捷开发,其中最为大众熟知的是极限编程。

  “持续集成、快速迭代、重构、测试驱动,这些都是敏捷开发方法区别于传统开发方法之处。”郭晓说,“正是由于敏捷开发的这些特点,使得敏捷开发能更快速、更有效地交付可用的有价值的软件。”

  根据Forrester 所进行的一个调查,采用敏捷方法之后的软件项目总体的拥有成本都有极大降低,其中缺陷率平均降低63%,核心的缺陷率降低79%,整体投入减少62%,整个项目开发的时间缩短69%。

  不过,在郭晓看来,这些并不是敏捷的最大好处,“帮助企业做出正确的事情才是敏捷最大价值所在。至于提高生产率、降低软件缺陷率等好处,都是采用敏捷开发的必然结果。”

  郭晓解释说,这里所说的做正确的事情是指,敏捷开发通过持续与用户沟通,以及通过持续集成、快速迭代,让用户得以尽快看到最终结果,从而可以尽快发现早期设计中的错误,比如不切实际的、不必要的功能。另一方面,在沟通中还可以发现新的、更有价值的需求。而这些在传统开发方法中是不太现实的。

  比如在瀑布式开发中,一旦需求分析完成如要修改就需要比较复杂的流程,而且,进入开发阶段后程序员也很少再听取用户的需求意见。

  前行遇阻力

  目前,尽管敏捷开发方法已经提出多年,采用这一方法来实现的软件项目也很多,但是,质疑者依然不少。最为典型的说法是这种开发方法仅适用于小型开发团队。对此郭晓表示,敏捷开发最初的确被定位为小型团队的开发方法。但是,这些年来,这种开发方法已经在很多大型组织的大型软件开发项目上得到很好的应用,实践也证明了其在大项目中的可行性。比如,ThoughtWorks 公司有些项目参与的程序员就有100 多人,采用敏捷开发方法很好地完成了这些项目。另一个例子是英国电信,其内部有上万人的开发团队,也都全部采用敏捷开发方法。而在中国也有一些企业采用,比如中国移动研究院就普遍采用这种方法。

  “那些需要快速响应市场变化的互联网公司是敏捷开发的积极拥护者,因为它们等不起。”郭晓说。

  郭晓同时坦言,用户的不理解给敏捷开发方法的应用带来不少阻力。比如,传统软件开发方法非常重视文档,在项目真正开始编码之前一般需要有完整的文档,而敏捷开发难以做到,因为它的需求分析、设计、编码工作等是相互交织的。另外,敏捷开发还特别强调持续与用户交流,很多需求正是在这种交互过程中产生的,同时有些需求也会在这种交互过程中修改,其结果就是项目的预算不像传统开发方法那样一开始就能明确下来。

  “在我们的客户中,只要尝试过用敏捷开发方法来完成的项目,很少有不满意的。现在的问题是,有些客户不愿意尝试。”他说。

  另外,对于一个组织而言,要想采用敏捷开发,也可能面临不少困难,这也是阻碍敏捷开发普及的重要原因之一。

  “最大的问题是企业文化需要变革,管理制度也需要调整。比如,对程序员的传统考核办法是考核其代码量,而敏捷开发方法提倡结对编程和重构,提倡尽量重用代码,过去的那套考核制度就不适用了。”ThoughtWorks中国区技术总监徐昊说,其另外一个身份是敏捷开发的咨询师,指导过很多敏捷开发的项目徐昊建议,组织初次尝试敏捷开发的方法可以以“持续集成”作为切入点。因为“持续集成”会尽早暴露出大量的问题,比如说架构或者耦合度等方面的问题。“持续集成不是解决问题的灵丹妙药,但是能尽快展现敏捷开发方法的价值。”

  不管是徐昊还是郭晓都认为,敏捷开发目前在中国还需要教育和培训。也许正是基于这个原因,ThoughtWorks 一直坚持在中国举办敏捷开发大会,今年10 月14 日.15 日举办的敏捷大会已经是第5 届。“5 年来,很多中国的程序员通过我们的敏捷大会认识了敏捷开发,而我们对敏捷开发的认识也在不断加深。” 郭晓告诉记者。
……
关注读览天下微信, 100万篇深度好文, 等你来看……
阅读完整内容请先登录:
帐户:
密码: