使用TSP数据构建过程性能模型
本报告介绍了过程性能模型(PPM)的基本概念,以及如何利用来自遵循TSP(团队软件过程)的项目的数据构建PPM。利用PPM,可以通过识别项目和组织可以控制的因素进行准确预测、以获得更好的输出成果,帮助组织从“被动模式”变为“主动、可预期模式”。
PPM是实施CMMI高成熟度等级的基础,这一点在QPM和OPP过程域有明确要求。本文介绍了三个如何利用TSP过程的数据以及来自其他过程的有效数据构建PPM。
1 简介
CMMI是产品和服务开发的过程改进框架[Chrissis 07],由涉及产品开发和维护活动的实践所组成,涉及从概念、交付到维护的产品全生命周期。CMMI为达到制度化和过程改进目的,还包含了在组织级和项目级上需要实施的各种实践。
TSP和它的孪生兄弟PSP,定义了一组项目实践,这些实践已被证明,在交付的产品质量、进度和成本[Webb 08]等方面,能产生理想的过程性能结果。TSP和PSP在软件项目计划和执行方面,提供面向团队和个人的原则和已定义好的方法。TSP团队的一个基础性工作是对项目规模、缺陷、投入、进度和返工等详细度量数据的收集和使用。这些度量数据,对衡量项目性能和状态提供价值,也为预测项目完工的多个方面打下了基础。
PPM的开发和使用,是CMMI里高成熟度实践的要求,特别是在组织过程性能(OPP)和量化项目管理(QPM)过程域。有效开发和使用PPM,必须具有高质量的数据。TSP中定义恰当、粒度合适的数据收集规程所收集的数据为开发和使用PPM,打好了极好的基础。
这篇技术报告介绍PPM基本概念,以及PPM和TSP之间的关系。提供了一些使用TSP数据创建PPM的例子,这些例子说明了这些概念、以及PPM与TSP之间的关系。
2 过程性能模型
2.1 什么是过程性能模型(PPM)?
PPM是对过程属性和工作产品之间关系的描述。PPM是建立在历史过程性能数据基础之上的,并用项目中过程和产品的度量数据来校准。它们可用来预测结果,这些结果可以通过下面的过程达到[Chrissis 07]。
过程性能模型
n 在可能的和实际的因子变化基础上,预测未来结果(例如,“如果-怎样”分析)
n 将过程或子过程的环境或行为(表示成可控因子或不可控因子)和结果联系
n 使用一个或多个上游过程或子过程的因子,预测下游的结果
n 使用可控因子,项目可采取行动以影响结果(最好这样)
n 在统计学与或概率学上具有意义,而不是确定性的(例如,模型关心统计意义上的变异,描述各因子的不确定性,以及结果的不确定性和值的范围)。
对于项目和过程管理,PPM是有用的工具。项目经理带着一定的自信使用PPM预测过程性能,这样一来他们就可以更好地识别和理解风险。PPM应该包含至少一个可控因子,这样经理们就可以作“如果-怎样”的分析,以判断各种行动对他们项目可能产生的影响。在组织级上,PPM可以相似的方式改进过程。在编篡项目已定义的过程时,要分析一个过程能否满足项目的质量目标和过程性能目标,此时,PPM扮演了一个重要的角色。
在过程管理的背景下,PPM帮助组织识别和利用过程因子和结果间存在的重要关系。PPM还提供和过程使用相关的实际和期望的偏差,并可用来估计过程变更的效果。
2.2 创建过程性能模型
A number of conditions in an organization influence the nature and value associated with a PPM. Each of the following is an important input to the process of creating a PPM:
组织内的一些条件,影响着PPM相关的特性和价值。下面的每一个都是创建PPM的重要输入:
l 支持“项目过程”建立和维护的、组织级的标准过程集和裁减指南
l 高质量的历史过程性能数据
l 和过程性能模型相关的知识和技能
l 高保真的数据收集、分析和报告机制
l 开发PPM的工具和技术手段(例如,统计模型和Monte Carlo模拟)
如图1,包含TSP数据的数据仓库为建立PPM提供了必要的信息。TSP团队定义项目过程以说明如何/何时需要收集数据、已培训的TSP队员在计划和执行任务时如何理解并使用数据。这样,TSP团队可以提供高质量、粒度合适的数据,这些数据可以作为创建PPM打下了坚实的基础。
图1: 过程性能模型和TSP
建立PPM的主要步骤如下[Zubrow 09]:
1. 识别或再次确认项目目标。模型的输出,应该和项目质量与过程性能目标之间是一致的。
2. 选择一个或多个过程进行分析和建模。这可以是一个项目的过程,也可以是一个组织的过程。模型可以预测与当前被研究过程直接相关的结果,或者预测在开发生命周期中处于更下游的结果。
3. 确定模型预测什么结果。一些典型的例子如:质量、生产率、周期时间、过程有效性和客户满意度。注意过程可能有多种类型的结果,所以可能要开发多个模型来探讨他们。例如,持续时间段、质量和消耗的投入,都可能是相应的过程性能结果。
4. 设定要调查的因子。可控的和不可控的因子应该都要包括进来。导致结果的根本原因、和结果相互关联的因子以及结果最主要的指示器,都是用来做分析用的好的候选对象
5. 选用建模方法。这取决于可用的数据规模和模型的类型。统计模型如回归分析、方差分析、logistic回归,和logit分析可用来创建PPM。也可以使用概率建模方法,如Monte Carlo模拟和离散事件模拟。
6. 获取相应数据,评估它的质量,用书面形式记录它的限制。决定如何获取样本、取什么样本、数据的概念正确性和度量过程的可靠性等。
7. 建立统计和业务两个标准,评估模型的性能或效用。尽管统计分析常常得出模型和数据的拟合度很好,但这些度量数据往往不能从业务上反映性能。这两个标准都需要建立和考虑。
8. 将数据代入模型,按照上述统计和业务两个标准,评估结果。
9. 如果结果满意,部署模型、定期评审它对组织的价值和效用。
2.3 CMMI4、5级过程域与PPM之间的关系
这一节描述CMMI L4-L5过程域和PPM之间的关系。
组织过程性能
组织过程性能(OPP)的目的是建立并维护一个能支持质量和过程性能目标的组织级标准过程的性能量化理解,提供过程性能数据、基线,以及用于对组织内项目实行量化管理的模型(见图2)。过程性能模型建立在组织标准过程集和组织过程性能基线的基础上。PPM可以用来为组织建立或验证质量和过程性能量化目标的合理性。如上所述,在OPP和其它高成熟度过程域之间,存在很强的联系。
图2 OPP过程和实践
量化项目管理
量化项目管理(QPM)的目的是为了量化地管理项目已定义的过程,以达到项目已建立的质量和过程性能目标。这个过程域应用量化和统计技术完成以下任务:
l 评估候选的已定义的项目过程(QPM SP1.2)
l 建立或验证项目质量和过程性能目标的合理性(QPM SP1.1)
l 估计达到项目质量和过程性能目标的进展(QPM SP1.4 sub 4)
原因分析和解决方案
原因分析和解决方案(CAR)过程域,为组织和项目提供了一种机制,用以识别指定缺陷和其它问题的根本原因,进而采取措施遏制它们不会在未来再发生。
这个过程域应用了量化和统计技术,来完成以下任务:
l 通过影响、收益和投资回报预测,选择一些缺陷和其它问题并分析它们(CAR SP 1.1)
l 识别缺陷和其它问题的潜在原因(CAR SP 1.2)
l 通过影响、收益和投资回报预测,选择改进建议(CAR SP 2.1)
l 评估过程性能变化的影响,看其是否达到了预测的性能(CAR SP 2.2)
组织革新部署
组织革新部署(OID)过程域用来选择、部署渐进的、和革新型改进,提高组织满足质量和过程性能目标的能力。
这个过程域应用量化和统计技术,完成下列任务:
l 分析过程和技术改进建议所需要的成本和产生的收益(OID SPSub 2)
l 分析潜在的革新措施,以理解它们在过程元素上的成效,并预测对过程造成的影响(OID SP 1.2 Sub 3)
l 判断已定义的过程满足质量和过程性能目标的能力,是否反过来受过程变化影响 (OID SP 2.2 Sub 9)
l 监控过程改进,跟踪质量和过程性能目标达成的进展,判断先前预测的影响是否发生。 (OID SP 2.3 Sub 4)
PPM案例
这一节举几个PPM例子,它们可以用TSP团队的数据来建立。在这些例子里,另外一些变量也包括进来了,目的是演示从TSP团队产生的数据是如何和其它数据一起生成有效的PPM。模型及其模型的使用也在高成熟度过程域的背景下加以描述。
头两个例子说明在QPM过程域内模型的应用。第一个例子涉及对项目质量和过程性能目标的跟踪,第二个例子涉及定义项目已定义的过程。第三个例子描述一个问题解决案例,这个案例可能在CAR或OID的背景下完成。可能包含在PPM里的例子里的输出和输入(因子)在附录A里描述,在一个TSP的组织内这些结果和因子很可能都被度量。
3.1 例子1: QPM 满足项目的产品质量目标
这个例子说明了使用PPM来跟踪项目的产品质量和过程性能目标。在这个例子里,组织分析了TSP团队的历史数据,开发了一个PPM,来预测系统测试阶段的缺陷密度。模型中可控因子是:
l 原型:原型是否建立的哑变量(1=Yes, 0=No)
l 需求审查速度(页数/小时)
记录系统测试阶段的缺陷密度和需求审查速度,是TSP团队例行的数据收集工作中的一部分。尽管TSP有时也采用原型法,但使用原型不是TSP的例行事务。
图3显示的是,使用哑变量可控因子来预测结果y(系统测试阶段的缺陷密度)的回归结果。结果表明,模型的拟合度很好,那个被包含的x因子在统计上是显著的。就是说,决定系数高(R的平方)0.828,它相应的P值低于0.05。类似地, x因子的每个P值均小于0.05。进一步观察残差,结果表明让我们对模型的可用性产生了信心。这个模型的经调整的R平方值,比没有原型的模型的R平方值要高。这意味着使用原型变量可大大提高模型的拟合度。
图3:缺陷密度和原型、需求审查效率之关系。
模型可以这样解释:
l 如果使用原型,系统测试阶段的缺陷密度估计将平均减少0.182 defects/KLOC
l 对于需求审查速度,每小时多审查一页的话,估计系统测试阶段的缺陷密度将平均增加0.195 defects/KLOC
对于单个项目,使用这个方程式则需要计算预测区间。预测区间实际上建立了一个范围,表示预测的值将在这个范围内发生的可能性 [Zubrow 09]。预测区间很重要,因为区间反映性能的根本偏差,区间还给经理们提供期望结果的现实区间。比起单点预测,预测区间给经理提供了更多的关于风险和不确定性的知识。为使风险最小化,预测区间的上限值将比目标系统测试缺陷密度值小。
3.1.1 这个模型的应用
这个模型可以在下面的项目阶段使用:
l 在实施TSP之前,培训团队成员,并监控他们的需求审查速度
l 在TSP实施期间:
n 建立或验证系统测试阶段的目标缺陷密度(作为项目质量和过程性能目标)的可行性
n 决定项目是否使用原型
n 决定或验证目标需求审查速度
n 在目标评审速度和将要评审的资料总页数确定的情况下,安排必要的需求审查次数
n 假如项目不使用原型法,识别并评估风险
l 在开发阶段,通过调整评审速度来管理需求审查性能,使预测的系统测试阶段的缺陷密度保持在期望的水平上
l 在项目结束审查阶段,确定实际的系统测试阶段的缺陷密度是否满足了期望值。
这显示了如何定期收集TSP数据和开发过程的其它度量数据(如原型),一起分析这些数据,创建更完善的PPM。
3.2 例2:QPM - 关于评审类型和可允许的评审速度的过程文件
这个例子说明了一个PPM的应用,这个PPM可能是使用TSP团队(使用QPM过程域内项目已定义过程)数据建立的。在这个例子里,每个TSP团队分析了历史TSP团队数据,开发PPM,建立目标代码评审速度。代码评审产出(审查排除的缺陷比例)和代码评审速度(每小时评审的代码行),在TSP团队里都被例行地记录了下来。
如图4所示,线性回归提供了如何用代码评审速度(x可控因子)预测代码评审产出(结果)的信息。进一步,统计输出提供了一些信息,这些信息可用来建立产出值的可信区间和预测区间。基本分布和区间值的信息,对策划和执行项目来讲很有价值。
注意,模型在质量(产出)和投入(评审速度)之间找到了一个平衡。另外,培训和评审技术如“评审检查表”,对于有效评审是重要的。不懂得如何评审的人评审速度常常比别人快。PSP培训教给他们有效评审技术。经过培训后,他们在阅读代码或其它材料时,显得小心谨慎,这虽然需要花去了较多时间,但漏网之鱼就减少了。
图4 代码评审速度和审查产出之间的关系
这个模型可以在下面项目阶段里使用:
l 在TSP实施之前
n 培训团队成员:告诉他们评审速度对排除的缺陷数有影响
l 在TSP实施期间
n 设定合适的代码评审速度
n 制定一个计划,详细说明评审期间的代码评审类型、评审个数和涵盖的材料数量
n 设定代码评审的时间点和进度
l 在开发阶段
n 以代码评审速度作为代码评审的一个入口标准,管理代码评审的性能
n 让员工理解:测试与返工实际上是违反目标评审速度的后果
l 在项目结束阶段
n 评估实际的代码评审产出是否满足了目标值
n 评估PPM是否还准确预测产出
开发这个模型所需要的数据是TSP团队例行收集的。进一步,TSP对这些度量提供了准确的操作定义。提供明确的数据收集方法和标准定义,有助于增加数据的准确性和可靠性,进而提高数据分析结果的质量。这样做,能减少不确定性,提高自信心。
3.3 例3:CAR/OID 过程改进
在这个例子中,组织通过PPM的使用和更新,选择对测试策略进行改进。
组织已经有了一个PPM,该模型预测了单元测试中每千行代码逃逸的缺陷数(翻者注:为方便起见,逃过单元测试的每千行代码的缺陷数一律简称为EUD/KLOC)。如图5所示,线性回归提供了关于测试覆盖(即“x”因子)如何预测集成测试缺陷密度(即结果)的信息。调整后的R平方值是高的,且在统计上有意义,其余的是正态分布的和随机的。这些结果表明:模型和数据的拟合度是好的。
EDU/KLOC作为TSP数据收集规程的一部分被记录下来,但没有记录测试覆盖率。本例中,测试覆盖率指的是语句覆盖,即在集成测试期间代码行被执行的百分比。尽管大多数TSP团队希望减少EDU/KLOC,但当前的过程性能没有满足他们的目标。通过历史缺陷数据分析,发现低集成测试覆盖率和EDU/KLOC相关。根据对历史上TSP团队过程改进建议的分析结果,以及有效测试技术和方法的调查,组织决定:施行一个非TSP测试方法,引进单元测试支持工具来提高测试覆盖率,该工具具有创建测试用例和测试覆盖度量[Glass 02]的功能。
图5:EDU/KLOC和代码覆盖率(引进新方法之前)之间的关系
三个TSP团队试用了这个单元测试支持工具,每个团队测试10个组件。图6显示的是两个样本的t检验的结果,目的是在引进新方法之前和引进新方法之后的EDU/KLOC之间进行比较。每个数据集均服从正态分布。从两个样本t检验得出的箱线图如图7所示。零假设被拒绝了,组织可得出结论:使用单元测试支持工具确实能降低EDU/KLOC,使之接近他们期望的目标水平。基于这些结果,可决定在组织范围内使用单元测试支持工具。
如图8所示,基于试运行项目的数据,更新预测EDU/KLOC的线性回归模型。重复一遍,R平方值是高的,残差符合正态分布,是随机的。这个基于测试覆盖率的、预测单元测试后缺陷密度的模型,和数据的拟合度好。这个新模型可以用来预测TSP团队将来在使用单元测试支持工具时的EDU/KLOC。
尽管使用可靠的设计方法减少了缺陷的引入率、可靠的评审和审查方法可消除单元测试前的缺陷,但是,一个有效的测试策略对于发布前消除更多缺陷仍然很重要。测试对于上游缺陷移除活动有效性的验证也是必不可少的。就是说,即使测试只能移除很少的缺陷,它的验证作用仍是必需的。事实上,我们看到一些产品,在系统测试阶段并没有移除缺陷。仅系统测试的有效性就给我们一个信心:最终用户将不会发现缺陷。
3.3.1 模型使用
通过引入新方法建立模型之后,这个模型可以在下面的项目各阶段使用:
l 在TSP实施之前,培训团队成员,告诉他们测试覆盖和单元测试策略的重要性
l TSP实施期间
n 计划测试策略,以达到预期的测试覆盖率
n 研究测试覆盖和单元测试缺陷密度之间的平衡关系
l 开发阶段
n 监控实际的测试覆盖所造成的影响
n 识别未来缺陷密度,以及它对于下游质量和基于期望的测试覆盖而展开的各活动的含义
l 在项目结束检查期间,评估和确认:PPM是否准确预测EDU/KLOC。
名词解释
QPM: Quantitative Project Management 量化项目管理
TSM: Team Software Process团队软件过程
PSP: Personal Software Process 个体软件过程
OPP: Organizational Process Performance 组织过程性能
QPM: Quantitative Project Management 量化项目管理
CAR: The Causal Analysis and Resolution 原因分析和解决方案
OID: Organizational Innovation and Deployment 组织革新部署