如何在我国小型软件企业中实施SW-CMM重复级
摘要:目前我国软件产业正处在飞速发展的时期,小型软件数量众多。本文讨论了如何通过过程改进的方式促进小型软件企业的发展,结合实际,研究如何实施SW-CMM重复级。在实施的过程中,注意结合我国软件行业的特殊情况,使SW-CMM体系更适合我国软件行业的特点,促进软件企业发展。
关键字:小型软件企业,SW-CMM,软件过程改进
第1章 CMM概述
1.1 SW-CMM的产生和发展
SW-CMM(Software Capability Maturity Model,下称CMM)是由美国卡内基·梅隆(Carnegie-Mellon University)的软件工程所(Software Engineering Institute,下称SEI)提出的一套对软件过程的管理、改进和评估的模式和方法。CMM最早被应用于美国国防部,用于评估承接军事项目的软件企业的能力。由于这些军事项目投资巨大,需要一种科学的评估办法对软件企业进行评审,这是CMM最早期的应用。
1991年,SEI正式提出了CMM1.0版本,并应用于商业软件行业中,取得了巨大的成功。
1993年,SEI根据以往的经验,并且广泛听取了行业专家的意见,推出了CMM1.1,这就是我们现在广泛使用的版本。
十几年来,CMM的改进工作一直在持续进行着,按照SEI的计划,CMM重复级.0版本将于1997年推出,然后经讨论和修改,于1999年发布CMM2.0。但此版本因为美国国防部的要求而推迟发布。
1.2 CMM的基本概念
1.2.1 专业术语
过程(Process):为实现给定目标所执行的一系列操作步骤。
软件过程(Software Process):指人们用于开发和维护软件及相关产品的一系列活动、方法、实践和革新。其中,相关产品指项目计划、设计文档、编程、测试和用户手册等。
软件过程能力(Software Process Capability):描述了一个组织在遵循一个软件过程后,能够得到的预期结果的界限范围。
软件过程性能(Software Process Performance):表示一个组织在遵循一个软件过程后所得到的实际结果。
软件过程性能和软件过程能力的区别是:前者关注的是实际得到的结果,后者则关注期望得到的结果。由于项目要求和客观环境的差异,软件过程性能不能充分反映软件过程的整体能力,所以这两项指标都是需要关注的。
软件过程成熟度(Software Process Maturity):是指一个具体的软件过程被明确的定义、管理、评价、控制和产生实际效果的程度。成熟度包含着能力的一种增长潜力,同时也表明了组织实施软件过程的实际水平。
1.2.2 不成熟和成熟软件组织的比较
为了建立有效率的软件过程的模式,我们来看一下不成熟和成熟的软件组织的区别。
在不成熟的软件企业里,项目中的软件过程是由管理者和实践者临时拼凑而成的,即使有些软件过程的规定,也不严格遵守。不成熟的软件企业解决问题的方法是见招拆招,经理们集中精力解决即使危机(又称救火)。由于进度和预算没有按照实际的情况来估算,因而往往造成进度和预算的超出,并往往会因此在产品质量上打折扣。不成熟的软件组织里,无法对产品的质量进行监控,也无法解决生产过程中出现的问题。由于经常出现工程超期的情况,对评审和测试的工作也会不同程度的压缩,软件质量就更难预料。
再来比较一下成熟的软件组织。一个成熟的软件研发或维护支持的组织,具有软件研发或维护过程的能力。组织中,所有的新老成员都会正确地理解其软件过程。工作活动按已经设计好的计划进行。这些计划是按照科学的方法制定的,并根据实际的工作情况再作适当的调整。软件过程在成熟的组织里有务实的定义,每个执行者的角色和职责都是清楚的。成熟的组织中,经理要控制产品的质量和顾客的满意程度。在判断产品的质量和分析产品及过程等问题方面有可观定量的基础,进度和预算是基于以往的数据和经验,因此,软件的生产进度,产品质量和成本都是可以预计的。成熟的软件组织一直地遵循一个有模式的过程,组织的员工也十分支持该过程的存在。
要区分成熟和不成熟的软件组织,需要构建一个软件成熟度的框架,它描述一个从无序到有序的软件过程的进化途径。
1.2.3 CMM的体系结构
CMM为了正确和有序的引导软件过程的开展,建立了一个能够有效的描述和表示的软件过程改进的框架,使其能够对各阶段软件过程的任务和管理起指导作用。
CMM模型描述和分析了软件过程能力的发展程度,确定了一个软件过程成熟度的分级标准(如图1所示)。一方面软件组织可以据此评估自己当前的过程成熟度,并以此提出适合的软件质量标准和过程改进的方法和策略,通过不断的努力去达到更高的成熟度。另一方面,为用户评价软件组织提供标准,是指对开发商有较为客观的认识。
图1 CMM的分级标准
初始级
优化级
定义级
重复级
有纪律的过程
标准的一致的过程
管理级
不断改进的过程
下面的表格介绍了五个成熟的等级在开发过程中的特点:
项目
级别
特点
1
初始级
软件开发过程是一个偶然的无序的过程,和邵有明确的过程定义,成功完全依赖于个体的能力
2
重复级
实施基本的项目管理,跟踪软件成本,进度和功能。依照以往项目的成功经验,来建立基本的过程规则,使其他相似的项目能够重复以往的成功
3
定义级
软件过程的管理和实行方法都已经文档化、标准化,使开发商有一个软件开发过程的标准。所有的项目都可以依照标准软件过程来开发和维护。
4
管理级
定义了评估软件过程和产品质量的度量。利用此度量对软件过程和产品做出推断和控制。
5
优化级
系统的引导新理念及技术的反馈,不断的改进软件过程。
表1:五个成熟度等级的特点
1.2.4 CMM的内部结构
CMM中的成熟度等级是一个妥善定义的、朝着实现成熟软件过程目标进化的过程的平台。每个成熟度等级有几个关键过程领域(KPA)组成,每个KPA又按五个称为共同特点的部分加以组织,共同特点规定关键实践(KP),当这些KP均得到实施后,就能实现KPA的目标。
1.3 CMM的评估方法
评估一个软件组织是否达到CMM某个等级,是从审查项目的被执行活动的关键实践开始的,然后评定关键实践领域所达到的目标,从而得到整个项目的成熟度等级,再由多个项目的等级来评定组织的成熟度等级。
1.3.1 KP的性能评分
评估项目时,被执行活动的关键实践(KP[i,j],表示第i级的第j个关键实践)的性能评分是第一步。其方法是,评估员通过与组织的管理层和工程师进行面谈和检查文档资料,为每个KP逐个评分,具体评分标准如表2。
KP[i,j]执行性能值rKP[i,j]
rKP[i,j]的执行结构
rKP[i,j]的项目满意度
4
合格
≥80%
3
不合格
<80%
2
不适用
-
1
未知
-
表2:KP的执行能力衡量标准
按照此方法,可以对每个关键实践打分,等到一个[1,4]的数值,即rKP[i,j]。
1.3.2 成熟度等级的评定标准
每个成熟度等级都有一定数目的关键实践,该成熟度最多能通过的关键时间个数用NKP[i]表示。一个项目如果能通过80%的关键实践数,就可以认为此项目已经达到了这个成熟度等级。即,实际通过的关键实践个数要大于等于NKP[i]*0.8。什么样的关键实践才算是通过的关键实践呢?通过的关键实践就是rKP[i,j]=2或者rKP[i,j]=4。即,把所有通过了的关键实践的总和记为SATKP[i],如果SATKP[i]≥NKP[i]*0.8就算达到了这个成熟度。
1.3.3 项目和组织的成熟度等级的评定
项目的成熟度就是它所能达到的最高的成熟度等级,即
max{i|SATKP[i]≥NKP[i]*0.8}。软件组织的成熟度等级是它参与评估的软件项目成熟度等级的平均数。这里要求参与评估的项目数目不能少于三个,如果平均数出现小数的情况,应舍去小数部分,只取整数部分。
1.4 CMM重复级分析
1.4.1 CMM重复级简介
CMM第二级称为重复级,它是从无序的初始级改进的第一步。
在重复级上,已建立管理软件项目的方针和实施这些方针的规程。基于在类似项目上的经验对新项目进行策划和管理。达到等级2 的目的是使软件项目的有效管理过程制度化,这使得组织能重复在以前相似项目上所开发的成功实践。等级2 组织中的项目已设置基本的软件管理制度。实际可行的项目约定是基于对以前项目的观察结果和当前项目的需求。项目的软件经理跟踪软件成本、进度和功能;识别在满足约定方面出现的问题。对软件需求和为实现需求所开发的工作产品建立基线,并控制其完整性。软件项目标准已确定,并且组织能保证准确地执行它们。如果有子承包商的话,软件项目与他们一起努力建立一种强有力的顾客----供应商关系。
等级2 组织的过程能力可概括为有纪律的,因为软件项目的规划和跟踪是稳定的,能重复以前的成功。由于遵循实际可行的,基于以前项目性能的计划,项目过程处在项目管理系统的有效控制之下。
1.4.2 CMM重复级的关键过程领域
重复级上的关键过程区域集中关注软件项目所关心的、与建立基本项目管理控制有关的事情。下面列出对等级2 上每个关键过程区域的描述:
需求管理的目的是在顾客和软件项目之间建立对顾客需求的共同理解,顾客需求将由软件项目处理。与顾客的协议是策划和管理软件项目的基础。对与顾客关系的控制依靠遵循有效的更改控制过程。
软件项目策划的目的是制定进行软件工程和管理软件项目的合理的计划。这些计划是管理软件项目的必要基础。没有切合实际的计划不可能实施有效的项目管理。
软件项目跟踪和监督的目的是建立适当的对实际进展的可视性,使管理者在软件项目性能显著偏离软件计划时能采取有效的措施。
软件子合同管理的目的是选择合格的软件子承包商,并有效地管理它们。它把用于基本管理控制的需求管理、软件项目策划、以及软件项目跟踪和监督等关键过程区域所关注的事情与软件质量保证和软件配置管理等过程区域中的必不可少的协调结合在一起,并且当合适时对于承包商实施这项管理。
软件质量保证的目的是给管理者提供对于软件项目正采用的过程和正在构造的产品的恰当的可视性。软件质量保证是绝大多数软件工程过程和管理过程的不可缺少的部分。
软件配置管理的目的是在项目的整个软件生存周期中建立和维护软件产品的完整性。软件配置管理是绝大多数软件工程过程和管理过程的不可缺少的部分。
1.4.3 CMM重复级的可视性
软件工程师们对项目状态有详细而深入的了解,因为他们掌握有关项目状态和性能的第一手材料。可是,对大项目而言,他们的洞察力常来源于在其职责范围内的个人经验。项目以外的不掌握第一手材料的人,例如高级经理,对项目过程缺乏可视性,为得到他们监控进程所需要的信息只得依靠定期的评审。
在等级2上,顾客需求和工作产品受到控制,已经建立起基本的项目管理实践。这些管理控制使得在规定的场合项目可视。构造软件的过程可看作为一个接一个的黑金子,这使得随着活动在金子间流动,在各过渡点(项目里程碑)上具有管理可视性。尽管管理者可能不知道盒子内发生事情的细节,但是过程的产品和用以证实过程正在适当进行的检验点都是确定且已知的。当问题出现时,管理者能对它们做出反应。
第二章 我国小型软件企业现状
2.1 我国软件产业发展现状
2.1.1 软件企业概况
根据中国软件行业协会的调查统计,截止到2002年3月,我国软件企业的数量已达到7000家,其中通过认定的有3361家,共登记软件产品7854个。从地理位置上看,我国的软件企业分布相对比较均衡,北京、上海和浙江的软件企业数量最多。我国软件企业数量较多,但半数的软件企业的规模都比较小,可以界定为小型软件企业。
从人员规模上看,如图2所示,50人以下的软件企业占半数以上。我国的小型软件企业软件,其人员规模,界定在50人以下是比较合适的。
图2 软件企业人员规模
从企业收入情况来看,如图3所示,收入在100万元以下的企业个数占近半数,这部分企业属于较低收入的软件企业,可以把年收入在百万元以下的企业视为小型软件企业。
从产品构成上看,有近60%的软件产品是应用软件,而系统软件和支撑软件分别占15%和25%。我国软件产品有很强的专一性,大部分软件都是专门“定做”的。其中,很多小型软件企业限于技术和资金的制约,只生产应用软件。技术相对落后,资金不足,也是小型软件企业的特点。
图3:软件企业收入状况
软件出口方面,我国近几年来,出口软件的规模逐年增大,在我国软件产业总额中的比重逐年增大,去年的比重已超过10%。软件出口也是我国软件企业应该重视的一个发展方向。近年来兴起的对日对美的软件外包,为我国软件业带来了巨大的利润。
2.1.2 如何界定小型软件企业
本文主要讨论小型软件企业的过程改进,如何金顶小型软件企业是首要的问题。
1998年SEPG会议关注于CMM及小组织上,“小”被定义成“5个或更少的人为期3至4个月的开发”。Brodman和Johnson则定义“小组织”为少于50个软件开发人员并且“小项目”为少于20个开发人员[Johnson98]。
结合上节所述的我国软件企业的现状,参考各种文献上的定义,本文对小型软件企业作以下描述:人数规模在30----50人左右,年收入150万左右,管理方法和技术实力较为落后,但有自己独立的软件产品,有较为稳定的市场,对公司将来的发展有一定的计划。
在此这样定义小型软件企业,是要区分软件企业与软件作坊。软件作坊与小型软件企业的区别在于:小型软件企业是具有相对稳定的市场的,对公司的发展也有计划,并能按照计划执行;而软件作坊则把主要精力放在寻找市场,寻找客户上,对公司的发展也没有计划,处在一种“走一步算一步”的状态上。在目前的形势,小型软件企业才有能力和有必要实施过程改进。而作坊式的软件企业则不在本文的讨论范围之内。
2.2 我国小型软件企业实施CMM的重要性
任何都需要有效的管理方法,软件企业的管理方法有和其它类型的企业有所不同。中国软件企业管理的经验比较少,人员也很困乏,没有形成一个有效的体系。软件生产都是依靠个人出色的技术能力和管理观念,这样的软件企业,对生产,质量都没有保证,其生产过程只依靠偶然的因素。这样的企业是很难担当起振兴软件产业的重担的。
我国小型软件企业所使用的开发技术,都是已经成熟的开发工具,软件开发人员近年来的供应量也比较大,单纯的开发技术问题不是企业的焦点问题。软件企业应该更重视企业的管理,使之成为一种稳定的软件生产。企业只有有了稳定的产品输出,有了自己的产品,才能去开拓市场。同样,企业一定会重视产品的质量。软件也是产品,软件企业同样也是生产单位,应该借鉴工程管理的思想,严格遵守软件过程的约定,这样才能保证软件的生产和产品的质量。
CMM理论是一套成熟的,经过实践检验的过程改进方案,在实践过程中取得了很好的效果。印度是全世界软件出口规模、质量和成本等综合指数最高的国家。印度软件业成功的一个很重要的方面就是重视过程的改进。全世界通过CMM5认证的企业中,印度企业占半数以上。
下面我们看一个印度软件企业实施CMM带来的益处。Atos Origin India(AOI)是印度的一家软件企业,已经成功地达到了CMM5认证。AOI的主要业务是技术支持和ERP系统。他们早在1994年就通过了ISO9000质量体系认证,但又选择了CMM,是因为CMM强调不断改进和优化过程以达到优质的思想是很符合哲学道理的,即品质没有终点,只有不断改进。在1996年,他们分别取得了CMM第二级和第三级认证,四年后又分别取得了第四级和第五级认证。
以下是公司六年来的变化:
1、财政情况:由于资源被充分利用,以及项目的预算和进度都能按计划进行,使得财政性能表现更佳。
2、客户满意:平均客户的满意指数从3.5上升到4.5,客户相当欣赏公司的服务表现
3、过程效率:从ISO9000到CMM的第二级和第三级,由于CMM重复级,3和ISO9000有相似的重点实施,过程效率提高不明显,但从CMM的第二级和第三级到第五级时,过程效率得到极大提高。
4、员工满意:员工的平均满意指数从1996年的3.2上升到2000年的3.8。
由此看来,CMM对公司的发展是有很大的帮助的。我国政府也非常鼓励CMM在我国软件企业的应用。2000年7月国务院发布了《鼓励软件产业和集成电路产业发展若干政策》的文件,明确提出了鼓励软件企业实施CMM。政府对实施CMM的企业也会给予一定的帮助有优惠政策。
CMM的实施对我国软件企业有很重要的意义,软件企业应该抓住时机,努力提高自己公司的管理水平,加快企业的发展速度。
下转第二部分