Scrum开发方法在用电信息采集系统中的实践探讨
2017-11-20张鸿鸣
张鸿鸣
摘要:敏捷开发是软件项目的一个概念框架,能够帮助开发团队迅速响应需求的变化并且能够很好地控制成本和风险。它是一种以人为核心、迭代、循序渐进的开发方法。Scrum是一个应用广泛的迭代增量过程进行软件开发的敏捷开发方法。国家电网在用电信息采集系统项目开发上采用了敏捷开发模式Scrum方法,有效提升了开发及管理效率。
关键词:敏捷开发;Scrum;用电信息采集管理系统
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)26-0240-03
Abstract: Agile development is a conceptual framework for software projects that can help the development team respond quickly to changing requirements and be able to control costs and risks well. It is a kind of human core, iterative, step by step development method. Scrum is an agile development method for software development using a wide range of iterative incremental processes. The national grid adopts the agile development model Scrum method in the development of the electricity information acquisition system project, which effectively improves the development and management efficiency.
Key words: agile development; Scrum; electricity information collection and management system
各类技术的革命、更新始终贯穿着计算机发展的进程,同时软件开发作为计算机技术飞速发展的关键技术也在迅速地发展着,越来越多的软件开发改进方法在涌现。大多数方法都被描绘成“使过程可控”,都“标志着重大成果性突破”,实则不然。与此同时,制度管理混乱、投入产出不成正比等情况也比比皆是。二十世紀初,业界的一些专家总结了软件开发过程中的一些能够有效加速开发速度、有效应对各种变化的原则和价值观,以解决软件开发过程中复杂、冗余的问题,这些原则和价值观就称为敏捷开发,这批专家自称敏捷联盟,并发布“敏捷宣言”。
1 敏捷开发理论
1.1 定义
敏捷开发是一种以人为核心的、迭代循序渐进的软件开发方法,也是软件项目开发的一个概念框架。敏捷开发通常将一个大项目细分成许多相互联系、也可独立运行的小项目,最大限度地降低开发过程中的风险系数。极限编程(XP)、Scrum、特征驱动开发、上下文驱动开发、动态系统开发方法、精益开发等是敏捷开发的几种常见的软件开发方法。
1.2 实施原因
敏捷开发为软件项目开发提供了良好的解决方案。国家电网用电信息采集系统引入敏捷开发的原因主要包括外部因素、内部因素和外围因素三个方面。
1) 外部因素。外部因素包括项目需求来源和项目干系人两个方面。以国家电网用电信息采集系统为例,需求来源包括省公司营销部、运检部、安质部以及省计量中心、各地市公司等等,导致业务处理复杂度高;与此同时,各个省公司职能部门、各地市、县公司、抄表公司、项目管理组及开发团队成员等项目干系人众多,需寻求一种开发管理框架来统一管理。
2) 内部因素。同样以国家电网用电信息采集系统为例,此处内部因素主要包括一直以来所采用的瀑布式和迭代式开发模式、任务及进度管理模式(CMMI)、质量管理和资源管理共五个方面。
①2010~2012年用电信息采集系统开发时,项目组按照传统的瀑布式开发模式,成立了需求组,设计组,开发组,测试组,发布组,运维组。严格按照CMMI的要求,从源头形成需求文档—设计文档,通过评审的设计文档给开发组,开发组完成开发并自测完成交给测试组,测试组测试通过交给发布组,发布到正式环境后,交给运维组负责后期的运维工作。这种开发模式可以有效地应对用采系统前期需求变化不大的业务,但是随着用采需求不断地延伸和扩展,无法快速的响应需求变化,瀑布模式的开发逐渐暴露出其中的不足。
②2013~2014年用电信息采集系统在升级、完善的过程中引入迭代式开发模式,首先将任务分解成阶段目标,然后将阶段目标分解成一个迭代周期(2周),完成需求设计、编码、测试、发布但是由于迭代频繁,不能有效地掌握人员的工作负荷,并且有时质量保障措施会有欠缺,导致返工。
③用电信息采集系统采用Excel电子档和Mantis的任务管理模式,这种任务管理模式,可以准确的了解项目组的任务,通过Mantis的日报管理,了解项目组成员的每日工作内容。这种模式的缺点是不能够对任务的可视化管理,以及对组员每日的进度没有一个定量的分析,对整体的工作量没有一个整体的把握。
④传统的开发模式质量管理靠的是每个环节的评审,比如说设计文档完成后,形成设计文档的基线,开发完全参照这个设计文档,再经过测试组测试,然后上线,所有的都是基于评审后的设计文档。
⑤用采项目组目前的资源管理有几个组组成,每个组负责不同的业务,在工作忙碌的时候,可能有些组存在空闲的资源,由于资源没有统一的管理,导致某些繁忙的组没有有效利用其他组闲置的资源,造成了资源的浪费。后来通过项目经理的协调,临时解决了问题,但是没有形成一个有效地,长期的管理模式。endprint
3) 外围因素。运维组的咨询,项目的邮件,电话咨询等等,作为项目开发的外围因素,时时刻刻都在影响着项目组的进程。过去,运维组的人员可以直接找到相应的业务功能开发人员,导致开发人员不得不停下手头的工作去应付外部的干扰,干扰其实是最大的浪费。
2 敏捷开发项目实践
在综合比较了几种主流的敏捷开发方法之后,国家电网用电信息采集项目采用了敏捷开发Scrum方法。几乎所有的软件开发方法都由三部分组成:研发团队角色、各项活动和各类产出。Scrum方法也不例外,它是一个包含了多种角色和实践活动的过程框架。
2.1 Scrum研发团队角色
Scrum开发过程中研发团队角色主要分为四类:产品负责人、Scrum主管和研发团队成员、客户代表四类。
1) 产品负责人。产品负责人需要根据需求确定产品的功能和交付时间,同时还需要根据项目进程确定功能需求和事务优先级。
2) Scrum主管。Scrum主管需要根据项目进程监督整个项目实施,确保产品能够按时开发,同时还需要具备协调不同角色成员之间相互沟通的能力,确保产品开发的进度。
3) 研发团队成员。一般是自组织的、由5-10个全职成员组成最为理想,理想规模是7个人,团队成员横跨各个职能,通常包括开发、测试、设计、部署等,改变团队结构时需谨慎。国家电网用电信息采集项目将组建3个Scrum团队,每个团队7成员,分别负责不同功能的开发工作。
4) 客户代表。一般来自客户对方,主要负责提供业务背景和项目需求,以及跟踪项目进程确认产品完成进度,验收已完成产品的功能。
国家电网用电信息采集项目按照Scrum角色劃分之后的组织结构如图1所示,各Scrum子团队的需求和分工如表1所示。
由表1可见,子团队1的主要任务是完成后台的建模任务,不依赖于任何选项。而子团队2负责前台界面的设计与实现,这需要依赖于后台的建模。子团队3负责完成相关报表的编写工作,这需要依赖于现有的报表平台。
2.2 Scrum方法中的四类活动
国家电网用电信息采集系统采用的Scrum方法中有四种重要的仪式,分别是迭代计划会议、每日Scrum站会、迭代评审会议、迭代回顾。Scrum方法鼓励所有团队成员聚在一起共同工作,文字、口头交流,产品负责人和Scrum主管能够更好的强调项目的有关规范,这些都能够很好地体现出团队的自组织性。
1) 迭代计划会议
迭代计划会议(需求澄清会)可以让设计人员、开发人员、测试人员第一时间了解需求,对不明白的需求直接讨论,业务人员给出解答,避免了之前只有设计人员了解需求,开发人员和测试人员通过设计文档间接熟悉需求的问题。通过需求澄清会生成的迭代Backlog,作为本次迭代的任务展开工作分解会议,将迭代Backlog细分成一个个的故事卡(WBS),集体评估每个故事卡的工作量。之后的开发根据这个工作量展开,可以对工作进行定量的分析。每次开发人员领取一个故事卡,减少开发人员的并发开发,通过开发人员自己领取故事卡,增加开发人员的主动性。
2) 每日Scrum站会
每日Scrum站会及时了解开发人员上一日的进度和今天需要开展的工作,通过看板的形式将进度可视化的展现在每位面前,一方面能够使项目经理直观的了解每个开发人员的工作情况和整个项目的进展情况,另一方面开发人员都能够看到所有人员的工作,增加同行压力,提高员工的积极性。通过看板的质量门,解决了之前只有设计评审环节的质量控制,现在对设计环节,开发结束环节,测试环节都加入了业务负责人的监控,提升了开发成果的质量。
3) 迭代复审会议
会议不要太长,规定为迭代周期的1.5%,由各Scrum子团队成员向产品负责人、客户代表及其他相关人员汇报总结迭代周期内的项目进程和产品开发情况,并规划下一步的迭代周期内的详细工作。
4) 迭代回顾
迭代回顾会议,每次迭代结束,总结上次迭代工作中的得失,每次故障的回顾,对常见的故障生成可执行的方案,制定具体负责人根据方案,避免下次迭代产生同样的问题,对工作成果的质量持续的改进。在迭代回顾会议上,对本次迭代工作量大且质量高的人员给予一定的奖品的奖励,能够调用大家的积极性。
2.3 Scrum方法中的五类产出
Scrum方法中有五种产出,分别为产品需求清单、冲刺订单、任务板、未计划任务和可编入任务。
(1) 产品需求清单
产品需求清单是站在用户的角度编写的整个用电信息采集系统的概要文档,不仅包含详细的项目需求和约束条件,而且包含已划分优先等级的、需要开发的系统和产品的详细清单。
在用电信息采集项目中的Scrum角色确定好之后,在第一次迭代会议之前,产品总负责人需根据用户的需求创建详细的产品订单,并依次赋予优先级。在此用电信息采集项目中,产品总负责人在与客户代表商谈之后,给出了用电信息采集系统Scrum产品订单的初稿,如表2所示。
(2) 迭代订单
迭代订单是从产品需求订单中选择出来的,是它的一个子集,规划了Scrum团队在迭代周期中的任务。任务被分解为以人天为单位,没有任务可以超过1个人天。
(3) 任务板
任务板是一个公开展示迭代周期内的所有迭代订单和所有分解的工作任务的进度状态图表,也可以称为故事墙。用电信息采集项目的故事墙如图2所示。
(4) 未计划任务
未计划任务是指在总体计划外的工作任务,有可能是迭代订单没有分解完全,也有可能是一些突发任务。这部分任务越少越好,因为它有可能会毁掉这次迭代周期。
(5) 可编入任务
如果在规定的迭代周期之内就可以完成计划好的迭代订单,则可以接着编入计划的产品订单项及其分解任务。
3 结束语
目前国家电网用电信息采集系统项目组经过努力,完成了用电信息采集系统的设计与实现。通过各项产出,对需求多源头进行统一管理,产品负责人将需求纳入,确定需求的优先级,各开发团队获取需求,根据开发进展修改需求的完成情况,产品负责人对业务进行跟踪,时刻了解需求的进展。通过各项产出,各开发团队主管可以及时了解项目的进度,根据需求的优先级统一分配资源,消除了以前资源分配不均衡的问题。
参考文献:
[1] Hughes Bob,Cotterell Mike.软件项目管理[M].廖彬山,王慧译.4版.北京:机械工业出版社,2007.
[2] 桑大勇,王英,吴丽华.敏捷软件开发方法与实践[M].西安:西安电子科技大学出版社,2010(5).
[3] 任思迷.论敏捷开发中的团队建设[J].计算机光盘软件与应用,2013,29(2):114-118.
[4] 胡文生,赵明,杨剑锋,等.敏捷开发过程中的迭代策略分析[J].微电子学与计算机,2012,27(5):276-278.
[5] 张林,刘德永.敏捷开发在软件产品项目中的应用实践[J].硅谷,2011(7).endprint