无论是经典的软件过程模型,或是多种基于管道理论的敏捷方法,都是通过软件过程模型来组织软件开发过程,软件过程模型偏重于开发流程管理,这一节我们通过过程要素的另一个视图来剖析软件开发过程。任何形式的软件开发过程都可以使用流程、人员和技术三个方面来切入。流程定义一系列开发的步骤和操作方法,人员需要通过培训和管理提升技能,而广义上的技术包括应用领域、工具、语言、信息和环境。

业界对如何进行过程改进也存在一些方法论和框架,最具代表性的就是CMMI(Capability Maturity Model Integration, 软件能力成熟度模型集成)。而敏捷方法中也提供了许多专门针对过程改进的实践、流程和工具。本文将简要阐述CMMI中的过程改进。

1. CMMI基本概念

CMMI由一组过程域(Process Area)、一些目标(Goal)和一些工程实践(Practice)组成(见下图)。通过这些要素的组合形成了五个级别,由低到高分别称为初始级(initial)、可重复级(Repeatable)、已定义级(Defined)、量化管理级(Managed)和持续优化级(Optimizing)。

初始级中过程没有制度化,过程是无序的甚至是混乱的,几乎没有什么过程经过妥善定义,过程执行情况难以预测。处于初始级的组织一般不具备稳定的开发环境,项目成功取决于个人或小组的努力,取决于精英和个人的经验(见下图a)。在项目中建立基本的项目管理过程来跟踪成本、进度和功能特性,制定必要的过程纪律,能重复早先类似项目取得的成功,具备这些特征的就是可重复级(见下图b)。已定义级中,在已将管理和工程两方面的过程文档化和标准化,并形成了组织级的过程资产。所有项目都使用经批准和剪裁的标准过程来开发和维护,需要收集数据,也要使用数据(见下图c)。而量化管理级则使用统计和其他量化技术对项目过程进行控制,建立了质量和过程性能的定量目标,作为过程管理的准则,质量和过程性能度量数据能用于支持决策(见下图d)。最终的持续优化级基于对过程中性能偏差的原因的定量分析,通过渐进的和革新的技术改进,持续地进行过程性能改进。组织过程改进得到识别、评估和实施,并且全体员工参与过程优化(见下图e)。

CMMI关注人、工具和方法,从无序的初始级开始,建立项目记录、建立稳定一致的过程、以事实为依据达到能够不断创新和改进的持续优化级,将企业过程成熟能力分为五个等级。我们在实施CMMI过程改进的关键在于将标准开发过程制度化。

2. CMMI中的过程改进核心域

CMMI把所有的过程域划分为四大类型,即过程管理、项目管理、工程和支持,其中过程管理与本章讨论的研发过程体系建设关系密切。以CMMI Dev 1.3为例,过程管理相关的过程域一共有五个,包括:

  1. 组织级过程定义(Organizational Process Definition,OPD),建立和维护有用的组织过程资产
  2. 组织级过程焦点(Organizational Process Focus,OPF):在理解现有过程强项和弱项的基础上计划和实施组织过程改善
  3. 组织培训管理(Organizational Training,OT):增加组织各级人员的技能和知识,使他们能有效地执行他们的任务
  4. 组织过程性能(Organizational Process Preformace,OPP):建立与维护组织过程性能的量化标准,以便使用量化方式的管理项目
  5. 组织性能管理(Organizational Performance Management,OPM):用量化的目标来驱动,并且用量化的方式来监控改进的效果

CMMI又根据目标等级的不同把这五大过程管理类过程域分成基本过程管理类过程域和高级过程管理类过程域两大类。项目两张图描述了这两类过程管理类过程域与其它过程域类别之间的互动关系。关于CMMI的详细讨论不是本书的重点,更多内容可参考相关资料。

如果对文章感兴趣,可以关注我的微信公众号:程序员向架构师转型。

我出版了《系统架构设计:程序员向架构师转型之路》、《向技术管理者转型:软件开发人员跨越行业、技术、管理的转型思维与实践》、《微服务设计原理与架构》、《微服务架构实战》等书籍,并翻译有《深入RabbitMQ》和《Spring5响应式编程实战》,欢迎交流。

CMMI中的过程改进相关推荐

  1. 敏捷中的过程改进实践和工具

    敏捷思想中有一条原则指导我们进行过程改进:每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整.由于很多不确定性因素会导致计划失效,比如项目成员增减.技术应用效果.用 ...

  2. 过程改进的疑惑 - 习惯能改么?

    各位同志, 大家是否可以帮助这位同志分析分析一下这个问题的关键在哪里?如何解决? 我在后面也有一点评注.请留意. 老杨 ------- 培训心得一: 过程改进的疑惑 转眼来公司已经一年,很惭愧,作为专 ...

  3. 轻量级过程改进之综述

    轻量级过程改进(Light-weight process improvement,LPI)是一种针对中小型团队软件研发过程中普遍存在的重技术轻管理.研发管理缺乏规范.过程改进理念淡薄等现状和问题而整理 ...

  4. 企业实施CMMI中 常见的4大问题

      1. CMMI模型的理解和应用不够深入 CMMI模型是一个复杂的模型,它涉及到许多不同的方面,如组织结构.流程.技术.管理等,因此,要想深入理解和应用CMMI模型,需要花费大量的时间和精力. 企业 ...

  5. 软件企业过程改进开展之高层管理者支持 文/谷雨霖

    软件企业过程改进开展 --之高层管理者支持 摘  要 随着软件行业的发展,软件企业对软件开发的一致性.高效.低成本.高质量提出了更高要求.本文从软件企业开展过程改进的关键干系人-高层管理者角度出发,分 ...

  6. EPG 在 CMMI 中的缩写含义   EPG (Engineering Process Group) 在“能力成熟度模型集成”中,是“过程改进小组”的缩写.   是指决策层面的LEADER组成的委

    EPG (Engineering Process Group) 在"能力成熟度模型集成"中,是"过程改进小组"的缩写. 是指决策层面的LEADER组成的委员会, ...

  7. 过程改进建设中的常见奖励措施

    常见的有四类过程改进值得考虑的奖励措施 一.Process Champion 过程冠军 奖励在过程定义.知识整理并传播中突出贡献的人 过程冠军 承担某方面过程的定义起草.编写教材,提供培训和指导. 对 ...

  8. cmmi文档_实施CMMI过程改进的框架介绍

    已经了解了CMMI实施方法是IDEAL模型,而今天是在IDEAL模型的基础上实施CMMI过程改进的框架,该框架可以很好的帮助大家理解IDEAL模型和CMMI过程改进的核心内容.框架图如下: 框架内容介 ...

  9. 期许伟大-基于CMMI的过程改进之道探索

    原文作者:上海科维安信息技术顾问有限公司QAI China 何丹博士 CMMI主任评估师 一.引子     近年来,由美国SEI  (软件工程研究所)开发的SW-CMM  (软件过程能力成熟度模型) ...

  10. 论:CMMI 过程改进规程

    过程改进规程 目 录 1 引言 1.1 目的... 4 1.2 范围... 4 1.3 缩写和术语... 4 2 规程概述... 4 2.1 简介... 4 2.2 结构图... 5 2.3 相关过程 ...

最新文章

  1. WINCE系统启动时是否clean boot
  2. Atom飞行手册翻译: 2.7 ~ 2.10
  3. 浙江义乌发现桥头遗址,将5000年中华文明,再前推4000年?
  4. kmeans python sklearn_Python手动实现kmeans聚类和调用sklearn实现
  5. Python接口自动化之unittest单元测试
  6. 转载 SpringMVC详解(三)------基于注解的入门实例
  7. python thread start_Python中Thread类的start和run方法的区别
  8. 遥感影像转换成MapGIS识别的msi格式
  9. 网络游戏外挂与反外挂的研究
  10. 杭电3233(杂题)
  11. xxl-job任务调度平台发送报警邮件
  12. 猪猪视频显示没有服务器,猪猪小视频软件
  13. 信息系统项目管理师核心考点(五十四)配置项分类、状态与版本
  14. MATLAB信号处理——信号与系统的分析基础(1)
  15. client?0edb:161 [WDS] Errors while compiling. Reload prevented.
  16. html怎么弄到excel里,html里导入excel表格数据-如何将网页中的表格快速复制到EXCEL中...
  17. 谷歌百度脸书IBM,人工智能四巨头2014盘点
  18. 顺序表ADT模板设计及简单应用:将顺序表中前 m 个元素和后 n 个元素进行互换
  19. NumPy简明教程(二、数组1)
  20. 解决使用Arduino IDE 下载esp8266开发版很慢的问题(支持任何版本)

热门文章

  1. 一文带你了解手机运营商类api接口
  2. html链接抓取,【SEO工具】网页超链接提取工具(无语网站链接抓取器)
  3. x-bov16 firmware android,MSD0431XX 松下
  4. Logisim元件用法详解三:Plexers 复用器
  5. harview .har文件解析
  6. C语言课设物业费管理系统(大作业)
  7. Java基础continue语句
  8. python下载txt_Python读取TXT文件中的URL并下载文件
  9. 省市区三级联动 mysql_javaweb--json--ajax--mysql实现省市区三级联动(附三级联动数据库)...
  10. JSON字符串,JSON对象,JSON数组,实体类转换