在软件工业界,敏捷开发已成为众多高效开发团队的制胜之道。它不只被许多中小公司青睐,在全球一百强的企业中,敏捷开发也已大行其道,受到许多资深项目管理者和开发人员的推崇。到2008年,欧美软件企业中,有近半企业已采用敏捷方法进行开发。大多数还没有应用敏捷的企业,也都对其有所了解,并且不少在计划实施。中国的外企,外包公司和许多知名企业也都开始采用了敏捷方法。例如,腾讯内部几乎全部的开发团队都在实施敏捷。html
敏捷方法给这些企业也已带来了巨大的收益。据业内资深人士和长期从事敏捷咨询的服务公司透露,采用敏捷开发的团队通常会提升3-10倍的效率,软件的质量也有了更加可靠的保证。同时,敏捷开发的应用也给团队内的每一个成员提供了良好的发展机会。他们的技术和合做水平都能获得响应的提升。敏捷的成功来源于其方法自己的适用性和团队对它的深刻理解和合理运用。下面咱们就对敏捷开发作一个简单的介绍和讨论。编程
敏捷不是指某一种具体的方法论、过程或框架,而是一组价值观和原则。符合敏捷价值观和原则的开发方法包括:极限编程(XP),Scrum,精益软件开发(Lean Software Development),动态系统开发方法(DSDM),特征驱动开发(Feature Driver Development),水晶开发(Crystal Clear)等等。全部这些方法都具备如下共同特征:并发
1. 迭代式开发。即整个开发过程被分为几个迭代周期,每一个迭代周期是一个定长或不定长的时间块每一个迭代周期持续的时间通常较短,一般为一到六周。框架
2. 增量交付。产品是在每一个迭代周期结束时被逐步交付使用,而不是在整个开发过程结束的时候一次性交付使用。每次交付的都是能够被部署到用户应用环境中被用户使用的、能给用户带来即时效益和价值的产品。测试
3. 开发团队和用户反馈推进产品开发。敏捷开发方法主张用户可以全程参与到整个开发过程当中。这使需求变化和用户反馈能被动态管理并及时集成到产品中。同时,团队对于用户的需求也能及时提供反馈意见。网站
4. 持续集成。新的功能或需求变化老是尽量频繁地被整合到产品中。一些项目是在每一个迭代周期结束的时候集成, 有些项目则天天都在这么作。htm
5. 开发团队自我管理。拥有一个积极的、自我管理的、具有自由交流风格的开发团队,是每一个敏捷项目必不可少的条件。人是敏捷开发的核心。敏捷开发老是以人为中心创建开发的过程和机制,而非把过程和机制强加给人。项目管理
许多人认为,相比于“传统”的瀑布开发模式,敏捷开发是一种“现代”的开发模式。可是,实际上敏捷方法,特别是迭代和增量开发方法(IID)起源于20世纪30年代的一些非软件项目。而最先引入一些敏捷方法的项目之一就是20世纪60年代初的美国航天局水星计划。在这个项目中,一些极限编程方法如测试先行等也被使用。此后,迭代和增量开发被IBM联邦系统部(FSD)和沃森研究中心(Watson Research Center)采纳。有趣的是一些研究人员甚至在关于瀑布开发模式的最先的论文中发现了敏捷开发的线索。在这篇论文中,温斯顿.罗伊斯(Winston Royce)建议在一个项目中使用两次瀑布模式,也就是使用两次迭代。开发
20世纪70年代,最先的有记载的使用迭代和增量开发的主要项目之一,是为第一艘美国三叉戟潜艇开发的第一指挥和控制系统。该项目有大约一百万行代码,进行得很是成功。迭代和增量开发今后开始稳步发展,愈来愈多的项目开始使用这种开发模式。在1976年,Tom Gilb在他的著做《软件度量》(“Software Metrics”)一书中阐述了他的迭代和增量开发实践,这可能就是第一部阐述这种方法的书籍。迭代和增量开发的另外一次出色发挥,是在一个美国宇航局航天飞机软件的开发项目。这个项目负责开发其航空电子设备的软件系统。该项目由IBM联邦系统部(IBM FSD)在1977至1980年完成。一些典型的敏捷作法,如使用8个周迭代以及用反馈推进开发按部就班等方法都在该项目中得以应用。部署
20世纪80年代,更多的出版物和更多的项目应用进一步推动了迭代开发的发展。在1895年,巴里贝母(Barry Boehm)正式定义了使用迭代开发的螺旋模型(Spiral model)。80年代初,在美国国防部发生了一件有趣的事情。美国国防部一直以来都要求其软件开发商在开发过程当中使用严格的瀑布开发模型。可是到了1987年底,国防部开始“建议”使用迭代和增量开发做为软件开发模式。后来美国国防部的项目审查显示,早期使用瀑布模式开发的软件项目,有75%以失败了结,有些开发出来的产品根本没有被使用过,只有2%的软件产品无需大量修改就能被正常使用。
20世纪90年代,推荐使用迭代和增量开发的出版物和文献显著增长。在经历了屡次有“瀑布心态”(‘waterfall mentality’)项目的失败以后,美国国防部开始“要求”而不是像80年代那样仅仅是“建议”他们的软件开发商使用IID开发模式。Rational统一开发过程(Rational Unified Process)也是在这一时期产生并发展起来的,它具备更规范的迭代渐进过程。到2000年末,更多的敏捷开发方法被普遍推广并被使用于各类不一样的项目中。2001年二月,一组由17位在DSDM,XP,Scrum,FSD等领域的专家组成的表明团齐聚美国犹他州,寻找这些方法的共同点。最终,这些专家制定并宣布了敏捷开发宣言。由此造成了如今咱们所认识的敏捷开发和后来的敏捷联盟。
敏捷联盟官方网站:http://www.agilealliance.org/
关键词:敏捷开发