摘要:ISO 5055是首个直接从软件内部结构方面衡量软件质量(如安全性和可靠性)的ISO标准。该标准基于统计安全性、可靠性、可维护性和性能效率方面的软件缺陷来衡量软件的结构质量。
本文分享自华为云社区《自动源代码质量度量(ISO/IEC 5055)》,原文作者:Uncle_Tom 。
ISO 5055是首个直接从软件内部结构方面衡量软件质量(如安全性和可靠性)的ISO标准。该标准基于统计安全性、可靠性、可维护性和性能效率方面的软件缺陷来衡量软件的结构质量。基于ISO 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. 产品质量模型
产品质量模型由八个特性(进一步细分为子特性)组成,这些特性与软件的静态属性和计算机系统的动态属性有关。该模型适用于计算机系统和软件产品。
- 功能适应性(functional suitability):软件所实现的功能达到其设计规范和满足用户需求的程度,强调正确性、完备性、适合性等。
- 效率(efficiency):在指定条件下,软件对操作所表现出的时间特性(如响应速度)以及实现某种功能有效利用计算机资源(包括内存大小、CPU占用时间等)的程度,局部资源占用高通常是性能瓶颈存在;系统可承受的并发用户数、连接数量等,需要考虑系统的可伸缩性。
- 兼容性(compatibility),涉及共存和互操作性,共存要求软件能给与系统平台、子系统、第三方软件等兼容,同时针对国际化和本地化进行了合适的处理。 互操作性要求系统功能之间的有效对接,涉及API和文件格式等。
- 易用性(usability):对于一个软件,用户学习、操作、准备输入和理解输出所作努力的程度,如安装简单方便、容易使用、界面友好,并能适用于不同特点的用户,包括对残疾人、有缺陷的人能提供产品使用的有效途径或手段(即可达性)。
- 可靠性(reliability):在规定的时间和条件下,软件所能维持其正常的功能操作、性能水平的程度/概率,如成熟性越高,可靠性就越高;用MTTF (mean time to failure,平均失效前时间) 或MTBF(mean time Between failures,平均故障间隔时间)来衡量可靠性。
- 安全性(security),要求其数据传输和存储等方面能确保其安全,包括对用户身份的认证、对数据进行加密和完整性校验,所有关键性的操作都有记录(log),能够审查不同用户角色所做的操作。它涉及保密性、完整性、抗抵赖性、可核查性、真实性。
- 可维护性(maintainability):当一个软件投入运行应用后,需求发生变化、环境改变或软件发生错误时,进行相应修改所做努力的程度。它涉及模块化、复用性、易分析性、易修改性、易测试性等
- 可移植性(portability)软件从一个计算机系统或环境移植到另一个系统或环境的容易程度,或者是一个系统和外部条件共同工作的容易程度。它涉及适应性、易安装性、易替换性。
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缺陷视图可参考前期的《话说CWE 4.2的新视图》, 以及《话说CWE 4.3的新视图 - 数据保护检查》中有关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)