中小型软件企业快速有效实施CMMI3的构想

2010-05-14 02:10蒋惠忠
价值工程 2010年4期
关键词:软件企业

蒋惠忠

摘要:CMMI是全球权威的软件能力成熟度模型,在中国方兴未艾。本文针对我国中小型软件企业的特点,结合笔者自身在CMMI3的启动、实施与持续改进工作中多年的探索研究和积累,试图提出一套快速有效的CMMI3实施方案,希望能够帮助那些准备或正在实施CMMI3以期降低成本、提升管理水平的企业,尽快达成目标。

Abstract: CMMI is a global authority of software capability maturity model, which is not widely used in China. The thesis describes the characteristics of the small and medium software enterprises, combined with the author's own start in the CMMI3, implementation and continuous improvement work and the accumulation of many years of exploration and research to try to make a rapid and effective CMMI3 implementation of the program, hoping to help those who are ready or are in the CMMI3 implementation with a view to reduce costs, enhance the management level of enterprises, as soon as possible achieve their goals.

关键词:CMMI;软件企业;快速实施

Key words: CMMI; software enterprises; rapid implementation

中图分类号:TP31 文献标识码:A文章编号:1006-4311(2010)04-0025-03

0引言

CMMI(Capability Maturity Model Integration),即能力成熟度模型集成。该模型起源于美国,并在美国和印度等国家得到了比较成功的运用,进而后来被逐步推广到全球范围内的一些国家和地区。

有关资料显示,在CMMI引入中国的这些年来,CMMI对于大型软件企业的帮助作用比较明显,在企业软件开发管理规范、软件质量、市场竞争力等方面起到了一定的促进作用。与此同时,CMMI在不少中小型软件企业中应用的效果却不甚理想。

本文中,笔者将就结合自己在工作中的实践与研究,试图就中小型软件企业如何快速有效实施CMMI3提出一个完整的构想。

1中小型软件企业与CMMI

美国在改进软件过程方面进行了几十年的研究,位于匹兹堡的软件工程研究所于1997年提出了能力成熟度模型(CMM:Capability Maturity Model),现进一步发展成为能力成熟度模型集成(CMMI:Capability Maturity Model Integration)。CMMI基于逐步改进的管理思想,通过提炼业界的最佳实践形成体系,以大量的开发管理实践为基础,具有强大的生命力和适应能力。

根据不同的软件开发过程能力,CMMI定义了5个成熟度级别,分别是:初始级、可重复级、已定义级、已管理级、优化级。

1.1 CMMI引入中小型软件开发企业的背景

CMMI在大型软件企业中的成功运用,让业界看到了CMMI在软件企业规范化发展中的促进作用。因此,国家相关部门和相关协会制定了相应的政策,倡导和鼓励软件企业引入CMMI。同时,在信息化建设项目的一些招投标中,也将软件企业是否具有CMMI资质视为其企业软件产品高质量的标准之一。

众多的中小型软件企业也认识到,由于软件行业本身的市场竞争因素导致其生存压力进一步加大,为此,要想企业做大做强,就必须要走规范化发展的道路,来提高产品质量、提升竞争力,以应对来自各方面的市场压力。在国家相关部门和协会的政策指引与支持下,中小型软件企业也进入了CMMI认证的行列。

1.2 CMMI引入中小型软件企业后的现状

国内中小型软件企业特点及存在的问题

国内的中小型软件企业,大体都有这些特点:①企业规模小,人员流动性大;②企业员工以技术开发人员为主,兼顾管理,缺乏有经验的专门管理人员;③质量意识不浓,只注重产品功能,不注重产品质量和维护;④没有一套行之有效的开发规范;⑤产品及过程的可重用性差。

正是因为有上述这些特点,所以在中小型软件企业中,也普通存在这些问题:①分工不合理,工作效率低;②项目的成功依赖特定人才,当主要成员退出项目后,将导致项目的延期超时,甚至失败;③项目难以监控与管理,许多措施都是在项目开发过程中临时采取。

中小型软件企业实施CMMI后仍然面临困境

在数量庞大的国内中小型软件企业中,对于那些准备开展CMMI3认证的企业,由于没有起码的软件开发和项目管理基础,完全靠自身的摸索去改进时困难重重,只能把通过认证、提高软件质量、提升企业竞争力的所有希望都寄托在认证咨询机构身上,陡然增加了认证工作的实施风险;对于正在开展CMMI3认证工作的企业,深感按CMMI3的要求建立企业的软件开发、项目管理体系是个痛苦的、折磨人的过程,并且效果差强人意;对于已经通过CMMI3评估的单位,却普遍面临着这样的难题:如何使得CMMI标准真正与其内部日常运作和软件项目开发过程融为一体,使得软件开发过程的能力有所提升,并让企业决策层、管理层和执行层切身感受到实施CMMI所带来的工作绩效的提升,从而更好地支持和推动持续改进。

然而实际的情况是:企业在通过了CMMI的评估后,企业高层管理者无法通过有效的渠道看到CMMI所带来的支撑作用,抑或是作用太小得不到高层重视。此外,企业由于找不到一个继续推行CMMI的好方法,从而使得CMMI在企业中的运用处于半停止或完全停止的状态。

1.3 症结分析

为什么大企业在实施CMMI后能取得良好的效果,而在中小企业就显得有些力不从心呢?分析总结起来,造成上述现象的原因,是如何将CMMI标准结合企业实际,并真正实现本地化运作存在较大的困难,突出表现在以下两方面:

一方面,在实施初期根据认证咨询机构提供的一套通用的实施方案,稍作裁剪将其运用到具体的项目管理中。但是由于企业内部缺乏CMMI专业人才或者CMMI专业人才没有参与企业软件开发管理的日常工作,实施方案即使是在做了相应的裁剪优化后,也难以与企业实际工作有机结合,导致实施成本过高,实施过程变得艰辛痛苦。另一方面,缺少企业高层管理者可以多维度掌握公司项目信息、以及CMMI与企业实际情况相结合的一个载体。日常的项目管理中,企业高层仅仅通过一些简单的报表、报告来了解项目的情况,无法从全局角度来掌握项目的绩效信息,以致于企业领导无法直接感受到CMMI实施所带来的效果或者感受到的效果不明显,从而得不到高层的支持。

有没有一个有效的办法来尽早改善这种局面呢?

2快速有效实施CMMI的构想

若要使CMMI的实施真正给企业带来良好的促进作用,就必须使企业日常的项目管理过程与CMMI的实施融合在一起,从而找到一个结合点做为载体。

在这个载体中,运用软件工程的方法论与项目管理的成熟模型,使得软件产品的生命周期、软件开发和项目管理的过程,与CMMI的过程域有机结合,从而更有效地推进CMMI的实施工作。

CMMI过程域与项目管理过程全方位覆盖:

我们暂将这个载体称之为项目管理系统。通过研究和设计,我们可以发现项目开发管理各过程和CMMI的过程域是可以相互对应的。拿CMMI3为例,如下图所示:

①计划管理。计划管理包含日常工作中的所有计划,涵盖了CMMI中的项目策划(PP:Project Plan)过程域。项目计划(PP)作为CMMI2级就要求的一个关键过程域,贯穿了整个项目,是实施项目管理的基础。PP过程域包含了3个特定目标(SG:Specific Goal):建立估算、开发项目计划、获得对计划的承诺。

计划管理一个重要的组成部分就是项目计划管理,通过类似微软Project产品的项目计划编制功能、任务接收人员的任务承诺功能以及任务审核功能,实现了PP过程域的所有特定目标。

当一个团队接收到一个总任务时,负责人必须将任务进行细化,分解到单人可执行的粒度,这个过程就体现了“开发项目计划”的目标;在任务下达人员执行时,需要对任务的完成时间进行估计,规定任务完成期限,这体现的就是“建立估算”目标;任务下达了,还需要任务执行人的反馈,得到人员对任务的承诺。当任务完成时,任务执行人将任务提交给负责人,由负责人审核任务,完成任务的验证。

这些基础数据为改进提供了参考依据,通过对历史项目详细计划的查询总结,可以分析项目计划分解等方面的不合理性与可改进处,了解项目计划的开发能力,进而提高项目开发管理水平。另一方面通过历史数据的统计参考,再适时采用Delphi、Pert等方法可以更精确地估算出类似任务和项目需要的工作量和成本,逐步提高估算的精确度。

在项目监控过程中,当项目计划和实际情况发生偏离时,可以变更调整计划,重新估算时间,更可以把纠正计划纳入到项目计划中,形成统一的管理。如:通过统计某个员工所有分配任务的变更情况,来了解这个员工的计划能力、统筹能力等。通过一个员工所有接收任务的估计工时和实际工时的对比,可以了解这个员工的工作效率:如果大部分任务实际工时远大于估计工时,有可能这个员工的工作效率就比较低。

②日志管理。日志管理主要采集人员的日常工作情况,累积企业成果,形成企业知识库。

工作日志是对计划实际执行情况的记录,是对实际工作情况的反映和真实数据的累积。每个人员一般每天对每个执行的任务需要记录一次日志,日志主要信息包括工作的内容、工时、起止时间等,同时,增加了诸如“工作类型”等指标,方便以后的分类统计分析。

工作计划和日志,奠定了监督活动、沟通状态和采取纠正措施的基础。通过对照工作计划和工作日志,可以监督项目的实际性能和进展;通过计划与日志的查询,项目成员能更准确的回顾和总结个人工作,增强和领导的沟通渠道;领导也可以清楚地了解项目任务承诺和执行情况、预测并预防风险;当计划和实际进展发生严重偏离时提供分析偏离问题原因的依据;同时也可以随时掌握员工动态,了解员工性格、习惯、兴趣等,发现并分析员工潜力,有利于企业的人才培养和人力资源管理。

日志也是度量分析(MA:Measurement and Analysis)非常重要的一个数据来源,是度量分析主要的统计数据。在日志中增加了诸如“工作类型”等指标,通过对这些指标数据的统计和分析,可以建立多维度的度量视图,多方面体现企业各方面的能力和水平。

如:通过统计可以建立阶段进度工作量表,可以比对总体进度实际与计划的偏差,分析企业对项目的估算能力,偏差越小,说明估算能力越强,对项目成本估算越准确;可以比对各阶段的偏差,发现风险高发阶段和工程能力薄弱之处;可以比对各阶段人员计划和实际配置,有利于发现企业人才构成问题,为优化企业人力资源措施提供依据。

利用日志数据还能建立项目各阶段质量成本表,分析项目各阶段的质量投入。质量成本包括评审、质量检查、产品返工、测试等一系列与产品质量相关的活动。我们的改进方向应是尽量降低返工工作在整体质量成本和项目工作量中的比重。

根据日志类型指标还可以建立项目阶段资源模型,统计项目各阶段工作量、各类型工作量。通过这些数据分析企业各类型工作岗位从事人员的能力、项目各类型工作比例是否合理、各阶段工作量比重是否正常等问题。

对于工作执行描述的累积还可以形成企业的知识管理,在企业内共享共用每个员工的工作经验、问题解决方法和工作成果,推进企业的知识积累和过程改进。

③项目工程。同时系统根据瀑布模型各阶段的活动,形成了需求管理、设计管理、测试管理、缺陷管理、同行评审管理和运维管理。

需求管理结合了CMMI中需求开发(RD:Requirement Development)和需求管理(REQM:Requirements Management)的特定目标,对需求开发成果进行采集和管理。设计管理主要实现对系统设计数据的采集以及系统实现情况的跟踪。两者再结合测试管理,形成需求跟踪矩阵,实现需求管理的目标。

测试管理和缺陷管理对测试过程(从计划到设计,再到执行和总结)和缺陷处理过程进行了全方面的数据采集,详细记录了测试过程和产品缺陷处理情况。并根据采集数据统计分析测试覆盖率、缺陷发现率等质量情况,生成质量报告。

同行评审管理实现了文档评审和代码走查的网上开展。允许评审人员异时异地对同个产品进行评审,并可以和被评审产品作者进行沟通,跟踪评审问题的解决情况。同时在评审过程中支持召开会议,此时可以通过同行评审管理对产品进行会前预先评审和问题汇总、会后对问题的解决跟踪。

运维管理对系统运行维护阶段的活动进行采集,主要记录客户反馈问题及系统维护变更情况。有利于维护成本的分析和问题处理知识库的形成。

同时,为达到全面的管理,还要包含项目报告管理、供应商管理、文档管理、质量保证、统计分析、过程改进、培训管理等,限于篇幅,在此不再赘述。

3项目管理系统的作用分析

对于企业管理层来说,实现对企业日常工作和人力资源的有效管理,全方位掌握绩效信息是其所关注的;对于普通管理者来说,实现对具体事务的跟踪,确保成果的正确实现是其所重点关注的。

若企业能够构建上述这样一个系统,使企业高层领导通过该系统可以随时掌控每个项目、每个员工的进展动态,既能监控项目进度和成本,又能对公司员工进行扁平化管理;使项目负责人通过该系统,管理跟踪项目的日常工作,减少项目沟通成本,更好地管理项目成果。

3.1 对企业日常运作的作用

①减少了人员流动时的成本:新人进入公司后不需要特殊培训,只要学会使用系统就能自主了解学习公司现有成果;老员工离职时,由于在系统中保留了工作成果,工作交接等也不需要太多资源;另外大部分员工都不需要具有专业CMMI知识,只需要使用系统,就能清晰地定位自己的角色,顺利地完成自己的本职工作。

②充分利用人力资源:通过系统,多项目可以交叉使用同一资源,尤其是底层开发人员、测试人员等,通过合理的任务安排,每天都能达到工作饱和,保证资源既不闲置也不超负荷。

③累积了大量公司成果:通过长时间的使用,系统采集了大量数据,形成了多方面的知识累积,丰富了公司的组织资产库,为以后类似项目的复用和持续改进提供了基础和依据。

3.2 对企业实施CMMI的作用

对于准备CMMI评估但缺少一定基础的企业,可以逐步进行改进和实施。在企业毫无规范基础的情况下,可以采用逐步推进的方式,如可以先只采用计划管理和日志管理,以实施项目策划和项目监控、度量分析过程域的要求。由此,一段时间后再实施需求管理、设计管理等项目开发活动达到CMMI中项目工程类的过程域要求。最后可以实施质量保证、过程改进、培训管理等模块,来实现对项目的整个支持要求。

对于已经进行CMMI评估的企业来说,构建并使用这样一个系统,除了可以快速导入CMMI之外,还可以减少CMMI的培训成本和实施难度。企业普通员工只需要了解如何使用系统,项目负责人等只需要培训专业技能和少量CMMI培训,就能达到CMMI的实施要求。

对于已经通过CMMI但在艰难实施的企业,通过这样一个系统,可以减少实施成本,有效管理各过程。使员工将更多的精力投入到技能提升上,增强企业的技术竞争力;也可以精简CMMI人员,只需要少数几人精通CMMI,关注企业CMMI实施情况,通过系统的统计数据不断分析企业存在的不足,持续改进企业软件开发过程。

3.3 构建成为SaaS平台的作用

项目管理系统的软件供应商可以为不准备实施CMMI但又承接了高要求项目的企业开通网上项目管理服务平台,用户可以通过注册本系统的账号,登记并记录准备开发或正在开发的项目,通过本系统不断提交项目开发数据,从而实现项目全过程、全方位的监控,确保单个项目的质量。

对于第三方监理单位也可以注册该系统的账号,登录并对自己监理的开发项目进行监控。从而,使本系统为开发方和监理方提供一个便捷的交流沟通平台。

4后记

企业软件开发过程规范化发展,并不是一道不可逾越的高墙。高墙之内,是低效率的工作、不可保证的软件质量;高墙之外,是有效的沟通、高效的工作、高质量的软件产品。

设计一套完善的“项目管理系统”,让CMMI真正与企业的实际结合起来,在快速导入CMMI的同时,又提升了软件项目的管理水平,并得到了持续不断的改进与发展。由此,使得企业的软件开发项目有历史经验可复用、计划可追踪、过程可监控、质量可保证。

希望这些研究与思考,可以给类似企业带去一定的参考作用,帮助其在快速有效实施CMMI3的同时,迅速提高软件开发过程能力;同时,也希望有这方面研究的单位或个人不吝赐教、互相研讨。

参考文献:

[1]Stephen R. Schach.面向对象与传统软件工程[M].韩松等,译. 北京:机械工业出版社,2003.

[2]Frederick P.Brooks.JR.人月神话[M].汪颖,译.北京:清华大学出版社,2007.

[3]费国栋.软件项目管理系统的研究与实现[D].大连:大连理工大学,2005.

[4]彭晏飞,刘树启.基于CMM的中小型软件企业软件过程改进研究[J].中国西部科技2008.7(10):47-49.

[5]方建勇.CMM与软件工程化浅析[J].硅谷,2008 (4):16-17.

猜你喜欢
软件企业
软件企业税收筹划
软件企业增值税即征即退优惠政策探析
软件企业信息系统内部控制问题及对策
浅谈软件企业提升财务管理的对策
软件企业税务筹划探讨