自动源代码质量度量(ISO/IEC 5055)
1. 系统和软件质量要求和评估(ISO/IEC 25000)
ISO/IEC 25000系列标准,也称为SQuaRE(系统和软件质量要求和评估),包含评估软件产品质量的框架。 ISO/IEC 25000系列主要包含以下几个部分:
ISO/IEC 2500n — 质量管理(Quality Management Division): 定义了由SQuaRE系列标准中的所有其他标准引用的全部公共模型、术语和定义。在针对特定应用情况使用适当标准方面的引用路径和高级的实用建议有助于所有类型的用户。这一分部还提供了用于负责管理软件产品需求和评价的支持功能的要求和指南。
ISO/IEC 2501n — 质量模式(Quality Model Division): 给出一个包括软件内部质量、 软件外部质量和软件使用质量的特性的详细质量模型。此外, 内部和外部的软件质量特性被分解细化成一些子特性,并且还提供了使用该质量模型的实用指南。
ISO/IEC 2502n — 质量测量(Quality Measurement Division): 包括软件产品质量测量参考模型、质量测量的数学定义及其应用的实用指南。给出了应用于软件内部质量、软件外部质量和使用质量的测量。定义并给出了构成后续测量基础的质量测量元素。
ISO/IEC 2503n — 质量需求(Quality Requirements Division): 帮助用户规定质量要求。这些质量要求可用在要开发的软件产品的质量需求抽取过程中或用作评价过程的输入。需求定义过程可映射到ISO/IEC 15288 中定义的技术过程。
ISO/IEC 2504n — 质量评估(Quality Evaluation Division): 给出了无论由评价方、需方还是由开发方执行的软件产品评价的要求、建议和指南。还给出了作为评价模块的测量文档编制支持。
ISO/IEC 25050 到 ISO/IEC 25099 保留用于 SQuaRE 扩展的国际标准和/或技术报告。
ISO/IEC 25000标准系列之间的关系

)
1.1. 系统和软件质量模型(ISO/IEC 25010)
在软件质量模型的ISO/IEC 25010中定义了:使用质量模型和产品质量模型。这两个模型定义的特征与所有软件产品和计算机系统有关。这些特性和子特性为指定,测量和评估系统和软件产品质量提供了一致的术语。它们还提供了一组质量特性,可以将其与规定的质量要求进行比较,以确保完整性。模型的范围不包括纯粹的功能属性,但确实包括功能适用性。尽管产品质量模型的范围旨在于软件和计算机系统,但是许多特征也与更广泛的系统和服务有关。
1.1.1. 使用质量模型
使用质量模型由五个特征(其中一些特征进一步细分为子特征)组成,这些特征与在特定用途下使用产品时的交互结果有关。该系统模型适用于完整的人机系统,包括正在使用的计算机系统和正在使用的软件产品。

1.1.2. 产品质量模型
产品质量模型由八个特性(进一步细分为子特性)组成,这些特性与软件的静态属性和计算机系统的动态属性有关。该模型适用于计算机系统和软件产品。

1.1.3. 质量模型的应用范围
质量模型的应用范围包括与软件和软件密集型计算机系统的购置,需求,开发,使用,评估,支持,维护,质量保证和控制以及审核相关的各个方面,从而支持对软件和软件密集型计算机系统的规范和评估。例如,开发人员,获取者,质量保证和控制人员以及独立评估人员(尤其是负责指定和评估软件产品质量的人员)可以使用这些模型。使用质量模型可从产品开发过程中受益的活动包括:
确定软件和系统要求;
验证需求定义的全面性;
确定软件和系统设计目标;
确定软件和系统测试目标;
确定质量控制标准,作为质量保证的一部分;
识别软件产品和/或软件密集型计算机系统的接受标准;
确定质量特征的度量以支持这些活动。
1.2. 系统和软件产品质量的度量(ISO/IEC 25023)
ISO/IEC 25023描述了如何应用ISO/IEC 25010中定义的软件质量模型的8个特征来衡量软件产品的质量。但在ISO/IEC 25023中定义的措施主要是在行为级别而不是源代码中特定质量问题的级别上测量质量。为了补充ISO/IEC 25023中的度量级别,于是有了ISO 5055。
2. 自动源代码质量度量(ISO/IEC 5055)
软件产品的质量可能导致产品产生不可接受的运营风险或过度成本。因此在源代码级别建立质量检测措施的标准是非常重要的,但目前的ISO/IEC 25000系列标准中,用于控制软件产品质量的源代码级别只提供一小部分措施。 这就促成了ISO/IEC 5055的标准制定,通过这个标准来检测和统计违反源代码中的良好架构和编码实践的违规行为,以便能对软件产品质量做出评估。

同时ISO/IEC 5055中更新这些措施的主要目标是将其适用于嵌入式软件,这对于越来越多的嵌入式设备和物联网尤其重要。传统上在IT应用中实现的功能现在被移动到嵌入式芯片。由于已发现本文档中指定的措施中包含的弱点可适用于所有形式的软件,因此嵌入式软件未在本规范中单独处理。

ISO 5050提供了一套工程规则,通过影响业务的的四个关键因素:安全性、可靠性、可维护性、性能效率,用以评估软件系统的内部结构。这些因素确保了产品成为值得信赖、可靠和可扩展性的软件系统。金融机构、政府、电信、制造商、系统集成商和其他人可以利用ISO 5055来避免软件产品造成的服务中断、声誉损害或过度的IT成本。他们还可以使用它来客观地向监管机构、董事会或利益相关者展示关键系统的结构状况。ISO 5055规则允许通过软件分析平台自动检测严重的结构缺陷。

ISO/IEC 5055 参照了CISQ Quality Measures (2020)的质量评估标准,并已在CWE 4.2版本中引入了CWE的缺陷枚举中,并创建了CWE-1305 Quality Measures (2020)。有关CWE-1305缺陷视图可参考前期的, 以及中有关CISQ的另一个数据保护视图CWE-1340 CISQ Data Protection Measures。

注:部分图片引自北京2021/04/22日的“CISQ网络研讨会:ISO 5055自动化代码质量评估国际标准”中Bill Curtis 博士主题演讲的ppt。
3. 总结
ISO/IEC 5055对ISO/IEC 25000 在软件质量从源码角度检测和评估软件质量提供了补充;
ISO/IEC 5055为软件架构、源码质量的自动检测提供了规范化的检查方向和依据;
ISO/IEC 5055为细化了静态检测工具在保障源码质量个过程中具体的检查内容和需要发现的缺陷;
ISO/IEC 5055为开发人员能够在关键缺陷导致操作问题之前发现并消除这些缺陷;
ISO/IEC 5055还为管理层提供了明确指标,以明确软件应用程序给业务带来的风险。
4. 参考
系统和软件质量要求和评估(ISO/IEC 25000)
系统和软件质量模型(ISO/IEC 25010)
系统和软件产品质量的度量(ISO/IEC 25023)
自动源代码质量度量(ISO/IEC 5055)
CISQ 代码质量标准
Common Weakness Enumeration(CWE)