我行创新 | 基于CMMI3级的Scrum敏捷方法创新与实践
Posted 农业银行科技创新社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我行创新 | 基于CMMI3级的Scrum敏捷方法创新与实践相关的知识,希望对你有一定的参考价值。
文/应用开发五部 李壮志
CMMI模型和敏捷方法是我行软件开发中心在软件工程实施中最常用的两种开发模型和方法。在由应用开发五部主办,互联网金融研发部等部门协办的基于互联网金融平台的个人在线信贷系统项目项目实施过程中,项目组基于项目特点,探索出了一套基于CMMI3级的Scrum敏捷方法进行项目管理和开发的方法。该项目总工作量约90人月,属中型项目,该方法在项目实施过程中取得了比较理想的效果。
一、CMMI3级
CMMI 将能力成熟度分为 5 个级别: 初始级、已管理级、已定义级、量化管理级、优化级。其中CMMI3级——已定义级表示将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程可见。CMMI总共22个过程域(PA),项目可以不实行完整CMMI过程,而根据项目情况做相应的过程裁剪。CMMI 3级共有18个过程域(含CMMI2级7个)。
CMMI能建立起过程改进的目标与优先级,指导我们进行过程和质量改进,在实施过程中产生的文档提供了评价现有过程和做出改进的参照项。但CMMI模型通常采用传统的瀑布模式开发,如果开发后期增加新的需求,将对工程冲击较大;另外瀑布开发模式中,测试人员参与测试较晚,缺陷易于项目后期集中爆发,导致项目陷于被动。
二、敏捷方法Scrum
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。敏捷开发的核心思想是:以人为本,适应变化。敏捷开发只写必要的文档,或尽量少写文档,注重的是人与人之间面对面的交流。敏捷开发演变历程中出现了一些具有代表性的敏捷方法,有极限编程(XP)、Scrum、动态系统开发模型、自适应软件开发、Crystal水晶方法簇、特征点驱动开发等。在各种敏捷方法中,最常用的是XP和Scrum,XP从技术层面提供了具体开发过程的实现规则和实践过程,而Scrum则是更多地从项目管理的层面提供了实践规则和过程划分,不涉及具体开发方法、人员的有效沟通技巧等,实际中两者是结合一起应用。
Scrum是橄榄球运动的一个专业术语,表示“争球”的动作。在敏捷开发中,Scrum形容成员像打橄榄球一样你争我抢地完成项目开发。Scrum开发流程中包括三大角色,分别是产品负责人(Product Owner):主要负责确定产品功能和标准,指定软件的发布日期和交付内容,同时有权力接受或拒绝开发团队的工作成果;Scrum负责人(Scrum Master):主要负责整个Scrum流程在项目中的实施,以及清除客户和开发工作之间的沟通障碍,使客户可以直接驱动开发;开发团队(Scrum Team):主要负责软件产品在Scrum规定流程下进行迭代开发,人数控制在5到10人左右,成员可以采用任何工作方式达到迭代目标。Scrum实施流程如下:
1.由产品负责人按优先级确定产品需求列表;
2.Scrum 团队根据产品需求列表做工作量估算;
3.召开计划会议,挑选出一个用户故事(user story)作为本次迭代目标,把该用户故事细化形成迭代需求列表;
4.迭代需求列表由Scrum团队完成,每个成员将迭代需求列表再细化成可两天内完成的任务列表(见图一);
图一 任务列表看板
5.召开15分钟左右的每日站立会议(见图二),每人汇报昨天完成了什么,承诺今天要完成什么,之后更新迭代燃尽图;
图二 每日站立会议
6.做到每日集成,即每天都要有一个成功编译并且可以演示的版本;
7.当完成一次迭代,召开迭代演示会议,每个团队成员要演示自己完成的软件产品;
8.最后召开迭代回顾会议,轮流总结需改进之处,放入下一轮迭代产品需求中。
敏捷开发将庞大的需求功能分成若干迭代来完成,可以按一定周期频繁交付可工作的软件,也可以迎接和适应需求变更,使得开发和测试的压力分解到各个迭代过程中,不会在项目后期出现增加需求导致整个版本需重新大规模测试的情况。但是敏捷开发注重面对面交流、缺少文档、做完就扔,这也带来人员交流效果难以保证,无法高效控制软件产品开发过程,项目可重复性和可预测性低下等问题。
三、基于CMMI3级的Scrum敏捷方法
CMMI与敏捷方法都是为了解决软件生产过程中质量低下、进度延迟、预算超支等问题而产生的过程改进模型和方法实践,不同的是CMMI强调过程的可观测性,更适合应用于大中型项目;敏捷强调可观测的结果,更适合应用于中小型项目。那么对于中型项目,如果软件开发过程既能遵循CMMI规范,使项目具有可重复性和成本风险等可预测性的好处,又能符合敏捷以人为本、适应变化的特点,岂不更好?为此我们在项目实施过程中通过不断探索创新形成了一种基于CMMI3级的Scrum敏捷方法,该方法对照CMMI3级标准,分析了新方法中人员角色的映射关系、并按Scrum过程对CMMI3级过程域的支持程度,提出不同的解决方案,使得Scrum方法在支持CMMI3级标准的基础上仍不失敏捷性,更好地指导了项目开发。
CMMI体系软件项目一般有如下角色:项目经理、技术经理、软件开发人员、软件测试人员、软件质量保证人员、软件配置管理人员等。Scrum角色和CMMI角色映射关系如下表:
表一 Scrum角色与CMMI角色关系映射表
为使CMMI3与Scrum更好融合,项目组经过分析,在实施组织过程定义过程域中,对CMMI3级过程域进行了裁剪,针对本项目,不执行OT(组织培训管理)、SAM(供应商协议管理)和DAR(决策分析与解决)过程域。结合本项目实施过程中取得的经验,Scrum的过程对CMMI3级剩余15个过程域的支持情况分高中低三个等级,高度支持的有8个,包括PP(项目计划)、PMC(项目监督与控制)、IPM(集成项目管理)、REQM(需求管理)、TS(技术解决方案)、PI(产品集成)、VER(验证)、VAL(确认);中度支持的有3个,包括RSKM(风险管理)、RD(需求开发)、MA(测量与分析);低度支持的有4个,包括OPD(组织级过程定义)、OPF(组织级过程焦点)、CM(配置管理)、PPQA(过程和产品质量保证)。对于不同的支持程度,新Scrum敏捷方法使用不同策略实现对CMMI3级的支持,分别是:对于能高度支持CMMI3级过程域的Scrum过程,文档化Scrum过程;对于中度支持,改造Scrum过程实现高度支持;对于低度支持,添加项目角色支持过程域。
1.文档化Scrum过程
该方法主要针对Scrum过程高度支持的CMMI3级过程域。敏捷开发实际并不排斥文档,而是主张不要为了写文档而写文档,必要的文档可以大大增强项目的可重复性和可预见性。对于Scrum过程能高度支持的CMMI3过程域,项目组将这些过程域的管理类文档、记录表单进行裁剪和调整,在保证实用、简洁、有效的前提下编制管理文档、填写记录表单。下表标示了高度支持CMMI3过程域的Scrum过程以及需要在Scrum过程中形成的CMMI3级文档:
表二 高度支持CMMI3级标准的Scrum过程一览表
2.改造Scrum过程
该方法主要针对Scrum过程中度支持的CMMI3级过程域,这其中又以RSKM(风险管理)为主,对于RD(需求开发)、MA(测量与分析),使用Scrum现有过程。项目组提出风险注册的方法来实现Scrum敏捷方法对CMMI3级风险管理过程域的支持。具体实现如下:
1)在迭代计划会议中,开展头脑风暴,项目组成员结合上次迭代识别本次迭代风险,并确定风险源和制定风险应对计划,一同发布到任务看板中;
2)每日站立会议中,该任务负责人需汇报该风险是否已经采取应对措施、效果如何以及是否发现新风险,并将风险状态更新到任务看板中;
3)Scrum负责人及时更新《风险识别跟踪表》,方便在下次迭代中借鉴。
改造后的敏捷方法较好的实现了风险管理,并且未对敏捷方法的灵活性造成影响。
3.添加项目角色
该方法主要针对Scrum过程低度支持的CMMI3级过程域。针对CM(配置管理),项目组添加了配置管理员角色;针对PPQA(过程和产品质量保证)、OPD(组织级过程定义)、OPF(组织级过程焦点),添加了质量保证人员角色。
针对本项目,配置管理员的活动包括:制定配置管理计划、配置管理系统管理、基线管理活动等。在计划阶段,配置管理员与产品负责人按要求标识配置项和基线,建立并管理配置管理系统,并根据迭代计划会议内容编写《配置管理计划》。在实施阶段,配置管理员要对迭代内完成的配置项进行版本控制,同时为保证Scrum开发的灵活性,迭代内的产品由开发和测试人员自主管理版本,配置管理员定期审核;对于需求变更,Scrum负责人和业务人员不断沟通,逐步明确需求合理排序产品优先级,从而保证对需求变更做出快速响应,提高开发的敏捷性。
质量保证人员的活动包括:在计划阶段,质量保证人员与产品负责人按要求对CMMI3级过程进行剪裁,形成《过程裁剪表》。根据迭代计划会议内容编写质量保证计划,确定需审查的过程和产品。在迭代实施阶段,质量保证人员会同产品负责人按照质量保证计划,检查过程活动、产品,形成《代码检查报告》等。
对于中度支持和低度支持CMMI3级标准的Scrum过程在使用解决方案之后,也可以文档化。
表三 Scrum过程解决方案及输出文档一览表
四、结束语
敏捷方法已经逐渐被大家熟知,但就像敏捷自身演变出来的不同方法一样,针对不同的项目,敏捷也可以演变出不同的开发方法,我们须依据项目自身的特点,探寻出适合的开发方法,才能更好地指导项目开发。根据本项目多部门合作开发,项目中型规模的特点,笔者探寻出一套基于CMMI3级的Scrum敏捷方法进行项目管理和开发,新方法的运用,既使项目开发过程遵循CMMI3级规范,具有可重复性和可预测性的优点,又保留了敏捷方法以人为本、适应需求变化的特点,更好的指导了项目开发,从而保障了项目的成功实施。
作者简介:
李壮志,2009年进入中国农业银行软件开发中心应用开发五部工作,先后参加了信贷管理系统三期、统一授信管控平台等多个项目的研发工作,目前担任文章中项目的项目经理,具有较为丰富的项目研发和管理经验
以上是关于我行创新 | 基于CMMI3级的Scrum敏捷方法创新与实践的主要内容,如果未能解决你的问题,请参考以下文章