乐趣区

敏捷开发详解含义原则目标机制

我们理解东西习惯从已知连接未知,首先我们来对比一下。我们最先了解到的是瀑布模型,那么它就是不敏捷的。瀑布开发模式把开发分成一系列阶段,如需求、设计、开发、测试,就像下图它画出来的,看起来很像瀑布,所以叫瀑布开发。
问题是需求的交付难道不都是要经历这些阶段吗?


瀑布开发的本质问题并不是阶段,而是批量。需求批量地在一起进行设计,然后是批量地开发,批量地测试、交付等等。批量有什么问题? 首先,批量让价值交付延迟,所有需求在最后的阶段才能交付,价值交付比较晚。Google 执行董事长施密特提出过反摩尔定律,表述为:“如果 18 个月之后我们只能卖出跟今天一样的东西,我们就只能得到一半的收入。”价值的交付时间将直接影响收入。

敏捷的目标 1:

敏捷开发有第一个目标就是更快的交付价值,这里的快指的不是绝对速度,而是更早的交付。
在项目结束的时候,一定是对产品和项目的知识理解最充分的时候。这显而易见,我们在项目进程中积累了知识,特别是当向用户交付产品后,用户反馈:“我要的不是这个啊,我说的明明是……”,这时候你瞬间狂涨知识,并感叹道“你怎么不早说呢?”。这中间可能有沟通问题,但更多可能的是,用户这时才清楚或能够描述他们要的是啥,更有甚者,我们可能一开始连用户是谁也未必能准确地定义。产品和业务开发本来就是一个探索的过程,开始时一定是最无知的时刻。
项目中的大部分决策也一定是在项目开始的时刻做出的,这将有一个重大的悖论,在最无知的时刻,做出了最重要而且是绝大部分的决策,并把它作为随后执行的依据。面对不确定的技术、市场环境,传统开发模式已无法适应要求,悖论越发突出。
敏捷开发将通过迭代应对这一问题,只做初始决策,定大致的方向。通过市场反馈不断修正对产品的认知,增量的决策和调整。

敏捷的目标 2:

产品开发过程中,技术环境、市场环境、竞品策略、团队认知都会发生变化。面对变化的环境,我们必须承认自己的无知,在开发过程主动有效地学习,不断地汲取反馈,灵活地调整。这也是敏捷的第二个业务目标,有效学习和灵活响应变化。

敏捷开发工具

敏捷过程

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

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

在 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条在下一个迭代实现)?

退出移动版