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