CMMI(Capability Maturity Model Integration,能力成熟度模型集成)认证评估在过去的十几年 中,对全球的软件产业产生了非常深远的影响。CMMI 共有五个等级,分别标志着软件企业能力成 熟度的五个层次,如图 2-1 所示。从低到高,软件开发生产计划精度逐级上升,单位工程生产周期逐 级缩短,单位工程成本逐级降低。据 SEI 统计,通过评估的软件公司对项目的估计与控制能力提升 约 40%~50%,生产率提高 10%~20%,软件产品出错率下降超过 1/3。
第一级:初始级 初始级的软件过程是未加定义的随意过程,项目的执行也是随意的,甚至是混乱的。当然有些 企业可能已经制定了一些软件工程规范,但若这些规范未能覆盖基本的关键过程要求,并且在执行 过程中没有政策、资源等方面的支持,它仍然被视为初始级。 第二级:受管理级 根据多年的经验和教训,企业总结出软件开发的首要问题不是技术问题,而是管理问题。因此, CMMI 发展到了第二级,更强调软件管理过程,建立一个可管理的过程是很重要的,它可以将开 发的过程重复,只有可重复的过程才能逐渐改进并使其成熟。受管理级的管理过程主要包括五个方 面:需求管理、项目管理、质量管理、配置管理和子合同管理;其中项目管理过程又分为计划过程 和跟踪与监控过程。通过实施这些过程,从管理角度可以看到一个按计划执行且阶段可控的软件开 发过程。 第三级:已定义级 在受管理级定义了管理的基本过程,但并没有定义执行的步骤标准。在第三级则要求制定企 业范围的工程化标准,并将这些标准集成到企业软件开发标准过程中。规定所有开发的项目或产 品都必须遵守该标准过程,并且按照过程执行,当然在实际过程中,可以根据具体的项目对该过 程进行适当的裁剪,但过程的裁剪不是随意的,在使用前必须经过企业有关人员的批准。 第四级:定量管理级 第四级的管理是量化的管理。所有过程需建立相应的度量方式,所有产品(包括工作产品和提 交给用户的最终产品)的质量需要有明确的度量指标。这些度量应是详尽的,且可用于理解和控制 软件过程和产品,量化控制将使软件开发真正成为一种工业生产活动。 第五级:持续优化级 持续优化级的目标是达到一个持续改善的境界。所谓持续改进,是指根据过程执行的反馈信息来改善当前已定义的开发过程,即优化已定义的执行步骤。如果企业达到了第五级,就表明该企业 能够根据实际的项目性质、技术等因素,不断调整软件开发过程使开发过程达到最优。 CMMI 模型中包括验证(VER)和确认(VAL)两大过程域,这两大过程域与软件测试有着紧 密的联系,也是规范软件测试的两大过程域。
(1)验证(VER)过程域的目的是确保所选定的工作产品符合其指定的需求。验证过程域包 括验证准备、验证执行和纠正措施识别。 验证的对象包括产品和中间工作产品,验证方法是将待验证的对象与选定的客户需求、产品需 求和产品组件需求加以比较。验证是渐进的过程,因为它发生在产品和工作产品的整个开发过程中, 从需求开始验证,历经工作产品的验证,最终为已完成产品的验证。
(2)确认(VAL)过程域的目的是展示完全置于预期环境中的产品或产品组件是否满足预期 的使用需求。 所有的产品都可在其预期环境中实施确认活动,例如:操作、培训、制造、维护及支持服务。 所有用于工作产品的确认方法,也能使用在对产品和产品组件的确定过程中(在所有过程域中,产 品和产品组件的含义包括服务和其组件)。工作产品(例如需求、设计、原型)存在于整个产品生 命周期,应及早并逐步实施确认。 确认环境必须可代表产品和产品组件的预期环境,同时该确认环境也适用于工作产品确认活动 的预期环境。 确认证明是指所提供的产品是否符合预期的使用需求,验证与确认很容易被混淆,验证是确定 每个工作产品是否正确反映了特定需求,即验证确保“你正确地做了”;而确认是指“你做了正确 的事”。确认活动使用与验证类似的方法,例如测试、分析、检查、示范或模拟。通常,确认活动 包含最终用户和其他相关人员。确认与验证活动经常同时实施,且可能使用部分相同的环境。若有 可能,实施确认应将产品或产品组件置于其预期环境中运行。确认可能使用全部或部分的预期环境, 使用工作产品实施确认,可让问题在项目生命周期中通过相关人员的参与及早被发现。服务的确认 活动可应用于工作产品,例如建议书、服务目录、工作描述和服务记录。 当在确认过程中问题被识别出来时,需要参考需求开发、技术解决方案或项目监控过程域的实 践来解决。