您好, 访客   登录/注册

敏捷开发方法综述

来源:用户上传      作者:

  摘 要 传统的软件工程方法越来越难以适应飞速更新的软件需求,于是便形成了一些较轻量级的软件开发方法,这就是被称为能迅速针对软件变化要求的敏捷开发方法。本文对敏捷开发方法的原理做出详细的分析和介绍,同时又列举了几种较为常见的开发方法做出了实际应用的相关比较,以帮助我们在今后的软件开发过程中使用恰当的敏捷型开发方法。
  关键词 方法;原理;应用;需求
  中图分类号TP3 文献标识码 A 文章编号 1674-6708(2015)143-0126-01
  20世纪90年代,作为新型软件开发方法的敏捷开发开始逐渐成为人们的密切关注的新型方法。这是一种能够迅速应对变化需求的一种软件开发能力,其核心理念就是注重业务专家与程序员之间的精诚协作和良好沟通、不断更新的软件版本、迅速适应变化需求的代码编写以及一支团结合作的团队,该方法更加强调软件开发过程中人的作用。它提倡的是一种与时俱进、逐步改进的理论,大大降低了软件开发的成本和负担,大大缩短软件开发的时间,迅速适应各种软件开发的需求,使得其在软件开发过程中得到更广泛的应用。
  1 敏捷开发方法概述
  1.1 简介
  敏捷开发方法是将一个软件开发项目分成了若干个很小的模块化部分。每个部分在迭代过程中逐个解决,然后就像是搭积木一样逐渐添加到整个应用软件上,最后所有部分完成后,形成一个完整的软件系统。从字面来看敏捷开发方法意味着高效和快捷,是软件使用过程中的一种轻型的、迅速的、有效的科学方法。[1]在重型方法中,开发团队往往枉费了太多精力和时间在一些无关紧要和重复的中间环节上,而敏捷开发方法则有效地避免了这种毫无意义的浪费。在无过程或者说是过于繁琐的过程中,敏捷开发方法寻找到了一种平衡,以简洁的步骤获得了满意的效果。
  1.2 特点
  敏捷开发方法主要有两个特点,首先[2]它是“适应性”而不是“预设性”的。传统的重型方法是针对软件开发项目的很长的时间跨度内做出详细的规划,然后按照规划进行开发。而这种规划方法在规划完成之后很难再进行修改,而敏捷型方法则不然。敏捷开发方法的目的就是要适应计划变化的过程,甚至通过改变自身以适应新的变化。其次,敏捷开发方法是面向人的,而不是面向过程的,它们努力使软件开发工作能够针对和适用于人的特点,使软件开发成为一项愉快而非枯燥的活动,最大可能地发挥人的创造能力
  1.3 基本原则
  敏捷开发注重的是人再软件开发中的重要作用和迅速适应和应对变化的能力。有效的团队合作、密切关注当前的代码是敏捷软件方法最为强调和重视的两个基本原则。开发人员和管理人员通过当前的代码能够知道当前他们拥有什么,但是不能保证将来会获得什么,原因就是不能预期将来的变动。密切关注当前的代码是为了在一个真实可靠的基础上建立开发工作。敏捷开发方法注重的真诚的交流与合作,相对于读写文档而言,敏捷开发的信息交流更加方便快捷,能够大大提高读写文档的效率和时间,降低文档工作量;设计师们可以共同讨论,集思广益,获取最佳设计。总而言之,有效的团队合作能够获得高质量、快速度的软件开发,还能有效降低开发成本。
  2 几种常见的开发方法
  2.1 极限编程
  极限编程XP强调的理念是沟通和反馈,是一种典型的小组开发方法,适用于十人以下的项目组或是开发地点集中的场合,在一些需求模糊或者是挥发性强的场合被业界人士广泛应用。在软件开始初期,极限编程XP并不要求开发人员编制很多的文档。它提倡的是先行测试,目的是将之后出现bug的几率降到最低。[3]极限编程的目标是将较为模糊、变化较大的客户需求在最短的时间内,转化为符合客户要求的软件产品。其基本约定是用户与开发人员团结合作,共同创建出有实际运用价值的软件。用户积极参加整个开发项目的周期,并指导开发小组如何提升整个极限编程项目生命周期的业务价值。
  2.2 自适应软件开发
  自适应软件开发与水晶方法实相互借鉴和融合的,自适应软件开发借鉴的是复杂自适应系统理论,其目的是通过提高自身的适应性,以适应互联网时代下的软件需求难于预测并高速变化的软件开发。因为在不可预测的环境中,开发人员需要用各种方法来应对不可预测性。在对于开发人员的管理中,需要管理的重点是鼓励开发人员真诚合作、互相沟通,而不是生硬指使大家应该做什么,这样才能让开发人员能够有足够的空间提出各具特色的具有创造性的解决方案。
  2.3 SCRUM
  发挥构件技术和面向对象的开发方法是SCRUM的宗旨和出发点。它是一种迭代的增量化过程,吸取了各种开发的优势并加以改进,更加有利于工作的管理和产品的进一步研发。SCRUM把项目分成多个迭代阶段,每个迭代阶段为期半个月至一个月。在完成每个阶段之前,开发人员需要明确这一个阶段需要实现的功能。但在每一个阶段,所有的开发都围绕着迭代,并且有固定的
  需求[4]。
  3 优势分析
  敏捷开发对于信息系统开发周期的有着严格的要求,这一点与迭代式开发有着共同之处。不同的是,由于迭代周期过长,在迭代期间客户是无法改变变化需求的,这就大大降低了项目估算的准确度;而敏捷开发模式却避免了这一不足之处,它具有周期时间短和高度协作的优势,能满足客户需要不断变化的需求,这样就使得客户的需求更加具有可控性,而及时有效的沟通和交流大大提高了开发软件的效率。
  瀑布式开发体现的是预见性的原则,对开发过程中的先后顺序有着严格的规定,这就难以实现开发过程中的灵活性与自由度;而因具有独特的迭代方式,敏捷开发模式信息系统中的已开发的部分模块一直处于可甩状态,整个系统已经划分为一些相互独立的子系统,迭代是以最短的周期进行,效率和客户满意度得以大大增加。
  与前几种模式不同,快速原型模型与瀑布模型的有机结合,使螺旋式的开发模式对开发过程中的风险评估十分注重,与一些较大型的信息系统相比,螺旋式的开发模式更加适合复杂度较高的系统。它所强调的是可预见的风险,却难以应对不可预见的随机风险,但敏捷开发的核心就在于更加重视在不可预知的风险面前系统所具备的适应性,所以能够更好地避免风险。
  参考文献
  [1] Kiczales G ,et a1.Aspect―oriented programming.European Conf.on Object Oriented Programming.Finland.Springer―VerlagLNCS1241.June 1997.
  [2]林海,徐晓飞,潘金贵.计算机科学[J].2005(2):125-128,132.
  [3]聂华北,沈剑翘.计算机系统应用[J].2008(12):157-161.
  [4]杨帆,徐俊刚.一种改进的Scrum敏捷软件开发方法[J].电子技术,2011.
转载注明来源:https://www.xzbu.com/8/view-11572797.htm