敏捷开发SCM
敏捷的目标:自组织,提高交付质量和交付速度;敏捷中实现拥抱变化是通过迭代增量实现的;所谓的迭代是循环,循环一种机制和模式,增量则是价值的增加,迭代增量,就是通过每次工作流程的循环实现业务价值的提升;那么关于迭代,其实是两个核心部分,一个时间,在scrum中每个迭代都是称之为一个sprint,即使冲刺的意思,scurm本身是棒球的一个术语,就是"争球",我理解代表的是一场"比赛",每个sprint其实是一次次的冲刺,在橄榄球比赛中,其实都是从一次争球开始,然后冲刺向目标(对方的球门);所以scurm其实本质应该是一种节奏非常快,而且目标明确的一种项目管理框架。另外一个是流程,scrum有一些会议,这些会议在迭代的各个阶段,并起着不同的作用。
这里强调一下,scrum是一种框架,而不是具体的解决方案,scrum有建议的工具和手段,但是都不是强制的。
所谓的Scrum是一种框架,并不是MVC,Spring之类的框架,其实是一种抽象的,思想级别的框架,什么思想?拥抱变化,团队自组织。自组织可是一个高大上的话题,其实落地的话就是团队成员关注不是自己的Task,而是这个用户故事,这里我们假设的是用户故事并不是有一个人完成,而是有团队中几个人合作完成,比如有前端,后端,BA,测试合作完成;就是你既然负责了一个Task,那么你关心的不是这个Task本身,而是整个Story,或者说是条目(Item),自组织是一种自然的组织形式,但是需要有人来指导,我们人类天生就是组织化动物,但是如果组织得好,组织的有序高效,这个就需要一个Scrum Master(SM)的角色来做做引导;SM这个角色本身是没有权利(人事权,财务权),甚至不是团队中成员,SM是一个脱离于团队存在,他的定位是PO关注的业务价值而不是Item。或者说scrum其实是基于一种Y人性,同时相信人的责任感的一种管理框架。这个也是"自组织"能够形成的必要条件。
在SCM中有三种角色:Scurm Master,Product Owner以及团队;Product Owner是输入方,主要负责定义条目(story),安排优先级,然后输入给团队,团队通过自组织在一个迭代中完成目标条目;Scrum则"守望"这团队,注意,并不参与,而是远远的观望,只有当组织的方向有偏差的时候, 比如高优先级的任务没有被关注到,某些风险被忽视,再或者开会的时候,议题的方向跑偏了,这些时候SM会出来引导一下大家的方向和关注点,这里不是Leader觉得中决策,而是引导,比如通过提出问题等让团队自己来决策以及提出解决方案。所以SM的负责的其实是团队的运作机制和运作效率,他负责的是团队是否实现了一种高效的自组织,这个有别于经典项目管理理论中的项目经理或者Team Leader角色,参与的方向是不同的,后者是决策角色。
下面想一下Scrum的流程,主要是几个会议,scrum通过会议:
项目计划会议,计划会议是由两部分组成(Part1,Part2),第一个部分主要解决的是"what"问题,这个会议的之前需要做的功课是需要把Product Backlog List以及优先级整理出来这个是PO做得事情,在会会议上面,PO将会对需求进行讲解,然后大家讨论需求,并对故事进行拆分,注意这个拆分是指业务层面的拆分,和技术无关;第二部分是"how"的问题,就是怎么去实现,这里牵涉到了将story拆成task;在part2中,有一个工具是扑克牌点数法,这个工具很好,这个工具本身是用来对用户故事进行估算的,其实估算结果并不重要,重要的是这个工具可以暴露出团队成员对于需求理解的不一致,大家可以进行沟通和交流。
这里介绍一下Scrum有两个List,分别是Produt Backlog List(PBL),另外一个是Sprint Backlog List(SBL),前者是一个所有的待实现的用户故事,并且包含了优先级,后者则是本轮迭代需要完成的任务列表。
每日立会,每日立会为了让团队行程一种关注Item(story),不要从团队成员的维度来过那三个问题(昨天,问题,今天),最好是以着用户故事的为单位来过每日立会。
项目评审会议,参与人包括PO,客户以及团队还有scrum,主要是对于本轮迭代内容进行一个评审,主要是从业务的角度来进行的。
项目回顾会议,参与人团队以及SM,大家主要是针对迭代流程,技术层面进行一下回顾,商量一下得失。每个人都回顾一下自己在本轮迭代里面都做了什么;
敏捷开发SCM的更多相关文章
- CI/CD持续集成/持续部署 敏捷开发
敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它 ...
- TFS 2015 敏捷开发实践 – 在Kanban上运行一个Sprint
前言:在 上一篇 TFS2015敏捷开发实践 中,我们给大家介绍了TFS2015中看板的基本使用和功能,这一篇中我们来看一个具体的场景,如何使用看板来运行一个sprint.Sprint是Scrum对迭 ...
- TFS 2015 敏捷开发实践 – 看板的使用
看板在现代应用开发过程中使用非常广泛,不管是使用传统的瀑布式开发还是敏捷开发,都可以使用看板管理.因为看板拥有简单的管理方法,直观的显示方式,所以很多软件开发团队选择使用看板进行软件开发管理.本文不在 ...
- 小谈Scrum敏捷开发流程
一晃眼,有两年没有写博客了,回顾前两年,各种奔波,各种忙碌,也有不少的收获.从今天开始,我要把这些收获都分享在这里. 其实这两年,对我影响最大的是开发流程.总所周知,一个好的开发流程,对于项目的进行, ...
- UDAD 用户故事驱动的敏捷开发 – 演讲实录
敏捷发展到今天已经在软件行业得到了广泛认可,但大多数敏捷方法都是为了解决某一特定问题而总结出来的特定方法或实践,一直缺乏一个可以将整个开发过程串接起来的成体系的方法.用户故事驱动的敏捷开发(User ...
- 传统瀑布式&敏捷开发
---传统瀑布式 瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求.分析.设计.编码.测试的步骤顺序进行. 步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等. 瀑布式 ...
- 用户故事驱动的敏捷开发 – 2. 创建backlog
本系列的第一篇[用户故事驱动的敏捷开发 – 1. 规划篇]跟大家分享了如何使用用户故事来帮助团队创建需求的过程,在这一篇中,我们来看看如何使用这些用户故事和功能点形成产品backlog.产品backl ...
- 20145205 《Java程序设计》实验报告三:敏捷开发与XP实践
开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软件工程包括下列领域:软 ...
- 传统开发模型vs敏捷开发模型——过程模型的变革
一.概念框架 在了解一个新概念的时候,最好的方法就是把它插入到原有的概念体系中.在不仅有助于对概念的记忆,更利于深刻地认识概念的本质.精髓.下图说明了"敏捷开发"在软件工程理论体系 ...
随机推荐
- ionic2中使用datetime组件如何默认设置当前时间?
HTML: <ion-item> <span item-left style="min-height: 27px;">存款日期/时间</span> ...
- java知识点总结--java数据类型
java中的两大数据类型 1.基本数据类型:也称作内置类型,java语言本身提供的基本数据类型是其他类型(包括java核心类和用户自定义类)的基础 2.引用数据类型:java语言根据基本类型扩展数的其 ...
- .Net Core+Angular6 学习 第一部分(创建web api)
. 创建.net core web api 1.1 选择一个empty 模式,里面只有简单的2个class 1.2 配置web api 的路由. 1.2.1 打开Startup.cs,首先引用conf ...
- 安装Python mysqlclient出现“OSError: mysql_config not found”错误
问题: 使用Python3开发一个管理平台,用MySQL数据库存放元数据.使用pip安装mysqlclient模块时出现“OSError: mysql_config not ...
- arch xfce快捷键
<Alt>F1:xfce4-popup-applicationsmenu 打开右键菜单 <Alt>F2:xfrun4 打开应用程序运行窗口,同<Alt>F3差不多 ...
- 转自CSDN-详述 Java 中的别名现象
在任何编程语言中,赋值操作都是最常见的操作之一,Java 自然也不例外.赋值时,使用赋值操作符=,它的意思是:“将等号右边的值(右值),复制给左边的值(左值)”.右值可以是任何常数.变量或者表达式(只 ...
- Python帮助
我们可以很容易的通过Python解释器获取帮助.如果想知道一个对象(object)更多的信息,那么可以调用help(object)!另外还有一些有用的方法,dir(object)会显示该对象的大部分相 ...
- 使用C语言开发PHP扩展(转)
本篇文章给大家带来的内容是介绍如何使用C语言给PHP写扩展,,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.在php源码路径的ext文件夹下,新建一个extend_test.de ...
- WEBBASE篇: 第十一篇, JavaScript知识6
JavaScript 知识6 一, String 对象 1,分隔字符串, 函数: split(seperator) 作用: 将字符串,通过seperator 拆分成一个数组: eg: var msg= ...
- HDU - 5755:Gambler Bo (开关问题,%3意义下的高斯消元)
pro:给定N*M的矩阵,每次操作一个位置,它会增加2,周围4个位置会增加1.给定初始状态,求一种方案,使得最后的数都为0:(%3意义下. sol:(N*M)^3的复杂度的居然过了. ...