50多年来计算事业的发展使人们认识到要高效率、高质量和低成本地开发软件,必须改善软件生产过程。软件生产转向以改善软件过程为中心,是世界各国软件产业迟早都要走的道路。软件工业已经或正在经历着“软件过程的成熟化”,并向“软件的工业化”渐进过渡。规范的软件过程是软件工业化的必要条件。.
软件过程研究的是如何将人员、技术和工具等组织起来,通过有效的管理手段,提高软件生产的效率,保证软件产品的质量。
目前软件过程流派主要有三个:CMU-SEI的CMM/PSP/TSP, ISO 9000质量标准体系及ISO/IEC 15504 ( SPICE ) o
20世纪80年代中期国际软件产业界对软件的研究十分重视,因为在采用软件工程方法克服软件危机的过程中,人们认识到,软件是否完善是软件风险大小的决定因素。这方面的研究取得了重大的突破,其标志是1987年美国Camegie Mellon大学软件工程研究所(CMU/SEI)以W. S.Humphrey为首的研究组发表的研究成果“承制方软件工程能力的评估方法”,并在1991年发展成为CMM(软件过程能力成熟度模型)。软件过程能力成熟度模型被国际软件界公认为软件工程学的一项重大成果。目前,软件能力成熟度模型2.0版已经修订问世。CMM在软件工程的实践方面己有很大的影响,在工业界己得到广泛接受,不仅已用于军事控制系统,而且己用于全球经济领域的主要组织。有数千个组织在利用CMM的软件过程改进。在美国,关于CMM模型的教程已经作为参
考和研究的对象出现了,这样做是为了让CMM模型极其相关问题引起工业界的更密切地关注。基于CMM模型的工具如成熟度问题集、软件过程评估训练和软件能力评价训练己经在CMM中渐渐得到修订。近期的关于CMM的活动主要是发展关于CMM模型的不同版本。由于CMM并未提供有关实现CMM关键过程域所需的具体知识和技能,因此美国Carnegie Mellon大学软件工程研究所以W S.Humphrey为首主持研究与开发了个体软件过程PSP (Persomal Software process)和群组软件过程TSP ( Team Software Process),形成了CMM/PSP/TSP体系。
最初的软件质量保证系统是在20世纪70年代由欧洲首先采用的,其后在美国和世界其他地区也迅速地发展起来。目前,.欧洲联合会积极促进软件质量的制度化,提出了如下IS09000软件标准系列:IS09001, IS09000-3, IS09004-2, IS09004-4, IS090020这一系列现己成为全球的软件质量标准。除了IS09000标准系列外,许多工业部门、国家和国际团体也颁布了特定环境中软件运行和维护的质量标准,如IEEE标准729-1983,730-1984, Euro Norm EN45012等。
CMM的方法很快就引起了软件界的广泛关注,1991年国际标准化组织采纳了一项动议,开展调查研究,在此后引发了一系列的研究工作,现已取得重要成果,产生了技术报告ISO/IEC 15504《信息技术一软件过程评估》。从该技术报告的内容来看,其基本的目的和思路,均与CMU/SEI的CMM相似。
目前,学术界和工业界公认美国Carnegie Mellon大学软件工程研究所(CMU/SEI )以W S.Humphrey为首主持研究与开发的软件能力成熟度模型CMM是当前最好的软件过程,已成为业界事实上的软件过程的工业标准。因此,在下面仅讨论CMU-SEI的CMM/PSP/TS 。
在介绍CMM内容之前,首先概述一下不成熟软件组织与成熟软件组织的差异。在不成熟的软件单位,软件过程一般由实践者及其管理者在项目进程中临时拼凑而成,因而推迟进度和超出预算已成为惯例,产品质量难以预测,有时为了满足进度要求,常在产品功能和质量上做出让步。
然而,一个成熟软件组织具有在全组织范围内管理软件、开发过程和维护过程的能力,规定的软件过程被正确无误地通知到所有员工,工作活动均按照已规划的过程进行。并通过可控的先导性试验和费效分析使这些过程得到改进,对已定义过程中的所有岗位及其职责都有清楚的描述,且通过文档与培训使全组织有关人员对己定义的
软件过程都有很好的理解,从而使其软件过程所导致的生产率和质量能随时间的推移得到改进。
表19-6给出了不成熟和成熟软件组织的比较,这种比较分析不仅是形成软件能力成熟模型的基础,也有利于理解该模型。
(1)软件过程:人们用于开发和维护软件及其相关过程的一系列活动,包括软件工程活动和软件管理活动。
(2)软件过程能力:描述(开发组织或项目组)遵循其软件过程能够实现预期结果的程度,它既可针对整个软件开发组织,也可针对一个软件项目而言。
(3)软件过程性能:表示(开发组织或项目组)遵循其软件过程所得到的实际结果,软件过程性能描述的是已得到的实际结果,而软件过程能力则描述的是最可能的预期结果,它既可对整个软件开发组织,也可对一个特定项目。
(4)软件过程成熟:一个特定软件过程被明确和有效地定义、管理测量和控制的程度。
(5)软件能力成熟度等级:软件开发组织在走向成熟的途中几个具有明确定义的表示软件过程能力成熟度的平台。
(6)关键过程域:每个软件能力成熟度等级包含若干个对该成熟度等级至关重要的过程域,它们的实施对达到该成熟度等级的目标起到保证作用。这些过程域就称为该成熟度等级的关键过程域,反之有非关键过程域是指对达到相应软件成熟度等级的目标不起关键作用。可归纳为,互相关联的若干软件实践活动和有关基础设施的一个集合。
(7)关键实践:对关键过程域的实践起关键作用的方针、规程、措施、活动以及相关基础设施的建立。关键实践一般只描述“做什么”,而不强制规定“如何做”。整个软件过程的改进是基于许多小的、渐进的步骤,而不是通过一次革命性的创新来实现的,这些小的渐进步骤就是通过一些关键实践来实现。
(8)软件能力成熟度模型:随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力也伴随着这些阶段逐步前进,完成对软件组织进化阶段的描述模型。
软件开发的风险之所以大,是由于软件过程能力低,其中最关键的问题在于软件开发组织不能很好地管理其软件过程,从而使一些好的开发方法和技术起不到预期的作用。而且项目的成功也是通过工作组的杰出努力,所以仅仅建立在可得到特定人员上的成功不能为全组织的生产和质量的长期提高打下基础,必须在建立有效的软件工程实践和管理实践的基础设施方面,坚持不懈地努力,才能不断改进,才能持续地成功。
CMM提供了一个框架,将软件过程改进的进化步骤组织成五个成熟等级,为过程不断改进奠定了循序渐进的基础。这五个成熟度等级定义了一个有序的尺度,用来测量一个组织的软件过程成熟和评价其软件过程能力,这些等级还能帮助组织自己对其改进工作排出优先次序。成熟度等级是已得到确切定义的,也是在向成熟软件组织前进途中的平台。每一个成熟度等级为连续改进提供一个台基。每一等级包含一组过程目标,通过实施相应的一组关键过程域达到这一组过程目标,当目标满足时,能使软件过程的一个重要成分稳定。每达到成熟框架的一个等级,就建立起软件过程的一个相应成分,导致组织能力一定程度的增大。
表19-7给出了CMM模型概要,表中的五个等级各有其不同的行为特征。要通过描述不同等级组织的行为特征:即一个组织为建立或改进软件过程所进行的活动,对每个项目所进行的活动和所产生的横跨各项目的过程能力。
CMM的结构如图19.7所示。
软件机构的最终质量保证模式可以用图19.8说明,图中给出了软件质量计划、质量控制、质量改进的一个简单循环,其实,它归纳了CMM的真正内核,所以,可以说CMM
的模型是一种新兴管理思想:连续改进(continuos improvement)循环的体现。
个体软件过程(Personal Software Process PSP)是由美国Carnegie Mellon大学软件工程研究所(CMU/SEI)的W. s. Humphrey领导开发的,它于1995年推出,在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。PSP是一种可用于控制、管理和改进个人工作方式的自我改善过程,是一个包括软件开发表格、指南和规程的结构化框架。 PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等。在软件设计阶段,PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计结束准则,而不是设计方法的选择。根据对参加培训的104位软件人员的统计数据表明,在应用了PSP后,软件中总的差错减少了58.0%,在测试阶段发现的差错减少了71.0%,生产效率提高了20.0%o PSP的研究结果还表明,绝大多数软件缺陷是由于对问题的错误理解或简单的失误所造成的,只有很少一部分是由于技术问题而产生的。而巨根据多年的软件工程统计数据表明,如果在设计阶段注入一个差错,则这个差错在编码阶段引发了3-5个新的缺陷,要修复这些缺陷所花的费用要比修复这个设计缺陷所花的费用多一个数量级。因此,PSP保障软件产品质量的一个重要途径是提高设计质量。
1)个体软件过程PSP的演化
个体软件过程PSP的演化过程如图19.9所示。
2)个体软件过程PSP的内容
PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够:
(1)说明个体软件过程的原则;
(2)帮助软件工程师做出准确的计划;
(3)确定软件工程师为改善产品质量要采取的步骤;
(4)建立度量个体软件过程改善的基准;
(5)确定过程的改变对软件工程师能力的影响。
3)个体软件过程PSP的作用
(1)使用自底向上的方法来改进过程,向每个软件工程师表明过程改进的原则,使他们能够明白如何有效地生产出高质量的软件。
(2)为基于个体和小型群组软件过程的优化提供了具体而有效的途径。其研究与实践填补了CMM的空白。
(3)帮助软件工程师在个人的基础上运用过程的原则,借助于PSP提供的一些度量和分析工具,了解自己的技能水平,控制和管理自己的工作方式,使自己日常工作的评估、计划和预测更加准确、更加有效,进而改进个人的工作表现,提高个人的工作质量和产量,积极而有效地参与高级管理人员和过程人员推动的组织范围的软件工程过程改进。
致力于开发高质量的产品,建立、管理和授权项目小组,并且指导他们如何在满足计划费用的前提下,在承诺的期限范围内,不断生产并交付高质量的产品。
TSP指导项目组中的成员如何有效地规划和管理所面临的项目开发任务,并且告诉管理人员如何指导软件开发队伍始终以最佳状态来完成工作。TSP实施集体管理与自己管理自己相结合的原则,最终目的在于指导开发人员如何在最少的时间内,以预定的费用生产出高质量的软件产品,所采用的方法是对群组开发过程的定义、度量和改进。
1)实现TSP方法需要具备的条件
(1)需要有高层主管和各级经理的支持,以取得必要的资源。
(2)整个软件开发小组至少应在CMM的第二级(可重复层)。
(3)全体软件开发人员必须经过PSP的培训,并有按TSP工作的愿望和热情。
(4)开发小组成员应在2^20人之间。
2)按TSP原理对开发小组的基本度量要素
(1)所编文档的页数。
(2)所编代码的行数。
(3)花费在各开发阶段或各开发任务上的时间(以min为单位)。
(4)在各个开发阶段中引入和改正的差错数目。
(5)在各个阶段对最终产品增加的价值。
3)度量TSP实施质量的过程质量元素
(1)软件设计时间应大于软件实现时间。
(2)设计评审时间至少应占一半以上的设计时间。
(3)代码评审时间至少应占一半以上的代码编制时间。
(4)在编译阶段发现的差错不超过10个/KLOC。
(5)在测试阶段发现的差错不超过5个/KLOC。
CMM, PSP和TSP组成的软件过程框架如图19.10所示。
(1) CMM是过程改善的第一步,它提供了评价组织的能力、识别优先改善需求和追踪改善进展的管理方式。企业只有开始CMM改善后,才能接受需要规划的事实,认
(2) PSP能够指导软件工程师如何保证自己的工作质量,估计和规划自身的工作,度量和追踪个人的表现,管理自身的软件过程和产品质量。经过PSP学习和实践的正规训练,软件工程师们能够在他们参与的项目工作中充分运用PSP,从而有助于CMM目标的实现。
(3) TSP结合了CMM的管理方法和PSP的工程技能,通过告诉软件工程师如何将个体过程结合进小组软件过程,并将后者与组织进而整个管理系统相联系;通过告诉管理层如何支持和授权项目小组,坚持高质量的工作,并且依据数据进行项目的管理,向组织展示如何应用CMM的原则和PSP的技能去生产高质量的产品。
各省软考办 | ||||||||||