敏捷 Agile

敏捷 Agile 敏捷宣言 个体和互动 高于 流程和工具 工作的软件 高于 详尽的文档 客户合作 高于 合同谈判 响应变化 高于 遵循计划 也就是说,尽管右项有其价值, 我们更重视左项的价值。 # Kent Beck, James Grenning, Robert C. Martin # Mike Beedle, Jim Highsmith, Steve Mellor # Arie van Bennekum, Andrew Hunt, Ken Schwaber # Alistair Cockburn, Ron Jeffries, Jeff Sutherland # Ward Cunningham, Jon Kern, Dave Thomas # Martin Fowler, Brian Marick 著作权为上述作者所有,2001年 ,此宣言可以任何形式自由地复制, 但其全文必须包含上述申明在内。 Agile 12 Principle Our Highest Priority Is To Satisfy Customer through Early and Continuous Delivery Welcome-Changing Requirements Even Late In Development. Agile Processes Harnesses Change for Customer Competitive Advantage Deliver Working Software Frequently (Weekly or Monthly) With Focus on Shorter Timescale Business People and Developers Should Work Together Daily Build Projects around Motivated Individual. Provide Them the Environment and Support They Need and Trust Them The Most Efficient Way to Convey Information to Your Development Team is Face To Face Conversation Working Software Is a Primary Measure of Success Agile Process Promotes Sustainable Development. Sponsors, Developers and Users Should Maintain a Constant Pace Continuous Attention to Technical Excellence and Good Design Boosts Agility Simplicity—The Art of Maximizing The Amount of Work Not Done but Is Essential The Best Requirements, Architecture, and Design Emerge From Self Organizing Teams At Regular Interval, Team Reflects on How to Become More Effective and Tweak Behavior Accordingly 敏捷开发十二原则 我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。 欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。 要不断交付可用的软件,周期从几周到几个月不等,且越短越好 项目过程中,业务人员与开发人员必须在一起工作。 要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。 无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。 可用的软件是衡量进度的主要指标。 敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。 对技术的精益求精以及对设计的不断完善将提升敏捷性。 要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。 最佳的架构、需求和设计出自于自组织的团队。 团队要定期反省如何能够做到更有效,并相应地调整团队的行为。 敏捷的核心可以归纳成四个字: “渐进增强”。 ...

Created 21216-04-21 · Updated 16166-06-16 · 2 min · 302 words · -

Scrum 的 5 个核心价值

什么是 5 个 Scrum 的核心价值? Scrum 是敏捷软件开发的一个非常流行和众所周知的框架。几年前,Scrum 框架正式加入了 5 个核心价值观,团队中的每个成员都使用它们来指导自己的决策。并不是很多人都知道并理解这些价值观,但它们对于 Scrum 的成功实施至关重要,值得在这里详细阐述它们的含义。 来源:Scrum.org – Scrum 价值海报 勇气 在 Scrum 团队成员有勇气做正确的事和棘手的问题的工作。团队成员在做正确的事情和承担明智的风险时相互支持,以便我们可以沿着我们的伟大道路学习和改进,包括: 承认没有人是完美的 提供撤消版本的产品 共享所有可能的信息以帮助团队和组织 承认没有完美的要求捕捉和面临快速变化是现实 焦点 每个人都关注 Sprint 的工作和 Scrum 团队的目标。当我们处理复杂性和不可预测性时,重点是必要的,以便做出任何有意义的事情。因为我们一次只关注一些事情,所以我们会尽快提供最有价值的物品。Scrum 框架包含有助于促进关注的元素。 团队应该至少在每个 Sprint 结束时专注于"完成增量"。 每个 Scrum 角色都有一个独特的问责制,可以帮助个人知道要关注什么作为他们的优先事项。这最终有助于团队成果。 Scrum 团队专注于 Sprint 目标,以指导团队提供什么。 产品待办事项按优先顺序排列,聚焦于下一步最重要的事情。 时间限制的冲刺事件创造了一种紧迫感,并帮助我们专注于事件的目的。 Scrum 的事件和工件帮助建立重点,检查进展和新的信息,让团队能够以足够频繁的间隔适应。 承诺 Scrum 团队成员必须致力于成功,并愿意创建切合实际的目标并坚持下去。每个 Scrum 角色都致力于团队的成功,而不仅仅是关注个人成就,通过以下方式创建信任、高效解决问题和高团队标准的环境: 产品负责人通过进行最佳决策以优化产品的价值,而不是简单地试图取悦每一个利益相关者,来体现承诺。 Scrum Master 通过坚持 Scrum 框架来体现承诺,这意味着不延长 Sprint 或其他时间盒。 Scrum Master 通过移除 Scrum 团队不能自行解决的障碍,而不是容忍组织现状,来体现承诺。 开发团队通过创建一个符合其"完成定义"的增量,而不是几乎完成的产品,来体现承诺。 尊重 作为自组织团队,我们不能没有彼此尊重,因此我们将为所有人培养一个参与、富有成效和人性化的环境。Scrum 框架包含有助于促进尊重的元素。 整个 Scrum 团队参加 Sprint Planning、Sprint Review 和 Sprint Retrospective,促进对每个角色、责任和不同观点的尊重。 开发团队是跨职能的,具有提供"完成"产品增量所需的所有技能,促进了对每个人的经验、技能和想法的尊重,也促进了学习和成长。 Sprint 待办事项由开发团队拥有,由于他们是做这项工作的人,他们决定在 Sprint 中可以做多少以及如何做,这表明了对他们知识和技能的尊重。 通过仅在 Sprint Review 中展示"完成"的产品,为真实进步带来透明度,体现了对利益相关者的尊重。 产品负责人寻求利益相关者的意见、合作并为其设定切合实际的期望,是对利益相关者尊重的另一种表现。 Scrum Master 专注于 Scrum 团队的健康状况以及 Scrum 的有效使用,担任教学、促进和辅导的角色,表明了对人员和团队成长能力的尊重。 Scrum 专注于提供价值,通过不花费资源在低价值功能上,表达对组织的尊重。 在 Sprint 结束时具有潜在可发布的增量,通过不强迫更多投资实现价值,表明了对组织的尊重,使组织可以灵活地做出投资决策。 透明度 Scrum 的经验主义要求透明、开放,通过了解我们的工作安排、进步、学习和问题。团队应该开放地跨学科和技能进行协作,与利益相关者和更广泛的环境协作,分享反馈和相互学习。Scrum 框架包含有助于促进开放性的元素。 ...

Created 22226-04-22 · Updated 10106-05-10 · 1 min · 118 words · -

点数估算

点数估算 敏捷开发点数估算 为什么用点数比用小时和天数更好? 故事点数是通过对比以前开发过的大小相似的用户故事得到的。这种对比相对大小的估算方式,在有大量样本数据的情况下,比独立估算每个用户故事要准确得多。 举个例子,我们可以很容易的说出,从大连到长春的距离是从大连到沈阳的两倍,而不是大连到长春的距离是676.1千米, 大连到沈阳的距离是378.9千米。 (数据来自百度地图) 这样,团队不用花太多的时间来估算每个用户故事所要花费的准确时间和天数,就可以快速完成所有用户故事的估算。 不同的开发团队,是否可以使用统一的故事点数基准? 不同的开发团队,对于故事点数有不同的度量基准,取决于各个团队所要估计的用户故事。除非他们是在开发相同的系统,否则团队A开发1个点的工作量和团队B在不同系统中开发1个点的工作量是不同的。这种差异将会影响团队的迭代交付速率。 如果有一个很大的项目,需要分成多个小团队来共同开发,人们很可能想去尝试定义一种点数标准应用到所有小团队。这有悖于估算用户故事点数的目的,每个小团队都会有自己的主观衡量标准。 我们如何估算试探性研究(Spike)的用户故事? 为了弄明白如何实现一个特定的功能,或者验证某种概念,我们需要试探性研究故事 (Spike) 。由于很难知道到底总共需要多少工作量,通常我们要提前在团队中达成共识,对这种研究做出一定时间限制。这些用户故事可是通过观察交付速率趋势图,转换成大致的点数。 例如,如果需要计划一周的时间来完成一个试探性研究,而交付速率是16个点 (迭代周期为两周) ,那么就可以估算这个故事为8个点。 用户点数是否和业务价值有关? 用户故事点数是对实现用户故事所需要工作量的团队内部度量。无论如何,与用户故事所能提供多少业务价值没有关系。 很可能在同一个系统中,1个点数的用户故事会比4个点的故事有更大的业务价值。业务价值最好是留给产品经理和相关的业务决策者来衡量。 在介绍敏捷估算的方法之前,我们先来回顾一下基于人天的传统估算的思路。传统的工作量估算是估计一个绝对值,单位是人天或者人时。 比如: David喝完一小杯热咖啡花费1.2个小时 (工作量 1.2人时) David喝完一大杯热咖啡花费2.4个小时 (工作量 2.4人时) 由于人的能力是有差异的,所以David的工作量对于Tom来讲可能就不适用,Tom喝完一小杯热咖啡可能需要1.5小时。这样一来,工作量、参与人以及完成这些工作的时间周期就是强相关的,因为强相关会带来如下挑战: 做计划时必须把人和周期关联到具体的任务上,会让计划很复杂。 团队成员的分工发生变化时对计划的影响比较大,管理和维护计划成本高。 (这是甘特图的价值所在 ) 由于第二条的原因,这种工作量的估算方式不利于团队协作。 接下来,我们来看看敏捷估算的思路。 在探讨具体的思路之前,我们先思考一下做估算的目的什么,通常有两个目的: 核算成本和周期,我们要了解这这个项目或产品的投资回报。 做计划,根据项目的需要,我们要知道什么时间点应该交付什么内容才可以满足市场、用户或客户的期望。 做敏捷估算时,请先忘掉人天或人时,敏捷估算关注的是工作量的规模 (大小) ,而不关心谁来做,不关心花多长时间做完。它的规模计量单位使用的是一个抽象的单位——故事点,故事点是一个相对值,是一个相对倍数,和人天,人时没有关系,它和公里、吨、摄氏度类似,只是一个计量单位而已。我们可以定义喝一小杯热咖啡花费的工作量为参考基准,是 1 个故事点。中杯看起来是小杯的2倍大,所以我们可以估算喝一中杯热咖啡花费的工作量是小杯的两倍, 是 2个故事点,大杯是小杯的三倍,所以工作量是3个故事点。 敏捷估算的步骤: 找一个参考基准,作为一个故事点。比如: 把开发一个简单的查询页面工作量作为基准,定义为一个故事点。 拿其它的故事和基准进行比较,估算他们之间的倍数,从而得到其它故事的故事点数。比如: 查看个人基本信息这个故事和开发一个简单的查询页面的规模差不多大,所以它也是1个点,录入个人基本资料的这个故事要复杂一些,大概时3个点。 3 . 累计产品backlog中的所有故事,得到所有故事总的故事点数。 得到了总的故事点规模,我们还要知道团队速度。团队速度是指: 1个敏捷团队在一个迭代中完成的故事点总数。比如: 某Scrum团队1个迭代可以完成 80个故事点,那么80个点就是他们的速度。 有了总的规模,我们也知道了团队一个迭代的速度,我们就可以很容易推算多少个迭代可以做完。 如下图所示,总的规模是1600个点,团队总共8个人,每个迭代完成80个点,我们就可以推算20个迭代完成。 每个迭代2周,所以40周可以完成,8个人40周的成本投入也可以很容易得出。 敏捷估算要点小结: 相对估算,使用故事点作为单位,故事点是一个相对倍数。 估算规模,规模的计量单位是故事点,规模和时间、周期无关,和人天,人时无关。 敏捷估算关注团队的速度,不关注单个人的速度。 通过总规模和团队速度,推算周期 http://www.yugusoft.com/article/%E6%95%8F%E6%8D%B7%E5%BC%80%E5%8F%91%E7%82%B9%E6%95%B0%E4%BC%B0%E7%AE%97.htm?f=blog_page https://cloud.tencent.com/developer/article/1104793

Created 28286-05-28 · Updated 28286-05-28 · 1 min · 68 words · -

用户故事, user story

用户故事, user story 故事story是粗略的勾勒的需求,它是信!号!卡!,指向真正的需求或者叫故事详情,怎么说都好。 而需求就是需求。 这里隐含了敏捷的一个要素,就是,延!迟!决!策! 当需求不是被细化的摆放着,而是粗略的STORY的时候,才能更好的表达延迟决策。首先我们并不在一开始就把所有的东西都想清楚,而是仅仅以STORY的方式跟踪记录我们未来要做的事情。当开发前,我们才去细化STORY故事,把他变成需求。或者,开发前,我们扔掉STORY,因为它已经不重要了。see。故事可以帮我们更好的做延迟决策。保证所有的事情是在开发前才定下来的,而且保证我们不会遗漏。所以这里,就是为什么敏捷要用STORY而不是需求去进行需求的管理。 作者: 马菲菲 链接: https://www.zhihu.com/question/26996772/answer/35078718 来源: 知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 用户故事 https://www.tapd.cn/forum/view/43571 https://www.cnblogs.com/jetlian/p/3946359.html http://www.scrumcn.com/agile/scrum/4823.html http://www.scrumcn.com/agile/scrum/20026.html https://blog.csdn.net/GitChat/article/details/78410016 用户故事 (User Story) 和验收标准 (Acceptance Criteria) 那么什么是用户故事呢?一个用户故事就是一个功能或者feature的需求 (requirement) ,被写出了也就一两行字,最多5行。一个用户故事通常是最简单的可能性需求,有且只能是一个功能或feature。最常见使用的标准格式的用户故事如下: 作为一个用户/客户角色,我想要达到的目标是什么,以及达到目标的原因e.g:作为社交工具微信的用户,我想要在聊天对话框中有一个拍照图标去自拍和发照片,那么我就可以和朋友一起相互发照片。 什么是验收标准?验收标准就是一系列可以接受的条件或者业务规则,且与功能或feature相互匹配和满足,同时也能被产品负责人和相关人接受。这是用户故事完成很重要的一部分,它需要被产品负责人和业务分析人员认真的学习,因为错失一个很小的标准都会损失惨重。这是简单的编号或者编号列表。格式如下: 在我做某些动作 (action) 之前请赐给一些先决条件,然后期望结果发生。举个栗子: 1. 假设我正在和朋友聊天,我应该能够拍照2. 当我点击照片时,我应该可以在照片上添加一些文字,然后发给朋友3. 如果我的手机照相机有问题,一条错误信息,如"摄像头无法打开"…,相应的也应该出现因此,用户故事为任何功能或feature定义了需求,另一方面,验收标准为用户故事或需求定义了"完成标准的定义"。作为QA,理解用户故事非常重要,同时深刻理解验收标准,并且在测试开始前没有一点的疑惑。 https://www.jianshu.com/p/bde45187a78f

Created 5056-05-05 · Updated 5056-05-05 · 1 min · 39 words · -

迭代回顾, Sprint Retrospective

迭代回顾, Sprint Retrospective Scrum - Sprint Retrospective 在Scrum中,每个Sprint结束的时候会有两个会议 (Sprint Review/Demo和Sprint Retrospective回顾) 。 这两个会议是对过去的一个Sprint的一个总结,其中Review/Demo是检查过去一个Sprint的产出 (What) ,主要是PO根据先前的计划来检查Team在过去一个Sprint的工作成果,包括一些Demo,以及未完成部分的总结和分析;而Retrospective则是回顾过去一个Sprint整个Team的运作模式,有什么好的和不好的实践,怎样在未来的Sprint做的更好,强调How。 Sprint Retrospective (回顾) Sprint Retrospective会议主要是整个Team讨论过去的一个Sprint的运作,如何改进使Team更良好的运作。讨论的内容可以是任何有关Team建设的问题,包括工作流程、团队实践、团队内部/外部沟通、团队气氛以及相关工具的使用等等。 Scrum并不是一种方法,而是给软件开发流程提供了一种框架,在整个框架下,不同的项目、团队需要根据具体条件,适时调整实践方法。而Retrospective会议正是一个Scrum团队自我调整的机会。 会议的参加者包括整个Scrum团队、Scrum Master和Product Owner。会议由Scrum Master主持,一般以下边两个问题开始: 过去的一个Sprint里,我们有哪些好的方面? 过去一个Sprint存在哪些问题? 整个Team就这两个问题进行公开讨论,方式也可以是多样的。可以大家一起讨论,Scrum Master在讨论过程中将大家的观点记录在白板上;也可以让Team每个成员在便签纸上写下自己的答案,可以要求每个问题至少写三点,然后每个人把自己的答案贴在白板上,并给出相关解释。 讨论完毕后,对讨论结果进行分类。对于好的方便,在下个Sprint继续保持并发扬;对于存在的问题,列出Action Point去解决问题。列出的Action Point也会在下个Sprint的backlog中体现出来,并且是高优先级的项目。 探索者 (E) 代表对这个会议的内容充满期待,很有兴趣听听看看大家都是怎么看待过去这段时间的工作的,想以此来分析我们为什么是这样工作的; 推销者 (S) 是带着想法过来的,他有一个idea想借这个会议推销给大家,比如一个新的工作方式的建议,给团队增加一个流程来改进某一个方面的问题,总之这个人看到了问题,也带来的解决办法; 度假者 (V) 把这个会议当做一个休闲的方式,他们觉得有个机会大家一起聊聊天,胡扯一通挺有意思的,可能比自己工作的时候更让他放松。度假者对会议的内容是没有期待的。 囚犯 (P) 是极不愿意来参加这个会议的,他们要么就是厌恶会议,要么就是忙得没时间参加会议,总之他们是被迫来的,他们期望着会议能马上结束就好,没有心思参与到会议的讨论中来。 http://blog.csdn.net/ljinddlj/article/details/5328404 https://www.jianshu.com/p/95a59fe7844c

Created 12126-10-12 · Updated 12126-10-12 · 1 min · 46 words · -

Scrum,Sprint Review Meeting

‘Scrum,Sprint Review Meeting’

Created 27276-02-27 · Updated 27276-02-27 · 1 min · 3 words · -

Daily Scrum, stand-up meeting, 站会

Daily Scrum, stand-up meeting, 站会 日常站立会议 (daily stand-up meeting) 是每天早上举行的短期会议。该活动起源于敏捷开发方法,在Scrum开发中很常见。日常站立会议一般用时五到十五分钟,有时候指代站立的早晨点名或每日例会。 日常站立会议 (daily stand-up meeting) 的目的是让每个团队成员回答以下三个问题: What did I do yesterday? 你昨天做了什么? What will I work on today? 你今天要做什么? What is in my way? 你遇到什么困难了吗? 站立,而不是坐着,强化了该会议打算简短且避免浪费时间的想法。站立会议并不是一个解决问题的地方,而是让一个团队意识到现在的状态。如果需要讨论,适当部门可以安排另一个更长的会议。 在Scrum开发中,站立会议的目的是更新团队的状态,而不是管理,这一点必须得强调。在一些Scrum团队中,管理层会参加会议,但是只有团队成员讲话。https://less.works/less/framework/daily-scrum.html

Created 27276-02-27 · Updated 27276-02-27 · 1 min · 36 words · -

迭代计划会议

迭代计划会议 迭代计划会议 重新讨论、确定本次迭代需要实现的Story,达成共同理解; 若有必要的话,则继续细化Story; 对Story进行优先级排序; 开发、测试、资料人员认领任务,估计工作量并做出承诺,这是敏捷的重要实践之一: 开发团队决定承诺完成工作量的多少,而不是由SE或项目PL安排工作量。 共同制定本次迭代的迭代开发计划。要输出针对本次迭代的详细的开发计划,开发、测试、资料是以Story为单位的,所以迭代开发计划也是以Story为核心的。计划中要包括本次迭代要开发的每个Story的开发人员是谁?测试人员是谁?什么时候开始?什么结束?谁来Review?等等。 优秀实践: 明确任务责任人 (包括开发、测试、资料) 和任务完成时间点; 任务和问题都可作为跟踪项进行跟踪; 计划中根据Story优先级和依赖关系,严格按Story驱动制定计划,尽量减少Story并行开发;

Created 27276-02-27 · Updated 27276-02-27 · 1 min · 14 words · -

Use Story Points, task hours

Use Story Points, task hours [http://www.scrumalliance.org/articles/439-story-points-versus-task-hours]1 http://www.mountaingoatsoftware.com/blog/why-i-dont-use-story-points-for-sprint-planning

Created 21216-02-21 · Updated 21216-02-21 · 1 min · 7 words · -

us, 用户故事

us, 用户故事 as a xxx, i would like to xxx so that xxx. As a “user”, I want to “do sth”, so that “sth” “user” - 就是我们抽象出来的persona (Definition refer to wiki http://en.wikipedia.org/wiki/Persona) “do sth” - 要实现的功能 最后so that后面的 “sth” - 价值 价值说起来很简单,也很容易理解,就是 实现这个story后对用户的价值所在。 可是再多问一个问题,为什么要有这个价值,为什么一定要写这个so that呢? 如果你的目的是想买一条裙子,20年前,唯一的就是去商场买,但是今天我们还可以选择网上购物。 这也就是说,对于同一个story,不同的技术背景,不同的地域,不同的时代都会有不同的实现,这就是so that存在的价值。

Created 19196-03-19 · Updated 19196-03-19 · 1 min · 48 words · -

迭代规划

迭代规划 团队会在Sprint开始之初召开Sprint计划会议并制定目标,团队成员会在Scrum每日例会上分享工作进展。当Sprint快结束时,团队会在评审会议中将进展展示给项目干系人。紧接着评审会议之后是回顾会,会上总结当前Sprint中团队的合作情况并为后续Sprint寻找可改进的地方。 计划会 Sprint开始时,团队与项目负责人共同制定下个Sprint的计划,这需要两个会议:Sprint优先级会议和Sprint计划会议。其中优先级会议需要准备产品Backlog、用户故事,并识别潜在的Sprint目标,而计划会议需要构建当前Sprint的Backlog,以确实际开发任务。 优先级会议 Sprint优先级会议的目的是挑出产品Backlog上优先级高的条目,并选择潜在的Sprint目标。我们在产品需求池通过属性来配置任务的优先级。 (图:任务的优先级设置) 在排序之后,PO和团队便可以挑选出高优先级的需求功能作为Sprint的目标。如果高优先级功能实在太多,无法在一个Sprint中完成,这些功能就要分解成更小、更适宜在同一Sprint中完成的小功能,然后放入已创建好的Sprint中。 (图:一个Sprint中的需求功能) 计划会议 在确定当前Sprint的目标需求后,团队从每个需求中分解出任务条目以构成Sprint的Backlog,这是在Sprint计划会议上面进行的,这个会议的参与者包括PO、Scrum Master以及团队中的每个人,和可以帮团队更好预估工作量的各领域专家。 (图:构建一个Sprint Backlog流程) 大家需要在会上讨论每个需求的设计与实现,最好的预估工作量的方法是检查团队过去Sprint中的工作完成情况,比如团队在近期的几个Sprint中完成了平均400小时的工作量,他们就有把握承诺在下个Sprint中完成同样多的工作量。除此之外,一个Sprint是否包括节假日、是否有重要员工离职以及其他影响 (比如是否在开发需要试错的新模块)等等因素也需要考虑进来,最终形成一个可按时交付的Sprint Backlog。 https://ones-ai.gitbooks.io/ones-ai/content/31-si-ge-gai-nian/43-gui-hua-die-dai.html

Created 14146-09-14 · Updated 14146-09-14 · 1 min · 18 words · -