中国联通研究院 北京 100032
云计算技术的出现为电信运营商提供了业务扩展、服务升级的机遇,构建基于云计算PaaS技术的综合平台成为电信运营商转型的重要举措[1]。随着云计算技术的不断成熟,许多重要软件企业和云计算公司都推出了自己的PaaS产品,基于PaaS架构构建运营商平台已成为一种趋势。但由于PaaS项目具有新颖性,具备技术含量高、规模大、工期紧的特点,往往需要对整个项目的质量进行管理。随着国内对软件管理工程认识的不断加深,这种趋势使得中国的软件企业逐步走向标准化、规范化、国际化的道路。
云计算产品和传统软件产品的本质区别在于整体性,传统的产品只考虑局部应用,比如智慧城市只考虑某个城市的局部应用,而不考虑和其它城市的关联关系。真正的云计算产品是站在国家层面上进行设计,既可以应用在小区域,又可以应用在更大的区域。
PaaS(Platform as a Service,平台即服务)[2]是一个应用程序开发平台,能够在线提供端到端的开发环境,开发人员可以在线调试、部署、运行及管理,开发部署及运行都在同一开发环境下进行,避免平台不兼容的问题,能大大缩短开发周期。开发人员无需配置服务器及部署环境,无需考虑存储子系统及安全问题等,平台提供部分封装服务,开发人员可以快速创建修改程序以满足不断变更的需求,从而简化开发过程、缩短开发时间、降低开发风险。不同的平台各有其特点:Google App Engine[3]提供java/Python运行平台和数据存储等接口;Amazon的EC2[4]提供通用的基础设施服务等。
在计算机领域,“质量”一词通常定义产品或服务是否能够满足客户需求,换一种说法就是“适用”。很多人在质量和成本方面存在一个误区,认为高质量意味着高成本,也有部分技术人员会认为标准抑制创造性,因此,不愿遵从标准的规定,其实这些都是没有完全理解质量管理标准的内涵造成的。软件质量保证的正式定义是指为整个软件产品的适用性提供证据的系统化活动。大部分软件质量保证活动可划分为软件测试(即验证与确认)、软件配置管理和质量控制。如图1所示[5],软件质量的成功还依赖于标准、规程、惯例及规约的支持。
CMMI(集成能力成熟度模型)模型是有助于企业提升项目过程的最佳实践的集合,因此,可以将其融入到PaaS项目中,从而实现对项目进度及过程中关键成果质量的有效监控和控制以及对项目过程中风险及问题的有效跟踪。
图1 质量保证组成
就质量管理而言,大多数人会认为只需要对产品进行评估就可以了,孰不知过程决定产品,过程的评审同样重要。如编码标注的文档化,方法和工具的规定和使用,变更管理,以及缺陷记录和跟踪等,通过对这些过程进行管理,可以在过程中发现潜在的风险,并及时规避风险。从项目开始进行质量管理,尽可能减少所开发软件的缺陷,控制产品质量。据统计,由于未检测出的软件缺陷而损失数千万、数亿甚至数十亿美元的例子数不胜数。周期的缩短也使得开发风险越来越大,产品周期从数年被压缩到数月、数周甚至数天。如此紧张的时间限制,使得开发软件存在很多风险,CMMI作为一种质量管理标准,是SEI(美国卡内基-梅隆大学的软件工程研究所)于2000年发布的CMM[6]的新版本,不仅包括软件开发过程改进,还包含系统集成、软硬件采购等方面的过程改进内容,因此,能够从管理和过程的两个角度对整个项目进行监控,并定义多个过程域,根据不同项目的特点,可以对过程域进行裁剪,其最终目的是保证项目成果的质量、性能、可用性,降低软件开发生命周期的总成本[7-8]。
缺陷清除率是衡量软件质量的一个指标,所谓缺陷清除率即软件在开发过程中(提交之前)发现的所有缺陷数D1与软件中发现的缺陷总数D之比。其中D=D1+软件提交后发现的缺陷数D2。众所周知,清除软件缺陷的难易程度是不同的。
表1反映的是CMM五个等级是如何影响软件质量的,其数据来源于美国空军1994年委托SPR(美国一家著名的调查公司)进行的一项研究。从表1中可以看出,CMM级别越高,缺陷清除率也越高。
表1 SEI CMM级别潜在缺陷与清除
实施CMMI对企业的好处主要体现在:1)能保证软件开发的质量与进度;2)有利于成本控制;3)有助于提高软件开发者的职业素养;4)能够解决人员流动带来的问题;5)有利于提升公司和员工绩效管理水平,以持续改进效益。
CMMI模型设计之初就是应对军方大型项目的,所以CMMI模型框架庞大,存在文档过载、过程繁冗等诸多问题,它包含22个过程域,各个企业的软件项目在应用CMMI时,必须进行适当的剪裁以适应本企业的特点,而项目特点是裁剪依据和出发点。
1995年,在一次关于CMM裁剪的学术讨论会之后,人们达成的共识是应该集中关注如何根据企业的具体情况裁剪CMM的方法,而不是企图得到一个“裁剪版”的CMM。 集成能力成熟度模型CMMI相比软件能力成熟度模型CMM在实践对应多个目标方面做了重大改进。CMMI是关注过程改进的过程模型,包含多个组件。
CMMI-DEV V1.2 过程域(连续型表述)可以被归为四类。1)过程管理类(Process Management):与组织层面联系比较紧密的过程域;2)项目管理类(Project Management):与项目管理相关的过程域;3)工程类(Engineering):与项目实际开发联系比较紧密的过程域;4)支持类(Support):项目过程中支持项目正常进行的相关过程域。
所谓裁剪即增加、删除、替换和修改,策略是选择适当的生命周期模型,加强需求的获取、管理项目的技术、市场的风险,重视设计和测试。针对云计算项目的特点,从可操作的层面出发,可以对质量管理的过程域进行删减。
CMMI3流程过于繁杂,所以实际展开的时候比较困难,需要对流程进行适当的裁剪。CMM分为三个级别的裁剪,即组织级、同一类项目级、单一项目级。项目经理一般关心的都是单一项目级,也就是从OSSP(Organization Standard Software Process,组织标准软件过程)到PDP(Project Def i ne Process,项目定义过程)的过程,项目经理需要结合项目的特点、规模(项目是管理高风险还是技术高风险,工期紧还是相对宽松,工期第一位还是质量第一位等)进行裁剪。本实例主要关注裁剪问题,介绍了如何根据项目特点和项目计划进行有针对性的裁剪,每个裁剪都需要有一定的理由。
针对每个过程都会有相应的裁剪指南,具体的项目裁剪程度不一样,都应记录在PHB中。如:①根据客户意愿进行裁剪,②根据项目类型、规模进行适当的裁剪,如小项目(NBNC 1-3K、总进度在2周~2月且总工作量小于6人),可以将概设与详设合并为设计阶段,裁剪掉集成测试阶段等。
联通PaaS平台除了具有一般传统云计算的特点外,其特殊性也决定了其裁剪策略的可实施性,比如过程管理类和工程类过程域被裁剪掉的理由是,该PaaS平台项目对组织过程没有进行要求,因此不需要进行质量管理,另外该项目属于建设管理类项目不属于工程类,因此不需要进行管理。 其他过程域同样是从实际实施可落地角度出发进行裁剪的。这样裁剪的理由是更加精细化,更加具有可操作性。
结合笔者参与的实际PaaS平台建设体验,采用CMMI3的标准对平台及平台上的应用进行了质量控制。根据该项目的特点对过程域进行了裁剪,如表2所示:去掉不合符本项目的相关过程域及CCMI3以上标准涉及到的过程域(如表2中的删除线),另外在工程类过程域裁剪过程中(表2中的双删除线),从软件项目生命周期模型出发,对各生命阶段进行了质量管理,将过程域修改为:项目准备、项目计划、需求分析阶段、设计阶段、开发阶段、测试阶段和实施阶段。这样裁剪的目的是从项目的实际特点和具体可落地的层面出发,去掉那些无法满足的过程域。
表2 过程域裁剪结果
基于CMMI3能力成熟度模型以及该项目特点,对模型核心过程域进行裁剪,裁剪的过程中明确了过程域的检查点及检查方式。表3给出了项目管理类中PMC过程域的实际质量监控的检查点、检查方式等。实际质量管理中采用参与评审、检查记录及文档规范性检查等方式对项目关键过程和成果进行跟踪检查。
表3 PMC过程域检查方式
通过这样的裁剪,降低项目风险,加快项目的进度,并使庞大的项目得到了有效控制;项目管理者能够对项目的整体进行把控,清楚项目进展的每个细节,并可以通过检查点来衡量项目是否存在风险以及是否会影响整个项目的进度。实际的项目经验说明,不同的项目具有不同的裁剪策略,因此,要结合实际情况酌情考虑。
在现有的项目实践中一般只给出了每个过程域的输入和输出物,本实例给出了每个过程域的检查点、检查方式、相关责任人和频率,注重可操作性, 从直观上能够给质量管理者一个清晰的指导。对里程碑报告的检查,需要明确每个里程碑的完成情况,并检查每个里程碑的标志物,相关子系统的项目经理应该及时提交报告,质量管理者在每个里程碑检查点进行检查。
云计算技术的出现对运营商是一个机会也是一个挑战,云计算带给运营商一次业务扩展、服务升级、平台整合的机会,但也对其组织架构带来了冲击和挑战。对软件项目进行质量管理的最终目的是实现持续质量改进。本文结合具体项目实践,在CMMI给出的做什么的基础上给出了怎么做,并对过程域进行了裁剪,主要依据了项目类型和项目质量与过程目标进行裁剪,可为以后项目实践的参考。
参考文献
[1]陆钢.电信运营商云计算PaaS发展关键问题探析[J].广东通信技术,2011,31(7),1-5
[2]Lawton,G.Developing Software Online With Platformas-a-Service Technology[J].Computer 2008,41(6):13-15
[3]IBM DeveloperWorks[EB/OL].[2015-03-10].http://www.ibm.com/developerworks/cn/webservices/0610_jinge/index3.html
[4]董玉萍,邹承明,钟珞.基于XML的异构数据源共享技术的研究[J].2002,24(9):90-92
[5] 陈绍英,刘建华,等.软件测试与持续质量改进(第3版)[M].北京:人民邮电出版社,2011:11-23
[6]高巍.C M M在中小软件企业的裁剪[J].程序员,2002,(08):42-44
[7]齐小玲,冯大鹏.CMMI体系建立过程及在项目管理中的作用[J].计算机科学,2013,40(z2):436-437
[8]邓军.基于CMMI的企业软件过程与质量管理平台设计[J].湖南师范大学自然科学学报,2014,37(1):63-66