什么是CMM和CMMI?

 
   CMM是由美国软件工程学会(Software Engineering Institute)制定的一套专门针对软件产品的质量管理和质量保证标准。该标准最初是为美国军方选择软件产品提供商时评价软件企业的软件开发质量保证能力而制定,所以称为软件企业能力成熟度模型(Capability Maturity Model,简称CMM)。该标准将软件企业的能力成熟度划分为5个等级,级别越高表明该企业在提供合格软件产品方面的能力越强。
    CMM(Capability Maturity Model)是能力成熟度模型的缩写。CMM的工作最早开始于 1986年11月,当时为了满足美国联邦政府评估软件供应商能力的要求,美国卡内基·梅隆大学的软件工程研究院 SEI 牵头,在Mitre公司的协助下,于1987年9月发布了一份能力成熟度框架(Capability Maturity Framework)以及一套成熟度问卷(Maturity Questionnaire).很多人认为这套问卷就代表了CMM模型,其实它只是用于探索软件过程成熟度的一个工具,真正的模型出现在四年以后。SEI总结了自1987年以来对成熟度框架和初版成熟度问卷的实战经验,并以此为基础,推出了CMM1.0 版。这个推出于 1991年的 CMM1.0 集中了四年来对软件公司评估的经验以及广泛的用户反馈,在成熟度框架的基础上建立了一个可用的模型,这个模型可以更加有效地帮助软件企业建立和实施过程改进计划。

    CMM1.0 版使用两年之后,于1992年四月进行了一个研讨会,参加研讨会的有约两百名富有经验的软件专业人员。在广泛听取了他们的反馈意见之后,SEI于 1993 年推出了CMM1.1 版。近几年来,CMM又推出了2.0 版本,同时进入了ISO 体系,称为 ISO/IEC15504 或 SPICE. SPICE从1995年起进入实地测试阶段,可能于2001年发布 。

   五级的具体定义如下:

    初级(initial):软件开发过程中偶尔会出现混乱的现象,只有很少的工作过程是经 过严格定义的,开发成功往往依靠的是某个人的智慧和努力。

可重复的(repeatable):建立了基本的项目管理过程。按部就班地设计功能、跟踪 费用 ,根据项目进度表进行开发。对于相似的项目,可以重用以前已经开发成功的部分。

    被定义的(defined.):软件开发的工程活动和管理活动都是文档化、标准化的,它 被集成为一个组织的标准的开发过程。所有项目的开发和维护都在这个标准基础上进行定 制。
     被管理的(managed.):对于软件开发过程和产品质量的测试细节都有很好的归纳, 产品和开发过程都可以定量地分解和控制。
     优化的(optimizing):通过建立开发过程的定量反馈机制,不断产生新的思想,采用 新的技术来优化开发过程。
     模型的等级从低到高,可以预计企业的开发风险越来越低,开发能力越来越高。除模型的第1级外,其他每个等级都由不同的过程区域构成,而每个过程区域又由各种目标构成,每个目标由各种实践支持(实践分为该目标特有的特殊实践和各种目标均适用的通用实践两种形式)。
     一个组织只要开始从事软件开发,即自动处于第1级,要通过其他等级,就需要达到统一的标准,即相对应等级中的各个区域过程。
     CMM2级过程区域有7个:需求管理、项目策划、项目监督和控制、供方协定管理、测量和分析、过程和产品质量保证、配置管理。
      CMM3级过程区域有11个:需求开发、技术解决、产品集成、验证、确认、组织过程聚焦、组织过程定义、组织培训、集成项目管理、风险管理以及决策分析和决定。
      CMM4级过程区域有2个:组织过程性能和定量项目管理。
      CMM5级过程区域有2个:组织革新和部署、原因分析和决定。
      当一个软件组织按照CMM的要求贯彻活动,并达到预期的效果,该组织就可以被认为是达到CMM的要求。
     cmm和iso9001的出发点都是通过对生产过程进行管理,来确保产品的质量。虽然它们 之间有很多区别,但也有相似之处。比如,通过iso9001认证的组织,可以基本满足cmm二级 的标准和很多cmm三级的要求。因为cmm中的很多要求并没有列入iso9000标准之中,所 以,cmm一级的组织也可能获得iso9001的登记,defined.同样,有些iso9001规定的内容并没 有列入cmm标准。一个cmm三级组织获得iso9001认证几乎没有困难,cmm二级组织申请 iso9001认证也有明显优势。

引进CMM的意义有两个方面

1.对软件企业: 提高软件开发的管理能力:CMM提供了软件企业自我评估的方法和自我提高的手段;提高软件生产率;加强软件生产的国际竞争力。
2.对软件项目发包单位和软件用户: 提供了对软件开发商开发管理水平的评估手段,有助于软件开发项目的风险识别。

何谓CMMI?

CMMI全称是Capbility Maturity Model Integration,即集成的能力成熟度模型,是由美国国防部与卡内基-梅隆大学和美国国防工业协会共同开发和研制,与2002年4月推出了系统工程和软件工程的集成成熟度模型。CMMI是一套融合多学科的、可扩充的产品集合,同时也是工程实践与管理方法。

  CMMI能够解决现有的不同CMM模型的重复性、复杂性,并减少由此引起的成本、缩短改进过程,她将软件CMM2.0版草案(SW-CWW)、EIA过渡标准731(系统工程CMM)及IPD-CMM集成为一体,同事还与ISO15504相兼容。与原有的能力成熟度模型CMM相比,CMMI涉及面更广,专业领域覆盖软件工程、系统工程、集成产品开发和系统采购。

  CMMI自出道以来,它所达到的目标就没有变过,第一个是质量,第二个是时间表,第三就是要用最低的成本。不过特别强调的是,CMMI不是传统的、仅局限于软件开发的生命周期,它应该被运用于更广泛的一个范畴——工程设计的生命周期。TSP的建立,也是为了支持CMMI的这样一个系统。   那么CMMI究竟是什么呢?它并不是一个过程,也不是告诉你怎么去做一件事情。如果用一句话来概括什么是CMMI,它就是各个进程的一个关键的元素,在很多领域里面一个集成的点。它是这样的一个基本架构,能够用来度量你的有效性和实用性;能够找出这样的一些机会,继续改进的机会,包括在商业目标、策略还有降低项目的风险等方面。   CMMI与CMM的区别呢?CMMI即CMM集成,是系统工程和软件工程的集成成熟度模型,CMMI更适合于信息系统集成企业。CMMI是在CMM基础上发展起来的,它继承并发扬了CMM的优良特性,借鉴了其他模型的优点,融入了新的理论和实际研究成果。它不仅能够应用在软件工程领域,而且可以用于系统工程及其他工程领域。

### CMMCMMI的定义 #### CMM (Capability Maturity Model for Software) CMM 是一种专注于软件开发过程改进的成熟度模型,最初由卡内基梅隆大学的软件工程研究所(SEI)于1991年发布。它为软件组织提供了一套系统的指导原则,帮助其实现更高的质量、效率以及项目成功的可能性[^3]。 #### CMMI (Capability Maturity Model Integration) CMMI 是在 CMM 的基础上进一步发展的综合性模型,旨在整合多个领域的最佳实践并形成统一的标准体系。CMMI 不仅适用于软件工程,还涵盖了系统工程、采购等多个领域,从而支持跨学科的企业整体流程改进活动[^1]。 --- ### CMM CMMI 的主要区别 | **比较维度** | **CMM** | **CMMI** | |--------------------|-------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------| | **适用范围** | 主要面向软件开发领域 | 扩展至系统工程、硬件设计及其他相关业务领域 | | **结构形式** | 使用分级模式描述五个不同的成熟阶段 | 提供两种表示方法——连续式(Continuous Representation)阶段性(Staged Representation),灵活性更高 | | **更新迭代情况** | 已停止官方维护 | 持续演进升级版本 | | **评估机制** | 原有的 CBA-IPI 方法 | 替代方案 SCAMPI(Specific, Contextualized Appraisal Method for Process Improvement) | 具体来说,在实际操作层面两者存在如下显著差异: - 就软件而言,CMMI可以视为SW-CMM修订版集合了后者2.0草稿期更多合理性科学性的优点同时简化消除原有单独各部分间存在的冲突矛盾之处构建起更加清晰易懂便于推广使用的框架结构[^2]. - 新一代集成模型不仅保留延续前作核心理念而且针对新时代背景下的新挑战做出积极调整优化使得整个生命周期管理变得更加高效可控同时也为企业带来更大价值回报比如据统计数据显示采用此类标准后通常能够使劳动生产力提升约百分之三十五左右缺陷率下降近四成经济效益达到投入产出比五倍以上的效果[^4]. --- ```python # 示例代码展示如何判断某个过程是否符合最低级别要求 def check_process_level(process_output, process_input): """ 判断给定的过程输入输出关系是否至少达到了 CL1 级别的要求 参数: process_output (list): 输出产物列表 process_input (list): 输入产物列表 返回: bool: 如果满足条件返回 True; 否则 False """ if not isinstance(process_output, list) or not isinstance(process_input, list): raise ValueError("Inputs must be lists") # 至少有一个可识别的输入转化为有效的输出才算是实现了CL1级别的目标 conversion_happened = any([item in process_output for item in process_input]) return conversion_happened ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值