本文首先介绍和分析了两种开发模式(瀑布式开发和敏捷开发)的特点,并针对敏捷开发中的Scrum框架做了一个简单介绍。以HSE系统在升级建设中所采用的开发模式为例,介绍如何在项目开发过程中既要保证项目总体质量和过程控制,又要提升功能开发效率和推进测试发布,从而所采用的混合式开发模式(即总体采用瀑布式开发,局部适度引用敏捷开发,过程中加入质量控制的模式),达到推进项目稳定有效的运行和充分利用各人力资源的目的。
引言
HSE系统作为涵盖了中国石油健康、安全和环保等综合业务的大型信息系统,不仅为中国石油的各地区公司提供信息录入平台,更为中国石油的集团总部提供更多的信息统计和决策支持服务。随着十二五规划的工作开展,HSE系统也要从1.0版升级到2.0版。在此次的系统升级过程中,针对功能模块多和功能需求逐步稳定的特点,项目组在总体流程中使用瀑布模型,局部环节适度引用敏捷开发模型,达到既要确保项目质量和过程控制,又要满足功能开发和测试发布快速推进的目的。
瀑布式开发
瀑布式开发是将软件开发各个阶段的任务,从顶向下、从抽象到具体的一种开发方法。其形式就像一个自上而下的瀑布,总是从高处依次流到低处。瀑布式开发的优点是阶段具有顺序性和依赖性[1]。这个特点具有两重含义:第一,必须等前一个阶段的工作完成之后,才能开始后一个阶段的工作;第二,前一阶段的输出文档就是后一阶段的输入文档。因此只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。这样的特点应用在功能模块多和业务处理逻辑复杂的大型项目时,可以保证每一阶段的工作成果都尽量正确,都能先进行评审与纠错,控制项目的实现风险,追踪每个阶段的完成情况。这样的优点也带来一些弊端:只有做出精确的需求分析,才能取得预期的结果。由于各种客观、主观的原因,需求分析往往不很精确,常常给日后的开发带来隐患。另外,瀑布式开发往往把开发人员定义为流水线上的工人,由于各阶段的开发人员只能接触到自己工作范围内的东西,所以对客户需求的理解程度高低不等。对于客户需求变更,编码人员会比设计人员更容易产生很强的抵触情绪。对于一个大型项目,如何能够既保证项目开发质量、调动开发人员的工作积极性并引入适度的开发灵活性,这成为一个我们思考的问题。
敏捷开发
敏捷开发是一种面临迅速变化的需求快速开发软件的能力。敏捷开发的宣言[2](或者理解为原则)是:(1)个体和交互胜过过程和工具;(2)可以工作的软件胜过面面俱到的文档;(3)客户合作胜过合同谈判;(4)响应变化胜过遵循变化。通过这样的原则我们不难看出敏捷开发重视人与人自之间的沟通和交互,强调个体对于项目活动的理解应该是一致的。Scrum是一个近年比较流行的敏捷开发框架,是一个增量的、迭代的开发过程。它关注透明度、审查以及适应,在敏捷开发中应用的最为普遍。该框架提供了一个相对具体的可以实现的敏捷开发手段,这包括制定Backlog任务表,设定Sprint开发周期,以DailyMeeting的形式促使团队成员之间的沟通和问题反馈,利用RetrospectiveMeeting对于上一个Sprint做出总结,为下一个Sprint提供改进的建议[3]。
两种模式在HSE系统(2.0版)中的混合应用
项目特点
HSE系统(2.0版)项目作为一个升级项目,是一个在原有1.0版的基础上做功能移植
和功能提升的项目。它具备如下几个提点:(1)功能模块多,既要保持原有基础业务不变还要引入新的提升功能,导致业务功能增加不少;(2)用户要求高,在1.0版项目运维后,高级用户和基层用户对业务功能和用户体验上提出了很多建议和提升想法,这使得用户对于项目的要求越来越高;(3)项目参与人员较多,因为业务功能和开发工作量的增加,此次投入的项目人员较多,增加了整体项目管理难度;(4)开发周期长,随着业务功能的增多项目建设周期较长,每个阶段的项目人员都要持续投入很多的工作时间在项目中,承受了很大的工作压力。在这样的项目特点下如何能够既保证项目质量和风险管控,又能够调动项目人员的积极性快速推进项目工作,成为此次升级考虑的重点。
应用在HSE系统升级的项目开发过程中。从实际应用效果的角度,说明在项目开发过程中要充分考量项目特点,结合现在较为成熟的开发模式,灵活的加以应用。特别是在项目质量、风险管控、快速响应和及时交付的几个点上做到平衡。这样才能更好更高效的适应用户需求,产出高质量的交付物。没有一种模式能够解决所有问题,但每种模式却总有它适用的地方,只要深入了解它的精髓,无论如何混搭,只要合适即可引用。
瀑布式应用
鉴于瀑布模型是从顶到下、依次进行、阶段有目标和阶段有成果的特点,HSE系统在此次升级中,主体开发模式采用了瀑布式,依然划分为需求分析、系统设计、代码开发和系统测试等几个重要阶段,并在每个阶段建立关键的里程碑,使得管理人员能够从总体上把控项目的风险,看到各阶段的工作成果,给予高级用户及时的项目进度反馈。
敏捷开发应用
这里所要陈述的敏捷开发应用,实际上是在总体为瀑布式模型的开发基础之上,进行的敏捷开发局部应用。基于上面介绍的敏捷开发的特点,我们从如下几个方面来介绍是如何具体应用的:
1.快速响应,及时跟踪如今的项目需求,用户不会一蹴而就的全盘提出,开发团队也不可能一直等待业务团队整理完全部需求文档后再进行设计与开发,因为这样既有可能延误项目周期,也使得用户一段时间内长期看不到项目成果。所以将项目团队划分为若干个小组,将瀑布开发的几个工作阶段应用在几个小组之内,可以让项目团队对于已经确定的需求快速开展工作,充分利用各小组的人力资源,及时产出工作成果。这也就是引入了敏捷模型中快速响应变化,及时给出交付物的特点。以下是一个功能状态表,是在开发过程中反映各功能模块阶段完成情况的状态表。
2.加强沟通,及时处理此次系统升级功能需求多,业务逻辑较为复杂,开发团队不仅要处理纷繁复杂的业务需求,更要面对长期的大负荷工作。如何能够提升团队士气,及时发现问题并解决问题?Scrum给了我们答案。各开发小组在每天下班前组织开发人员进行DailyMeeting会议,及时了解小组成员每天的工作成果和遇到的问题,由小组长进行汇总和解答。并在整个技术组内建立技术讨论群,针对发现的问题及时发出议题,各组成员积极解答。使得团队成员之间达到最大程度的知识共享与交流,促进团队的凝聚力和问题解决能力。
结论
本文在介绍了瀑布式开发和敏捷开发的基础上,结合这两种模式各自的特点,将其混合
应用在HSE系统升级的项目开发过程中。从实际应用效果的角度,说明在项目开发过程中要充分考量项目特点,结合现在较为成熟的开发模式,灵活的加以应用。特别是在项目质量、风险管控、快速响应和及时交付的几个点上做到平衡。这样才能更好更高效的适应用户需求,产出高质量的交付物。没有一种模式能够解决所有问题,但每种模式却总有它适用的地方,只要深入了解它的精髓,无论如何混搭,只要合适即可引用。