APP下载

基于Scrum方法的敏捷项目管理

2010-06-01武汉大学经济与管理学院湖北武汉430072

当代经济 2010年2期
关键词:项目管理成员阶段

○袁 荃 (武汉大学经济与管理学院 湖北 武汉 430072)

一、敏捷管理理论

1、敏捷管理的定义

敏捷即灵活性,是动态的、适应于具体情况、迎合变化和自我完善的。敏捷项目管理是应对经常变化的、具有不确定性的软件项目的管理方法。敏捷是一种态度而不是一个流程,是一种氛围而不是方法。敏捷项目管理中最重要的一个术语就是创新。实施敏捷项目管理过程中项目管理者要注意:调整团队自身来适应变化,致力于产品,和客户进行协调,注重沟通。

2、敏捷管理的开发方法

常见的敏捷软件方法包括:Crystal、ASD(Adaptive Software Development)、Scrum、FDD (Feature Driven Development)、XP(Extreme Programming)、RUP(Rational unified Process)等,它们都具有强调灵活、阶段迭代、反馈和逐步逼近目标的特性,本文中将重点介绍Scrum方法。

二、Scrum开发方法

Scrum(英式橄榄球争球队),软件开发模型是敏捷开发的一种,在最近的一两年内逐渐流行起来。正如Schwaber所言,Scrum is an agile,lightweight process that can be used to manage and control software and product development using iterative,incremental practices。Scrum将软件开发团队比拟成橄榄球队,有明确的最高目标,熟悉开发流程中所需具备的最佳典范与技术,具有高度自主权,紧密地沟通合作,以高度弹性解决各种挑战,确保每天、每个阶段都朝目标有明确的推进。下面介绍Scrum方法的原理。

Scrum team。Scrum team指整个项目小组,不仅仅包括全职开发人员,也包括了发行软件会影响到的外部人员,比如市场营销人员和顾客。

Backlog。Backlog是一种任务列表,包括Product Backlog和Sprint Backlog两种,是指导Scrum开发方向的指针。Sprint Backlog是一个Scrum团队计划将要在当前Sprint中完成的所有功能列表。Sprint Backlog实际上是Product Backlog的一个子集,在Product Backlog的纲要性指导下,Sprint Backlog不断发展并且充实整个项目的Product Backlog,使之趋于完善。比如:未细化的产品功能要求、Bugs、缺陷、用户提出的改进、具竞争力的功能及技术升级等,按优先级定义出来,这些任务可能不是完整的,甚至可能随时会更改或添加。

Sprint(冲刺)。Scrum开发过程由一系列迭代的Sprint过程组成,一个Sprint过程就是一个冲刺过程,多个Sprint过程顺序进行,直至风险评估认为产品可交付为止。一个sprint是在限定时间段内的一系列开发活动,包括分析、设计、编码、测试等。通常为30天的迭代时间,把Backlog中的每一项安排在Sprint中,由团队估算出所需要的时间(按小时记)。每一次Sprint之后,一定要有可以交付使用的功能。每一次Sprint之后要回顾,团队按照既定的Sprint Backlog目标来演示完成的内容。

Scrum meeting。Scrum meeting是Scrum中项目管理的有效手段,分为两种:Sprint meeting和Daily meeting。Sprint meeting是在下一个Sprint开始之前,即在当前sprint即将结束之时举行的,Sprint meeting讨论并决定下一个sprint的sprint Backlog,会议举行的时间周期随Sprint的周期而定。Daily meeting也称为Daily Scrum,顾名思义就是Scrum期间每天举行的例会,这也是与传统方式最大的区别,每天15-20分钟的Scrum会议,通常在每天的同一时间和同一个房间内举行。Scrum团队所有人都参加,在这个15分钟的会议上,Scrum Master会询问每个成员三个问题。比如:自上次Scrum会议后的1天里你做了什么,当前任务完成的百分比?你在工作中遇到了哪些困难,需要其他团队成员提供什么样的帮助?从现在到下次Scrum会议的1天时间里你准备做什么?每个成员在Backlog条目上所花费的时间会被记录到Sprint backlog中,Scrum Master在会上对存在的问题提出即时的解决方案或指导,使团队不断向着目标前进。和传统软件开发方法中依靠每周数小时的例会来监督项目的进度不同,通过Scrum Meeting来管理项目,这种方法更加简单和直观,更加人性化,容易及时发现和纠正问题。从而有利于在宏观上控制项目,保证项目朝健康、成功的方向发展。

通过Sprint Backlog的分析,可以了解Backlog的进度,尽早的了解所发生的问题。

管理者不再是项目或者团队的“老板”,而是帮助团队解决问题的协调者或是助手。

每一次Sprint之后要review,团队按照既定的SprintBacklog目标来演示完成的内容。

总体来说,Scrum就是一个使用迭代递增模型的快捷轻便的实践过程,它结合了极限编程和RUP的优点,是一种非常有助于提高软件生产效率的敏捷开发方法。

三、实例研究

下面,让我们来剖析Scrum方法在某土地利用系统软件项目内部开发中实际运作的例子。该系统以土地利用现状调查为基础,实现图文一体化的远程用地报批与开发复垦整理业务信息管理。系统要实现土地利用规划信息的图形管理、属性管理和图文互查功能。由于本项目的特殊性,为内部使用软件,其产品需求确定,客户方为土地局及下属地方土地局内部系统单位,需满足可提供资料、数据全面且随时准确调用的要求等,遵循可操作性、安全性、可兼容性以及图数一体性的原则。

1、Scrum的组织结构

上述提及的Scrum方法的流程,实际上是理论上的一个大致划分。由于Scrum方法有所有敏捷开发方法固有的灵活性特征,它在实际的操作过程中可以根据不同的需求进行裁减,比如,阶段的划分、小组人员的规模、项目组的组织结构等。Scrum在实际操作中的关键是要保持其精髓,即相对短的Sprint周期、每日的Scrum会议和适时的回顾。在图1中给出了土地利用系统开发流程的详细划分。

图1 项目开发过程

2、Sprint周期管理程序

在一个Sprint周期里,各成员都有各自相对独立的进程管理和日志。这一阶段的Sprint管理过程如下。Scrum成员:小规模的开发组和一个负责人。阶段目标:通常相对明确,即可以在收尾阶段进行演示。几个重要日期:开始,中间审阅,收尾演示。任务列表:把阶段目标细分成小的独立任务,然后分配给小组成员,按照任务的分配完成情况分别归类到“未开始”,“已分配”,“已完成”的类别中。

3、Scrum 实施

(1)目前的团队8人,团队成员主要是项目经理(ProjectManager),架构师(Architect),开发人员(Developer),测试人员(Tester),以及发布经理(Release manager)。项目背景提供了可实践Scrum的良好土壤。

(2)小版本迭代。从项目启动开始,采用最多不超过3周的阶段计划,各个阶段根据情况发布系统内部版本。

(3)每次阶段计划的时候。功能要求、Bugs、缺陷、用户提出的改进、具竞争力的功能及技术升级等,先从各成员处收集汇总成为项目任务,并以半天为单位,预估工作量;集体讨论确定优先级,然后排工作量,优先级低的任务被去除;期间我们通过“现场开发”的方式,尽量让客户每天能看到系统,提出修改意见;实践证明,这种开发效率的确要高很多。

(4)每次阶段计划末。Sprint阶段后,项目经理通常会召开一个有所有项目组成员参加的阶段性演示会,用以展示这一阶段的成果,让大家知道该阶段顺利结束。并统计上个阶段每个人任务完成情况、团队阶段任务完成情况、成员工作自我评估满意度等,并在一个较大周期后绘制统计曲线。这个曲线一方面可作为项目绩效参考;一方面也能够清楚反映项目计划、进度控制中的各种问题,能看到相对短期的阶段成果,通常对项目组成员的士气会有很大鼓舞。

(5)每周都进行多次进度沟通。项目组每天早上会开一个10分钟的面对面Scrum例会,彼此交流项目的进展情况,把已经完成的任务更新到“已完成任务”列表里,从“未开始”列表里选择新的任务更新到“已分配”列表里。在每周五的例会上,除了正常的工作沟通,还会进行心情指数、压力指数调查,并安排相应的娱乐活动,关注每个成员的情绪状态和满意度;同时在周例会中还加入了30分钟技术交流时间,轮流有人自发就本周工作中的体会或经验进行简短技术交流,交流完毕,资料要求进入知识库。

(6)核心任务或项目中的关键路径,采取更紧凑的日进度沟通。通常是对里程碑任务和新加入成员,采取日进度沟通。形式上不是“站立式会议”,多以面对面随意聊天、即时消息、个人或团队工作日志进行。

(7)人员管理为核心。团队成员角色识别、个性搭配、技术能力搭配、团队成员技术发展目标和能力发展目标,及时面谈沟通等。对于项目经理,确定目标的时候,一定要从小处入手:如某一技术弱项快速提高,达到中等层次;知识面拓宽;如角色方面,发展为技术管理角色、发展为集成员和质量保证角色、发展为管理角色等。这种发展目标实实在在,每个人都能很快看到自己的进步。

(8)持续改进。一般在3-5个阶段过后,往往会进入项目下——“新进程”,这个时候把前面所有的进度统计、成员满意度统计、问题跟踪统计、技术问题等资料统统收集起来,进行分析总结,并确定下一阶段的改进措施和工作目标。

Scrum作为敏捷方法在软件开发中的重要实践,以其相对灵活的组织体系、及时的互动反馈、以目标为导向的扁平管理、有效的成员参与度等特色,能够很大程度地解决传统开放方法所面临的一些困境。Scrum是一个极好的敏捷方法用以释放软件产品的迅速和正确的。它给所有团队成员新的管理责任,过程项目管理是有形和可控的。Scrum主管不需要写冗长的文件,制订不切实际的项目计划。队员们也由于这样的自我组织和自我管理而变得较为活跃。不但软件顺利开发,同时也让整个开发过程充满轻松和乐趣。

[1]Jim Highsinith:Agile Project Management[M].Qinghua Publishing House,2005.

[2]SCRUM Home Page[DB/OL].http://www.controlchaos.com,accessed May 19th,2005.

[3]Y.Monden:ToyotaProduction System[Z].2nd Ed,Industrial Engineering and Management Press,Norcross,GA,1993.

[4]Hohmann、Luke:Beyond SoftwareArchitecture:Creating and Sustaining Winning Solutions[C].Boston:Addison-W esley,2003.

[5]Cockburn、Alistair:Writing Efective Use Cases[C].Boston:Addison-Wesley,2001.

[6]Ambler、Scott:Agile Modeling:Efective Practices for Extreme Programming and the Unified Report 4[R].2001(4).

[7]Rueping、Andreas:Agile Documentation:A Pattern Guide to Producing Lightweight Documents for Software Projects[C].New York:Johi1 Wiley&Sons,2003.

猜你喜欢

项目管理成员阶段
主编及编委会成员简介
装配式EPC总承包项目管理
主编及编委会成员简介
主编及编委会成员简介
主编及编委会成员简介
关于基础教育阶段实验教学的几点看法
基于大数据分析的集合式EPC总承包项目管理软件技术的应用
项目管理在科研项目管理中的应用
在学前教育阶段,提前抢跑,只能跑得快一时,却跑不快一生。
未来如何更高效地进行工程项目管理