软件测量
软件测量框架基于三个原则 −
- 对要检查的实体进行分类
- 确定相关的测量目标
- 确定组织已达到的成熟度级别
对要检查的实体进行分类
在软件工程中,主要存在三类实体。它们是 −
- 流程
- 产品
- 资源
所有这些实体都有内部和外部实体。
内部属性是那些可以纯粹根据流程、产品或资源本身进行测量的属性。例如:大小、复杂性、模块之间的依赖关系。
外部属性是那些只能根据其与环境的关系来衡量的属性。例如:用户遇到的故障总数、搜索数据库和检索信息所需的时间长度。
可以为每个实体测量的不同属性如下 −
流程
流程是与软件相关的活动的集合。以下是可以直接测量流程的一些内部属性 −
流程或其某项活动的持续时间
与流程或其某项活动相关的工作量
流程或其某项活动期间发生的指定类型的事件数量
流程的不同外部属性包括成本、可控性、有效性、质量和稳定性。
产品
产品不仅是管理层承诺交付的项目,而且是软件生命周期中生成的任何工件或文档。
不同的内部产品属性包括大小、工作量、成本、规格、长度、功能、模块化、重用、冗余和语法正确性。其中,规模、工作量和成本比其他属性相对容易衡量。
不同的外部产品属性包括可用性、完整性、效率、可测试性、可重用性、可移植性和互操作性。这些属性不仅描述代码,还描述支持开发工作的其他文档。
资源
这些是流程活动所需的实体。它可以是软件生产的任何输入。它包括人员、材料、工具和方法。
资源的不同内部属性包括年龄、价格、大小、速度、内存大小、温度等。不同的外部属性包括生产力、经验、质量、可用性、可靠性、舒适度等。
确定相关的测量目标
只有当特定测量有助于理解流程或其产生的产品之一时,它才会有用。只有当项目明确定义了流程和产品的目标时,才能对流程或产品进行改进。清晰地了解目标可用于在流程成熟度框架的背景下为给定项目生成建议指标。
目标-问题-指标 (GQM) 范式
GQM 方法提供了一个涉及以下三个步骤的框架 −
列出开发或维护项目的主要目标
从每个目标中得出必须回答的问题,以确定目标是否得到满足
决定必须衡量什么才能充分回答问题
要使用 GQM 范式,首先我们要表达组织的总体目标。然后,我们生成问题,以便知道答案,这样我们就可以确定目标是否得到满足。之后,根据回答每个问题所需的测量来分析每个问题。
典型的目标以生产力、质量、风险、客户满意度等来表达。目标和问题应根据受众来构建。
为了帮助生成目标、问题和指标,Basili & Rombach 提供了一系列模板。
目的 − 对(流程、产品、模型、指标等)进行(特征化、评估、预测、激励等)以便理解、评估、管理、设计、学习、改进等。示例:对产品进行特征化以便学习。
视角 − 从开发人员、经理、客户等的角度检查(成本、有效性、正确性、缺陷、变化、产品测量等)。示例:从客户的角度检查缺陷。
环境 −环境由以下因素组成:流程因素、人员因素、问题因素、方法、工具、约束等。示例:此软件的客户是那些不了解工具的人。
测量和流程改进
通常,测量对于 − 有用
- 了解流程和产品
- 建立基线
- 访问和预测结果
根据 SEI 给出的流程成熟度级别,测量类型和测量程序将有所不同。以下是可在每个成熟度级别应用的不同测量程序。
级别 1:临时
在此级别,输入定义不明确,而输出是预期的。从输入到输出的转换是未定义和不受控制的。对于此级别的流程成熟度,需要基线测量来提供测量的起点。
级别 2:可重复
在此级别,流程、约束和资源的输入和输出是可识别的。可重复流程可以通过下图描述。
输入测量可以是需求的大小和波动性。输出可以用系统大小来衡量,资源可以用员工工作量来衡量,约束可以用成本和进度来衡量。
级别 3:已定义
在此级别,中间活动已定义,并且它们的输入和输出是已知和理解的。下图描述了已定义流程的一个简单示例。
可以检查、测量和评估中间活动的输入和输出。
级别 4:受管理
在此级别,早期项目活动的反馈可用于为当前活动和之后的项目活动设定优先级。我们可以衡量流程活动的有效性。测量反映了整个流程的特征以及主要活动之间相互作用的特征。
级别 5:优化
在此级别,活动的测量结果用于通过删除和添加流程活动以及根据测量反馈动态更改流程结构来改进流程。因此,流程变更会影响组织和项目以及流程。流程将充当传感器和监视器,我们可以根据警告信号对流程进行重大更改。
在给定的成熟度级别,我们可以收集该级别及其以下所有级别的测量值。
确定成熟度级别
流程成熟度建议仅测量可见的内容。因此,流程成熟度与 GQM 的结合将提供最有用的测量。
在级别 1,项目可能有定义不明确的要求。在此级别,需求特征的测量很困难。
在级别 2,需求定义明确,可以收集其他信息,例如每个需求的类型以及每种类型的更改次数。
在级别 3,定义了中间活动,并为每个活动定义了进入和退出标准
目标和问题分析将相同,但指标将随成熟度而变化。流程越成熟,测量就越丰富。GQM 范式与流程成熟度相结合,已被用作帮助管理人员设计测量程序的多种工具的基础。
GQM 有助于理解测量属性的必要性,而流程成熟度则表明我们是否有能力以有意义的方式对其进行测量。它们共同为测量提供了背景。