论文部分内容阅读
摘要:度量是保证软件产品质量的基本手段。本文通过对度量技术的分析研究,结合CMMI模型度量与分析过程域标准,提出了一套基于CMMI的软件度量分析框架。这套框架可以帮助软件组织从没有度量活动逐步发展为基于数据进行管理决策及改进的高成熟度软件组织。
关键词:CMMI软件过程度量量化管理
1 概述
为了提高软件产品的质量,唯一的方法是通过提高软件研发过程的质量来带动软件产品质量的提高。软件过程管理是指成功地对软件产品和对强化软件系统的开发、维护和支持活动的工作过程进行管理。
软件度量是对软件开发项目、过程及其产品进行数据定义、收集、分析的量化过程,目的在于对此加以理解、预测、评估、控制和改善。通过软件度量可以改进软件开发过程,促进项目成功,开发高质量的软件产品。
采用何种方法对软件过程进行度量是软件组织面临的难点。本文介绍了一套使用有效的基于CMMI的软件度量分析框架可以有效指导组织开展度量活动。
2 分析
2.1 CMMI中的度量与分析
CMMI是美国卡内基梅隆大学软件工程研究所应美国联邦政府的要求,于1991年开始开发并持续完善的一种用于评价软件开发组织能力并帮助其改善质量的方法、模型。
CMMI模型中把度量放在了一个重要的位置,CMMI模型按成熟度分为5个等级,各级别中对度量与分析的要求都有所不同。
2.1.1 在CMMI二级中为度量建立了一个独立的过程域-度量与分析。明确提出:度量和分析的目的在于开发和维护用于支持管理信息需要的度量,以便支持对管理信息的需要,在这一过程域上度量的关注点集中在单个的项目上。
2.1.2 CMMI三级中,度量上升到组织级。包括了项目级度量和组织过程级度量。首先,要将度量活动制度化为组织级过程。其次,要建立组织级的度量数据库,对组织从各项目收集的度量数据进行管理。项目级根据组织级标准度量体系进行裁剪,定义出项目级度量计划。CMMI3级的度量活动是CMMI四级实施的基础。
2.1.3 CMMI四级中对度量进行更加细致的规范。在CMMI四级中,需要使用统计学的相关方法和工具进行定量的分析。组织级利用积累的历史数据建立组织过程性能基线和过程性能模型。一个软件组织如果达到了CMMI四级,则表明该组织已经建立了关于产品质量、服务质量以及过程性能的定量目标,运用统计技术和其他定量技术对各过程实施进行控制,并且把这些定量目标作为判断过程管理成功与否的标准。
2.1.4 CMMI五级中,为了实现商业目标,组织已经建立了有效地、不断地、系统地过程改进体系。用度量识别软件组织的软件过程改进机会、建立量化的组织软件过程改进目标和评价过程改进的效果。管理人员有能力估计及定量跟踪变化的影响和效果。
2.2 CMMI度量与分析过程域
CMMI中,度量与分析过程域有两个特定目标(Special Goal,简称SG)和8个特定实践(Special Practice,简称SP),图1是度量和分析过程域的语境图。
3 实现
基于对CMMI中度量与分析过程域的研究,以及CMMI各成熟度级别对度量与分析活动的要求,建立如图2所示的软件度量和分析过程:定义度量、实施度量、分析数据、改进过程、控制过程。
3.1 定义度量
度量策划步骤如图3所示,主要有:获取商业目标、明确组织目标和项目目标、识别关键过程、选择定义度量等活动。
3.1.1 确定目标
首先,要明确实施度量是为了支持组织商业目标。组织的商业目标通常会关注:产品具有的功能、产品和服务的质量、盈利能力、产品开发周期、市场份额、顾客满意度、组织形象和信誉等。组织的战略计划、经营计划和过程改进计划都从不同侧面反映了组织的商业目标。
其次,由商业目标,能够分解出软件组织目标。某些商业目标可以直接传递给软件组织;还有一些目标,可以分解转化成软件组织的相关目标;还有些商业目标与软件组织没有任何关系。
最后,组织的目标通常会分解到各个项目上,项目的目标会更加详细和具体。项目目标反映了相关方对项目的特定要求。不同的项目会有不同的项目目标,常见的项目目标有:进度偏差率、估算偏差率、生产率、满足相关需求、缺陷密度、达到客户满意等。不是所有项目目标都要进行关注。根据组织管理的要求和项目需求,将项目目标排列优先级顺序,选择几个关键目标进行监控。项目目标应当记录到项目计划书中。
3.1.2 识别关键过程
识别关键过程从识别关键因素和识别关键过程两方面展开。
首先,关键因素决定了既定目标的达成。因而主要分析影响战略目标的各种因素和影响这些因素的子因素。识别时通常有效的做法是进行一次专题讨论会或头脑风暴。关键因素不是越多越好,经验证明,大多数组织有4~6个关键成功因素。
其次,关键过程是对项目或组织目标的实现影响最大的过程。一般,通过一个关键成功因素可以直接找到一个或多个关键过程。然而也存在一些因素,需要执行某些分析才能识别关键过程。应当将重点放在识别关键的以定义软件过程上。同时,还要识别那些未定义实施的关键过程。可考虑的过程有:曾出过问题的;跨部门的;首次使用新技术;超工作负荷的。还可以从软件开发生命周期中涉及到的4个过程域(项目管理、工程管理、过程管理、支持域)中识别。需要注意:关键过程会随着时间段的不同或在开发过程进展情况而有所不同。
识别了关键过程后,要为每个过程设置执行目标,并找出可能阻碍目标实现的关键问题。过程执行目标通常与成本、质量或进度相关。
3.1.3 选择和定义度量
3.1.3.1 选择度量
①GQM方法确定度量
使用GQM(Goal-Question-Measure)[2][3]方法,即通过设立目标、提出问题、回答问题、选定度量三个步骤来确定选择什么度量。
GQM法举例:
目标:上线前返工成本降低35%。
问题:识别在需求评审、测试发现缺陷、并解决的平均成本是多少?
度量:质量成本(需求评审成本+测试成本+返工成本)/缺陷数。
②过程中的度量实体
关键过程中:过程所接收事物、过程自身的产出事物、过程的一些活动、过程中消耗的事物,以及作为过程的结果而保留的事物都是度量实体,度量实体有:规模、工作量、进度、缺陷、需求变更、成本等。表1是实体和属性示例。
3.1.3.2可操作定义
制定可操作定义时应遵守三个原则:可以传达、可重复性、可跟踪性。为每个度量制定的可操作定义应该包括内容如下表所示:
3.1.3.3把度量活动集成到过程
度量是一个成熟软件过程的重要组成部分。需要将定义的度量融入软件开发周期恰当的各个阶段和过程中。
①分析现有的度量活动和数据
对组织当前的度量状况进行分析,建立以后工作的基线(baseline)作为度量的起点。分析内容有:需要哪些数据?哪些数据已被组织标准过程定义的度量所收集?如何采集?哪些过程提供了这些数据?这些数据是如何被保存和报告的?判断哪些度量和过程可满足可操作定义的要求?哪些度量要被替换或修改?需要新增哪些过程等。
②策划实施行动
利用分析结果,判断实施新的度量需要进行的活动包括对现有实践的修改和新活动的开发。定义实施度量的过程应覆盖以下内容:
a收集、存储、分析和报告数据的相关责任人;
b应怎样收集数据;
c数据收集频度、在过程的哪些点进行度量;
d应怎样分析和报告数据;
e谁是使用分析数据和结果的人员;
f用于收集、存储、分析、报告分析数据的工具;
g怎样存储数据,包括:数据存储需求、数据大小和格式、访问权限。
3.2 实施度量
一旦定义好了度量和度量计划,并建立了组织度量库,就可以进行数据收集和检验工作了。
3.2.1 收集数据
最好的数据收集过程,就是将数据收集过程与其它日常过程相组合。
向那些提供数据和报告数据的人提供简明、清晰的指导的数据收集说明书,包括以下内容:负责记录度量的人和组织、度量时机和方法、数据的类型和格式、可接受的值或值的范围、记录数据的机制及工具。
3.2.2 检验数据
采集的数据进入度量库之前必须经过检验。在尽可能靠近数据源的位置进行数据的完整性检查,以尽早识别错误、确定遗漏数据的来源。软件组织需要准备一些度量工作指南,指导提供数据的人能正确理解数据收集活动的目的以及对他们的期望,以改善数据的准确和可靠程度。
3.2.3 管理数据
3.2.3.1 组织度量库
组织必须建立和维护组织度量库,用来管理度量数据。数据的硬拷贝收集方式只能满足简单度量活动。当数据量日益增多,需求日益复杂时,必须使用关系数据库建立组织度量库以满足需要。
组织度量库的设计和使用依赖于度量定义。当建立组织度量库时,必须为输入、维护和访问数据制定说明书和界面。为保证数据只被收集一次,则先收集项目数据,在项目里程碑总结或者项目结项总结时,再将组织级需要的项目数据输入到组织度量库中。
3.2.3.2 存储数据
依据度量计划中已制定的存储规程,将收集并经过验证的数据存储到组织度量库中。存储的内容应该恰当的被组织和个人使用,可以采取的措施有:由指定的数据存储负责人控制对数据的存储;只存储基础度量;给使用数据的相关人员进行培训;设置数据使用的权限。
3.2.3.3 分析数据
分析数据包括组织和总结数据以及寻找模式、趋势,以及关系,分析过程中的各项活动。用于分析和理解数据的方法和技术很多,要为每个度量确定适合且有意义的分析方法或技术。常用度量分析技术包括:
①表现技术,如:散点图、趋势图、因果图、直方图、Bar图、佩尔托排列图等;
②描述统计,如算术法、中值法和取模方法、AVDOT;
③抽样统计的取样标准、假设检验;
④分析过程行为,如SPC技术。
3.3 改进过程
根据分析结果进行过程改进是度量过程中显示效果的关键步骤。改进过程的主要工作包括:确定问题的根本原因;验证解决方法;把解决方案程序化等。在改进阶段,需要确定可能的解决方案,通过分析并考虑成本和收益的问题来挑选最优的解决方案。
3.3.1 确定过程性能基线
通过统计过程控制,可以判断过程是否处于受控状态,当过程处于受控状态时,就可以计算过程性能基线(Process Performance Baseline,简称PPB)。当前的过程能力离这个基线有一定距离时,就需要不断改进过程。
3.3.2 根据分析结果,进行过程改进
在过程改进阶段,PPB发挥着重要的作用,它有助于过程分析及改进。通过分析PPB随时间的变化趋势可测量过程的改进并寻求过程改进的时机及方向。
3.4 控制过程
控制过程的主要目的是让过程改进方案成为组织标准过程进行推广,避免人员和过程回到旧的程序上。在控制阶段,组织需要制定过程监控程序,通过控制图来判断过程是否受控,通过PPB判断组织过程性能是否提升。当组织识别出新的目标时,就要按照组织的新目标定义新的度量。重新回到定义度量的活动上。
4 小结
本文作者结合多年来在实际软件过程改进工作中的经验,基于大量项目实践后,总结并提出“基于CMMI的软件度量分析框架”。这套框架解决了组织如何度量的难题,有效指导组织建立度量过程、定义度量活动、收集过程数据和进行数据分析、改进和控制过程。该框架已在公司过程改进中发挥重要作用,帮助企业顺利通过CMMI4级认证,证明是行之有效的。
参考文献:
[1]Carnegie Mellon SEI. CMMI?誖for Development,Version 1.2[Z].Carnegie Mellon University. 2006.8:101-514.
[2]John McGarry等著. 吴超英,廖彬山译. 实用软件度量. 北京:机械工业出版社,2003.
[3]Norman E.Fenton,Sharing Lawrence Pfleeger著.杨海燕,赵魏,张力译.软件度量(原书第二版).北京:机械工业出版社,2004.
[4]卡耐基梅隆大学软件工程研究所编著,刘孟仁等译.能力成熟度模型(CMM):软件过程改进指南[M].北京:电子工业出版社. 2001:15-50.
[5]William A.F & A.D Careton著.任爱华刘又诚译.周伯生审校.度量软件过程-用于软件过程改进的统计过程控制[M]. 北京:北京航空航天大学出版社,2002:3-11.
[6]John McGarry等著.吴超英,廖彬山译.实用软件度量[M]. 北京:机械工业出版社,2003:11-23.
关键词:CMMI软件过程度量量化管理
1 概述
为了提高软件产品的质量,唯一的方法是通过提高软件研发过程的质量来带动软件产品质量的提高。软件过程管理是指成功地对软件产品和对强化软件系统的开发、维护和支持活动的工作过程进行管理。
软件度量是对软件开发项目、过程及其产品进行数据定义、收集、分析的量化过程,目的在于对此加以理解、预测、评估、控制和改善。通过软件度量可以改进软件开发过程,促进项目成功,开发高质量的软件产品。
采用何种方法对软件过程进行度量是软件组织面临的难点。本文介绍了一套使用有效的基于CMMI的软件度量分析框架可以有效指导组织开展度量活动。
2 分析
2.1 CMMI中的度量与分析
CMMI是美国卡内基梅隆大学软件工程研究所应美国联邦政府的要求,于1991年开始开发并持续完善的一种用于评价软件开发组织能力并帮助其改善质量的方法、模型。
CMMI模型中把度量放在了一个重要的位置,CMMI模型按成熟度分为5个等级,各级别中对度量与分析的要求都有所不同。
2.1.1 在CMMI二级中为度量建立了一个独立的过程域-度量与分析。明确提出:度量和分析的目的在于开发和维护用于支持管理信息需要的度量,以便支持对管理信息的需要,在这一过程域上度量的关注点集中在单个的项目上。
2.1.2 CMMI三级中,度量上升到组织级。包括了项目级度量和组织过程级度量。首先,要将度量活动制度化为组织级过程。其次,要建立组织级的度量数据库,对组织从各项目收集的度量数据进行管理。项目级根据组织级标准度量体系进行裁剪,定义出项目级度量计划。CMMI3级的度量活动是CMMI四级实施的基础。
2.1.3 CMMI四级中对度量进行更加细致的规范。在CMMI四级中,需要使用统计学的相关方法和工具进行定量的分析。组织级利用积累的历史数据建立组织过程性能基线和过程性能模型。一个软件组织如果达到了CMMI四级,则表明该组织已经建立了关于产品质量、服务质量以及过程性能的定量目标,运用统计技术和其他定量技术对各过程实施进行控制,并且把这些定量目标作为判断过程管理成功与否的标准。
2.1.4 CMMI五级中,为了实现商业目标,组织已经建立了有效地、不断地、系统地过程改进体系。用度量识别软件组织的软件过程改进机会、建立量化的组织软件过程改进目标和评价过程改进的效果。管理人员有能力估计及定量跟踪变化的影响和效果。
2.2 CMMI度量与分析过程域
CMMI中,度量与分析过程域有两个特定目标(Special Goal,简称SG)和8个特定实践(Special Practice,简称SP),图1是度量和分析过程域的语境图。
3 实现
基于对CMMI中度量与分析过程域的研究,以及CMMI各成熟度级别对度量与分析活动的要求,建立如图2所示的软件度量和分析过程:定义度量、实施度量、分析数据、改进过程、控制过程。
3.1 定义度量
度量策划步骤如图3所示,主要有:获取商业目标、明确组织目标和项目目标、识别关键过程、选择定义度量等活动。
3.1.1 确定目标
首先,要明确实施度量是为了支持组织商业目标。组织的商业目标通常会关注:产品具有的功能、产品和服务的质量、盈利能力、产品开发周期、市场份额、顾客满意度、组织形象和信誉等。组织的战略计划、经营计划和过程改进计划都从不同侧面反映了组织的商业目标。
其次,由商业目标,能够分解出软件组织目标。某些商业目标可以直接传递给软件组织;还有一些目标,可以分解转化成软件组织的相关目标;还有些商业目标与软件组织没有任何关系。
最后,组织的目标通常会分解到各个项目上,项目的目标会更加详细和具体。项目目标反映了相关方对项目的特定要求。不同的项目会有不同的项目目标,常见的项目目标有:进度偏差率、估算偏差率、生产率、满足相关需求、缺陷密度、达到客户满意等。不是所有项目目标都要进行关注。根据组织管理的要求和项目需求,将项目目标排列优先级顺序,选择几个关键目标进行监控。项目目标应当记录到项目计划书中。
3.1.2 识别关键过程
识别关键过程从识别关键因素和识别关键过程两方面展开。
首先,关键因素决定了既定目标的达成。因而主要分析影响战略目标的各种因素和影响这些因素的子因素。识别时通常有效的做法是进行一次专题讨论会或头脑风暴。关键因素不是越多越好,经验证明,大多数组织有4~6个关键成功因素。
其次,关键过程是对项目或组织目标的实现影响最大的过程。一般,通过一个关键成功因素可以直接找到一个或多个关键过程。然而也存在一些因素,需要执行某些分析才能识别关键过程。应当将重点放在识别关键的以定义软件过程上。同时,还要识别那些未定义实施的关键过程。可考虑的过程有:曾出过问题的;跨部门的;首次使用新技术;超工作负荷的。还可以从软件开发生命周期中涉及到的4个过程域(项目管理、工程管理、过程管理、支持域)中识别。需要注意:关键过程会随着时间段的不同或在开发过程进展情况而有所不同。
识别了关键过程后,要为每个过程设置执行目标,并找出可能阻碍目标实现的关键问题。过程执行目标通常与成本、质量或进度相关。
3.1.3 选择和定义度量
3.1.3.1 选择度量
①GQM方法确定度量
使用GQM(Goal-Question-Measure)[2][3]方法,即通过设立目标、提出问题、回答问题、选定度量三个步骤来确定选择什么度量。
GQM法举例:
目标:上线前返工成本降低35%。
问题:识别在需求评审、测试发现缺陷、并解决的平均成本是多少?
度量:质量成本(需求评审成本+测试成本+返工成本)/缺陷数。
②过程中的度量实体
关键过程中:过程所接收事物、过程自身的产出事物、过程的一些活动、过程中消耗的事物,以及作为过程的结果而保留的事物都是度量实体,度量实体有:规模、工作量、进度、缺陷、需求变更、成本等。表1是实体和属性示例。
3.1.3.2可操作定义
制定可操作定义时应遵守三个原则:可以传达、可重复性、可跟踪性。为每个度量制定的可操作定义应该包括内容如下表所示:
3.1.3.3把度量活动集成到过程
度量是一个成熟软件过程的重要组成部分。需要将定义的度量融入软件开发周期恰当的各个阶段和过程中。
①分析现有的度量活动和数据
对组织当前的度量状况进行分析,建立以后工作的基线(baseline)作为度量的起点。分析内容有:需要哪些数据?哪些数据已被组织标准过程定义的度量所收集?如何采集?哪些过程提供了这些数据?这些数据是如何被保存和报告的?判断哪些度量和过程可满足可操作定义的要求?哪些度量要被替换或修改?需要新增哪些过程等。
②策划实施行动
利用分析结果,判断实施新的度量需要进行的活动包括对现有实践的修改和新活动的开发。定义实施度量的过程应覆盖以下内容:
a收集、存储、分析和报告数据的相关责任人;
b应怎样收集数据;
c数据收集频度、在过程的哪些点进行度量;
d应怎样分析和报告数据;
e谁是使用分析数据和结果的人员;
f用于收集、存储、分析、报告分析数据的工具;
g怎样存储数据,包括:数据存储需求、数据大小和格式、访问权限。
3.2 实施度量
一旦定义好了度量和度量计划,并建立了组织度量库,就可以进行数据收集和检验工作了。
3.2.1 收集数据
最好的数据收集过程,就是将数据收集过程与其它日常过程相组合。
向那些提供数据和报告数据的人提供简明、清晰的指导的数据收集说明书,包括以下内容:负责记录度量的人和组织、度量时机和方法、数据的类型和格式、可接受的值或值的范围、记录数据的机制及工具。
3.2.2 检验数据
采集的数据进入度量库之前必须经过检验。在尽可能靠近数据源的位置进行数据的完整性检查,以尽早识别错误、确定遗漏数据的来源。软件组织需要准备一些度量工作指南,指导提供数据的人能正确理解数据收集活动的目的以及对他们的期望,以改善数据的准确和可靠程度。
3.2.3 管理数据
3.2.3.1 组织度量库
组织必须建立和维护组织度量库,用来管理度量数据。数据的硬拷贝收集方式只能满足简单度量活动。当数据量日益增多,需求日益复杂时,必须使用关系数据库建立组织度量库以满足需要。
组织度量库的设计和使用依赖于度量定义。当建立组织度量库时,必须为输入、维护和访问数据制定说明书和界面。为保证数据只被收集一次,则先收集项目数据,在项目里程碑总结或者项目结项总结时,再将组织级需要的项目数据输入到组织度量库中。
3.2.3.2 存储数据
依据度量计划中已制定的存储规程,将收集并经过验证的数据存储到组织度量库中。存储的内容应该恰当的被组织和个人使用,可以采取的措施有:由指定的数据存储负责人控制对数据的存储;只存储基础度量;给使用数据的相关人员进行培训;设置数据使用的权限。
3.2.3.3 分析数据
分析数据包括组织和总结数据以及寻找模式、趋势,以及关系,分析过程中的各项活动。用于分析和理解数据的方法和技术很多,要为每个度量确定适合且有意义的分析方法或技术。常用度量分析技术包括:
①表现技术,如:散点图、趋势图、因果图、直方图、Bar图、佩尔托排列图等;
②描述统计,如算术法、中值法和取模方法、AVDOT;
③抽样统计的取样标准、假设检验;
④分析过程行为,如SPC技术。
3.3 改进过程
根据分析结果进行过程改进是度量过程中显示效果的关键步骤。改进过程的主要工作包括:确定问题的根本原因;验证解决方法;把解决方案程序化等。在改进阶段,需要确定可能的解决方案,通过分析并考虑成本和收益的问题来挑选最优的解决方案。
3.3.1 确定过程性能基线
通过统计过程控制,可以判断过程是否处于受控状态,当过程处于受控状态时,就可以计算过程性能基线(Process Performance Baseline,简称PPB)。当前的过程能力离这个基线有一定距离时,就需要不断改进过程。
3.3.2 根据分析结果,进行过程改进
在过程改进阶段,PPB发挥着重要的作用,它有助于过程分析及改进。通过分析PPB随时间的变化趋势可测量过程的改进并寻求过程改进的时机及方向。
3.4 控制过程
控制过程的主要目的是让过程改进方案成为组织标准过程进行推广,避免人员和过程回到旧的程序上。在控制阶段,组织需要制定过程监控程序,通过控制图来判断过程是否受控,通过PPB判断组织过程性能是否提升。当组织识别出新的目标时,就要按照组织的新目标定义新的度量。重新回到定义度量的活动上。
4 小结
本文作者结合多年来在实际软件过程改进工作中的经验,基于大量项目实践后,总结并提出“基于CMMI的软件度量分析框架”。这套框架解决了组织如何度量的难题,有效指导组织建立度量过程、定义度量活动、收集过程数据和进行数据分析、改进和控制过程。该框架已在公司过程改进中发挥重要作用,帮助企业顺利通过CMMI4级认证,证明是行之有效的。
参考文献:
[1]Carnegie Mellon SEI. CMMI?誖for Development,Version 1.2[Z].Carnegie Mellon University. 2006.8:101-514.
[2]John McGarry等著. 吴超英,廖彬山译. 实用软件度量. 北京:机械工业出版社,2003.
[3]Norman E.Fenton,Sharing Lawrence Pfleeger著.杨海燕,赵魏,张力译.软件度量(原书第二版).北京:机械工业出版社,2004.
[4]卡耐基梅隆大学软件工程研究所编著,刘孟仁等译.能力成熟度模型(CMM):软件过程改进指南[M].北京:电子工业出版社. 2001:15-50.
[5]William A.F & A.D Careton著.任爱华刘又诚译.周伯生审校.度量软件过程-用于软件过程改进的统计过程控制[M]. 北京:北京航空航天大学出版社,2002:3-11.
[6]John McGarry等著.吴超英,廖彬山译.实用软件度量[M]. 北京:机械工业出版社,2003:11-23.