中国大约有7000多家软件企业,平均人员在30人,对于中小企业而言有没有必要通过CMM评估?
无论是大企业还是中小型企业,取得CMM认证不是软件过程改进的目的。只要企业有一定的规范,而且这套规范是适合企业的软件开发过程的,那么就不一定非要进行正式CMM的CBA-IPI评估。
郑人杰(科技部CMM应用推广组组长):实施CMM就是改进软件过程,这是不分企业大小的。当然,企业通过CMM评估的花费不菲,如果小企业不便承担这些费用,可以自己做,重在自己改进过程,不用花钱请人做评估,这样的花费会比较少。
周伯生(赛柏科技公司获得SEI授权的主任评估师):我们了解到国际上实施CMM的,最小企业的软件人员只有4名,还有12人的,4人的企业在荷兰,12人的在日本。
我同意郑教授的观点,CMM重在过程改进。小企业实施CMM,可以自己先做起来,要花一点钱,但跟实施CMM取得的效果比起来,这点钱花得很值。
观点分析
实际上,这个问题可以分为几方面考虑:
CMM评估的目的 CMM可以用来评估一个软件开发组织的软件过程能力(外部使用),也可以用来计划、指导开发过程的改进(内部使用)。CMM把成熟、完整的过程与不成熟的过程区分开来。
CMM另一个目的是,帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,保存和发扬组织过程财富,从而能按时、不超预算地开发出高质量的软件。另外,还有扩大知名度、拓展海外市场、融资上市等作用。
CMM评估方法 目前有关组织针对CMM开发出许多评估方法,其中公认的有三种:一是CBA-IPI评估,二是Mini-Assessment评估,三是SCE评估。
CBA-IPI(CMM Based Appraisal for Internal Process Improvement,内部过程改进基于CMM的评估方法)是专为组织进行内部过程改进而建立起来的一套CMM成熟度级别评估方法,它是建立在以往SEI参与或观察过对软件组织的评估工作基础之上,依据成熟度框架构建的一套评估方法,这是我们通常意义上所讲的评估。
Mini-Assessment(小型评估),是基于CBA-IPI方法的简单的评估方法,是用一种快捷但不十分精确的方式描述组织的强项和弱项。通常预评审被用来检验进度或确定过程改进方案从哪里开始。预评审之后既可进行正式的内部过程改进评估,从而对过程的强弱项有更准确的了解,也可以通过实践演练的方式为改进组的成员提供一次“双向”的培训。
SCE(Software Capability Evaluations,软件能力评估)用于选择和监控分承包方的CMM评估,可在企业正式做出发包决定之前,评测出可能出现的风险程度以及备选软件供应商的潜在问题和管理上的优势,从而做出明智的选择并对供应商的风险实施有效的管理。
小企业的选择方法 假如企业资金不雄厚,可不必进行正式的CBA-IPI评估。建议像郑教授所说的那样,自己改善企业的软件开发过程,做出一套适合自己企业的软件开发规范,然后根据CMM模型进行小型评估,再经过一段时间的试用,不断进行改进。如果中小型企业有一定的资金,并且软件过程已经有了一定的规范,那么在条件允许的情况可以考虑请专家做过程改进顾问,来帮助过程改进。这样的费用虽然会多一些,但是在过程改进后,无论是从软件开发过程还是公司的未来利润上,都会有显著的提高。
如何确保评审质量?
我们企业刚开始接触CMM2级,我发现一个问题,CMM的宗旨就是通过过程的改进,保证软件产品的质量。在这个过程中,有很多评审的活动,但是如何保证评审质量?
评审是一个规范化和制度化的企业在软件开发过程中不可缺少的一环。因为软件开发是集体智慧和努力的结晶,任何个人单凭自己的能力都难以很好地完成一个软件项目。保证评审质量必须做到八点。
郑人杰: 这个问题提得很好。评审要看究竟怎么做评审,我是把评审跟测试同等看待的,意思就是要转变开发过程里面不能只有测试、不做评审的状态。评审工作很要紧,一定要认真做。一般说来,我们做CMM,脑子里都要装一个东西,就是过程改进循环。过程改进循环本身要检查,不是测完了就完了,要看测试有没有效果。
吴超英(赛柏科技公司获得SEI授权的主任评估师): 评审在CMM当中,尤其是在CMM3级里是一个关键的过程,它起很大的作用,不是简单地开个评审会就完了。这个评审要有好的过程定义,评审的效果要靠度量。评审做了以后,评审过程做得怎么样,评审的结果好不好,一个是当时开评审会,然后再经过产品交付以后,再出评审结果,这是一个过程。
观点分析
国内有些公司在软件开发过程中也做评审,但是评审的结果与预期效果相去甚远。原因在于:
流于形式 某些评审是一种流于形式上的评审,这类评审没有真正把握评审的实质和重要性。只是几个与项目相关或不相关的人凑在一起,听一听项目发起人的一些有关项目开发中工作产品的报告,而没有深入讨论。在没有表明每位参评人员观点的前提下,填上几张表格,然后签字了事。
准备不充分 就是参评人员在评审前没有充分阅读和分析参评的产品,所以在实际评审过程中,不能表达比较具有深刻内涵的意见。
良好而有效的评审之八要点 第一,必须明确责任,定义审查组成员角色和职责。评审一旦通过,责任是评审人员的,而不再是被评审人员的。第二,准备充分且已经文档化的评审材料,要有应用有效的评审检查表,应该至少提前两三天下发,使评审人员能够充分研究材料。第三,有一个种类齐全且具有权威性的评审团队,这里的成员对于技术、应用、市场、客户等方面比较精通。第四,必须制定出严格的评审制度,要有严格的评审管理过程。第五,参评人员必须有明确的本领域的评审意见。第六,无论是工作产品评审,还是阶段性的评审都必须有明确有效的评审结果。第七,评审结果必须在评审通过之后的工作中得以延续,就是下一步工作能够完全按照评审结果去做。第八,对评审人员也应该评审,包括评审人员发现的问题或缺陷的数量、质量及准备、发言情况。每三次评审后,应该对评审人员依据以上指标进行适当更换。
精英员工组成的项目组有必要实施CMM吗?
如果项目组用的都是精英人员,还有必要实施CMM吗?这些精英是否能开发出高质量的软件产品?
项目的精英们并不能保证顺利改进软件过程,实施CMM并不是可有可无的事情。如果没有好的管理者和组织者,项目组中精英再多也不能保证开发出来的产品就一定是高质量的。
吴超英:每个人都是精英,做产品的时候肯定有优势,但是我们做软件的要求是合作。再从实际上看,我们不能保证现在的软件企业队伍都是精英,而实施CMM就能使不全是精英的团队发挥出精英的效果。
周伯生:软件工程需要一个群体,需要互相配合,个人很强,不一定公司就很强。要保持一个组织的战斗力,必须建立起一种文化、规范和制度,而不是靠个人行为。
观点分析
这个问题应该从四个方面来分析:
其一,都是精英的软件项目组,是否有明确的责任划分;工作内容是否有冲突的地方。这里要解决的是一个责任划分的问题,责任不清,就无法发挥出精英们的能力,还会在某种程度上影响整个项目的进度和质量。
其二,项目组在软件开发过程中是否有严格的评审制度,评审活动是否能够得以真正实施,评审结果是否能够得以利用。如果项目在立项伊始,就建立了严格的评审制度,并且能够按照评审制度去组织评审、实施评审、评审的结果能够真正成为控制产品质量的保证,那么,这样的项目组开发出来的产品应该是有保证的;如果上面的评审过程不完善,甚至根本没有,这样虽不能说难以开发出好的软件,但是起码是开发过程不规范,因此在开发过程中孕育的风险也很大。
其三,项目组应建立起完善的配置管理体系,各阶段的工作产品都应置于其管理和控制之下。无论是文件的检出检入,还是版本控制,都要按照这个规程或制度办事。这样就会为组织和项目组留下一笔宝贵的开发历史文件,也为组织对该项目的维护和控制提供了保障。
其四,也是比较重要的一点,就是项目的管理者一定要有丰富的项目管理经验和项目开发经验。对于软件需求分析、软件项目的设计、项目风险的识别和规避、项目的估算、人员管理和配置、资源管理和资源配置等方面的知识都要有比较全面的了解。在这些环节中,人是比较重要的资源。所以项目经理应该具有较强的人员调配能力,使得每个精英都能发挥自己的潜在能力。人员配置搞好了,组内资源配置调配好了,不但是项目经理管理工作的胜利,同时也是项目的幸运和精英们的幸运。
过程重要还是个人重要?
工作成果的质量取决于两方面,一方面是过程的问题,另外一方面,就是软件人员的个人能力问题。在过程和个人能力都有欠缺的时候,企业是优先改善过程,还是优先改善个人能力?
企业中,技术、个人和过程哪一个重要?实际上,这三方面应该综合考虑,应靠培训把这三方结合起来。培训的过程可以让搞技术的人更好地把握技术、应用技术,这个过程又可以改进软件产品的过程。
周伯生: 我们总结软件企业的经验是,任何一个软件企业需要抓三件事,一是过程,一是人,还有一个就是技术。这三件事的关系到底怎么处理,有人曾主张过技术最重要,后来又有人说搞技术的人最重要,近来又有人提出过程很重要,依我看,过程、人员和技术这三个方面是综合起来考虑的,不能偏向哪一方。
刘超(北京航空航天大学软件工程研究所所长): 一个企业的能力,确实是多方面的。企业应该有一个适当的培训计划。培训不只是讲课,还包括内部的培训和交流。一个企业要做过程改进的时候,首先自己要有一个评估,哪些方面是最关键的、需要改进的,从这个地方着手做起。企业最重要的问题往往是目前最优先解决的问题。
观点分析
过程的问题和个人的能力问题对于整个软件过程改进来说同等重要。但如果必须在两者之间做取舍的话,应根据企业自身的特点和商业目标,重要的问题优先考虑。
对于国内大多数企业,有些专家认为应该优先考虑企业过程改进。因为过程改进是一种规范化的行为,如果过程改进了,对于产品的质量肯定会有提高,但如果只注重个人能力的提高,容易犯个人英雄主义的错误。
员工的个人能力固然重要,但是当一些外界因素发生时,可能就无法单纯依靠某个人的能力来解决问题,比如核心的技术人员离开公司。基于CMM过程改进的一个目的,就是当某个人离开项目组时,别人进入后可以很快地进入角色。
过程改进和人员能力的提高是可以并行的,这两者并不是一对非此即彼的矛盾。过程改进会给产品的质量带来一定的提高,是组织级规范化的一个问题,关系到公司的长治久安。
(本文由吴超英、于波、黄毅鹏以及李淼、王毅、张慧卓、刘一男、焦阳、周冰和张嘉文参与整理,特此感谢!)