敏捷开发系列之满足不断变化的需求
软件开发方法一直处在不断发展过程中。在诸多方法中,敏捷开发以其能持续满足不断变化的用户需求正在受到越来越多人的重视,从中小项目开始进入大型开发项目,近几年来上升势头明显。为帮助读者进一步了解敏捷开发方法,本报邀请长期在国外从事软件研发工作的专业人士撰文就此进行深入探讨。
在软件工业界,敏捷开发已成为众多高效开发团队的制胜之道。在欧美软件企业中,有近半数企业已采用敏捷方法进行开发,而近几年受软件外包和外企的带动,敏捷开发在中国也出现了日渐普及的态势,如腾讯内部几乎所有的开发团队都在实施敏捷方法。敏捷开发的流行绝非偶然,其最大的推动力是采用这种方法所能带来的受益。相关统计表明,敏捷开发可以将效率提高3~10倍,软件的质量也有更加可靠的保证; 同时,还给团队内的每个成员提供了良好的发展机会,技术和合作水平都能得到相应提高。当然,敏捷的成功前提是其方法本身的适用性和团队对它的深入理解和合理运用。
敏捷开发方法的基本原则
应该说,敏捷方法特别是迭代和增量开发方法很早就有应用。早在20世纪60年代初的美国,航天局水星计划就曾引入迭代和增量开发。当然,对敏捷开发具有重要意义的事件是敏捷开发宣言的发布。2001年2月,17位在动态系统开发方法(DSDM)、极限编程(XP)、Scrum等领域的专家齐聚美国犹他州,寻找这些方法的共同点。最终,这些专家制定并宣布了敏捷开发宣言。由此形成了现在我们所认识的敏捷开发和后来的敏捷联盟。
敏捷开发由几种轻量级的软件开发方法组成,包括极限编程、Scrum、精益开发(Lean Development)、动态系统开发方法、特征驱动开发(Feature Driver Development)、水晶开发(Cristal Clear)等等。所有这些方法都具有以下共同特征,它们也是敏捷开发的原则:
1. 迭代式开发。即整个开发过程被分为几个迭代周期,每个迭代周期持续的时间一般较短,通常为1到6周。
2. 增量交付。产品是在每个迭代周期结束时被逐步交付使用,每次交付的都是可以被部署、能给用户带来即时效益和价值的产品。
3. 开发团队和用户反馈推动产品开发。敏捷开发方法主张用户能够全程参与到整个开发过程中。这使需求变化和用户反馈能被动态管理并及时集成到产品中。
4. 持续集成。新的功能或需求变化总是尽可能频繁地被整合到产品中。有些是在每个迭代周期结束的时候集成, 有些则每天都在这么做。
5. 开发团队自我管理。人是敏捷开发的核心。敏捷开发总是以人为中心建立开发的过程和机制,而非把过程和机制强加给人。
敏捷开发的优势
满足用户不断变化的需求是软件开发的长期无法解决的难题之一,经典的瀑布模式在一个迭代周期内表现优异,但一旦需求变化,瀑布模式却显得无能为力。敏捷方法满足需求的办法主要通过迭代。在每一次迭代周期结束时,都能交付用户一个可用的、可部署的系统,用户使用并体验该系统并反馈意见,在随后的迭代周期这些意见和需求的其他变化一起在产品中实现和集成。每次迭代周期应尽可能短,以便能及时地处理需求变化和用户反馈。
总体而言,敏捷开发方式能给企业和用户带来以下好处:
● 精确。瀑布模式通常会在产品起点与最终结果之间规划出一条直线,然后沿着直线不断往前走。然而当项目到达终点时,用户通常会发现那已经不是他们想去的地方。而敏捷方法则采用小步快跑,每走完一步再调整并为下一步确定方向,直到真正的终点。
● 质量。敏捷方法对每一次迭代周期的质量都有严格要求。一些敏捷方法如极限编程等,甚至使用测试驱动开发(test-driven development),即在正式开发功能代码之前先开发该功能的测试代码。这些都为敏捷项目的整个开发周期提供了可靠的质量保证。
● 速度。敏捷团队只专注于开发项目中当前最需要的、最具价值的部分。这样能很快地投入开发。另外,较短的迭代周期使团队成员能迅速进入开发状态。
● 丰厚的投资回报率。在敏捷开发过程中,最具价值的功能总是被优先开发,这样能给客户带来最大的投资回报率。
● 高效的自我管理团队。敏捷开发要求团队成员必须积极主动,自我管理。在这样的团队中工作,每个团队成员的技术能力、交流、社交、表达和领导能力也都能得以提高。
主要的敏捷方法
敏捷开发方法是一组开发方法的统称,主要包括以下几种:
极限编程 其主要目的是降低需求变化的成本。它引入一系列优秀的软件开发方法,并将它们发挥到极致,结对编程(pair-programming)就是其中比较知名的方法之一。除此之外, 其核心做法还有小规模、频繁的版本发布、短迭代周期、测试驱动开发、持续集成、每日站立会议、共同拥有代码、系统隐喻等。
Scrum Scrum是一个敏捷开发框架,它由一个开发过程、几种角色以及一套规范的实施方法组成。在Scrum中,产品需求被定义为产品需求积压(product backlogs)。所有的产品需求积压都是从一个简单的想法开始,并逐步被细化,直到可以被开发的程度。Scrum将开发过程分为多个Sprint周期,每个Sprint代表一个2~4周的开发周期,有固定的时间长度。
精益开发 精益开发的核心思想是查明和消除浪费。在软件开发过程中bug、没用的功能、等待以及其他任何对实现结果没有益处的东西都是浪费。浪费及其源头必须被分析查明,然后设法消除。精益开发的其他原则包括强调学习、在最后时刻做决定、用最快的速度交付用户等。
其他敏捷方法还包括动态系统开发方法(DSDM)、特征驱动开发(FDD)、Crystal Clear等,各种敏捷方法的区别在于它们对敏捷的不同阐释和不同侧重。理解这些方法可以帮助我们从多个角度理解敏捷开发,并且了解更多的最佳应用。(ccw)
- 1重庆OA客户
- 2成都OA客户
- 3贵阳OA软件行业资讯
- 4北京OA行业资讯
- 5深圳OA行业资讯
- 6南京OA行业资讯
- 7南宁OA行业资讯
- 8昆明OA软件行业资讯
- 9厦门OA行业资讯
- 10合肥OA软件行业资讯
- 11郑州OA行业资讯
- 12上海OA软件行业资讯
- 1企业OA管理信息化一般面临哪些困惑?
- 23G时代 存储虚拟化变成热门
- 3云计算时代的企业如何把握IT建设
- 4企业如何进行如何备份和检修虚拟机?
- 5中小企业以虚拟化和iSCSI解决存储难题
- 6关于安全行业预防“流感”十个问题
- 7“云安全+云保护” 谜团技术解析
- 8SCM供应链管理中的七大常见误解
- 9沈阳泛普OA软件的项目定价模拟
- 10如何管理大规模集群的软硬件资源
- 11浅析云计算安全的法律弊端
- 12基于网络端口的病毒防范技术分析
- 13数据中心设计帮助削减IT能源成本
- 14未来数据中心基础架构的新挑战与新发展
- 15如何利用现有设施部署安全的无线网络?
- 16存储业依然蕴含机会 五家厂商受关注
- 17沈阳OA软件解决方案带给客户的价值?
- 18有线网络前端机房设备选型与维护
- 19云计算:是用外部云还是内部云?
- 20企业配置可升级 Web 缓存方案
- 21企业接受虚拟化 云计算最受关注
- 22IDC数据保护所需应对五大挑战
- 23欧洲虚拟服务器数量将超过物理服务器
- 24在SQL Server中使用别名用户的安全问题
- 25存储发展简史 从"傻瓜阵列"到"按需存储"
- 26克服企业信息化管理软件CRM的缺点
- 27制定绿色IT策略应该考虑的四个方面
- 28盘点数据保护方式看中小企业信息安全
- 29OA软件最全面的房地产营销操作指导大纲
- 30精通SOA 构建企业应用服务组合