zoukankan      html  css  js  c++  java
  • SCRUM方法(转)

    这些天看到一本书《Agile Project Management with Scrum》,感觉很不错,于是在网上找了些相关的资料。

    SCRUM方法如下:

    由Ken Schwaber和 Jeff Sutherland 提出,旨在寻求充分发挥面向对象和构件技术的开发方法,是对迭代式面向对象方法的改进,名称来自英式橄榄球(在比赛中每个队员都应时刻保持对场上全局的判 断,然后通过集体行动,奋力实现同一目标──胜利)。SCRUM方法最初实践于Easel公司(1993年),现已被数十家公司数百个项目开发中应用,适 用于需求难以预测的复杂商务应用产品的开发[11]。SCRUM提出的SCRUM Meeting、Sprint、Backlog、SCRUM Master、SCRUM Team、Demo等模式已被PLOP作为组织和过程模式(Organizational and Process Pattern)的标准[12]。
    SCRUM将工业过程控制中的概念应用到软件开发中来,认为软件开发过程更多是经验性过程(Empirical Process),而不是确定性过程(Defined Process)。确定性过程是可明确描述的、可预测的过程,因而可重复(Repeatable)执行并能产生预期的结果,并能通过科学理论对其最优化。 经验性过程与之相反,应作为一个黑箱(Black box)来处理,通过对黑箱的输入输出不断进行度量,在此基础上,结合经验判断对黑箱进行调控,使其不越出设定的边界,从而产生满意的输出。SCRUM方 法将传统开发中的分析、设计、实施视为一个黑箱,认为应加强黑箱内部的混沌性,使项目组工作在混沌的边沿,充分发挥人的创造力。如将经验性过程按确定性过 程来处理(如瀑布模型),必将使过程缺乏适应力。
    3.2.1 SCRUM方法的开发过程
    包括三个过程:
    (1) 计划和体系结构设计(确定性过程)
    将Backlog(急待完成的一系列任务,包括:未细化的产品功能要求、Bugs、缺陷、用户提出的改进、具竞争力的功能及技术升级等)按优先级排序形成Backlog 列表,根据该表和风险评估制订产品交付基线。
    建 立系统体系结构(如为已有系统改进,则只作有限分析、调整),将Backlog项按高内聚低耦合的原则分解为一系列问题包(Packets,每个 Packet是一组对象或构件的集合) ,依据同样原则相应划分若干个开发小组(SCRUM 小组),分配各小组合适的Backlog项或问题包。建立开发运行环境。
    (2) Sprint(经验性过程)
    该过程由若干个迭代的冲 刺(Sprint) 活动组成,直至风险评估认为产品可交付为止。一个Sprint是在限定时间段内(Sprint周期,通常为1~6周,可在前一个Sprint结束时调整) 的一系列开发活动(包括分析、设计、编码、测试等),每个SCRUM小组并行开发且必须步调一致(在一个Sprint结束后,均须完成所分配的 Backlog项并有可执行的产出)。
    每个Sprint包含以下活动:
    l 开发。对分配的Backlog工作进行分析,将所需改动(changes)映射到各packets,打开packets,进行领域分析,然后设计、开发、实施、测试、文档化这些改动。
    l 打包(Wrap)。封装packets,产生一个满足Backlog需求的可执行版本。
    l 评审(Review)。所有的SCRUM小组一起开会,提交各自的工作并演示(Demo),然后提出和解决问题(Issue)及难点(problem), 增加新的Backlog项;发布、审查或调整产品的标准规范;进行风险评估并提出合适的对策;确定下一个Sprint的工作内容和结束时间。
    l 调整(Adjust)。根据评审会汇集的信息,对受影响的Packets进行适当调整和巩固。
    (3) 交付和巩固(确定性过程)
    一旦根据风险评估结果认为可交付产品时,即进入该阶段。该阶段的活动包括:组装,系统测试和回归测试(Regression),准备培训材料,完成最终文档。
    SCRUM过程认为一个产品的开发将一直持续下去,除非经风险评估后认为应停止。产品交付后的巩固活动类似于传统方法中的维护和改善,目的在于整理Sprint期压力下忽略的工作,为下一阶段的开发做准备,以便轻装上阵。
    3.2.2 SCRUM对过程的管理:
    (1) SCRUM的控制手段。
    SCRUM提出了八个控制项(Controls)用于开发过程的调控,其中风险控制是首要的手段。
    l Backlog。
    l 对象/构件。
    l Packets。
    l 变动(Changes)。实施一个Backlog项时,对相应Packet的改动。
    l 难点(Problems)。实施一个变动时所必须解决的技术难点。
    l 问题(Issues)。涉及到整个项目或在Backlog项分解到Packet之前须解决的问题。
    l 措施(Solutions)。对问题或难点的解决,通常会导致变动。
    l 风险(Risks)。影响项目成功的风险,应持续跟踪评估并相应做出调整。风险评估的结果将影响其他所有控制项。SCRUM定义了六个概念性变量来用于风险评估:用户需求,时间压力,竞争,质量,远见(vision)和可用资源。
    在SCRUM的各个阶段都使用这些控制项来评估和权衡,管理人员侧重于以此管理Backlog,开发组用以处理变动和难点。所有人员一起来管理问题、风险和措施。
    根 据对控制项特别是风险的不断度量评估和权衡,一方面,计划和进度(在每个Sprint结束时)不断相应调整,保证实现产品的商务目标;另一方面,对开发中 的工作任务Backlog动态地进行优先级排序,开发组总是先开发优先级最高的Backlog项,这样就保证了资源的最合理使用。另外,SCRUM强调度 量(采用标准功能点度量方法)的重要性,通过对每个Sprint中生产率等的度量,计划和进度将越来越趋于准确。
    (2) 项目组织。
    项目组由全职开发人员及与该交付产品有关的市场人员、销售人员、用户等组成。设以下小组:
    l 项目管理组。由产品经理领衔,包括总设计师,各SCRUM小组组长,市场、销售的高级职员及典型用户等。
    l 若干个SCRUM小组。各小组由组长(SCRUM Master)领衔。每个小组都是跨专业的(通常包括开发人员,文档人员,质量控制人员或用户代表等),通常为3~7人,以使小组内有充分的交流。小组的 划分最好是功能导向的(按所分配的问题包或Backlog),也可是系统层次导向(按体系结构中的分层)。.
    在项目组人数增大时,可在管理组之上再设管理组(SCRUM of SCRUM),从而使SCRUM方法的应用到大项目中。
    (3) Sprint期间的调控。
    在Sprint期间,应使各SCRUM小组尽量避免外界的干扰(不可将新的Backlog任务加进来,组内产生的Backlog可放到整个项目的Backlog列表中,也可在本次Sprint中解决),使小组成员专心于目前的工作,使他们工作在混沌的边沿。
    为避免项目组在Sprint期间不陷入混乱,SCRUM采取两个措施:
    l SCRUM会议(SCRUM Meeting)。对小组行为进行监控和刺激。会议在Sprint期间每天在同一地点举行,由SCRUM Master主持。会议上,SCRUM Master对每个小组成员提三个问题:
    1) 昨天的工作进展如何。
    2) 有否遇到困难和障碍。
    3) 今天的工作打算。
    会后SCRUM Master集中精力排除障碍,小组成员则进行当天的开发。
    l Sprint评审会议。评审后根据对每人的工作成绩,进行相应的激励。
    3.2.3 SCRUM方法的实践效果和发展方向:
    SCRUM 在实践中大大提高了生产率(据软件生产率组织的Capers Jones称可提高6倍),在实施中有一个"间断平衡"(Punctuated equilibrium)现象(类似于自然界中物种的进化,在经过一段相对平衡的各自独立、并行的发展期后,在交汇处发生变异),即在经过紧张、并行的 Sprint开发后,在Sprint评审时,软件产品产生较剧烈的变化。SCRUM方法的最近动向是设法借鉴XP方法。

  • 相关阅读:
    通过HttpListener实现简单的Http服务
    WCF心跳判断服务端及客户端是否掉线并实现重连接
    NHibernate初学六之关联多对多关系
    NHibernate初学五之关联一对多关系
    EXTJS 4.2 资料 跨域的问题
    EXTJS 4.2 资料 控件之Grid 那些事
    EXTJS 3.0 资料 控件之 GridPanel属性与方法大全
    EXTJS 3.0 资料 控件之 Toolbar 两行的用法
    EXTJS 3.0 资料 控件之 combo 用法
    EXTJS 4.2 资料 控件之 Store 用法
  • 原文地址:https://www.cnblogs.com/end/p/1165846.html
Copyright © 2011-2022 走看看