为了保证软件产品的质量,80年代中期,美国联邦政府提出对软件承包商的软件开发能力进行评估的要求。为了满足这个要求,美国卡内基-梅隆大学软件工程研究所(CMU/SEI)于1987年研究发布了软件过程成熟度框架,并提供了软件过程评估和软件能力评价两种评估方法和软件成熟度提问单。1991年,SEI将软件过程成熟度框架进化为软件能力成熟度模型(Capability Maturity Model For Software,简称SW-CMM),并发布了最早的SW-CMM 1.0版。
CMM 的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化,标准化。使企业能够更好的实现商业目标。因此,CMM可以作为企业软件过程改良的参照标准(Checklist),协助软件开发机构建立严格、标准的软件开发过程,最及时、高效地组织软件开发队伍进行软件开发。现在,CMM已成为国际上最流行、最实用的软件生产过程标准和软件企业成熟度等级认证标准。它被喻为打入国际市场的"通行证",特别是美国政府项目或大型项目,客户肯定要考察承包商的CMM等级水平。通过CMM认证的软件开发机构,在软件产业界将拥有较高的知名度和信誉保障,在国际市场的竞争中也将拥有较大的优势。
CMMI (Capability Maturity Model integration) 是为了解决现有不同CMM模型的重复性、复杂性,并减少由此引起的成本、改进过程,由美国国防部出资,委托美国卡耐基梅隆大学软件工程研究院(SEI)开发的能力成熟度模型集成,它将软件CMM2.0版草案C(SW-CMM)、EIA过渡标准731(系统工程CMM)及IPD-CMM集成为一体,同时,还与ISO15504相兼容。该模型广泛适用于政府机构、软件和硬件开发公司。
美国软件工程研究所(SEI)已于2001年12月发布了CMMI 1.1版本,并正式宣布,自2005年起将只支持CMMI。
CMMI 模型包括了一系列的过程域,这些过程域构成了集成能力模型的核心,提供了软件工程、系统工程、集成产品及过程开发的过程改进指南。CMMI模型包括阶段式成熟度能力和持续式过程能力两种表示方法。CMMI为企业的过程构建和改进提供了指导和框架作用,提高企业过程改进的投资回报率。同时,CMMI模型也可以根据企业使命和商业目标进行裁剪以符合企业自身的需要。
企业推行CMM的意义
随着中国的入世,国家以及各级政府对软件产业支持力度的加强,越多的中国软件企业开始尝试性地推行CMM工作。推行CMM的重要意义在于:
● 规范软件产品(work product)的开发活动,尽可能消除人为或系统性因素对 软件产品质量的影响。
● 建立有效的开发系统,控制各种影响软件产品开发过程的影响因素,从而获得预期的产品质量。
● 控制、分析产生各种不合格因素及原因,采取有力措施消除缺陷,以降低软件企业内外部故障成本,提高企业的经济效益和社会效益。
● 通过对各种体系、过程和软件产品数据分析,建立起科学、快速和有效的持续改进的体系。
● 树立良好的企业形象,提高市场竞争能力。