(转自:http://www.cnblogs.com/xiangzhong/p/4983257.html)
浅谈敏捷开发和迭代开发相结合
由于最近公司委派管理一个项目的开发,以往对开发体系没有特别的研究过,在遇到阻碍后开始慢慢学习开发体系,以往在项目组根据项目类型的不同都有各自一套软件开发体系。我们这里来谈下软件开发,将敏捷开发和迭代开发相结合的好处。
首先,我先介绍一下什么是敏捷开发和迭代
1,敏捷开发:一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
2,迭代开发:每次只设计和实现这个产品的一部分, 逐步逐步完成的方法叫迭代开发, 每次设计和实现一个阶段叫做一个迭代。在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试。
敏捷开发与迭代式开发是整体与局部的关系。打个比方,前者就像大家庭,而后者是大家庭中的一员。
敏捷开发是一个总体概念,而迭代式开发只是几乎所有敏捷开发所采用的一个主要的基础实践。敏捷开发除迭代式开发外,还包含了其他许多管理与工程技术实践,如演进式架构设计、敏捷建模、重构、自动回归测试(ART)等等。迭代式开发起源于1970-80年代的迭代、递增、演进式方法(IID),而敏捷开发是在迭代式开发的基础上起源于1990年代中后期。
通过这些年项目开发工作的最佳实践,我觉得如果您想做一个非常完美的项目很难,但是我们可以通过不断的对项目进行修正和累加的开发,来使项目趋于完美。这里我要说的就是迭代和敏捷开发相结合的一种开发方式。这样做的好处有以下几点:
1、降低产品开发风险
如果我们对即将开发的产品需求在项目初期不能做到全部细化,就进行系统功能的设计工作,势必增加项目产品的开发风险。那么如何降低风险?我们就可以通过迭代和敏捷开发相结合的开发方式来降低项目风险,项目初期先挑选可形成系统核心架构的需求来实现,待系统核心架构完成后,再在系统核心架构的基础上不断的添加其他功能模块,通过累加开发的方式,来不断的完善系统,并在完善系统时,对系统的瑕疵或不足,不断的进行重构和改进设计工作。通过多个迭代的敏捷开发,并且每个迭代都会产生一个可使用的产品。这样一来,我们就会达到降低产品开发风险的目的。
2、持续的测试和集成
每个迭代的敏捷开发,我们都会去不断的来做两件事情,一件就是增加新的功能,另一件就是更改变化的功能需求。新的功能或需求变化总是尽可能频繁地被整合到产品中。有些是在每个迭代周期结束的时候集成, 有些则每天都在这么做。所以,我们在每个迭代的敏捷开发中,都要不断的进行持续的测试和集成工作,以达到给客户交付一个满意,可用的产品。
3、满足用户不断变化的需求
满足用户不断变化的需求是软件开发的长期无法解决的难题之一,经典的瀑布模式在一个迭代周期内表现优异,但一旦需求变化,瀑布模式却显得无能为力。敏捷方法满足需求的办法主要通过迭代。在每一次迭代周期结束时,都能交付用户一个可用的、可部署的系统,用户使用并体验该系统并反馈意见,在随后的迭代周期这些意见和需求的其他变化一起在产品中实现和集成。
4、得到早期用户反馈
每次迭代周期应尽可能短,以便能及时地处理需求变化和用户反馈。客户反馈的越早,越有助于在下个迭代的敏捷开发中,对客户反馈的意见进行修改。经过几个迭代对用户反馈的修改开发工作,使系统更加趋于完美。
5、提高复用性(重用性)
在谈到复用性,也有人称之为重用性之前,我要说的一个重要的活动就是:代码重构。因为在进行迭代的敏捷开发中,没有整个系统的详细设计过程,那么如何保证我们开发系统组件的复用性?
方法一:经常性的对你的代码进行重构以保持良好的设计和扩展性。
方法二:架构师根据经验,和对未来需求的洞察力,在核心架构中设计出一部分可重用的组件。
方法三:在团队的设计讨论会议上,成员之间通过头脑风暴和讨论,会得到一些共用的组件。
方法四:定期组织项目团队的开发人员坐在一起,互相审核评审代码,发现系统中重复出现的代码片段,从而立即重构它们以得到可重用的组件。
方法五:开发过程中,通过对旧的代码进行重构,也有可能得到一些可重用的组件。
代码重构其实与软件工程师的技能和经验也有很大的关系,有经验的软件工程师在进行编码时,会分辨出有可能会被重用的部分,并将它们抽取出来封装成可被重用的类或者模块组件。
综上所述,敏捷开发和迭代开发相结合的项目开发方式,给我们项目管理带来的好处多多。也是我长期通过项目开实践,在不断学习和总结的中觉得最佳的项目开发方式之一。它对项目成败和最终结果起到决定性因素。因为我觉得它的思想精髓本身就值得我们采用它,它强调的是持续改进,不断完善。这相对于经典的瀑布式开发来说是无法比拟的,经典的瀑布模式虽然在一个迭代周期内表现优异,但一旦需求变化,瀑布模式却显得无能为力。瀑布模式通常会在产品起点与最终结果之间规划出一条直线,然后沿着直线不断往前走。然而当项目到达终点时,用户通常会发现那已经不是他们想要的东西。而敏捷方法则采用小步快跑,每走完一步再调整并为下一步确定方向,直到真正的终点。迭代式和敏捷开发方式的结合,既保证了产品的质量又在项目产品的持续改进中具有一定的优势。吸取精华,破其糟粕,只有这样,项目才会达到趋于完美的程度。这也是我们所有IT人,做任何项目都想达到的目标。
转自:http://www.mypm.net/articles/show_article_content.asp?articleID=24211&pageNO=2