CMM软件能力成熟度模型CapabilityMaturityModel3.1过程改进质量三角:组织的Q&P依赖于过程、人和技术三个因素;过程驱动的两种模式:目标模式:根据一个预先设定的目标,自顶向下制定过程度量或评价模型,有目的地开展相关改进活动的过程改进模式;缺陷驱动模式:根据过程实施时所产生的关于过程缺陷的反馈信息,进行有针对性的改进活动;有效结合。软件过程成熟度,指一个特定的软件过程被显式定义、管理、度量、控制和执行的程度;3.2CMM概述一个成熟软件组织具有在全组织范围内管理软件、开发过程和维护过程的能力规定的软件过程被正确无误地通知到所有员工工作活动均按照已规划的过程进行,并通过可控的先导性试验和费效分析使这些过程得到改进对已定义过程中的所有岗位及其职责都有清楚的描述通过文档与培训使全组织有关人员对已定义的软件过程都有很好的理解,从而使其软件过程所导致的生产率和质量能随时间的推移得到改进。CMM的诞生软件管理工程引起广泛注意源于20世纪70年代中期。当时美国国防部曾立题专门研究软件项目做不好的原因,发现70%的项目是因为管理不善而引起,而并不是因为技术实力不够,进而得出一个结论,即管理是影响软件研发项目全局的因素,而技术只影响局部。到了20世纪90年代中期,软件管理工程不善的问题仍然存在,大约只有10%的项目能够在预定的费用和进度下交付。软件项目失败的主要原因有:需求定义不明确;缺乏一个好的软件开发过程;没有一个统一领导的产品研发小组;子合同管理不严格;没有经常注意改善软件过程;对软件构架很不重视;软件界面定义不善且缺乏合适的控制;软件升级暴露了硬件的缺点;关心创新而不关心费用和风险;军用标准太少且不够完善等等。在关系到软件项目成功与否的众多因素中,软件度量、工作量估计、项目规划、进展控制、需求变化和风险管理等都是与工程管理直接相关的因素。软件管理工程和其它工程管理相比有其特殊性:软件是知识产品,进度和质量都难以度量,生产效率也难以保证。软件系统复杂程度也是超乎想象的。因为软件复杂和难以度量,软件管理工程的发展还很不成熟。软件管理工程的发展,在经历了从70年代开始以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征的结构化生产时代;到90年代中期,以CMM模型的成熟模型和日益为市场接受为标志,已经进入以过程成熟模型CMM、个体软件过程PSP和群组软件过程TSP为标志的以过程为中心的时代;而软件发展第三个时代,及软件工业化生产时代,从90年代中期软件过程技术的成熟和面向对象技术、构件技术的发展为基础,可以实现真正的软件工业化生产。软件生产转向以改善软件过程为中心。CMM的发展CMM框架用5个不断进化的层次来评定软件生产的历史与现状:初始层是混沌的过程,可重复层是经过训练的软件过程,定义层是标准一致的软件过程,管理层是可预测的软件过程,优化层是能持续改善的软件过程。任何单位所实施的软件过程,都可能在某一方面比较成熟,在另一方面不够成熟,但总体上必然属于这5个层次中的某一个层次。而在某个层次内部,也有成熟程度的区别。在CMM框架的不同层次中,需要解决带有不同层次特征的软件过程问题。因此,一个软件开发单位首先需要了解自己正处于哪一个层次,然后才能够对症下药地针对该层次的特殊要求解决相关问题。任何软件开发单位在致力于软件过程改善时,只能由所处的层次向紧邻的上一层次进化。而且在由某一成熟层次向上一更成熟层次进化时,在原有层次中的那些已经具备的能力还必须得到保持与发扬。CMM的一些基本概念(1)软件过程:人们用于开发和维护软件及其相关过程的一系列活动,包括软件工程活动和软件管理活动。软件过程能力:描述(开发组织或项目组)遵循其软件过程能够实现预期结果的程度,它既可对整个软件开发组织而言,也可对一个软件项目而言。软件过程性能:表示(开发组织或项目组)遵循其软件过程所得到的实际结果,软件过程性能描述的是已得到的实际结果,而软件过程能力则描述的是最可能的预期结果,它既可对整个软件开发组织而言,也可对一个特定项目而言。软件过程成熟:一个特定软件过程被明确和有效地定义,管理测量和控制的程度。CMM的一些基本概念(2)软件能力成熟度等级:软件开发组织在走向成熟的途中几个具有明确定义的表示软件过程能力成熟度的平台。关键过程域:每个软件能力成熟度等级包含若干个对该成熟度等级至关重要的过程域,它们的实施对达到该成熟度等级的目标起到保证作用。这些过程域就称为该成熟度等级的关键过程域,反之有非关键过程域,是指对达到相应软件成熟度等级的目标不起关键作用。归纳为:互相关联的若干软件实践活动和有关基础设施的一个集合。CMM的一些基本概念(3)关键实践:对关键过程域的实践起关键作用的方针、规程、措施、活动以及相关基础设施的建立。关键实践一般只描述“做什么”而不强制规定“如何做”。整个软件过程的改进是基于许多小的、渐进的步骤,而不是通过一次革命性的创新来实现的,这些小的渐进步骤就是通过一些着关键实践来实现。软件能力成熟度模型:随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力也伴随着这些阶段逐步前进,完成对软件组织进化阶段的描述模型。CMM五级模型(1)第一级:初始级在初始级,企业一般不具备稳定的软件开发与维护的环境。常常在遇到问题的时候,就放弃原定的计划而只专注于编程与测试。CMM五级模型(2)第二级:可重复级在这一级,建立了管理软件项目的政策以及为贯彻执行这些政策而定的措施。基于过往的项目的经验来计划与管理新的项目。CMM五级模型(3)第三级:定义级在这一级,有关软件工程与管理工程的一个特定的、面对整个企业的软件开发与维护的过程的文件将被制订出来。同时,这些过程是集成到一个协调的整体。这就称为企业的标准软件过程。CMM五级模型(4)第四级:定量管理级在这一级,企业对产品与过程建立起定量的质量目标,同时在过程中加入规定得很清楚的连续的度量。作为企业的度量方案,要对所有项目的重要的过程活动进行生产率和质量的度量。软件产品因此具有可预期的高质量。CMM五级模型(5)第五级:(不断)优化级在这个等级,整个企业将会把重点放在对过程进行不断的优化。企业会采取,以达到预防缺陷的目标。同时,分析主动去找出过程的弱点与长处有关过程的有效性的资料,作出对新技术的成本与收益的分析,以及提出对过程进行修改的建议。CMM等级模型图CMM的作用:科学地评价软件开发单位的软件能力成熟等级;帮助软件开发单位进行自检,了解自己的强项和弱项,从而不断完善和改进单位的软件开发过程,确保软件质量,提高软件开发能效率。CMM的意义迄今为止学术界和工业界公认的有关软件工程和管理实践的最好的软件过程。为评估软件组织的生产能力提供了标准。为提高软件组织的生产过程指明了方向。CMM和ISO9001的比较CMM专为软件企业定制,而ISO适用于各行各业ISO9001确定了一个质量体系的最少要求CMM明确强调持续的过程改进既有联系又有区别最重要的是保证企业产品质量并不断改进和提高链接1:解析CMM和中国软件有意向中国软件公司发包的外商最关心的是两个事情:一个是对知识产权的保护,另一个则是人力资源上是否具备和甲方进行有效沟通的能力。关于开发的管理,有外商认为,如果在美国,一个企业如果拿出任何能够证明其公司管理能力的资料,他都不会有任何怀疑,而在中国:No,Ionlybelievemyeyes!所谓软件外包就是一些发达国家的软件公司将他们的一些非核心的软件项目通过外包的形式交给人力资源成本相对较低的国家的公司开发,以达到降低软件开发成本的目的。众所周知,软件开发的成本中70%是人力资源成本,所以,降低人力资源成本将有效地降低软件开发的成本。软件外包已经成为发达国家的软件公司降低成本的一种重要的手段。目前,全球软件的销售额为6,000亿美元,而其中软件外包的销售额即达到500~600亿美元。预期到2005年软件外包的销售额将达到1,000亿美元。软件外包的大幅度增长为人力资源成本相对较低的印度和中国带来了新的发展机会。中国目前已经有不少的公司开始介入软件外包这一领域。目前软件外包产业较为发达的地区有上海、北京、大连以及深圳等城市。以北京为例,有40%的软件企业参与外包项目,软件行业60%~70%的营业额来自外包。在上海和北京,一个软件外包工程师的月薪达到7,000~10,000元人民币,而同样能力的软件工程师在武汉只需要三~四千元人民币。资本的特征是向成本更低的地方流动,所以,近一段时间以来已经有大量的东部软件公司准备迁移到中部地区,目前首选的地区主要是武汉和西安。CMM/CMMI本身是一套非常有价值的过程模型,但简单的将其图腾化却是整个中国软件行业的悲哀,反观CMM/CMMI的发源地——美国,除了和军方有业务往来的软件企业会寻求通过CMM/CMMI评审外,其他多数的企业并不怎么在乎是通过了CMM/CMMI的三级还是四级,象是著名的微软、甲骨文等知名企业都没听说过和CMM/CMMI沾过边,但这也丝毫不影响以他们为代表的美国软件企业在整个行业中独领风骚。只有有效的而不是最权威的,才是最好的。链接2:CMM/CMMI不是软件企业唯一的选项CMM/CMMI来到中国已经变质。只要花钱,只要招待,你就可能拿到一张证书。虽然拿到了这个证书,但是软件企业并没有得到什么实惠。举例说来,软件企业的效率、过程的能力仍然是跟以前一样,因为CMM/CMMI在做的同时,他们仍然在按照原来的方法在做,原来的体制在运行。一边按照CMM/CMMI做各种需要的文档,一边还在按照老传统做什么调研、方案设计、调试,跟CMM/CMMI并不合拍。CMM/CMMI是一个评估的依据,也是一个过程改进的框架,并不是一个标准。链接3:软件市场的通行证——CMM世界上第一家通过CMM5认证的并非美国公司,而是来自印度的WIPRO。同时,WIPRO还是全球第一个通过人力成熟度模型(PCMM)5级认证的软件及服务公司。据SEI统计,目前有大约300家印度软件公司通过了CMM认证,其中通过最高质量等级CMM5的有50余家,占全球的60%以上。高品质的管理决定了高品质的产品,从而也确立了印度在美国外包市场的垄断地位。为增强自身实力,积极参与国际竞争,国内软件企业把资质认证也提上了日程。我国政府明确表示鼓励软件出口型企业通过CMM认证。各地方政府也制定了相应的政策,如上海市就规定对在本市注册并通过CMM3~5认证的企业可以分别获得40万、60万和80万元人民币资助。获得了CMM认证就获得了迈向国际市场的“通行证”。IDG统计数据显示,目前全球软件外包市场规模已达到1000亿美元。中国拥有软件企业近9000家。链接4:微软解决方案框架MSF与CMM微软成功的实践经验:每天都保持出货状态使用一对一的测试人员建立特性小组使用有缓冲的多个开发周期建立固定的出货日期增量式开发软件分享经验教训应用MSF开发观念与原则:并不需要强制执行统一的过程,相反,每个产品组都需要通过吸收学习当前成功的实践经验来发展自己的合理的开发过程。组成企业结构原则:商业结构,应用结构,技术结构,信息结构应用开发原则:组队模型,开发模型,风险管理组件设计原则:概念设计,逻辑设计,物理设计基础开发原则:组队模型,开发模型,风险管理MSF组队模型MSF过程模型MSF内部发布里程碑链接5:CMM在对日软件开发中的应用遗留缺陷率无缺陷比率无缺陷比率是在给定的阶段内没有缺陷的产品部件所占的百分比。链接6:CMMI成功案例每日培训——华微软件的培训制度链接7:选择CMM还是CMMICMMI的全称为:CapabilityMaturityModelIntegration,即能力成熟度模型集成。主要基于以下几个方面进行考虑:实施企业的