关于敏捷开发的含义、原则、目标和机制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于敏捷开发的含义、原则、目标和机制相关的知识,希望对你有一定的参考价值。

参考技术A 理解敏捷开发,我们可以先了解一下瀑布式开发。

瀑布开发模式把开发分成一系列阶段,如需求、设计、开发、测试,就像下图它画出来的,看起来很像瀑布,所以叫瀑布开发。

问题是需求的交付难道不都是要经历这些阶段吗?

瀑布开发的本质问题并不是阶段,而是批量。需求批量地在一起进行设计,然后是批量地开发,批量地测试、交付等等。

批量有什么问题? 首先,批量让价值交付延迟,所有需求在最后的阶段才能交付,价值交付比较晚。Google执行董事长施密特提出过反摩尔定律,表述为:

“如果18个月之后我们只能卖出跟今天一样的东西,我们就只能得到一半的收入。”价值的交付时间将直接影响收入。

敏捷的目标

敏捷开发有第一个目标就是更快的交付价值,这里的快指的不是绝对速度,而是更早的交付。

在项目结束的时候,一定是对产品和项目的知识理解最充分的时候。这显而易见,我们在项目进程中积累了知识特别是当向用户交付产品后,用户反馈:

“我要的不是这个啊,我说的明明是……”,这时候你瞬间狂涨知识,并感叹道“你怎么不早说呢?”。

这中间可能有沟通问题,但更多可能的是,用户这时才清楚或能够描述他们要的是啥,更有甚者,我们可能一开始连用户是谁也未必能准确地定义。产品和业务开发本来就是一个探索的过程,开始时一定是最无知的时刻。

项目中的大部分决策也一定是在项目开始的时刻做出的,这将有一个重大的悖论,在最无知的时刻,做出了最重要而且是绝大部分的决策,并把它作为随后执行的依据。面对不确定的技术、市场环境,传统开发模式已无法适应要求,悖论越发突出。

敏捷开发将通过迭代应对这一问题,只做初始决策,定大致的方向。通过市场反馈不断修正对产品的认知,增量的决策和调整。

产品开发过程中,技术环境、市场环境、竞品策略、团队认知都会发生变化。面对变化的环境,我们必须承认自己的无知,在开发过程主动有效地学习,不断地汲取反馈,灵活地调整。

这也是敏捷的第二个业务目标,有效学习和灵活响应变化。

敏捷开发工具

敏捷开发是一种以人为核心,以迭代方式循序渐进开发的方法,其软件开发的过程称为“敏捷过程”。

在这一过程中,软件项目的构建被切分成多个子项目,各个子项目的成功都经过测试,具备集成和可运行的特征。

在2001年年初,一些业界专家成立了敏捷联盟,起草了敏捷软件开发宣言。该宣言针对一些企业的现状,提出了让软件开发团队具有快速工作、快速应变能力的若干价值观和原则,其中包括4个简单的价值观以及敏捷开发方法应遵循的12条原则 。

敏捷开发的价值观

1.个人和交互胜过过程和工具。

2.可以运行的软件胜过面面俱到的文档。

3.客户合作胜过合同谈判。

4.响应变化胜过遵循计划。

敏捷开发应遵循的12条原则

1.通过尽早的、不断地提交有价值的软件来使客户满意。

2.即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。

3.以从几个星期到几个月为周期,尽快、不断地提交可运行的软件。

4.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

5.以积极向上的员工为中心,建立项目组,给他们提供所需的环境和支持,并对他们的工作予以充分的信任。

6.在团队内部,最有效、效率最高的传递信息的方法,就是面对面的交流。

7.测量项目进展的首要依据是可运行软件。

8.敏捷过程提倡可持续的开发,责任人、开发者和用户应该为能够保持一个长期的、恒定的开发速度而努力。

9.时刻关注技术上的精益求精和好的设计,以增强敏捷能力。

10.简单是最根本的。

11.最好的构架、需求和设计出于自组织的团队。

12.每隔一定时间,团队要反省如何才能更有效地工作,然后相应地调整自己的行为。

敏捷组织提出的敏捷开发模型的整体框架主要有三个:

Scrum、XP(eXtreme Programming)、OpenUP 这3个敏捷实践。

敏捷开发的原则

1.凝聚人的力量,紧密协(合)作。包括业务负责人、开发团队、客户、管理者之间的关系,所有这些关系在以前都是造成项目危机的原因之一,那么,在敏捷时代,我们需要这些角色 紧密合作,最大限度的发挥各个角色的力量.

2.聚焦客户价值,消除浪费(如何聚焦用户价值,即频繁的交付用户可工作的软件,快速收到用户反馈)

敏捷团队运作机制

1.一个团队有自己的代办事项,对代办事项进行拆小。

2.按客户价值进行优先级排序,产品经理负责价值排序。

3.小而稳定,跨职能团队。

4.多个团队松耦合(依赖性比较低),对齐迭代时间和战略目标。

关键的团队角色

产品负责人

Scrum主管(流程主管)

开发团队

产品负责人(Product Owner)

负责管理产品backlog(代办事项)的唯一负责人

代表客户/项目如责任人

定义产品的所有特性

负责产品的投入产出

负责最大化产品和开发团队工作的价值

Scrum Master(流程主管)

起到教练的职责,领导团队完成Scrum的实践以及体现其价值。

排除团队遇到的困难,使得团队紧密合作,使得团队个人具有多方面职能的工作能力。

确保团队能胜任其工作,并保持高效的生产率。

保护团队不受到外来无端影响

关键的团队活动

每日例会:每日5分钟左右的一个简单例会,尽可能多的开发人员参与进来对紧要问题的讨论。

评审会:需要在迭代周期的最后一天召开,1个小时左右就可以了,需要客户出席,如果客户不能出席,则需要产品经理出席

迭代回顾会:迭代回顾会是在每个迭代结束时进行,总结工作中的经验和教训,时间维持在30-60分钟内,整个团队都需要参加(Scrum Master、Product Owner、开发团队以及客户)。

迭代回顾会包括两部分,第一部分是定量分析,第二部分是定性分析。

其中定量分析又包含团队是否完成了迭代目标,收集并评审迭代度量指标(包括速率、迭代燃尽图、迭代计划故事和实际完成故事、计划发布日期与实际发布日期、客户满意度、团队满意度、生产环境Bug数、生产Bug解决时间、用户故事等)。

定性分析包含哪些工作良好(应该继续保持),哪些做的不好(应该停止);哪些可以改进(团队选出1-2条在下一个迭代实现)。

敏捷开发框架案例: www.learun.cn/Home/VerificationForm

原文:windy

构建之法阅读笔记

我们已经了解敏捷流程的开发原则和概述,我们都可以体会到敏捷流程的好处和优点,但是敏捷流程不一定适合所有的项目任务,让我们来继续了解敏捷流程吧。

MSF是微软公司关于软件开发的方法论——微软解决方案框架,是微软推荐的软件开发方法。而且MSF有自己的基本原则。1》推动信息共享与沟通,这就是说 把所有信息保留并公开。 2》为共同的远景而工作,要做到这一点,就要确定一个明确的目标,并且这个目标对成员每天的工作有指导作用 3》充分授权和信任,这就要我们团队成员之间是平等协作关系,我们要充分授权给团队和成员。 4》各司其职,对项目共同负责,要明确每个人的职责,出了问题就要负责任 5》重视商业价值,提供渐进的价值,这要求我们说清楚我们的产品解决了什么问题,为谁解决问题,为什么会解决这些问题 6》保持敏捷,预期和适应变化,软件的开发过程是存在很多变化的,我们要随时保持敏捷、预期和适应变化  7》投资质量,这个原则告诉我们投资要讲效率,投资要讲时机,投资是长期的 8》学习所有的经验   MSF团队模型,它定义了小组同级成员的一些角色和职责,其中在这个模型中,每个角色都有极其重要的作用,如果一个角色没有完成目标,都可能危及整个项 目。  MSF也有敏捷开发模式,它更强调与用户的交流。重视质量 ,做到防患于未然。还强调在实战条件下的质量,而且它精简过程,直奔主题 。  MSF还支持CMMIC能力集成熟度模型集成,这会使项目的质量与 按期完成率大大提高。

敏捷对团队的要求很简单:自主管理、自我组织、多功能型,但是“自主管理”不等于“没有管理”,自己挑选任务,每次结束之后还要总结不足,提出改进;而且现在每个人都要联合起来对项目负责;每个人全面负责,自己搞定规格说明书,和别人沟通,同时自己搞定测试。团队要有一定的实力和水平,才可以使用敏捷流程,否则可能会适得其反,往往需要多次Sprint才能让Scrum走上正轨。

我们要学会衡量一个开发流程是否对当前的项目或团队合适,这个团队还需要一个强有力的项目经理。敏捷流程对项目的众多需求采取分而治之的办法,可以让相关人员集中精力,在一定期限内解决部分问题,强调短时间的迭代,在迭代中不断总结,改进团队的流程和产品功能。

根据这么长时间的实践者们的经验来看,其实敏捷表明的只是一些优先级,不用当做规矩或教条;敏捷流程并不是完美的,所以在遇到复杂的项目时,还是要根据实际情况来决定开发流程的。

敏捷流程虽好,但是还是要根据项目的实际情况,复杂程度,团队特点来决定开发方式。

 

以上是关于关于敏捷开发的含义、原则、目标和机制的主要内容,如果未能解决你的问题,请参考以下文章

敏捷开发方法综述

转:你不可不知的敏捷测试-定义,原则,方法和生命周期

敏捷开发

[Scrum敏捷开发之] Sprint开发过程详解

敏捷开发SCM

敏捷宣言遵循的原则