对CMMI3的学习和思考


    原文出处: http://tech.it168.com/m/2007-08-02/200708020957750.shtml
    本文请勿转载。

    近来笔者所在公司正在为过CMMI3做各种准备,对公司的员工进行了一些相关的培训,作为项目管理人员的我,在学习CMMI3的过程中,也有了自己的一点对于CMMI3的思考。

   CMMI将软件过程中的很多步骤都通过步骤规范起来,它并没有告诉我们应该怎么去做,而只是告诉我们应该做些什么。因为软件过程中的每一步都需要经过思考、决策、有依据才能得出过程的结果,所以减少了每一步发生错误的可能性。

一.CMMI概述

   CMMI是Capacity Maturity Model Integrated的简称,即集成的软件能力成熟度模型,CMM是CMMI的早期版本,它主要用于软件工程,而CMMI是一种综合性模型,它是工程实施和管理方法,它在软件与系统集成以外的如科研、工程等领域都得到了广泛的应用。

   CMMI是一个由理论和经验部分组成的模型。它有连续式和阶段式两种表述方式,其中连续式主要用于衡量一个企业的项目能力,而阶段式主要用来衡量一个企业的成熟度。在连续式表述下,企业在接受评估时可以选择自己希望评估的项目来进行评估,所以评估通过率相对比较大,但它反映的那个相对比较窄,因为它仅仅反映该企业的该项目或类似项目达到了对应的等级。而用阶段式来进行评估时,需由评估师自己来挑选内部的任何项目或其中的某一部分来进行评估。

     阶段式的CMMI有5个等级,如下:

     第一级(初始级):在该等级下,项目的目标虽然得以实现,但它的实现带有很多的偶然性和风险性,该级对人员的依赖性比较大,性能依赖个人的能力,且随个人固有的性能、知识和动机的不同而变化。

     第二级(受管理级):在该等级下,意味着组织要确保策划、文档化、执行、监督和控制项目级的过程,并且需要为过程建立明确的目标,并能实现成本、进度和质量目标等。在这种情况下,组织已经营造了一个稳定的、受控的开发环境,项目已经在受控制的状态下运行。该级包括如下7个过程域:需求管理(RM)、项目策划(PP)、项目监督与控制(PMC)、供方协定管理(SAM)、测量与分析(MA)、过程和产品质量保证(PPQA)和配置管理(CM)。

     第三级(已定义级):在等级三下,项目执行过程是通过裁剪组织的标准过程集合和组织过程财富产生的“已定义过程”,并具备与该过程相适应的运行环境。该级报刊如下11个过程域:需求开发(RD)、技术解决(TS)、产品集成(PI)、验证(Ver)、确认(Val)、组织过程聚焦(OPF)、组织过程定义(OPD)、组织培训(OT)、集成项目管理(IPM)、风险管理(RSKM)和决策分析和决定。

     第四级(定量管理级):在等级四下,组织建立了产品质量、服务质量以及过程性能的定量目标,运用统计技术和定量目标作为判断过程管理成功的标准。在过程的生存周期里,对产品质量、服务质量和过程性能做到统计意义上的了解和管理。该级包括如下两个过程域:组织过程性能和定量项目管理。

     第五级(持续优化级):该等级的突出特征是过程性能的持续改进。组织建立起整个组织的定量过程的定量过程改进目标,并且把它们作为过程改进的判断标准;这些目标将适时修改,以反映不断变化的本组织的业务目标。实际实施的过程和组织的标准过程集合都是改进活动的对象。该级包括如下两个过程域:组织革新和部署和原因分析和决定。

二.CMMI给我们带来了什么好处?

   概括来说,CMMI给我们带来了如下好处:改进进度和预算的可预测性、改进开发周期、提高生产率、改进质量(质量缺陷)、增加客户的满意度、提高员工的士气、增加投资回报和低质量成本。

    对于不同的人来说,CMMI给他们带来的好处各有不同,例如,对于企业的老板来说,CMMI不仅提高了企业整体的管理水平,而且为企业引进了科学高效的管理观念、创造了更好的利益。而对于项目经理来说,对CMMI技术的学习掌握能够提高自身的项目管理能力,因此能够更好的提高项目质量,低成本、按期限的完成既定的任务。等等。

    CMMI的实施包括如下几个步骤:差距分析、过程定义、过程部署和实施、预先评估和正式评估五步。它的实施能够提高我国企业的管理水平,使我国的企业在管理上能够尽快地引入国际上的先进技术。调整了我国企业的管理体制,使其从无序变成有序、主观变成客观、人治变为体制。CMMI应用将产生的直接效果是提高了工程项目的质量、降低了工程的成本,保证了工程的周期、提高我国企业的在国内与国际市场上的竞争能力。

    来越多的大型企业业开始要求其工程承包商具有一定的CMMI级别。级别高的企业在赢得项目的竞标中具有一定的优势。 因此,如果没有CMMI的等级评估,企业就会失去很多商机。另一方面,企业通过CMMI评估也是为了提升企业内部的管理水平,降低企业的工程成本,得到更加丰厚的回报,对企业来说受益不少。

    就拿笔者所在公司来说,从CMMI实施中进行差距分析来说,测量与分析、风险管理、组织培训等地方明显做得不够。因为没有测量与分析的数据的采集,导致过程中的很多地方无法进行估量。因为对风险管理得不够,使得风险散播到项目过程中的各个地方,无法从某处获得对风险的集中管理。因为上级的组织培训的不重视,导致很多技能不能被相关人员较快较好的掌握。除此以外,还存在很多的问题,CMMI的实施给公司项目管理者带来了福音。

三.对CMMI的思考

   笔者在学习CMMI的过程中,也产生过一些疑问,进行过一些思考,具体如下:

1. 实施CMMI最好采用什么方式来驱动?

   CMMI只是告诉我们需要做什么,但具体如何做,以及采用什么工具、方法和技术等去做,这些答案需要我们自己去找。

   实施CMMI最好采用什么方式来驱动呢?

    答案是以实际需求来驱动,真正遵循IDEAL(I-初始;D-诊断;E-建立;A-执行;L-学习)组织过程改进模型。

   我们不应该过分的追求采用什么方法或工具来做好某件事情,例如设计图我们并不一定需要采用专门的Rose的工具来做;对需求等的跟踪并不一定要采用专门的需求跟踪工具来做,很多时候Excel就能够达到很好的跟踪效果。在以实际需求来驱动的过程中,可以灵活的采用适合的方法或工具,不应该太过拘泥。

2. CMMI与ISO9000存在哪些区别?

    取得ISO 9000认证不意味着完全满足CMMI的某等级要求。取得CMMI第二级或第三级也不能笼统地认为可以满足ISO 9000的要求。

3. CMMI过时了吗?

    迭代开发技术、软件产业最佳实践、和经济动机推动组织采用基于结果的方法:开发业务案例、构想和原型方案;细化后纳入基线结构、可用发布,最后定为现场版本的发布。虽然CMMI保留了基于活动的方法,它的确集成了软件产业内很多现代的最好的实践,因此它很大程度上淡化了和瀑布思想的联系。

    分析CMMI和迭代开发之间有什么联系,方法之一就是看每个模型的KPA是否为这种开发方法激发了合理的软件管理原理。CMMI和迭代思想联系得很紧密,所以说CMMI并没有过时。

4.CMMI与敏捷开发的关系?

    最近几年来,CMMI已经成为一项主流开发技术。很多成功的企业都在使用这个技术。

    那么CMMI与敏捷之间存在怎么样的关系呢?分析如下:

    使用敏捷式方法要求IT和业务方面的参与者紧密沟通,更快的交付业务需求从而更快的获取效益。降低改变的成本、提高系统的灵活性,以及降低投资的风险。敏捷式开发能在质量上有很大的提高。大概在60年代的时候,软件开发是没有计划性的,基本是写出来,谁也不知道什么时候能交付,但也就是在那个时候,软件工程学的概念在美国召开的一次会议上头一次被提出来,传统工程学通常是把项目分成三步或者四步,先把需求确立起来,进行设计构建。应用到软件里是开始先由分析人员对需求进行分析,然后设计,架构师把整体的东西设计出来,再确定下来交给编程的团队,编程的团队按照需求规约,把东西给做出来,所有的这些东西都是由不同的人在不同的时间完成的。

    这种模式的优点是:开发计划性非常强,因为你知道什么人在什么时候做什么事情。但也存在一些缺点,这些缺点主要由软件开发和传统的建筑工程学的不同引起。客户需求的不断变化,特别是商业 软件,跟随市场的变化,客户需求也在不断变化。客户本身在脑子里并不是很清楚自身需要什么,在它看到了产品后,在使用的过程中,他对自己想要的东西才有了一些更加确定的想法,知道了怎样的东西才是自己所需要的。但在这个阶段的需求变化使得项目步履维艰、使得成本大幅度增加。所以工程学里一个核心的概念,变化是最可怕的一件事情,从设计角度也好、分析的角度也好,不管怎么,不要变化,这样就使成本增加。

    敏捷式开发最核心的东西是它不排斥变化,对变化采取的是适应性的态度。敏捷式的开发针对一小部分进行设计测试,对每一个循环时间非常短,软件从小到大,从很小的一点到不断的增加扩大,而且增长的过程中是对软件不断修改的过程。

    敏捷开发还有一个很大的特点就是它是以人为本,而不是以方法为本的。我们的软件开发是脑力劳动,而不是简单的工作。如果你设计出一套方法来,不管什么方法,让每个人去适应的方法,最后开发效应反而不如你组建一个具有进取心的团队,这个团队通常情况下是先选择一种方法,细节也一样,在开发过程中,不断对方法反思,直到达到这个团队的最高开发效应为止。

    如果说,要真正赶上最新一轮的创新浪潮有几个重要的标志,一个是要赶上最新的CMMI的转向敏捷开发,从体系架构角度讲,除了一些先进的架构理念,还有一些架构模式等等,还有开源代码的应用,不仅仅是操作系统,包括数据库、应用服务器、各种开发工具等有很多的开源工具。

四.总结

    本文对CMMI进行了概述,并分析了实施CMMI给我们带来的好处,以及笔者对CMMI的一些思考。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python3抓取糗百、不得姐

​点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 重要提示1:本文所列程序均基于Python3.6,低于Python3.6的Python版本可能无法运行.重要提示2:因所抓取的网站可能随时更改展示内容,因此程序也需及时跟进.重要提示3:本程序仅供学习,不能拿去做…

halcon边缘检测的方法及各种方法的适用范围

目录一、边缘提取二、BLOB分析检测三、赃物检测一、边缘提取 1、设置ROI兴趣区域 2、快速二值化,并连接相邻区域。 这样做的目的是进一步减少目标区域,通过二值化将目标区域大概轮廓提取出来 3、提取最接近目标区域的轮廓 常用函数有boundary&#xff0…

Oracle优化-表设计

前言  绝大多数的Oracle数据库性能问题都是由于数据库设计不合理造成的,只有少部分问题根植于Database Buffer、Share Pool、Redo Log Buffer等内存模块配置不合理,I/O争用,CPU争用等DBA职责范围上。所以除非是面对一个业已完成不可变更的系…

Win10远程桌面 出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP加密Oracle修正 解决方法...

升级至win10 最新版本10.0.17134,远程桌面连接Window Server时报错信息如下: 出现身份验证错误,要求的函数不正确,这可能是由于CredSSP加密Oracle修正。 解决方法: 运行 gpedit.msc 本地组策略: 计算机配置…

CMM2

原文出处:http://hi.baidu.com/seaweaver/blog/item/e80e7af427f674d9f2d3854a.html CMM2的六个KPA 1、需求管理 (RM,Requirement Management) 2、软件项目计划 (SPP,Software Project Planning&#…

查看linux系统核数

查看linux系统核数: grep ^processor /proc/cpuinfo | wc -l转载于:https://www.cnblogs.com/myyan/p/5822368.html

Rsyslog 日志相关内容

[rootserver vusers_home]# rpm -ql rsyslog|more ###.so结尾为模块,模块有分im为输入模块,om 为输出模块/etc/logrotate.d/syslog/etc/pki/rsyslog/etc/rc.d/init.d/rsyslog/etc/rsyslog.conf/etc/rsyslog.d/etc/sysconfig/rsyslog/lib64/rsyslog…

MFC导出对话框类DLL的实现

1.新建基于对话框的应用程序 2.新建MFC DLL工程 3.选择MFC DLL 4.选择扩展Dll选项(重要!!!) 5.为Dll工程添加一个MFC类,基类为CDialogEx 6.Dll新建的MFC 类中添加resource.h防止编译出错…

中国如何引进CMM评估,促进软件产业发展

北京软件行业协会 (本文转载自软件工程专家网www.21cmm.com) 一、CMM的含义及作用   CMM(软件能力成熟度模型:Capability Maturity Model For Software)是由美国卡内基梅 隆大学的软件工程研究所(SEI&a…

关于游戏平衡性——王者荣耀英雄伤害数值参考

收集王者荣耀各个英雄的装备对技能增加的百分比,这样的主要目的为保证游戏的平衡性。对于技能主要包括:血量、物理攻击、法术攻击、物理穿透、法术穿透、暴击等。关于各个装备,已经列成一张excel表格,在这里不再详细描述表格。在这…

Swift-setValuesForKeysWithDictionary

重写 setValuesForKeysWithDictionary 那么字典中可以有的字段在类中没有对应属性 class Person : NSObject {var age :Int 0 // 重写 setValuesForKeysWithDictionary 那么字典中可以有的字段在类中没有对应属性override func setValuesForKeysWithDictionary(keyedValues…

hdu 1269 迷宫城堡(trajan判环)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1269 题意&#xff1a;略 题解&#xff1a;trajan模版直接求强连通分量。 #include <iostream> #include <cstring> #include <cstdio> using namespace std; const int N 1e4 10; const i…

Arithmetic图像处理halcon算子持续更新

目录abs_diff_imageabs_imageacos_imageadd_imageasin_imageatan2_imageatan_imagecos_imagediv_imageexp_imagegamma_imageinvert_imagelog_imagemax_imagemin_imagemult_imagepow_imagescale_imagesin_imagesqrt_imagesub_imagetan_imageabs_diff_image 功能&#xff1a;计算…

身于“乱世”,我们程序员应该如何打算?

今天看了这篇文章&#xff0c; 发现自己也有点生处乱世&#xff0c;不平之感&#xff0c;但是文章的朴实却让我有了一个良好的反省&#xff0c;特此转载 分类&#xff1a; 项目管理 2011-09-04 00:58 770人阅读 评论(12) 收藏 举报 不仅要低头拉车&#xff0c;还要抬头看路。…

Activity的启动流程

Activity的启动流程 努力工作 自己平时工作接触的frameworks代码比较多&#xff0c;但真正理解的很有限&#xff0c;一直在努力分析。。我主要还是用补丁的形式来看 core/java/android/app/Activity.java | 6 core/java/android/app/ActivityManagerNative.jav…

es6--箭头函数

基本用法 ES6允许使用“箭头”&#xff08;>&#xff09;定义函数。 var f v > v; 上面的箭头函数等同于&#xff1a; var f function(v) {return v; }; 如果箭头函数不需要参数或需要多个参数&#xff0c;就使用一个圆括号代表参数部分。 var f () > 5; // 等同于…

halcon Bit图位像素处理算子,持续更新

目录bit_andbit_lshiftbit_maskbit_notbit_orbit_rshiftbit_slicebit_xorbit_and 功能&#xff1a;输入图像的所有像素的逐位与。 bit_lshift 功能&#xff1a;图像的所有像素的左移。 bit_mask 功能&#xff1a;使用位掩码的每个像素的逻辑与。 bit_not 功能&#xff1…

NYOJ题目839合并

--------------------------- AC代码&#xff1a; 1 import java.util.Scanner;2 3 public class Main {4 5 public static void main(String[] args) {6 7 8 Scanner scnew Scanner(System.in);9 10 int timessc.nextInt(); 11 …

指针的魅力

序 指针说&#xff1a;love me&#xff0c;love me&#xff01; 但是他对指针说&#xff1a;I hate u&#xff0c;I hate u&#xff01; …… 指针仅仅是作为指针&#xff0c;我们可以把它当做有用的工具&#xff0c;为我们提供便利与好处。说起工具不得不让我想起一样东西—…

python多进程

2019独角兽企业重金招聘Python工程师标准>>> python多进程 进程简介 进程是程序在计算机上的一次执行活动。当你运行一个程序&#xff0c;你就启动了一个进程。显然&#xff0c;程序是死的(静态的)&#xff0c;进程是活的(动态的)。进程可以分为系统进程和用户进程。…