任宪臻++梁宏英
摘要:敏捷软件开发是从90年代开始逐渐引起关注的一种新型软件开发方法,它能够应对快速变化的需求。本文主要阐述了敏捷软件开发方法诞生的背景、敏捷软件开发的的概念及其与传统的软件开发方式的不同。同时,本文结合目前软件行业实际情况,列举比较了几种敏捷软件开发方法,帮助软件开发团队在开发中选择恰当的敏捷软件开发方法。
关键词:敏捷软件开发;XP;SCRUM
中图分类号:TP31 文献标识码:A 文章编号:1007-9416(2017)02-0189-01
1 引言
在最初的传统软件开发中,瀑布模型是最常用的软件生命周期模型。瀑布模型将软件开发过程划分为可行性研究与计划、需求分析、设计、编码、测试、运行与维护这样几个阶段,并且规定这几个阶段是自上而下、相互衔接的固定次序。作为最早出现的软件开发模型,瀑布模型在软件工程中占有重要的地位,但是瀑布模型中阶段之间的依赖关系非常强烈,如果上一个階段没达到目标要求,那么将会导致下一个阶段工作的停滞,从而导致软件开发周期延长。而且,如果项目的早期需求在后期发生变化,那么项目付出的代价将会非常高。有数据显示有70%的采用瀑布模型开发的软件项目均以失败告终。正因为产品需求的瞬息万变,同时也因为技术发展的日新月异,敏捷软件开发方法诞生了。
2 敏捷软件开发
敏捷软件开发,又称敏捷开发,是从90年代开始逐渐引起关注的一种新型软件开发方法,能够应对快速变化的需求,它强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、能够适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。
敏捷软件开发方法重视软件生产效率,非常适用于软件需求不确定、用户易沟通并且能参与开发、开发人员有责任感并且积极向上、十个人以下的小项目的开发。敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
3 常用的敏捷方法
在软件项目开发中,比较常用的敏捷方法主要有:Scrum、极限编程、水晶方法、特征驱动开发、统一过程和动态系统开发方法等。这些方法基本都相继兴起于20世纪90年代的不同时期,主要是作为瀑布方法失败的一种应对,它们在思想和技术上有着大量的相互交流。
Scrum是一种灵活的敏捷软件开发管理过程,它将软件开发团队比作橄榄球队,全队有明确的最高目标:发布产品的重要性高于一切。团队高度自治,队员们熟悉开发过程中涉及到的各种技术,紧密合作,确保每个迭代都朝着最高目标推进。而且每隔2至6周,每个人都能看到能实际工作的软件,并且据此决定是发布这个版本还是继续开发以加强它的功能。对于功能需求可能经常发生变化的项目来说,Scrum是它们最为理想的选择之一。Scrum是目前使用最广泛的敏捷方法,由于它没有规定工程实践,所以通常Scrum实施过程中会应用XP中提出一些的工程实践,比如持续集成、结对编程等。
极限编程是在需要加强开发者与用户的沟通需求下诞生的,它可以让客户全面参与软件的开发设计,保证客户变化的需求及时得到修正,它也非常注重用户的反馈,这与让客户加入开发是一致的,让客户参与就是随时反馈软件是否符合客户的要求。通过沟通和反馈,双方可以清楚地了解开发进度、变化、困难和急需解决的问题等,并及时地调整开发过程。沟通、简单、反馈、勇气、谦虚是极限编程的核心价值。使用极限编程的软件开发人员只需要开发初期编写一些文档,而且因为测试优先,这样可以把开发后期缺陷的出现降到最低。
水晶方法是一些敏捷方法系列,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践,实际上是一组经过证明、对不同类型项目非常有效的敏捷过程,它的发明使得敏捷团队可以根据其项目和环境选择最合适的水晶方法家族成员。
特征驱动开发是敏捷开发的流程之一,其核心理念是先集中精力创建待开发系统的领域模型,然后,围绕实现这些领域模型的特征来组织开发,可运用于小项目和大型项目,统一过程是一种流行的构造面向对象系统的迭代软件开发过程,是一种用例驱动的迭代式增量开发过程,每次迭代过程中主要的工作流包括捕获需求、分析、设计、实现和测试等。统一过程多种变种产生,如Rational统一过程、敏捷统一过程,以及企业统一过程。
动态系统开发方法倡导以业务为核心,快速而有效地进行系统开发,它全面定义了多种不同的角色、过程和工件,比大多数其他敏捷方法显得更加正规。实践证明它是成功的敏捷开发方法之一,其中一个重要的特征是根据"MoSCoW法则"来进行需求优先级排序:M表示必不可少的需求;S表示如果可能,尽量具备;Co表示可以有,但并非关键;W表示目前不需要,但可能以后需要。
4 结语
本文简单介绍了的几种常见敏捷开发方法,它们之间相通的,所以应该采取兼容并蓄的态度,根据自己的具体情况,具体剪裁。在实际的软件开发中,开发团队应该根据项目规模、开发环境,在实践中选择恰当的方法。
参考文献
[1]杨帆,徐俊刚.一种改进的Scrum敏捷软件开发方法[J].电子技术,2011.
[2](美)Alistair Cockburn,苏敬凯译.敏捷软件开发[M].机械工业出版社,2008.
[3]三种敏捷开发方式技术指南.TechTarget商务智能.2014.