本文作者:何文强 — CODING 高级解决方案架构师 具有一线互联网、物联网独角兽、全国股份制银行、新型智慧交通等跨行业从业经历,历任 Java 开发高级工程师、DevOps 技术专家、高级研发经理等职,对微服务、敏捷、DevOps、容器技术有深刻的理解和丰富的实践。
能力成熟度模型集成(英语:Capability Maturity Model Integration,简称 CMMI 或“希迈”)是一种改进过程的方法,其目的是协助提升组织的绩效。
“CMMI”目前致力于三个感兴趣的区域:
接下来针对“希迈开发方面”进行分享。
CMMI 模型最初是为美国国防部评估其软件承包商的质量和能力而创建的,现已扩展到软件工程之外,以帮助世界各地的任何行业的组织了解其当前的能力和性能水平,并提供指导以优化业务成果。
软件过程改进的问题:
1984 年在美国国防部的支持下,卡内基美隆大学(CMU)成立了软件工程学院(SEI),同年,美国国防部委托 SEI 和美国国防工业协会(NDIA)共同进行一项研究,用于评估国防部委托的外部软件公司的软件开发能力。
1987 年,CMM 初稿完成,这是关于 CMM/CMMI 的第一个成熟度框架,该框架提供了软件过程评估和软件能力评价两种评估方法和软件成熟度问题单。
1991 年,SEI 将软件过程成熟度框架进化为软件能力成熟度模型(简称 SW-CMM),并发布了最早的 SW-CMM 1.0 版。经过两年的试用,1993 年 SEI 正式发布了 SW-CMM 1.1 版,这是目前使用最为广泛的版本。
2000 年,SEI 发布 CMMI V1.0,CMM 已经演化为 CMMI。2002 年,SEI 发布 CMMI-SE/SW V1.1 (CMMI for System Engineering and Software Engineering)。
2006 年,SEI 发布 CMMI V1.2。2011 年,SEI 发布 CMMI V1.3 版本,这是目前使用最多的 CMMI 版本。
2018 年,CMMI 研究院正式发布 CMMI 2.0 中文版。
强调高层管理者的支持。过程改进往往也是由高层管理者认识和提出的,大力度的一致支持是过程改进的关键。
仔细确定改进目标,首先应该对给定时间内的所能完成的改进目标进行正确的估计和定义并制定计划。选择能够达到的目标和能够看到对组织的效益。
选择最佳实践,应该基于组织现有的软件活动和过程财富,参考其他标准模型,取其精华去其糟粕,得到新的实践活动模型。
过程改进要与组织的商务目标一致,与发展战略紧密结合。
管理需求和识别需求与计划项目之间的差异性。
评估计划参数,指定内外任务,开发项目管理计划。
监控项目过程和绩效以防和项目计划相违背;当实际的情况与期望数值有明显差异时,应采取纠正行动。
建立和维护基线及其完整性、追踪和控制工作产品的变化。
监督供应商的工作产品与过程,追踪供应商的进展与绩效,适当地修订供应商协议;执行验收审查与测试供应商所产生的产品组件。
客观地评价过程和相关产品工作是否严格适用于过程描述、标准和程序。
排列信息识,别需求项目、组织或企业目标的度量目标和活动,并为其提供度量结果。
收集项目干系人需求,规划产品和产品组件,分析和确认这些需求。
在产品或产品组件中描述迭代循环周期,选择解决方案和开发实现设计。
为合法检查故障选择产品和产品组件;选择检查方法;建立和维护检查程序、标准和在确保产品和产品组件满足最终用户需求的实际操作环境。
建立和维护检查方法、程序、标准和环境,以及执行同级评审和检验选择的产品。
开发产品集成策略,程序和环境;确保产品组件间的界面兼容性;组装产品组件;实现此产品和产品组件。
从始至终地建立和维护项目的过程定义,在项目管理中运用项目过程定义和相关人员协作。
为让过程变得有价值,及计划、执行和部署过程改进,决定过程改进的时机。
建立和维护一些列标准过程价值,通过组织增加组织过程有价值的资产,以及为团队制定规则。
从战略上识别组织培训需求,并提供培训。
定义一个有风险的管理策略,识别、分析和减轻风险。
根据能识别出与制定标准差别的官方过程评价选择性地分析可能的决定,同时也可以为哪些决定需要改进的过程评价提供指导。
为组织的一系列标准过程建立和维护过程绩效基线和过程绩效模型。
运用统计学、其他定量技术和历史数据,建立质量和过程绩效目标、排列项目的过程定义、选择子过程理解过程绩效、监控子过程和项目绩效、执行总过程从分析原因到描述过程绩效缺陷。
利用统计学和其他定量技术分析组织的经营绩效,目的是决定绩效的不足,识别和部署过程和为过程绩效目标提供帮助的改进技术。
定义和系统地描述选择结果的原因分析。
在 CMMI 中,每一种 CMMI 学科模型都有两种表示方法:阶段式表示法和连续式表示法。
不同的表示法具有不同的结构。连续式表示法强调的是单个过程域的能力,从过程域的角度考察极限和度量结果的改善,其关键术语是“能力”,阶段式表示法强调的是组织的成熟度,从过程域集合的角度考察整个组织的过程成熟度阶段,其关键术语是“成熟度”。
连续表示的优点是提供了灵活性。用户可根据具体的改进目标来选择需要实现的过程域及其实现次序。
每个过程域之间不是独立个体,是存在关系的,为了支持连续性表述 CMMI 将过程域分为项目管理、过程管理、工程管理和支持 4 种类型。
阶段表示是从 CMM 模型继承而来,已经过多年的实践检验。它提供了一个明确的、被证实的过程改进路径,遵循这条路径不需要过多的讨论和争论。而且由于它的明确性和统一性,有助于进行跨组织的比较。
初始级:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。
已管理级:建立了基本的 项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
已定义级:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。
量化管理级:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
优化级:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。每个等级都被分解为 过程域,特殊目标和特殊实践,通用目标、通用实践和共同特性。
阶段式表述提供由成熟度第 1 级到第 5 级的改进路径,包含达成每一个成熟度等级过程域的目标。为了支持阶段式表述,群组成熟度指出实行哪些域以达成每一个成熟度等级。
《数字化 IT 从业者知识体系》背景
数字化和可持续发展是中国企业未来发展的两大主题,掌握数字化知识,具备数字化能力,应用数字化技术是我们 IT 从业者未来核心竞争力所在。《数字化 IT 从业者知识体系》的初衷是为 IT 从业者提供的系统性的数字化知识体系,内容涵盖管理实践、工程实践、技术实践三个层次,涉及软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四大方面。
在接下来的《数字化 IT 从业者知识体系》系列文章,何文强将从软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四个方面,为大家进行逐一分享介绍:
1. 软件开发方法主要包括瀑布、敏捷、精益等;
2. 应用技术架构主要包括微服务架构、服务网格架构、无服务器架构、分布式多运行架构等;
3. 应用部署与管理主要包括但不限于虚拟化技术、容器技术与容器编排等;
4. 软件交付与协作主要包括但不限于 CMMI、ITIL、DevOps 等。
相信该知识体系有利于 IT 从业者构建丰富的技术体系、全面的技术视野和系统的能力建设。欢迎大家前往《数字化 IT 从业者知识体系》话题进行详细阅读。