当前位置: 首页 > news >正文

CMM—软件企业走向世界的通行证

正当我国计算机软件行业2000年实现产值235亿元,为自己九十年代年均30%的增长沾沾自喜的时候,从邻国印度传来捷报:1999-2000年度,印度软件产业实现产值56.5亿美元,其中出口40.5亿美元,占目前印度出口总额的10.5%,是中国的近百倍,软件产品已远销世界75个国家和地区,其中28个国家完全依靠印度的软件和服务支撑。而在八十年代,印度软件业与我国不相上下。我们在总结印度软件业成功因素时发现,除了语言优势、政府高度支持外,软件企业高度重视质量、积极进行质量认证对其软件走向世界起到了极其重要的作用。印度有170家公司获得ISO9000质量标准认证,5家得到CMM五级认证(全球共13家)。《财富》全球500家大公司中,有203家采用印度计算机软件。摩托罗拉等跨国公司把CMM3级认证作为其软件供应商的必要条件。因此可以说,CMM—软件企业走向世界的通行证。

本文拟对CMM认证体系做一个简要介绍,并对我国软件如何进行CMM认证提出自己的建议。

  • CMM认证体系

概念

CMM(软件能力成熟度模型:CapabilityMaturityModelForSoftware)是由美国卡内基梅隆大学的软件工程研究所(SEI:SoftwareEngineeringInstitute)受美国国防部委托于1987年研制成功的,在美国,随后在全世界推广实施的一种软件评估标准,是一种用于评价软件承包能力并帮助其改善软件质量的方法,主要用于软件开发过程和软件开发能力的评估和改进,它侧重于软件开发过程的管理及工程能力的提高与评估,1987开始实施认证。

CMM内容

CMM评估包括5个等级,共计18个关键过程域,52个目标,300多个关键实践。各级特征与要求见表一。

名称

特征与要求

说明

1

初始级

过程无序,进度、预算、功能、质量不可预测,企业一般不具备稳定的软件开发环境,常常在遇到问题的时候,就放弃原定的计划而只专注于编程与测试

原始状态,不需要认证

2

可重复级

建立了管理软件项目的政策以及为贯彻执行这些政策而定的措施。基于以往项目的经验来计划与管理新的项目。达到此级别的企业过程已制度化,有纪律,可重复

3

定义级

过程实现标准化。在这一级,有关软件工程和管理工程的特定的、面对整个企业的软件开发与维护的过程的文件将被制订出来。同时,这些过程是集成到一个协调的整体

4

管理级

企业对产品与过程建立起定量的质量目标,同时在过程中加入规定得很清楚的连续的度量。作为企业的度量方案,要对所有项目的重要过程活动进行生产率和质量的度量。软件产品因此具有可预期的高质量。达到该级的企业已实现过程定量化

5

优化级

整个企业将会把重点放在对过程进行不断的优化,采取主动去找出过程的弱点与长处,以达到预防缺陷的目标。同时分析各有关过程有效性的资料,作出对新技术的成本与收益的分析,并提出对过程进行修改的建议。达到该级的公司过程可自发地不断改进,防止同类缺陷二次出现

表一  CMM特征与要求

由上表可以看出,CMM为软件的过程能力提供了一个阶梯式的改进框架,它基于以往软件工程的经验教训,提供了一个基于过程改进的框架图;它指明了一个软件组织在软件开发方面需要哪些主要工作,这些工作之间的关系,以及开展工作的先后次序,一步一步的做好这些工作而使软件组织走向成熟。

CMM的意义

CMM的意义不仅仅是对软件开发的过程进程管理,最关键的它还是一种高效的管理方法,有助于企业最大程度的降低成本,提高质量和用户满意度,而这正是中国软件业与美国、印度软件业最大的差距之处。

与软件工程不同的是,CMM是对于企业软件开发的整个过程进行全方位的考察与评估,甚至包括了对于开发人员的管理、文档的管理以及对开发人员素质的评估。CMM也不同于目前大家所熟知的ISO 9000系列质量体系的认证,因为后者是针对各行各业所有生产过程的管理,而对软件产业的特殊性考虑不够。

CMM并不强调所有的软件企业都采用统一的管理模式和规范,而是提供一系列评估的指标,帮助企业在原有基础上进一步实现规范化管理,比如企业的文档之间是否保持一致性、软件开发人员的管理是否严格、开发的软件是否经过严格测试等等。

CMM对企业的要求和帮助

基于CMM模型的软件成熟度实践要求企业尽量采用更加规范的开发标准和方法,使用更加科学和精确的度量手段,选择更便于管理和使用的开发工具。因此,造成了整个工程的可重构性、可分解性和最优化,明确了整个项目中必要和不必要的工作,明确了整个项目的风险,以及各个阶段进行评估的指标与应急措施。

  • CMM认证过程

CMM评估由已经具备一定开发经验的企业向设在美国卡内基梅隆大学的软件工程研究所的认证委员会提出,依据CMM认证规范,由经过SEI授权的首席评估员(LeadAssessor)主持。认证结果就是首席评估员的签字,没有证书。

CMM认证过程包括准备、实施和报告三个阶段,见表二。

阶段

子项

工作内容

准备

组织

成立评估小组;界定软件过程的所有者;确定改进范围

内部过程的归纳和整理;工具的开发

自评

根据CMM文件中2级的要求进行内部评审

界定不符合CMM2级要求的过程要素

改进内部文档

实施

初评

聘请CMM认证的首席评估员,使用与正式评估一样的方法和专业评估工具平台对过程文档和过程执行情况进行了评估

行动

制订行动方案;实施行动方案;执行改进后的过程

记录和分析改进后过程的能力和表现;继续改进

报告

正式

评估

现场阶段

报告阶段

实施结果

(鼎新公司)

产品质量得到了提高

千行代码的错误率减少了百分之三十

返工由过去的二至四次减少为一次,总时间缩短70%以上

交货期缩短了

预算得到了控制

高级经理获得了对项目进展情况更好的了解

管理的工作量加大了

表二  CMM认证过程

任何企业申请CMM认证必须从2级开始,一级级向上评,不能越级评审。每一个CMM等级评估周期(从准备到完成)约需12-30个月。每一级认证费用约需10万美元。

CMM认证的作用不在于获得一纸CMM证书,而是通过实施认证过程,不断改进软件企业开发规范、组织、文档、管理,达到提高软件质量、缩短开发周期、减少开发成本的目的。因此,决不能采用国内一些企业对待ISO9000的方式对待CMM论证。

  • 国内CMM认证状况

据了解,此前世界上拥有通过CMM5级认证的软件企业的国家只有美国和印度。从1987年至今2000年10月,全世界仅有1269家软件公司和机构通过了各系列的认证。其中5级38家、4级50家、3级210家,2级近400家,中国目前已有3家企业通过CMM认证。CMM的认证要求企业在软件生产的质量控制等软件工程方面达到非常高的水平,就质量的要求看ISO9000相当于CMM2.5级的水平。国内企业通过CMM认证情况如下:

1999年7月6日,北京鼎新信息系统开发公司成为我国首家通过CMM 2 级评估的软件企业。该公司由IBM和清华同方股份有限公司合资成立,是一家主要从事面向对象技术和构件技术的开发与应用的外向型软件企业。鼎新公司成功通过认证的一个主要原因是,该公司自1996年参加美国IBM环球虚拟实验室的软件开发工作,就一直按照IBM严格的管理模式对软件开发过程进行管理。

北京创智公司在1999年成为中国第一家达到CMM四级认证的机构。该公司为国家863火炬计划四大软件产业化基地之一。

2001年3月,联想通过CMM2级认证。

除本国企业外,2000年10月,摩托罗拉公司宣布摩托罗拉中国软件中心经过7年的努力,通过了CMM5级认证。这是国内首家通过这一级别认证的企业。回想1992年摩托罗拉印度软件中心通过CMM5级认证,带动了印度软件企业大量参与CMM认证。希望这次摩托罗拉能为中国软件企业担当领头人的角色。

国内企业通过CMM认证少,主要原因有几个方面:一是观念跟不上,没有把CMM认证放在企业经营的战略高度;二是费用高;三是软件企业规模普遍较小。为此,北京市等一些地方政府开始采取鼓励、支持政策,积极宣传CMM认证,对参与认证的企业进行经济资助。相信今后会有越来越夺得企业参与、通过CMM认证。

  • 软件企业进行CMM认证的建议

国内软件企业没有实施CMM认证最大的障碍是观念滞后:

  1. 我国企业质量意识差由来已久,就是今天也还有大量假冒伪劣商品充斥市场;
  2. 国内软件需求旺盛成了我们许多企业的包袱(我国软件销售额中,国产软件占30%),众多企业没有走出国门、参与世界范围竞争的意识;
  3. 东方文化的传统重视整体不重视分析与过程,使我们没有把摩托罗拉、IBM等世界上先进公司的质量意识作为自己的楷模;
  4. 软件企业分散、规模小、封闭限制了我们把世界已经通行的标准引入我们软件开发的过程。97%的中国软件公司都属于小型运作,规模不超过200人。这些公司所采取的软件开发管理模式只适合于小型项目;
  5. 中国并不缺少软件编程人才,这是国人常常引以为傲的;但是中国软件业或者说整个高技术产业都严重缺乏软件设计和技术管理的人才,这一点没有引起国人的高度重视。

在这种环境下,进行CMM认证、走向世界不是单个企业的事,而是我们整个民族的任务,需要政府、研究部门、企业共同努力。因此,应在以下方面进行努力:

  1. 大力宣传CMM。普及CMM知识,就像当初宣传质量管理、ISO9000那样宣传CMM,达到全民皆知、全民参与的目的;
  2. 政府、研究机构加强对软件企业的辅导,为每个企业至少培养1名熟悉ISO9000、CMM的质量管理人员;
  3. 软件企业应成立质量组织,管理、控制、改进软件质量,向CMM认证靠拢;
  4. 鼓励软件企业申报CMM认证。向北京市政府学习,对有条件申报CMM认证的企业,给与50%以上的经费补助;
  5. 对于像合肥软件园这样软件企业规模较小、分散的现状,建议由政府出面,软件企业联合起来,选择一两个有条件的企业出面申报。经费由政府、申报企业、其它企业共同承担。申报成功以后,资源共享,对外打一个品牌,使欠发达地区的软件企业也能够参与国际竞争。

通过这些措施,相信能大力促进国内软件企业参与CMM认证,早日取得走向世界的通行证。

相关文章:

CMM—软件企业走向世界的通行证

正当我国计算机软件行业2000年实现产值235亿元,为自己九十年代年均30%的增长沾沾自喜的时候,从邻国印度传来捷报:1999-2000年度,印度软件产业实现产值56.5亿美元,其中出口40.5亿美元,占目前印度出口总额的1…...

基于FPGA的图像形态学腐蚀算法实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将FPGA的仿真结果导入到MATLAB,结果如下所示: 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps…...

华为云云耀云服务器L实例评测|RabbitMQ的Docker版本安装 + 延迟插件安装 QQ邮箱和阿里云短信验证码的主题模式发送

前言 最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到各种问题,在解决问题的过程中学到不少和运维相关的知识。 本篇博客介绍RabbitMQ的Docker版本安装和配置,延迟插件的安装;结合QQ邮箱和阿里云短信验证码…...

解决Linux安装AppImage文件chrome-sandbox出错问题

问题产生 在Linux版Another Redis Desktop Manager的时候,打开无反应,使用命令行运行,出现了下面的报错信息: linux: FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured co…...

Axios、SASS学习笔记

目录 前言 一、Axios基础认识 1、简介 2、相关文档 3、基本配置 4、基础快捷使用 二、Axios封装 1、公共配置文件 2、细化每个接口的配置 3、使用并发送请求 三、SASS 1、简介 2、相关文档 3、使用前奏 4、使用变量 5、嵌套规则 6、父级选择器标识 & 前言…...

开发工作中常用到的免费API分享

企业行政许可:通过公司名称/公司ID/注册号或社会统一信用代码获取企业行政许可信息,企业行政许可信息包括许可文件名称、决定许可机关、许可内容、决定日期/有效期自、截止日期/有效期至、数据来源等。企业作品著作权:通过公司名称/公司ID/注…...

外汇天眼:三大方法提高容错率——成功投资者的秘密策略!

容错率是什么? 虽然A股市场投资体验不佳,但相较于中概股市场的波动,A股投资者仍有幸福感。以中概股的代表,金龙指数ETF为例,仅一年多时间内从85.90元下跌至20.47元,跌幅高达76%。 然而,有一位…...

设计模式-状态模式

介绍 一个对象有状态变化每次状态变化都会触发一个逻辑不能总是用if else来控制 示例 交通信号灯不同颜色的变化 UML类图 传统UML类图 简化后的UML类图 代码演示 // 状态(红灯、绿灯、黄灯) class State {constructor(color) {this.color col…...

支持多种格式照片处理软件Lightroom Classic 2022 mac中文功能特点

Lightroom Classic 2022 mac是一款专业级数字图像处理软件,主要用于数字照片的后期处理和管理。它提供了丰富的工具和功能,可以帮助用户对照片进行调整、修饰、管理和分享。 Lightroom Classic 2022 mac软件功能和特点 RAW格式支持:Lightroo…...

UML简介

UML,全称为Unified Modeling Language(统一建模语言),是一种用于软件工程和系统设计的标准化建模语言。它提供了一套图形化的符号和标记,用于描述和表示软件系统、系统架构、流程、数据结构、行为和交互。UML的设计旨在…...

【PostgreSQL内核学习(十七)—— (AutoAnalyze)】

AutoAnalyze 概述AutoAnaProcess 类AutoAnaProcess 函数AutoAnaProcess::executeSQLCommand 函数AutoAnaProcess::runAutoAnalyze 函数AutoAnaProcess::run 函数AutoAnaProcess::check_conditions 函数AutoAnaProcess::cancelAutoAnalyze 函数AutoAnaProcess::~AutoAnaProcess …...

C++中指向成员的指针运算符(.* 和 ->*)用法说明

目录 一 MSDN中使用说明1.1 语法1.2 备注 二 一个使用案例 一 MSDN中使用说明 1.1 语法 expression .* expression //直接成员解除引用运算符 expression –>* expression //间接成员解除引用运算符 1.2 备注 C中指向成员的指针运算符(.* 和 ->*)…...

ASUS华硕ZenBook灵耀X逍遥UXF3000E_UX363EA原装出厂预装Win11系统工厂模式安装包

下载链接:https://pan.baidu.com/s/1WLPp0e5AZErtX3bJIhTZMg?pwd2j7i 带有ASUS Recovery恢复功能、自带所有驱动、出厂主题壁纸、Office办公软件、MyASUS华硕电脑管家等预装程序 所需要工具:16G或以上的U盘(非必需) 文件格式:HDI,SWP,OFS,E…...

【数据结构】栈和队列-- OJ

目录 一 用队列实现栈 二 用栈实现队列 三 设计循环队列 四 有效的括号 一 用队列实现栈 225. 用队列实现栈 - 力扣(LeetCode) typedef int QDataType; typedef struct QueueNode {struct QueueNode* next;QDataType data; }QNode;typedef struct …...

访问Apache Tomcat的管理页面

配置访问Tomcat管理页面的用户名、密码、角色 Tomcat安装完成后&#xff0c;包含了一个管理应用&#xff0c;默认安装在 <Tomcat安装目录>/webapps/manager 例如&#xff1a; 要使用管理页面的功能&#xff0c;需要在conf/tomcat-users.xml文件中配置用户、密码及角色…...

企业组织内如何避免山头文化?

1&#xff0c;什么是山头文化 2&#xff0c;山头文化的危害 3&#xff0c;如何避免山头文化 01什么是山头文化 山头文化就是指某一组织中的一部分人员组成一个以共同利益为基础的集体&#xff0c;就如同古代占山头一样&#xff0c;在组织中形成一股无形的力量&#xff0c;其…...

【c#】线程Monitor.Wait和Monitor.Pulse使用

介绍 以一个简易版的数据库连接池的实现来说明一下 连接池的connection以队列来管理 getConnection的时候&#xff0c;如果队列中connection个数小于50&#xff0c;且暂时无可用的connection&#xff08;个数为0或者peek看下头部需要先出那个元素还处于不可用状态&#xff09;…...

GitLab平台安装中经典安装语句含义解析

yum -y install policycoreutils openssh-server openssh-clients postfix 这是一个Linux命令&#xff0c;用于使用YUM包管理器安装指定的软件包。下面是对这个命令各部分的解释&#xff1a; yum&#xff1a;这是一个Linux命令行工具&#xff0c;用于管理RPM&#xff08;Red …...

湘潭大学 2023年下学期《C语言》作业0x03-循环1 XTU OJ 1094,1095,1096,1112,1113

第一题 #include<stdio.h>int main() {int t;int count1;scanf("%d",&t);while(t--){int a,b,c;scanf("%d%d",&a,&b);cab;printf("Case %d: %d\n",count,c);count;}return 0; } 记住多样例输入的模板&#xff0c;熟悉计数器…...

【Linux系统满足产品实时性需求】

一、背景&#xff1a; 应用实时性&#xff1a;应用程序1以固定周期执行实时算法&#xff1b; 应用程序2以固定周期&#xff0c;执行串口收发&#xff1b; 驱动实时性&#xff1a;驱动sdio接口&#xff0c;实现与FPGA数据交互&#xff0c;实现串口数据收发。 二、实时性保证&…...

不用休眠的 Kotlin 并发:深入对比 delay() 和 sleep()

本文翻译自&#xff1a; https://blog.shreyaspatil.dev/sleepless-concurrency-delay-vs-threadsleep 毫无疑问&#xff0c;Kotlin 语言中的协程 Coroutine 极大地帮助了开发者更加容易地处理异步编程。该特性中封装的诸多高效 API&#xff0c;可以确保开发者花费更小的精力去…...

在Ubuntu中批量创建用户

一、背景知识 在Linux操作系统中创建新用户可以使用useradd或adduser命令。 使用useradd命令创建用户时&#xff0c;不会在/home目录下创建用户文件夹&#xff0c;需要用户自己指定主目录和bash目录的位置。同时&#xff0c;创建的用户没有设置密码&#xff0c;无法进行登录&a…...

汽车冲压车间的RFID技术设计解决方案

一、RFID技术的基本原理 RFID技术是一种利用非接触式自动识别的技术&#xff0c;通过将RFID标签放置在被识别物品上&#xff0c;并使用RFID读写器对标签进行扫描和识别&#xff0c;实现对物品的自动识别和追踪。RFID标签分为被动式和主动式两种。被动式标签无内置电源&#xf…...

TCP 和UDP通信流程

TCP 通信流程 根据上图可以看到&#xff0c;TCP 服务器和客户端通信分为 TCP 服务端和客户端&#xff0c;需要先建立服务 端然后再建立客户端与之连接进行数据交互。 服务端编程步骤&#xff1a; 1.使用 socket 创建流式套接字 2.使用 bind 绑定将服务器绑定到 IP 3.listen…...

Swift SwiftUI CoreData 过滤数据 1

Xcode: Version 14.3.1 (14E300c) iOS: 16 预览&#xff1a; Code: import SwiftUI import CoreDatastruct TodosSearch: View {State private var search_title "测试"FetchRequest var todos_search: FetchedResults<Todo>init() {let request: NSFetchReq…...

【uniapp】subnvue组件数据更新视图未更新问题

背景 : 页面中的弹窗使用了subnvue来写, 根据数据依次展示一个一个的弹窗, 点击"关闭"按钮关闭当前弹窗, 显示下一个弹窗 问题 : 当点击关闭时( 使用的splice() ), 数据更新了 , 而视图没有更新, 实际上splice() 是不仅更新数据, 也可以更新视图的 解决 : this.$fo…...

Unity编辑器拓展-Odin

1.相比于原生Unity的优势 Unity不支持泛型类型序列化&#xff0c;例如字典原生Unity不支持序列化&#xff0c;而Odin可以继承序列化的Mono实现功能强大且使用简单&#xff0c;原生Unity想实现一些常见的功能需要额外自己编写Unity扩展的编码&#xff0c;实现功能只需要加一个特…...

小红书婴童产业探索,解析消费者需求!

在消费升级、市场引导的背景下&#xff0c;众多产业都在悄然发生着变化&#xff0c;其中“婴童产业”就是非常有代表性的一个。今天就来深入分析小红书婴童产业探索&#xff0c;解析消费者需求&#xff01; 一、何为婴童产业 事实上&#xff0c;婴童产业&#xff0c;并不仅仅局…...

离线安装mysql客户端

下载路径 oracle网站总是在不断更新&#xff0c;所以下载位置随时可能变动但万变不离其宗&#xff0c;学习也要学会一通百通。 首先直接搜索&#xff0c;就能找找到mysql官网 打开网站&#xff0c;并点击 DOWNLOADS 往下滚动&#xff0c;找到社区版下载按钮。…...

Docker 数据管理

管理 Docker 容器中数据主要有两种方式&#xff1a; 数据卷&#xff08;Data Volumes&#xff09; 数据卷容器&#xff08;DataVolumes Containers&#xff09;。 数据卷 数据卷是一个供容器使用的特殊目录&#xff0c;位于容器中。可将宿主机的目录挂载到数据卷上&#xf…...