实施软件质量保障体系CMM/TSP/PSP的建议作者:xiaozhou发布时间:2001/04/10
文章摘要:
本文试着从软件质量保证方向出发,概要阐述CMM(the Capability Maturity Model) /TSP(Team Software Process)/ PSP(Personal software process)体系的来源、内容、应用及意义,目的是让从事软件活动的全体同仁了解、认识CMM/PSP/TSP,从而达到通过CMM/TSP/ PSP培训,建立一套既能解决当前我国软件产业存在的问题,又能同国际软件市场接轨的软件质量保证模式,进一步帮助软件企业形成更先进、更科学、更新兴的管理模式。不过强调一点,我们必须根据自身的实际制定可行的方案。
关键词CMM/PSP/TSP体系,软件过程,CMM模型
正文:
实施软件质量保障体系CMM/TSP/PSP的建议
软件产业的发展,在经历了从70年代开始以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征的结构化生产时代,到90年代中期,以CMM模型的成熟模型和日益为市场接受为标志,已经进入以过程成熟模型CMM、个体软件过程PSP和群组软件过程TSP为标志的以过程为中心的时代,而软件发展第三个时代,及软件工业化生产时代,从90年代中期软件过程技术的成熟和面向对象技术、构件技术的发展为基础,已经渐露端倪,估计到2005年,可以实现真正的软件工业化生产,这个趋势应该引起软件企业界和有关部门的高度重视,及早采取措施,跟上世界软件发展的脚步。软件生产转向以改善软件过程为中心,是世界各国软件产业或迟或早都要走的道路。软件过程改善是当前软件开发技术的核心问题。
--------摘自北京航空航天大学软件工程研究所周伯生教授的《CMM评估基本要点及最新动态》学术报告
引言
50多年来计算事业的发展使人们认识到要高效率、高质量和低成本地开发软件,必须改善软件生产过程。软件生产转向以改善软件过程为中心,是世界各国软件产业或迟或早都要走的道路。软件工业已经或正在经历着"软件过程的成熟化",并向"软件的工业化"渐进过渡。规范的软件过程是软件工业化的必要条件。
软件过程研究的是如何将人员、技术和工具等组织起来,通过有效的管理手段,提高软件生产的效率,保证软件产品的质量。
软件过程的理论研究与实践成果
n 国际
n 国内
国 际
软件过程的三个流派:
CMU-SEI的CMM/PSP/TSP
SO 9000质量标准体系
SO/IEC 15504(SPICE)
CMU-SEI的CMM/PSP/TSP
20世纪80年代中期国际软件产业界对软件的研究十分重视,因为在采用软件工程方法克服软件危机的过程中,人们认识到,软件是否完善是软件风险大小的决定因素。这方面的研究取得了重大的突破,其标志是1987年美国 Carnegie Mellon 大学软件工程研究所(CMU/SEI)以W.S.Humphrey为首的研究组发表的研究成果"承制方软件工程能力的评估方法",该成果在1991年发展成为CMM(软件过程能力成熟度模型)。软件过程能力成熟度模型被国际软件界公认为软件工程学的一项重大成果。软件目前,软件能力成熟度模型2.0版已经修订问世。CMM在软件工程的实践方面已有很大的影响,在工业界已得到广泛接受。不仅已用于军事控制系统,而且已用于全球经济领域的主要组织。有数千个组织在利用CMM的软件过程改进。在美国,关于CMM模型的教程已经作为参考和研究的对象出现了,这样做是为了让CMM模型极其相关问题引起工业界的更密切地关注。基于CMM模型的工具如成熟度问题集,软件过程评估训练和软件能力评价训练已经在CMM中渐渐得到修订。近期的关于CMM的活动主要是发展关于CMM模型的不同版本。由于CMM并未提供有关实现CMM关键过程域所需的具体知识和技能,因此,美国 Carnegie Mellon 大学软件工程研究所(CMU/SEI) 以W.S.Humphrey为首主持研究与开发了个体软件过程PSP(Personal software process)和群组软件过程TSP(Team Software Process),形成CMM/PSP/TSP体系。
ISO 9000质量标准体系
最初的软件质量保证系统是在70年代由欧洲首先采用的,其后在美国和世界其他地区也迅速地发展起来。目前,欧洲联合会积极促进软件质量的制度化,提出了如下ISO9000软件标准系列:ISO9001、ISO9000-3、ISO9004-2、ISO9004-4、ISO9002。这一系列现已成为全球的软件质量标准。除了ISO9000标准系列外,许多工业部门、国家和国际团体也颁布了特定环境中软件运行和维护的质量标准,如:IEEE标准729-1983、730-1984、Euro Norm EN45012等。
ISO/IEC 15504(SPICE)
CMM的方法很快就引起了软件界的广泛关注,1991年国际标准化组织采纳了一项动议,开展调查研究,在此后引发了一系列的研究工作,现已取得重要成果,产生了技术报告ISO/IEC 15504《信息技术-软件过程评估》,预计于今年产生正式标准。从该技术报告的内容来看,其基本的目的和思路,均与CMU/SEI的CMM相似。
目前,学术界和工业界公认美国 Carnegie Mellon 大学软件工程研究所(CMU/SEI) 以W.S.Humphrey为首主持研究与开发的软件能力成熟度模型CMM是当前最好的软件过程,已成为业界事实上的软件过程的工业标准。
国 内
学术界:中国生产力促进协会、北航SEI、中科院研究SEI等科研机构已于近几年在北京、上海、广州和深圳等地先后举办过多次报告会和研讨会,组织过课程学习和应用实验,开展了软件过程方面的研究与开发工作,并发表了多篇的研究成果和学术论文,在软件质量保障平台支撑环境也取得了一定的成果。
产业界:近两年来,CMM在我国获得了各界越来越多关注,业界有过多次关于CMM的讨论,国务院发布的《鼓励软件产业和集成电路产业发展的若干政策》对中国软件企业申请CMM认证给予了积极的支持,在第17条规定"对软件出口型企业CMM认证费用予以适当支持。"2000年中国村电脑节上还有CMM专题论坛,吸引了众多业内人士。鼎新、东大阿尔派、联想、方正、金蝶、用友、浪潮、创智、华为、东大阿尔派等大型集团或企业等都从1997---2000年起批企业都在进行研究、实验或实施预评估。其中鼎新公司从1997年着手进行CMM认证工作。1999年7月通过第三方认证机构的CMM2认证。东大阿尔派公司于2000年10月通过第三方认证机构的CMM2认证。2001年1月,联想软件经过英国路透集团的严格评估,顺利通过CMM2认证。
总体上讲,国内对软件过程理论的讨论与实践正在展开,目标是使软件的质量管理和控制达到国际先进水平,中国的软件产业获得可持续发展的能力。专家分析,在未来两三年内,国内软件业势必将出现实施CMM的高潮。从这一趋势看,中国的软件企业已经开始走上标准化、规范化、国际化的发展道路,中国软件业已经面临一个整体突破的时代。
软件质量保障体系的实施
根据一直以来对国际上软件过程理论与实践的发展、尤其是近几年来着重在CMM、PSP和TSP以及ISO软件过程标准草案等方面的研究工作,国内专家学者建议,软件过程的改善应该从三方面着手进行:
o 软件能力成熟度模型CMM(Capability Maturity Model)
o 个体软件过程PSP (Personal Software Process)
o 群组软件过程TSP(Team Software Process)
三者各有侧重,但互为补充。
CMM
o 迄今为止学术界和工业界公认的有关软件工程和管理实践的最好的软件过程。
o 为评估软件组织的生产能力提供了标准。
o 为提高软件组织的生产过程指明了方向。
CMM软件过程成熟度模型概要*
1、 比较
在介绍CMM内容之前,首先概述一下不成熟软件组织与成熟软件组织的差异。在不成熟的软件单位,软件过程一般由实践者及其管理者在项目进程中临时拼凑而成,因而推迟进度和超出预算已成为惯例,产品质量难以预测,有时为了满足进度要求,常在产品功能和质量上做出让步。
然而,一个成熟软件组织具有在全组织范围内管理软件、开发过程和维护过程的能力,规定的软件过程被正确无误地通知到所有员工,工作活动均按照已规划的过程进行。并通过可控的先导性试验和费效分析使这些过程得到改进,对已定义过程中的所有岗位及其职责都有清楚的描述,和通过文档与培训使全组织有关人员对已定义的软件过程都有很好的理解,从而使其软件过程所导致的生产率和质量能随时间的推移得到改进。
表1给出了不成熟和成熟软件组织的比较,这种比较分析不仅是形成软件能力成熟模型的基础,也有利于理解该模型。
2、 CMM的一些基本概念
(1)软件过程:人们用于开发和维护软件及其相关过程的一系列活动,包括软件工程活动和软件管理活动。
(2)软件过程能力:描述(开发组织或项目组)遵循其软件过程能够实现预期结果的程度,它既可对整个软件开发组织而言,也可对一个软件项目而言。
(3)软件过程性能:表示(开发组织或项目组)遵循其软件过程所得到的实际结果,软件过程性能描述的是已得到的实际结果,而软件过程能力则描述的是最可能的预期结果,它既可对整个软件开发组织而言,也可对一个特定项目而言。
(4)软件过程成熟:一个特定软件过程被明确和有效地定义,管理测量和控制的程度。
(5)软件能力成熟度等级:软件开发组织在走向成熟的途中几个具有明确定义的表示软件过程能力成熟度的平台。
(6)关键过程域:每个软件能力成熟度等级包含若干个对该成熟度等级至关重要的过程域,它们的实施对达到该成熟度等级的目标起到保证作用。这些过程域就称为该成熟度等级的关键过程域,反之有非关键过程域是指对达到相应软件成熟度等级的目标不起关键作用。归纳为:互相关联的若干软件实践活动和有关基础设施的一个集合。
(7)关键实践:对关键过程域的实践起关键作用的方针、规程、措施、活动以及相关基础设施的建立。关键实践一般只描述"做什么"而不强制规定"如何做"。整个软件过程的改进是基于许多小的、渐进的步骤,而不是通过一次革命性的创新来实现的,这些小的渐进步骤就是通过一些着关键实践来实现。
(8)软件能力成熟度模型:随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力也伴随着这些阶段逐步前进,完成对软件组织进化阶段的描述模型。
3、 CMM模型概要
软件开发的风险之所以大,是由于软件过程能力低,其中最关键的问题在于软件开发组织不能很好地管理其软件过程,从而使一些好的开发方法和技术起不到预期的作用。而且项目的成功也是通过工作组的杰出努力,所以仅仅建立在可得到特定人员上的成功不能为全组织的生产和质量的长期提高打下基础,必须在建立有效的软件工程实践和管理实践的基础设施方面,坚持不懈地努力,才能不断改进,才能持续地成功。
CMM提供了一个框架,将软件过程改进的进化步骤组织成5个成熟等级,为过程不断改进奠定了循序渐进的基础。这5个成熟度等级定义了一个有序的尺度,用来测量一个组织的软件过程成熟和评价其软件过程能力,这些等级还能帮助组织自己对其改进工作排出优生次序。成熟度等级是已得到确切定义的,也是在向成熟软件组织前进途中的平台。每一个成熟度等级为连续改进提供一个台基。每一等级包含一组过程目标,通过实施相应的一组关键过程域达到这一组过程目标,当目标满足时,能使软件过程的一个重要成分稳定。每达到成熟框架的一个等级,就建立起软件过程的一个相应成分,导致组织能力一定程度的增大。
下面表2给出了CMM模型概要,表中的5个等级各有其不同的行为特征。要通过描述不同等级组织的行为特征:即一个组织为建立或改进软件过程所进行的活动,对每个项目所进行的活动和所产生的横跨各项目的过程能力。
表2 CMM模型概要
4、 CMM的结构
软件机构的最终质量保证模式可以用下图1说明,图1给出软件质量计划、质量控制、质量改进一个简单循环,其实,它归纳出CMM的真正内核,所以,可以说CMM的模型是一种新兴管理思想:连续改进(Continuos Improvement)循环的体现。
图1
CMM的作用
n 科学地评价软件开发单位的软件能力成熟等级
n 帮助软件开发单位进行自检,了解自己的强项和弱项,从而不断完善和改进单位的软件开发过程,确保软件质量,提高软件开发能效率。
CMM实施的思考
根据CMM的基本原理、基本内容和基本方法,对CMM提出4个问题供大家思考:
1. 过程成熟度需要多长时间?多少费用?对企业有何好处?
2. 影响基于CMM的软件过程的成败因素是什么?
3. CMM是否会导致过度官僚主义?是否会使组织变得更保守,不愿冒风险?
4. 有无合适的、易理解的框架(不仅仅是告诉"我们做什么",而且告诉"我们怎么做")可指导所有软件组织进行CMM改进?
这些针对CMM提出的问题与争论,国外进行了一些调查工作,但国内基本上没有这方面的专业调查和研究,以后再根据国内企业对CMM的认识、认证的增强和增多,这些问题会得到更科学的解答。
现给出国外针对上述问题的一些调查结果:
问题1:成熟度提升一级建议安排1年到2年,费用问题国内外相距太远不好比较。对企业的好处问题给出下表说明:
问题2:影响过程改进失败的因素有:无法实施计划和跟踪、突发事件或危险造成、时间和资源限制造成、知道应该做什么而不知道如何做造成。
问题3:大部分(84%-96%)不认为会使组织变成官僚主义机构、难于创新和不敢冒风险。
问题4:这需要不断总结经验,提出办法。
在国内要想取得过程改进成功,作者认为:
1、 软件过程改进必须有高级主管的支持与委托,并积极地管理过程改进的进展。
2、 中层管理的支持很重要
3、 责任分明,过程改进小组威望高
4、 基层的支持与参与极端重要
5、 如何利用定量的可观察数据,尽快使过程改进成果可见,从而激励参与者的兴趣
6、 为企业的商业利益服务,并要求有成功的过程改进相符的企业文化变革
如果企业出现如下情况,过程改进肯定就失败:
1、 高层领导机构态度不明确,见解不一致
2、 各部门只管自己,互不通气,互不支持
3、 对以前不成功的过程改进冷嘲热讽
4、 项目成员认为软件过程改进会影响实际工作,而不支持软件过程改进活动
结论:CMM不是万能的,它的成功与否,与一个组织内部有关人员的积极参与和创造性活动是密不可分的。
CMM是对软件工程的工业实践所需的有关目标、方法和实践的最佳有效描述。问题是如何在一个实验室或者产业环境中做到CMM规则的应用?
CMM是一个致力于组织过程改进的框架,问题是如何才能确保CMM使工作有效而且便利?
未提供有关实现关键过程域所需要的具体知识和技能。
因此,个体软件过程PSP(Personal Software Process)也就应运而生。
PSP概述
个体软件过程(Personal Software Process ,PSP)是由美国Carnegie Mellon大学软件工程研究所(CMU/SEI)的Watts s. Humphrey领导开发的,于1995年它的推出,在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。PSP是一种可用于控制、管理和改进个人工作方式的自我改善过程,是一个包括软件开发表格、指南和规程的结构化框架。 PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等等。在软件设计阶段, PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计结束准则,而不是设计方法的选择。根据对参加培训的104位软件人员的统计数据表明,在应用了PSP后,软件中总的差错减少了58.0%,在测试阶段发现的差错减少了71.0%,生产效率提高了20.0%。PSP的研究结果还表明,绝大多数软件缺陷是由于对问题的错误理解或简单的失误所造成的,只有很少一部分是由于技术问题而产生的。而且根据多年来的软件工程统计数据表明,如果在设计阶段注入一个差错,则这个差错在编码阶段引发了3一5个新的缺陷,要修复这些缺陷所花的费用要比修复这个设计缺陷所花的费用多一个数量级。因此,PSP保障软件产品质量的一个重要途径是提高设计质量。
个体软件过程PSP的现状
o 从1993年开始,美国、欧洲、澳大利亚等地已先后有20多所大学开设了讲授PSP的课程。
o 在工业界,PSP也先后在Motorola、 HP、 AIS等公司推广使用。
o 北航软件工程研究所于1997年开始,在北航计算机科学与工程系率先讲授了PSP课程,并组织了PSP应用实验。
个体软件过程PSP的演化*
个体软件过程PSP的内容
PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够:
(1) 说明个体软件过程的原则;
(2) 帮助软件工程师作出准确的计划;
(3) 确定软件工程师为改善产品质量要采取的步骤;
(4) 建立度量个体软件过程改善的基准;
(5) 确定过程的改变对软件工程师能力的影响。
个体软件过程PSP支持环境
北航软件工程研究所在研制的基于Internet的"个体软件过程支持环境",支持个体软件过程的定义、运作、度量、分析和优化,支持PSP在实际软件开发项目中的应用,支持PSP概念和方法的推广普及,支持软件工作人员软件工程方面素质的提高。
个体软件过程PSP的作用
l 使用自底向上的方法来改进过程,向每个软件工程师表明过程改进的原则,使他们能够明白如何有效地生产出高质量的软件。
l 为基于个体和小型群组软件过程的优化提供了具体而有效的途径。其研究与实践填补了CMM的空白。
l 帮助软件工程师在个人的基础上运用过程的原则,借助于PSP提供的一些度量和分析工具,了解自己的技能水平,控制和管理自己的工作方式,使自己日常工作的评估、计划和预测更加准确、更加有效,进而改进个人的工作表现,提高个人的工作质量和产量,积极而有效地参与高级管理人员和过程人员推动的组织范围的软件工程过程改进。
群组软件过程TSP概述
致力于开发高质量的产品,建立、管理和授权项目小组,并且指导他们如何在满足计划费用的前提下,在承诺的期限范围内,不断生产并交付高质量的产品。
TSP指导项目组中的成员如何有效地规划和管理所面临的项目开发任务,并且告诉管理人员如何指导软件开发队伍。始终以最佳状态来完成工作。TSP实施集体管理与自己管理自己相结合的原则,最终目的在于指导开发人员如何在最少的时间内,以预定的费用生产出高质量的软件产品,所采用的方法是对群组开发过程的定义、度量和改进。
实现TSP方法需要具备的条件
o 需要有高层主管和各级经理的支持,以取得必要的资源
o 整个软件开发小组至少应在CMM的第二级(可重复层)。
o 全体软件开发人员必须经过PSP的培训,并有按TSP工作的愿望和热情。
o 开发小组成员应在2到20个人之间。
在实施TSP的过程中,首先要有明确的目标,开发人员要努力完成已经接受的委托任务。在每一阶段开始,要做好工作计划。如果发现未能按期按质完成计划,应立即分析原因,以判定问题是由于工作内容不合适或工作计划不实际所引起,还是由于资源不足或主观努力不够所引起。开发小组一方面应随时追踪项目进展状态并进行定期汇报,另一方面应经常评审自己是否按PSP的原理工作。开发小组成员应按自己管理自己的原则管理软件过程,如发现过程不合适,应及时改进,以保证用高质量的过程来产生高质量的软件。项目开发小组则按集体管理的原则进行管理,全体成员都要参加和关心小组的规划、进展的追踪和决策的制定等项工作。
按TSP原理对开发小组的基本度量要素
o 所编文档的页数。
o 所编代码的行数。
o 花费在各开发阶段或各开发任务上的时间(以分为单位)。
o 在各个开发阶段中引入和改正的差错数目。
o 在各个阶段对最终产品增加的价值。
度量TSP实施质量的过程质量元素
o 软件设计时间应大于软件实现时间。
o 设计评审时间至少应占一半以上的设计时间。
o 代码评审时间至少应占一半以上的代码编制时间。
o 在编译阶段发现的差错不超过10个/KLOC
o 在测试阶段发现的差错不超过5个/KLOC。
CMM、PSP和TSP组成的软件过程框架
l CMM是过程改善的第一步,它提供了评价组织的能力、识别优先改善需求和追踪改善进展的管理方式。企业只有开始CMM改善后,才能接受需要规划的事实,认识到质量的重要性,才能注重对员工经常进行培训,合理分配项目人员,并且建立起有效的项目小组。然而,它实现的成功与否与组织内部有关人员的积极参加和创造性活动密不可分。
l PSP能够指导软件工程师如何保证自己的工作质量,估计和规划自身的工作,度量和追踪个人的表现,管理自身的软件过程和产品质量。经过PSP学习和实践的正规训练,软件工程师们能够在他们参与的项目工作之中充分运用PSP,从而有助于CMM目标的实现。
l TSP结合了CMM的管理方法和PSP的工程技能,通过告诉软件工程师如何将个体过程结合进小组软件过程,并将后者与组织进而整个管理系统相联系;通过告诉管理层如何支持和授权项目小组,坚持高质量的工作,并且依据数据进行项目的管理,向组织展示如何应用CMM的原则和PSP的技能去生产高质量的产品。
PSP和TSP对CMM的支持*
l CMM/TSP/PSP代表了目前国际上软件过程工程研究方面最先进的成果,它们对促进软件生产的科学化管理,提高软件生产能力意义重大。
l 软件的生产过程及其它的许多子过程、软件的开发者和用户、以及系统的使用中存在着巨大的变化和不同,要使一个软件过程对软件生产的改善真正有所帮助,其框架应是由CMM、TSP和PSP组成的一个完整体系,即从组织、群组和个人三个层次进行良好的软件工程和管理实践的指导和支持。总而言之,单纯实施CMM,永远不能真正做到能力成熟度的升级,只有将实施CMM与实施PSP和TSP有机地结合起来,才能发挥最大的效力。
建议
过程改善工作必然具有一切过程所具有的固有特征,即需要循序渐进,不能一蹴而就需要持续改善,不能停滞不前;需要联系实际,不能照本宣读需要适应变革,不能凝固不变。我认为,将CMM/PSP/TSP引人软件企业最有效的途径首先要对单位主管和主要开发人员进行系统的培训。Carnegie Mellon大学软件工程研究所曾尝试让软件工程师通过自学的方式来进行,但实际上,只有不到20%的人能够坚持到底。另外一个有效的途径是自顶向下的课程培训,即从高层主管依次普及到下面的工程师。
CMM就如同软件生产的一面镜子,以之来衡量自己可以折射出企业发展的水平以及具体的差距。借鉴CMM的方法,改进软件研发项目管理,提高软件开发水平。软件研发项目管理管理是影响软件研发项目全局的因素,而技术只影响局部。建议以CMM为框架,先从PSP做起,然后在此基础上逐渐过渡到TSP,以保证CMM/PSP/TSP确实在企业中生根开花。我相信只要坚持改善软件工程的管理,并在实践中总结适合自身的经验,一定能取得很好的效果。
不过强调一点,我们必须根据自身的实际制定可行的方案。不深入研究就照搬别的企业的模式是很难起到提高软件产品质量水平的真正目的的。
作者会员名:xz0423