浅谈敏捷开发和迭代开发相结合

标签: 敏捷开发 迭代 开发 | 发表时间:2014-01-05 11:55 | 作者:wuchsh2013
出处:http://www.iteye.com
http://www.mypm.net/articles/show_article_content.asp?articleID=24211
本人从事IT业七个年头。在这七年中,我做过很多的软件开发项目,经历了许多不同的项目组,在不同的项目中从事不同的角色,每个项目组根据项目类型的不同都有各自一套软件开发体系。最近两年,本人主要从事软件开发的管理工作。在工作中,不断的摸索与实践,并不断的学习和总结。下面我将谈到的是:软件开发,将敏捷开发和迭代开发相结合的好处。

  首先,我先介绍一下什么是敏捷开发和迭代开发。

  1,敏捷开发:一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

  2,迭代开发:每次只设计和实现这个产品的一部分, 逐步逐步完成的方法叫迭代开发, 每次设计和实现一个阶段叫做一个迭代。在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试。

  通过这些年项目开发工作的最佳实践,我觉得如果您想做一个非常完美的项目很难,但是我们可以通过不断的对项目进行修正和累加的开发,来使项目趋于完美。这里我要说的就是迭代和敏捷开发相结合的一种开发方式。这样做的好处有以下几点:

  1、降低产品开发风险

  如果我们对即将开发的产品需求在项目初期不能做到全部细化,就进行系统功能的设计工作,势必增加项目产品的开发风险。那么如何降低风险?我们就可以通过迭代和敏捷开发相结合的开发方式来降低项目风险,项目初期先挑选可形成系统核心架构的需求来实现,待系统核心架构完成后,再在系统核心架构的基础上不断的添加其他功能模块,通过累加开发的方式,来不断的完善系统,并在完善系统时,对系统的瑕疵或不足,不断的进行重构和改进设计工作。通过多个迭代的敏捷开发,并且每个迭代都会产生一个可使用的产品。这样一来,我们就会达到降低产品开发风险的目的。

  2、持续的测试和集成

  每个迭代的敏捷开发,我们都会去不断的来做两件事情,一件就是增加新的功能,另一件就是更改变化的功能需求。新的功能或需求变化总是尽可能频繁地被整合到产品中。有些是在每个迭代周期结束的时候集成, 有些则每天都在这么做。所以,我们在每个迭代的敏捷开发中,都要不断的进行持续的测试和集成工作,以达到给客户交付一个满意,可用的产品。

  3、满足用户不断变化的需求

  满足用户不断变化的需求是软件开发的长期无法解决的难题之一,经典的瀑布模式在一个迭代周期内表现优异,但一旦需求变化,瀑布模式却显得无能为力。敏捷方法满足需求的办法主要通过迭代。在每一次迭代周期结束时,都能交付用户一个可用的、可部署的系统,用户使用并体验该系统并反馈意见,在随后的迭代周期这些意见和需求的其他变化一起在产品中实现和集成。

  4、得到早期用户反馈项目管理论坛

  每次迭代周期应尽可能短,以便能及时地处理需求变化和用户反馈。客户反馈的越早,越有助于在下个迭代的敏捷开发中,对客户反馈的意见进行修改。经过几个迭代对用户反馈的修改开发工作,使系统更加趋于完美。

  5、提高复用性(重用性)blog.mypm.net

  在谈到复用性,也有人称之为重用性之前,我要说的一个重要的活动就是:代码重构。因为在进行迭代的敏捷开发中,没有整个系统的详细设计过程,那么如何保证我们开发系统组件的复用性?

方法一:经常性的对你的代码进行重构以保持良好的设计和扩展性。

  方法二:架构师根据经验,和对未来需求的洞察力,在核心架构中设计出一部分可重用的组件。

  方法三:在团队的设计讨论会议上,成员之间通过头脑风暴和讨论,会得到一些共用的组件。training.mypm.net

  方法四:定期组织项目团队的开发人员坐在一起,互相审核评审代码,发现系统中重复出现的代码片段,从而立即重构它们以得到可重用的组件。

  方法五:开发过程中,通过对旧的代码进行重构,也有可能得到一些可重用的组件。

  代码重构其实与软件工程师的技能和经验也有很大的关系,有经验的软件工程师在进行编码时,会分辨出有可能会被重用的部分,并将它们抽取出来封装成可被重用的类或者模块组件。项目管理者联盟文章

  综上所述,敏捷开发和迭代开发相结合的项目开发方式,给我们项目管理带来的好处多多。也是我长期通过项目开实践,在不断学习和总结的中觉得最佳的项目开发方式之一。它对项目成败和最终结果起到决定性因素。因为我觉得它的思想精髓本身就值得我们采用它,它强调的是持续改进,不断完善。这相对于经典的瀑布式开发来说是无法比拟的,经典的瀑布模式虽然在一个迭代周期内表现优异,但一旦需求变化,瀑布模式却显得无能为力。瀑布模式通常会在产品起点与最终结果之间规划出一条直线,然后沿着直线不断往前走。然而当项目到达终点时,用户通常会发现那已经不是他们想要的东西。而敏捷方法则采用小步快跑,每走完一步再调整并为下一步确定方向,直到真正的终点。迭代式和敏捷开发方式的结合,既保证了产品的质量又在项目产品的持续改进中具有一定的优势。吸取精华,破其糟粕,只有这样,项目才会达到趋于完美的程度。这也是我们所有IT人,做任何项目都想达到的目标。



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [敏捷开发 迭代 开发] 推荐:

敏捷开发-快速迭代

- - CSDN博客研发管理推荐文章
今天跟大家分享的是“敏捷开发、快速迭代”. 我们大都采用的是“瀑布开发模式”,有了问题,就得返工,虽然最终的产品会比较齐全完善,但是开发周期太长,开发人员会产生排斥,甚至厌恶的心理. 经过YH系统的开发,也且生体会到了这一弊端. 借鉴敏捷开发模式,来改善软件开发过程,提高项目的开发效率. 要想借鉴,首先得弄懂以下3个问题.

浅谈敏捷开发和迭代开发相结合

- - 研发管理 - ITeye博客
在这七年中,我做过很多的软件开发项目,经历了许多不同的项目组,在不同的项目中从事不同的角色,每个项目组根据项目类型的不同都有各自一套软件开发体系. 最近两年,本人主要从事软件开发的管理工作. 在工作中,不断的摸索与实践,并不断的学习和总结. 下面我将谈到的是:软件开发,将敏捷开发和迭代开发相结合的好处.

腾讯敏捷开发及快速迭代

- - 标点符
从2006年开始,腾讯的研发规模开始膨胀,开发模式急需规范和标准化,到底走IPD(集成产品开发)还是Agile(敏捷)的开发路线,公司管理层也在为拿不定主意而犯愁,之后研发管理部开始与ThoughtWorks公司接触,逐渐将敏捷产品开发引入进来,并正式命名为TAPD(Tencent Agile Product Development).

敏捷开发——Programmers(27)

- plidezus - 西乔的九卦
载于《程序员》杂志2011年第7期. 从这一期起,开始在杂志上登出整P的大幅漫画,需要看大图的同学们,讯猛点击下图. 这个系列的漫画讲述程序员——这种神秘人类的囧事,故事多来源于我身边的程序员朋友,且以互联网开发背景为主. 如果你有什么可乐的关于程序员的故事、对话、代码,愿意通过漫画的形式分享,请给我发邮件.

漫谈敏捷开发

- scotty - ITeye论坛最新讨论
软件开发是一种非零和博弈,意思是某一方的获得不是建立在另一方的损失之上,所以软件开发必须实现双赢,帮助客户成功的同时帮助自己成功. 如:通过软件帮助客户把手上的5块钱变成50块钱,然后从客户那里拿5块钱. 通过软件帮助客户节约50块钱,然后从客户那里拿5块钱. 传统的汽车制造是以计划驱动,如根据往年的经验判断今年应该生产多少汽车,但是这样带来的问题是有可能等汽车生产出来,市场已经不需要了,而这就是一种极大的浪费.

[趣图]敏捷开发:Programmers

- FPb - 草根网
载于《程序员》杂志2011年第7期. 从这一期起,开始在杂志上登出整P的大幅漫画,需要看大图的同学们,讯猛点击下图. 这个系列的漫画讲述程序员——这种神秘人类的囧事,故事多来源于我身边的程序员朋友,且以互联网开发背景为主. 如果你有什么可乐的关于程序员的故事、对话、代码,愿意通过漫画的形式分享,请给我发邮件.

关于敏捷开发(Scrum)

- - 前端攻城师-攻城记
敏捷开发的话题已经由来已久,但是我们如何实施敏捷开发一直成为争结. 很多团队协作性差,产品、技术、测试、运营脱节,我们如何解决这些问题,成为了很多团队面临的问题. 有幸接触到Scrum项目管理,我想如果我们真的把Scrum实施起来,协作一定会上一个层次. 1.一切从产品出发 我一直信奉一个出色的产品经理不应该因为种种原因降低产品质量,不要因为技术难度大,不要因为项目时间紧,不要因为人员不足,领导压力,其实产品要说的就是:“喔.

Android敏捷开发指南

- - 互联网的那点事
本文紧密结合移动开发方法与技术,围绕Android平台的开发探讨提供更高质量移动产品的解决方案. 作者中分析了移动开发中常见的问题,从两方面阐述了ThoughtWorks使用的测试开发方案和相应的架构方法与常用工具应用,并进一步阐述了为移动开发流程所提供的持续发布方案. 随着云计算、移动互联等一系列新技术概念的崛起,新一轮的IT经济正在不断扩大发展.

Scrum敏捷开发简介

- - CSDN博客编程语言推荐文章
       Scrum是一种灵活的敏捷软件开发管理过程. Scrum方法由Ken Schwaber和 Jeff Sutherland 提出,它将软件开发团队比作橄榄球队,全队有明确的最高目标:发布产品的重要性高于一切. 团队高度自治,队员们熟悉开发过程中涉及到的各种技术,紧密合作,确保每个迭代都朝着最高目标推进.

敏捷开发 Scrum 总结

- - 行业应用 - ITeye博客
  最近把之前学习 Scrum 的资料整理为一篇文档,在接下来的团队和项目开发中,根据项目的情况引入 Scrum 的一些实践,提高团队成员之间的协作能力和项目的交付质量.          参考资料:. 《轻松Scrum之旅—敏捷开发故事》、《敏捷无敌》.          Scrum 工具.