ISO/IEC 25021:软件质量度量元素标准详解

系统和软件工程 SQuaRE 质量度量分体系 — 定义质量度量的基础构件

一、质量度量元素(QME)概念解析

ISO/IEC 25021 是 SQuaRE(系统和软件质量需求与评估)系列标准中的基础性标准,归属于 ISO/IEC 2502n 质量度量分体系。该标准的核心目标是定义质量度量元素(Quality Measure Elements,QME)的概念,并提供一个严谨的规范框架。QME 被定义为以目标实体的属性及其量化测量方法表示的度量,可选地包含数学函数变换。本质上,QME 是构建所有更高级质量度量(QM)的原子级基础构件。

一个单一的质量度量(QM),例如”缺陷密度”,通常由两个或更多 QME 组成。例如,缺陷密度 = 缺陷数量 / 软件规模。其中每个组件本身都是一个 QME,可以跨多个不同的质量度量复用。

该标准取代了早期的 ISO/IEC TR 25021:2007 技术报告,并作为传统 ISO/IEC 9126 系列与现代 SQuaRE 框架之间的关键桥梁。通过标准化 QME,ISO/IEC 25021 确保质量度量在不同项目、组织和领域之间保持一致、可重复且可比较。这在医疗器械、汽车安全(ISO 26262)和航空电子(DO-178C)等受监管行业中尤其有价值,因为这些行业需要可追溯且可辩护的质量指标。

二、QME 规范框架详解

标准定义了一套完整的 QME 规范表格格式,包含 14 个信息项,分为四个逻辑组。这种结构化方法确保每个 QME 都被完整且无歧义地记录。

2.1 QME 标识与范围

第一组涵盖 QME 标识:唯一名称(通常以”数量”开头)、目标实体(被测量的对象,如源代码、设计文档或系统行为)以及目标与待量化属性。例如,QME”代码故障数量”以程序源代码为目标实体,量化属性”故障”。

2.2 测量方法规范

第二组也是最实质的组定义了如何测量 QME。它包括测量方法(如何收集数据并转换为数值)、子属性列表(如适用)、输入来源、计量单位、数值分配规则和量表类型(名义、顺序、间隔或比率)。标准要求从实践者视角(文本形式)和理论视角(数学表达式)两个层面描述数值规则,确保实用性和形式严谨性兼得。

信息项 描述 示例(故障计数)
QME 名称 唯一标识 代码故障数量
目标实体 被表征的对象 程序源代码
待量化属性 被测量的具体属性 故障——错误的步骤、过程或数据定义
测量方法 数据收集与赋值方式 代码审查、修订源码差异分析
计量单位 结果使用的尺度单位 代码行数
量表类型 数学量表类别 比率
生命周期过程 测量适用的阶段 软件构建、实施

2.3 应用管理

最后一组涉及实践管理:QME 的使用上下文(支持哪些质量特性)、适用的软件生命周期过程以及任何测量约束。例如,代码故障数量可能因代码是新建还是复用而有显著差异,调查方法(审查 vs. 检查 vs. 自动化分析)也会产生不同的结果。记录这些约束对于正确解读度量结果至关重要。

测量约束必须明确记录。例如,故障计数在新开发代码和复用代码之间会有差异,不同的调查方法(走查、审查、检查、自动化工具)也会产生不同结果。没有这些上下文信息,跨项目比较将毫无意义。

三、工程设计洞察与实践应用

对于实施 ISO/IEC 25021 的工程团队,从该标准框架中可以提炼出几个实用的工程洞察。

3.1 可复用性与一致性

同一个 QME 可以被跨不同质量特性的多个质量度量使用。例如,”故障数量”作为可靠性度量(故障密度)、成熟度度量(故障检测率)和维护性度量(故障移除率)的组成元素。这种复用确保了一致性:当一个 QME 定义在整个组织内标准化后,所有派生质量度量都继承这种一致性。实践建议是建立组织级 QME 仓库,类似于代码库,其中经过批准和验证的 QME 被编目供跨项目复用。

3.2 度量与生命周期的关联

每个 QME 应显式映射到实际进行测量的软件生命周期过程。这防止了常见的陷阱——指定在预期阶段无法收集的度量。例如,QME”代码故障数量”在构建阶段(编码和单元测试)通过代码审查或单元测试实际可测量,但在需求分析阶段只能估计。这种生命周期意识对于测量计划和资源分配的规划至关重要。

3.3 量表类型意识

标准将量表类型分为名义、顺序、间隔和比率四类。这不仅是理论上的细分,还具有实际影响:比率量表(如代码行数、缺陷计数)允许乘法和除法运算,从而可以计算有意义的派生度量如密度或率值。顺序量表(如严重性评级:严重、主要、次要)仅允许排序和比较。工程师必须为每个 QME 选择合适的量表类型,并在计算派生质量度量时尊重其数学属性。一个常见错误是将顺序满意度评级视为间隔数据并计算均值,这可能导致误导性结论。

建立组织级 QME 仓库——类似于软件组件库——使得所有项目都能实现一致、可复用的质量度量。每个 QME 定义一次、验证一次,然后被多个质量度量引用。

四、常见问题解答

问:QME 和 QM(质量度量)有什么区别?
答:QME 是量化单一属性的基础度量(如”失败次数”)。QM 是通过测量函数组合两个或更多 QME 得到的派生度量(如”平均故障间隔时间”= 运行时间 / 失败次数)。每个 QM 至少由两个 QME 构建而成。
问:同一个 QME 可以同时用于内部和外部质量度量吗?
答:可以。相同的 QME,如”故障数量”,既可以应用于内部度量(开发期间的静态代码分析),也可以应用于外部度量(测试或运行期间观察到的失效)。关键区别在于目标实体和测量方法,这些必须相应地记录在案。
问:ISO/IEC 25021 与 ISO/IEC 25023 有何关系?
答:ISO/IEC 25021 定义 QME 基础构件,而 ISO/IEC 25023 使用这些 QME 为质量模型中的每个特性(如可靠性、可用性、性能效率)构建具体的产品质量度量。25021 的 QME 是 25023 中定义的测量函数的输入。
问:ISO/IEC 25021 适用于敏捷开发吗?
答:当然可以。QME 框架与生命周期无关。在敏捷环境中,QME 可应用于用户故事(功能规模)、冲刺待办列表(缺陷计数)和持续集成流水线(代码质量指标)。关键在于将每个 QME 映射到测量发生的适当敏捷仪式或工件。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注