Scrum敏捷项目管理知识.docx
《Scrum敏捷项目管理知识.docx》由会员分享,可在线阅读,更多相关《Scrum敏捷项目管理知识.docx(32页珍藏版)》请在冰豆网上搜索。
Scrum敏捷项目管理知识
SCRUM敏捷管理知识
一、什么就是scrum
Scrum就是一个用于开发与维持复杂产品的框架,就是一个增量的、迭代的开发过程。
在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度就是2到4周(互联网产品研发可以使用1周的Sprint)。
在Scrum中,使用产品Backlog来管理产品的需求,产品backlog就是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。
Scrum团队总就是先开发对客户具有较高价值的需求。
在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。
挑选的需求在Sprint计划会议上经过讨论、分析与估算得到相应的任务列表,我们称它为Sprintbacklog。
在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。
Scrum起源于软件开发项目,但它适用于任何复杂的或就是创新性的项目。
Scrum流程如下图:
SCRUM框架包括3个角色、3个工件、5个活动、5个价值,具体说明如下:
3个角色
1.产品负责人(ProductOwner)
2.ScrumMaster
3.Scrum团队
3个工件
1.产品Backlog(ProductBacklog)
2.SprintBacklog
3.产品增量(Increment)
5个活动
1.产品Backlog梳理会议(ProductBacklogRefinement)
2.Sprint计划会议(SprintPlanningMeeting)
3.每日站会(DailyScrumMeeting)
4.Sprint评审会议(SprintReviewMeeting)
5.Sprint回顾会议(SprintRetrospectiveMeeting)
5个价值
1.承诺–愿意对目标做出承诺
2.专注–把您的心思与能力都用到您承诺的工作上去
3.开放–Scrum把项目中的一切开放给每个人瞧
4.尊重–每个人都有她独特的背景与经验
5.勇气–有勇气做出承诺,履行承诺,接受别人的尊重
SCRUM理论基础
Scrum以经验性过程控制理论(经验主义)做为理论基础的过程。
经验主义主张知识源于经验,以及基于已知的东西做决定。
Scrum采用迭代、增量的方法来优化可预见性并控制风险。
Scrum的三大支柱支撑起每个经验性过程控制的实现:
透明性、检验与适应。
Scrum的三大支柱如下:
第一:
透明性(Transparency)
透明度就是指,在软件开发过程的各个环节保持高度的可见性,影响交付成果的各个方面对于参与交付的所有人、管理生产结果的人保持透明。
管理生产成果的人不仅要能够瞧到过程的这些方面,而且必须理解她们瞧到的内容。
也就就是说,当某个人在检验一个过程,并确信某一个任务已经完成时,这个完成必须等同于她们对完成的定义。
第二:
检验(Inspection)
开发过程中的各方面必须做到足够频繁地检验,确保能够及时发现过程中的重大偏差。
在确定检验频率时,需要考虑到检验会引起所有过程发生变化。
当规定的检验频率超出了过程检验所能容许的程度,那么就会出现问题。
幸运的就是,软件开发并不会出现这种情况。
另一个因素就就是检验工作成果人员的技能水平与积极性。
第三:
适应(Adaptation)
如果检验人员检验的时候发现过程中的一个或多个方面不满足验收标准,并且最终产品就是不合格的,那么便需要对过程或就是材料进行调整。
调整工作必须尽快实施,以减少进一步的偏差。
Scrum中通过三个活动进行检验与适应:
每日例会检验Sprint目标的进展,做出调整,从而优化次日的工作价值;Sprint评审与计划会议检验发布目标的进展,做出调整,从而优化下一个Sprint的工作价值;Sprint回顾会议就是用来回顾已经完成的Sprint,并且确定做出什么样的改善可以使接下来的Sprint更加高效、更加令人满意,并且工作更快乐。
二、SCRUM术语
Scrum:
Scrum无对应中文翻译
Agile:
敏捷
Lean:
精益
Iterative:
迭代式的
Iteration:
迭代
AgileManifesto:
敏捷宣言
Empirical:
经验性的
EmpiricalProcess:
经验性过程
Transparency:
透明性
InspectandAdapt:
检视与调整
Sprint:
原意为冲刺,Scrum中的Sprint无对应中文翻译,指一个迭代
SprintGoal:
Sprint目标
ProductOwner:
产品负责人简称PO
ScrumMaster:
简称SM,一般不翻译
DevelopmentTeam:
Scrum开发团队
ScrumTeam:
指PO,SM与开发团队
ScrumRoles:
Scrum角色,指PO,SM与开发团队
Emergent:
涌现的
ProductBacklog:
产品待办列表,指需求清单
SprintBacklog:
Sprint待办列表,指Sprint任务清单
SprintBurn-downChart:
Sprint燃尽图,团队用于做Sprint内的进展跟踪
ReleaseBurn-downChart:
发布燃尽图,产品负责人做发布进展跟踪
SprintPlanningMeeting:
Sprint计划会议
DailyScrumMeeting:
每日站会
SprintReviewMeeting:
Sprint评审会议
SprintRetrospectiveMeeting:
Sprint回顾会议
ProductBacklogRefinement:
产品待办列表梳理
ProductBacklogItem:
产品待办清单条目,简称PBI
UserStory:
用户故事,指一条需求
StoryPoint:
衡量用户故事的工作量大小的计量单位
Velocity:
团队速度
SprintTask:
实现一条需求需要做的一个技术任务
DefinitionofDone:
DoD,完成的定义
Stakeholders:
干系人
Backlog:
待办列表
Artifact:
工件
Estimation:
估算
Collaboration:
协作
ScalingScrum:
大规模Scrum
三、SCRUM起源
Scrum的原始含义
Scrum原始含义就是指英式橄榄球次要犯规时在犯规地点对阵争球。
争球双方各有8个队员参与,各方出3名前锋队员,并肩各站成一横排,面对面躬身互相顶肩,中间形成一条通道,其她前锋队员分别站在后面,后排队员用肩顶住前锋队员的臀部,组成3、2、3或3、4、1阵形。
然后,由犯规队的对方队员在对阵一侧1码外,用双手低手将球抛入通道,不得有利于本队。
当球抛入通道时,前排的3对前锋队员互相抗挤,争相踢球给本方前卫或后卫队员,前卫与后卫队员必须等候前锋将球踢回后,方可移动。
1986Scrum这个词汇首次应用于产品开发
1986年,竹内弘高与野中郁次郎在NewNewProductDevelopmentGame文章首次提到将Scrum应用与产品开发,她们指出:
传统的“接力式”的开发模式已经不能满足快速灵活的市场需求,而整体或“橄榄球式”的方法——团队作为一个整体前进,在团队的内部传球并保持前进,这也许可以更好的满足当前激烈的市场竞争。
1993年JeffSutherland首次将Scrum用于软件开发
敏捷思想深受日本工业界最佳实践的影响,尤其就是丰田与本田公司推行的精益原则,以及竹内弘高与野中郁次郎开发的知识管理策略。
受到以上思想的影响,以及对世界范围内软件项目的研究,JeffSutherland在1993年首次在Easel公司定义了用于了软件开发行业的Scrum流程,并开始实施。
1995年JeffSutherland与KenSchwaber规范化了Scrum框架,并在OOPSLA95上公开发布。
2001年敏捷宣言及原则发布、敏捷联盟成立,Scrum就是其中一种敏捷方法。
2001年,KenSchwaber与MikeBeedle推出第一本Scrum书籍《Scrum敏捷软件开发》。
2002年KenSchwaber与MikeCohn共同创办了Scrum联盟。
四、经验性过程
软件开发就是一个复杂的活动,在软件产品开发的过程中不仅存在着需求的不确定性,也存在着技术的不确定性,再加上参与软件开发的主体通常就是由多人组成的软件开发团队,加上人的因素,就让整个软件开发的活动变得非常复杂。
如下图所示,软件开发活动通常处在下图的很复杂的区域。
图-01
为了管理软件开发的活动,我们会引入过程控制来管理它。
过程控制通常有两种方式,第一种方式就是预定义的过程,第二种方式就是经验性过程。
我们所熟知的就是预定义的过程,它通常就是使用已知的方法解决已知的问题。
制造业的生产线就就是典型的预定义过程,例如生产饼干、啤酒、汽车的生产线等。
预定义的过程的特点就是给予固定的输入,得到固定的输出,过程可重复。
它的优势在于可以大规模批量生产。
预定义过程的缺点在于一旦过程定义出现错误,或产品设计上存在瑕疵,会造成比较大的损失。
图-02
如果我们期望解决的问题比较复杂,并且存在着较大的不确定性的时候,我们需要使用经验性过程。
经验性过程的特点就是过程就是不能够完全预先定义好,结果就是不可预知的,生产过程就是不可重复的。
比如研究一项新技术,下一盘棋,踢一场球赛,在过程运行当中,我们需要通过不断的获得真实的反馈,然后进行适应与调整,使得过程能够产出我们需要的结果。
“在过程运行机制相当简单易懂的情况下,典型的做法就是采用预定义的建模方式。
如果过程复杂程度超出预定义方式的能力范围,便应用经验性方式。
”
——B、A、OgunnaikeandW、H、Ray
《过程动态学、建模与控制》
软件产品的研发通常存在多很多的不确定性,并且生产的过程非常的复杂,所以更适合使用经验性过程来管理。
Scrum以经验性过程控制理论做为理论基础的过程。
Scrum采用迭代、增量的方法来优化可预见性并控制风险。
Scrum过程框架的基石包括如下三个方面:
第一:
透明性(Transparency)
透明度就是指,在软件开发过程的各个环节保持高度的可见性,影响交付成果的各个方面对于参与交付的所有人、管理生产结果的人保持透明。
管理生产成果的人不仅要能够瞧到过程的这些方面,而且必须理解她们瞧到的内容。
也就就是说,当某个人在检验一个过程,并确信某一个任务已经完成时,这个完成必须等同于她们对完成的定义。
第二:
检验(Inspection)
开发过程中的各方面必须做到足够频繁地检验,确保能够及时发现过程中的重大偏差。
在确定检验频率时,需要考虑到检验会引起所有过程发生变化。
当规定的检验频率超出了过程检验所能容许的程度,那么就会出现问题。
幸运的就是,软件开发并不会出现这种情况。
另一个因素就就是检验工作成果人员的技能水平与积极性。
第三:
适应(Adaptation)
如果检验人员检验的时候发现过程中的一个或多个方面不满足验收标准,并且最终产品就是不合格的,那么便需要对过程或就是材料进行调整。
调整工作必须尽快实施,以减少进一步的偏差。
Scrum中通过三个活动进行检验与适应:
每日例会检验Sprint目标的进展,做出调整,从而优化次日的工作价值;Sprint评审与计划会议检验发布目标的进展,做出调整,从而优化下一个Sprint的工作价值;Sprint回顾会议就是用来回顾已经完成的Sprint,并且确定做出什么样的改善可以使接下来的Sprint更加高效、更加令人满意,并且工作更快乐。
五、SCRUM团队的三个角色
Scrum团队中包括三个角色,她们分别就是产品负责人、开发团队与ScrumMaster。
Scrum团队就是自组织、跨职能的完整团队。
自组织团队决定如何最好地完成她们