敏捷开发方法_敏捷开发方法xp - CSDN
  • 常用敏捷开发方法

    千次阅读 2014-07-16 15:52:14
    摘自《轻松Scrum之旅》

    摘自《轻松Scrum之旅》


    1、极限编程(eXtreme Programming,XP) 


    极限编程的思想源自 Kent Beck 和 Ward Cunningham 在软件项目中的合作经历。在这里,“eXtreme”的意思是希望将软件开发过程中一些好的方法发挥到极致。XP 注重的核心在于“沟通、简明、反馈和勇气”,用一句话来概括 XP 的这 4 个核心价值观就是:通过充分的交流和沟通,使产品的设计尽可能简单明了;同时通过客户经常性的反馈,生产出符合客户要求的软件产品,并且有勇气迎接需求的改变。
     
    另外,极限编程者还总结出一系列经典的实践,形成了 XP 的 12 个主要实践方法,这些方法对极限编程具有指导性的意义,分别是:客户计划的制定、小版本发布、隐喻、结对编程、测试驱动开发、重构、稳定的进度、代码共享、编码规范、简单的设计、持续集成、现场客户。 



    2、RUP(Rational Unify Process,Ratioanl 统一过程) 


    RUP 试图总结现代软件开发过程中所有好的实践经验,形成一种有很强适应性的软件开发过程。它包括了软件开发中的 6 大经验,分别是:迭代式开发、管理需求、可视化建模、使用基于组件的软件体系结构、验证软件质量、控制软件变更。
    RUP 将软件开发周期按时间和 RUP 的核心工作流划分为一个二维空间,如下图
    所示。

    从图中的横轴来看,RUP 把软件开发的生命周期划分为多个循环迭代,每个迭代生成产品的一个新版本,每个迭代由 4 个连续的阶段组成,分别是:初始阶段,了解项目的大致需求,建立业务模型,确定系统范围;细化阶段,设计、确定系统的体系结构,制定工作计划;构造阶段,构造产品并继续演进需求、体系结构、计划直至产品提交;移交阶段,完成产品的最终版本并交付给用户使用。 

    从图纵轴来看,RUP 的 9 个核心工作流分别是:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境。 
    RUP 的基本原理是:以满足客户需求、为客户创造价值为最终目标;尽可能早且不断地化解重大风险;把注意力放在可工作的软件上;在项目执行过程中尽可能早地适应变化;在项目早期设计、实现并测试一个可执行的架构;使用组件来构造系统;建立高效、协作的团队;要始终重视产品质量,否则追悔莫及。 

    以上 RUP 的基本原理构成了 RUP 的灵魂,在这些指导原则下,RUP 又给出了其他一些最佳实践,比如:为了化解业务风险,它始终以用例为中心;不是逃避变化,而是直面变化;为了化解时间风险,它采取迭代开发,尽量在早期探知到时间的延迟,以便采取更灵活的策略;为了化解技术风险,它强调架构设计;为了化解质量风险,它强调测试优先。而这些也恰好是 RUP 的主要特点。在这些最佳实践之后,才是具体的过程组织形式:具体由哪几个阶段组成?而每个阶段又包括哪些工作流,要产出哪些产品?而且这些形式不是固化的。RUP 只是提供一个模板,可以在开发过程中进行裁减。



    3、Lean(精益软件开发方法)

      
    精益生产的概念首先出现在制造业中,由日本的丰田公司提出。大规模制造理论认为,一定程度的浪费、一定程度的废品是正常的和被允许的。而在软件开发中,资源浪费、成本居高不下也同样成为软件开发的一大障碍。处于变革的十字路口的软件开发行业,总是能不断地从其他行业中寻找可借鉴的理论。这种借鉴来的思路就被称为精益编程(Lean Programming)。

    Lean 方法的主要思路有:消除浪费,将所有的时间花在能够增加客户价值的事情上;延迟决策,在一个复杂多变的环境中进行软件开发,需要根据实际情况保持可选方案的开放性,但时间不能过长;尽早交付,软件交付的周期越快,用户的需求就会越清晰,软件应对需求变化的灵活性就越高,让客户的需求来推动工作的进展;加强学习,承认变化的存在及其不可预见性,加强反馈和交流,在实践中发现问题、解决问题,并最终形成解决方案;授权给团队,正确的决策取决于准确的信息,让开发团队参与决策,让团队成员充分发挥自己的潜力。 

    无数的经验和教训都已经证明,软件开发中一个巨大的浪费源头就是不注重质量而导致的返工。人们常常为了追赶工期而降低对质量的要求,殊不知这会带来更大的损失。

    Lean 强调消除浪费,这正是为了避免低质量和返工造成的浪费。尽管这样做一开始看起来似乎有些麻烦,但它所带来的收益是实实在在的。如果采用 Lean 方法,还要注意不要钻牛角尖。消除浪费并不意味着扔掉所有的文档;尽量推迟决策并不意味着拖延决策,不能晚到错过了时机、耽误了工作才作出决策;尽快交付并不意味着匆忙交付和马虎行事,否则会为日后的系统维护带来更多的麻烦和浪费,这恰恰是与消除浪费的原则背道而驰的;授权给团队也并不意味着放弃领导。



    4、Scrum


    Scrum是一种灵活的敏捷软件开发管理过程,这个名词来源于英式橄榄球。Scrum 方法由 Ken  Schwaber 和 Jeff  Sutherland 提出,它将软件开发团队比作橄榄球队,全队有明确的最高目标——发布产品的重要性高于一切,团队高度自治,成员们熟悉开发过程中涉及到的各种技术,紧密合作,确保每个迭代都朝着最高目标推进,而且每隔 2~4 周,每个团队成员都能看到能实际工作的软件,并且据此决定是发
    布这个版本还是继续开发以加强它的功能。 

    对于那些功能需求可能经常发生变化的项目来说,Scrum 是最为理想的选择之一。

    在一个采用 Scrum 的项目中,首先要将所有需要完成的工作列在一个 Product Backlog中,项目开发过程中需求的改变也要写进去。在每个 Sprint 开始之前,要召开一个 Sprint计划会议。在这个会上,产品责任人(Product  Owner)为 Product  Backlog 中的各项功能需求确定优先级。随后,Scrum 开发团队按照优先级,从 Product Backlog 中挑选出他们认为能在这个 Sprint 中完成的任务,并把这些任务从 Product  Backlog 中挪到Sprint Backlog 中去。在 Sprint 的进行过程中,Scrum 团队每天都要举行一个简短的每日 Scrum 会议,以便团队成员了解开发进度。一个 Sprint 结束之后,需要召开 Sprint评审会议和 Sprint 回顾会议。开发团队在 Sprint 评审会议上把这个 Sprint 的开发成果展示给大家。而在 Sprint 回顾会议上,团队成员们会回顾刚刚过去的这个 Sprint,从中总结经验和教训。
    Scrum 的总体结构如图所示



    展开全文
  • XP XP(极限编程)的思想源自 Kent Beck和Ward Cunningham在软件项目中的合作经历。XP注重的核心是沟通、简明、反馈和勇气。因为知道计划永远赶不上变化,XP无需开发人员在软件...该方法由Ken Schwaber和 Jeff ...

    XP

        XP(极限编程)的思想源自 Kent Beck和Ward Cunningham在软件项目中的合作经历。XP注重的核心是沟通、简明、反馈和勇气。因为知道计划永远赶不上变化,XP无需开发人员在软件开始初期做 出很多的文档。XP提倡测试先行,为了将以后出现bug的几率降到最低。

     

    SCRUM

        SCRUM是一种迭代的增量化过程,用于产品开发或工作管理。它是一种可以集合各种开发实践的经验化过程框架。SCRUM中发布产品的重要性高于一切。

    该方法由Ken Schwaber和 Jeff Sutherland 提出,旨在寻求充分发挥面向对象和构件技术的开发方法,是对迭代式面向对象方法的改进。

     

    Crystal Methods

        Crystal Methods(水晶方法族)由Alistair Cockburn在20实际90年代末提出。之所以是个系列,是因为他相信不同类型的项目需要不同的方法。虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它。

     

    FDD

        FDD (Feature-Driven Development,特性驱动开发)由Peter Coad、Jeff de Luca 、Eric Lefebvre共同开发,是一套针对中小型软件开发项目的开发模式。此外,FDD是一个模型驱动的快速迭代开发过程,它强调的是简化、实用、 易于被开发团队接受,适用于需求经常变动的项目。

     

    ASD

        ASD(Adaptive Software Development,自适应软件开发)由Jim Highsmith在1999年正式提出。ASD强调开发方法的适应性(Adaptive),这一思想来源于复杂系统的混沌理论。ASD不象其他方法那样 有很多具体的实践做法,它更侧重为ASD的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。

     

    DSDM

        DSDM(动态系统开发方法)是众多敏捷开发方法中的一种,它倡导以业务为核心,快速而有效地进行系统开发。实践证明DSDM是成功的敏捷开发方法之一。在英国,由于其在各种规模的软件组织中的成功,它已成为应用最为广泛的快速应用开发方法。

    DSDM不但遵循了敏捷方法的原理,而且也适合那些成熟的传统开发方法有坚实基础的软件组织。

     

    轻量型RUP

        RUP其实是个过程的框架,它可以包容许多不同类型的过程, Craig Larman 极力主张以敏捷型方式来使用RUP。他的观点是:目前如此众多的努力以推进敏捷型方法,只不过是在接受能被视为RUP 的主流OO开发方法而已。

    展开全文
  • 敏捷其实很简单3---敏捷方法之scrum

    万次阅读 2017-11-17 09:09:43
    通过前面两篇文章,我们介绍了敏捷宣言,包括4条宣言和12条准则。可以说敏捷开发的所有理念,思想,方法都来源于敏捷宣言,所有想要实施敏捷,要先理解敏捷...从这篇文章开始,我们逐一介绍一些主流的敏捷开发方法

    通过上图我们可以看到Scrum作为各种敏捷实践方法中最为常用的一种,今天我们也来聊一聊Scrum。

    Scrum的历史可以追溯到1986年《哈佛商业评论》中的一篇文章《新型的新产品开发策略》(The New New Product Development Game,竹内弘高、野中郁次郎,1986)。这篇文章描述了像本田、佳能、富士施乐这样的公司是如何通过可伸缩、基于团队的并行产品开发方式开发出了世界一流的产品。文章同时强调了授权、自组织团队的重要性,并概要描述了管理在开发过程中发挥的作用。

    当然,SCRUM这个词没有什么标准的中文解释,它是来源于橄榄球中的一个争球的动作,如下图。

    竹内弘高和野中郁次郎在New New Product Development Game文章首次提到将Scrum应用与产品开发,他们指出:传统的“接力式”的开发模式已经不能满足快速灵活的市场需求,而整体或“橄榄球式”的方法——团队作为一个整体前进,在团队的内部传球并保持前进,这也许可以更好的满足当前激烈的市场竞争。



    上图是SCRUM的一个典型架构图,我们可以看到里面有很多要素,下面我们一一介绍这些要素。




    Scrum的3355



    3个角色



    Product Owner:产品负责人,清楚的知道产品的愿景,需要对产品待办列表的梳理,优化,优先级排序等负责。决定团队每个冲刺要完成哪些任务。对于团队非常重要,决定Why和What。一般可以对应为现有的产品经理和BA的角色。



    Scrum Master:Scrum MasterScrum教练和团队带头人,确保团队合理的运作Scrum,并帮助团队扫除实施中的障碍。



    Team:可以认为是开发团队,但是一个跨职能的团队,能够交付一个端到端的真正对客户有价值的产品。


    3个工件



    Product Backlog:是指产品待办事项的集合,其中事务有优先级判断,先处理优先级高的事项。产品待办列表源自于Scrum方法。在Scrum中,产品主管(Product Owner)收集来自于各方的需要、期望、诉求等等到产品待办列表中,给定优先级;当冲刺计划会议上,团队从产品待办列表中挑选其中事项组成冲刺待办列表。常见的待办事项表达形式是用户故事



    Sprint Backlog:每个迭代的功能开发列表,PO会根据团队的能力并按照产品待办列表中的优先级来选取每个冲刺要做的事情。团队可以专注在每个迭冲刺要走的事情上而不被打断。



    Burndown chart:燃尽图,在每个迭代显示剩余工作时间和任务完成情况。


    5个价值观



    专注:每个迭代只专注于迭代要完成的事情,团队和个人的能力和精力是有限的,在有限的时间内专注于最有价值的事情,以取得好的结果。

    勇气:要有勇气去面对各种挑战。

    公开:团队所有的进展,问题,阻碍都是对所有人可视化,透明的。这样的团队才是彼此尊重。同时也能暴露问题。

    承诺:作为一个自组织团队,在迭代开始的时候做出承诺,并在迭代中全力完成。

    尊重:团队是长期坐到一起,并且稳定的,有助于加深彼此的了解和沟通。


    5种工件



    Sprint:冲刺,一个固定的时间周期(通常为2w-4w),团队要尽可能在这个周期内交付可以工作的软件给客户

    sprint planning meeting:冲刺开始的时候,PO会和团队一起从PB中选择本次要做的任务/故事,并且会对团队提出的疑问进行解释和澄清。同时团队会估算故事并分解成任务,最后会形成本次的Sprint Backlog.

    daily standupo meeting:每日站会,scrum为了加强团队沟通,每天团队都要选择一个时间站在一起,互相交流彼此的进展和问题,以便及时解决出现的问题,同时也能让团队随时了解我们离冲刺目标还有多远。

    sprint review:在sprint周期最后,需要进行一次评审会议,让团队向产品负责人和利益相关者展示已完成的功能。sprint审核的大部分实践用于团队成员展示功能、回答利益相关者对展示的疑问并记录所期望的更改。评审会议可以吸引相关利益者的关注,让其他人了解团队在做些什么,并得到重要反馈。做演示也会迫使开发团队真正完成一些工作。

    retrospective meeting:回顾会议,通常在reivew会议之后开始,有团队成员在冲刺结束之后对上个迭代进行总结,同时提出一些改进方案,这是一个持续改进的过程。


    SCRUM的其他一些要素:

    user story:用户故事,因为敏捷要求每个特性都是对客户有价值的,所以以用户故事的方式来设计特性,通常是作为客户,我要实现A功能,以至于我可以达到什么目的的结构。

    task:每个迭代中为了开发一个user story,将其分解为一些task,比如说我要开发一个协议,其中需要几个task,包括搭建服务器,找一些开源代码,搭建自动化测试框架,编码,测试任务,便于更小粒度的track每个迭代的进展。

    release planning:在某些大型组织,可能更关注release级别的产品交付,所以每个release之前要进行整个release的plan,决定这个release的PB。

    points:故事点数,代表用户故事的大小,要记住,这里的大小不代表开发时间,只是一个相对的用户故事的复杂度,工作量大小。因为很难理解,所以scrum team要建立一个基准的user story,作为一个points,然后其他的user story和它进行相对比较。这个points大部分时间用来作为评估team的交付能力。


    SCRUM开发流程



    Scrum 是一个用于开发和维持复杂产品的框架 ,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周(互联网产 品研发可以使用1周的Sprint)。在Scrum中,使用产品Backlog来管理产品的需求,产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum团队总是先开发对客户具有较高价值的需求 。在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprint backlog。在每个迭代结束时,Scrum团队将递交 潜在可交付的产品增量。


    SCRUM各个角色之间的关系和作用:

    PO和team的关系:一个人拿到了客户的一个项目,开发一个产品,他就是PO,他想找一个团队开做这个产品,但是现在有A团队和B团队,A团队跟PO说,ok,交给我吧,3个月后你过来,我们把产品给你.而B团队说,我们每个月都可以让你看一下我们的产品,但是可能一开始功能不完善,但是可以工作的,然后你可以把我们的产品给客户看,如果运气好的话客户可能先给你点钱呢。

    如果你作为PO,你会选择哪个团队呢?对了,A就是传统的开发团队,而B则是我们的scrum team.

    scrum master和team还有PO的关系:


    个人给SM有以下几个定义:



    Team Coach: 不仅在在流程上辅导团队,还要帮助大家接受敏捷开发理念,推动团队按照敏捷价值观和原则所倡导的方法来做出决策。

    Servant Leader:Scrum Master服务于团队,帮助团队解决工作中的困难,引导团队自组织的高效完成每日工作,但是并不是团队的管理者。

    Team Protector: 作为团队保护者,SM7要敢于说不,尽量保证团队在每个冲刺中不被打扰,如果发现有影响团队工作的临时任务,一定要站出来保护团队。


    SCRUM大事表:

    Jeff Sutherland在 1993年首次在Easel公司定义了用于了软件开发行业的Scrum流程,并开始实施

    1995年Jeff Sutherland和Ken Schwaber规范化了Scrum框架,并在OOPSLA 95上公开发布。

    2001年 敏捷宣言及原则发布、敏捷联盟成立,Scrum是其中一种敏捷方法。

    2001年,Ken Schwaber和Mike Beedle推出第一本Scrum书籍《Scrum敏捷软件开发》。

    2002年Ken Schwaber 和Mike Cohn共同创办了Scrum联盟。

    展开全文
  • 7种敏捷开发方法

    千次阅读 2019-05-10 09:19:07
    XP极限编程 SCRUM迭代增量化过程 Cystal Methods水晶方法族 FDD特性驱动开发 ASD自适应软件开发 DSDM动态系统开发方法 轻量型RHRUP
    展开全文
  • 敏捷开发方法总结

    2018-10-23 10:10:39
    敏捷开发方法 极限编程XP 是一种轻量级,高效,低风险,不能使编码速度加快 水晶法 每个不同的项目都要一套不同的开发策略,约定和方法论 并列争球法 运用了“迭代”的方法,把每段时间(例如30天)一...
  • 大厂是如何开发软件项目的呢?其实大厂做项目也无特别之处,也就是工程中常见的“分而治之”策略:大项目拆成小项目,大服务拆成小服务,大团队拆成小团队。 服务之间通过约定好的标准协议进行通信,架构上将大...
  • 敏捷开发的流程

    千次阅读 2015-08-31 20:27:22
    随着带的团队做的事情越来越多, 发布的产品也越来越多, 关于软件开发的流程的思考也越来越多.前段时间的高效虚拟自适应团队是在历经困难后磨练出来的方法的总结, 在此基础上,又经过几个版本发布的洗礼,对之前的认识...
  • 什么是敏捷开发

    万次阅读 多人点赞 2019-05-31 10:49:56
    敏捷开发(Agile)是一种以人为核心、迭代、循序渐进的开发方法。 在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。 简单地来说,敏捷开发并不追求前期完美...
  • 软件开发模式之敏捷开发(scrum)

    万次阅读 多人点赞 2018-08-08 19:25:59
    简介 这几年关于敏捷开发在互联网企业中越来越广泛被使用到,运用的比较多的当属scrum敏捷开发... 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。 在敏捷开发中,软件项目在构建初期被...
  • 试论敏捷开发方法的共同特征

    千次阅读 2016-06-21 21:15:58
    本文将为你介绍敏捷开发方法框架的共同特征,理解与传统软件工程的联系和不同。短迭代的生命周期模型生命周期是事物发展的客观规律,软件同样存在生命周期。早期的软件生命周期往往是说“软件从计划、需求开始,经历...
  • 敏捷开发方法学及应用

    千次阅读 多人点赞 2013-12-13 00:20:54
    本篇文章是有关敏捷软件开发方法学及应用的基础知识。敏捷开发是有关团队怎么样合作去实现一个常规目标。敏捷开发并不仅仅适用于软件开发者,也适用于团队领导人,项目经理,产品经理,开发经理,测试人员,质量保证...
  • 敏捷开发实践(一)--谈谈我对敏捷开发的理解

    万次阅读 热门讨论 2015-05-31 09:58:51
    随着敏捷开发越来越流行,人人都在谈敏捷,人人也都在学习scrum等敏捷开发方法。。。当然,自己也是敏捷开发的实施者和受益者。
  • 作者:TechExcel CEO兼首席架构师 周铁人博士   敏捷已成为当今使用最广泛的开发方法。... SpecDD是由周铁人博士创立的一种以需求为核心的混合敏捷开发方法。它基于同时支持敏捷开发和非敏捷开发
  • 敏捷开发方法Scrum最佳实践

    千次阅读 2009-11-09 22:03:00
    首先强调一些Scrum的基本概念本文只想为那些不断实验敏捷开发方法、追寻快速交付产品的IT管理者提供全套经过验证的实践经验,供之参考。我首先假设你已经理解了Scrum这种敏捷开发方法的基本概念并认同之,但是仍然,...
  • 敏捷开发方法XP的12个最佳实践

    万次阅读 多人点赞 2012-05-21 20:24:49
    极限编程(eXtreme Programming,简称XP)是一种轻量级、高效、低风险、柔性、可预测的、科学的软件开发方法,其特性包含在12个最佳实践中。 1. 计划游戏 ( Planning Game )  (1)快速制定计划、随着细节的...
  • 随着敏捷开发越来越流行,人人都在谈敏捷,人人也都在学习scrum等敏捷开发方法。。。
  • 敏捷流派众多,在此做一个简单的整理与分享。 一、极限编程 极限编程(ExtremeProgramming,简称XP)是由KentBeck在1996年提出的。极限编程是一个轻量级的、灵巧的软件开发方法;同时也是一个非常严谨和周密的...
  • 上一站,我们简单的谈了谈FDD,了解了什么是特征驱动开发,以及它核心的整体模型,在我看来,它是一种有效但有一些复杂的敏捷开发方法,对于小团队来说,实施起来有些困难。然而,今天我们要认识的是一种新的开发...
  • 主要敏捷开发方法

    千次阅读 2009-09-24 17:01:00
    它引入一系列优秀的软件开发方法,并将它们发挥到极致。比如,为了能及时得到用户的反馈,XP要求客户代表每天都必须与开发团队在一起。同时,XP要求所有的编程都采用结对编程(pair-programming)的方式。这种方式是...
  • 敏捷开发工具:禅道

    2018-11-12 10:03:57
    之前看了很多敏捷开发方法论等知识,都觉得是无从下手,如之前的领歌当时觉得不错,就一直尝试多种敏捷开发工具的使用。 最近,BOSS推荐了一个敏捷开发工具,禅道。 首先,附上一些禅道界面。 目前,使用的开源...
1 2 3 4 5 ... 20
收藏数 88,315
精华内容 35,326
关键字:

敏捷开发方法