摘要: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. 产品质量模型

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

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

点击关注,第一时间了解华为云新鲜技术~

ISO/IEC 5055:软件代码质量的标尺的更多相关文章

  1. ISO/IEC 9899 C语言标准(非官方翻译)

    本系列博文将以ISO/IEC 9899最新的官方手册为准,然后再添加GCC以及Clang编译器对标准的扩展. 本系列博文将不仅仅是针对C编程语言(C Programming Language)标准的翻 ...

  2. ISO/IEC 14496 文档内容简介, MPEG标准

    ISO/IEC 14496是MPEG专家组制定的MPEG-4标准于1998年10月公布第1版,1999年1月成为国际标准,1999年12月公布了第2版,2000年初成为国际标准. 全文分为21个部分: ...

  3. ISO/IEC 14443协议浅谈

    一. 非接触IC卡简介 非接触IC卡又称射频卡,是射频识别技术和IC卡技术有机结合的产物.它解决了无源(卡中无电源)和免接触这一难题,具有更加方便.快捷的特点,广泛用于电子支付.通道控制.公交收费.停 ...

  4. (转)提高代码质量---one

    1. 摘要 这是烂代码系列的第二篇,在文章中我会跟大家讨论一下如何尽可能高效和客观的评价代码的优劣. 在发布了关于烂代码的那些事(上)之后,发现这篇文章竟然意外的很受欢迎,很多人也描(tu)述(cao ...

  5. Findbug在项目中的运用--提高代码质量

     FindBugs是一个静态分析工具,它检查类或者 JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析 第一 手动安装 在Ec ...

  6. 用 Eclipse 插件提高代码质量

    如果能在构建代码前发现代码中潜在的问题会怎么样呢?很有趣的是,Eclipse 插件中就有这样的工具,比如 JDepend 和 CheckStyle,它们能帮您在软件问题暴露前发现这些问题.在 让开发自 ...

  7. ISO/IEC 27001 信息安全管理体系认证

    一. 信息安全管理体系标准业务介绍 1. 背景介绍 信息作为组织的重要资产,需要得到妥善保护.但随着信息技术的高速发展,特别是Internet的问世及网上交易的启用,许多信息安全的问题也纷纷出现:系统 ...

  8. ISO/IEC 9899:2011 前言

    前言 1.ISO(国际标准组织)与IEC(国际电工技术委员会)为全世界标准形成了专门的系统.作为ISO或IEC成员的国家机构,通过由各自组织所建立的技术委员会来加入国际标准的开发,以处理特定领域的技术 ...

  9. ISO/IEC 9899:2011 条款3——术语、定义与符号

    3. 术语.定义与符号 1.对于此国际标准的意图,应用了以下定义.其它术语是在用斜体类型或一个语法规则左侧出现的地方定义.在本国际标准中所显式定义的术语不被假定为对其它地方所定义的类似术语的隐式引用. ...

  10. ISO/IEC 9899:2011 条款5——5.2.1 字符集

    5.2.1 字符集 1.两个字符集和它们相关联的依次顺序应该被定义:写在源文件中的集合(源字符集),以及在执行环境中被解释的集合(执行字符集).每个集合此外被划分为一个基本字符集,其内容由本子条款给出 ...

随机推荐

  1. 【虹科干货】Redis 开发者需要了解的缓存驱逐策略

    在你搭建并配置了一个Redis数据库之后,Redis成功地提升了应用程序性能.然而这里有一个潜在问题,随着缓存数据的快速增加和内存占用率的逐渐上升,你很快会发现Redis缓存容量即将达到硬件存储容量上 ...

  2. Chromium GPU资源共享

    资源共享指的是在一个 Context 中的创建的 Texture 资源可以被其他 Context 所使用.一般来讲只有相同 share group Context 创建的 Texture 才可以被共享 ...

  3. CF1333A [Little Artem]

    Problem 题目简述 给你一个 \(n \times m\) 的方格,构造一个方案,使得方案中 \(B = W + 1\). \(B\):相邻的格子有至少一个白色格子的黑色格子的个数. \(W\) ...

  4. 什么是Kubernetes

    什么是Kubernetes Kubernetes 概述 1.K8S 是什么? K8S 的全称为 Kubernetes (K12345678S),PS:"嘛,写全称也太累了吧,不如整个缩写&q ...

  5. 快来让你的网页色彩绚丽--linear-gradient与radial-gradient

    作者:WangMin 格言:努力做好自己喜欢的每一件事 随着前端技术的发展,单一的背景色已经满足不了客户的需求了,所以在前端开发中我们常常会用到一些渐变色的效果,这样可以使前端页面更加美观.那么渐变色 ...

  6. 02Java学习_注意事项和学习方法

    02_Java 开发注意事项细节和学习方法 目录 02_Java 开发注意事项细节和学习方法 注意事项 学习方法 注意事项 .java 是 Java 文件的拓展名.源文件的基本组成部分是类--clas ...

  7. python中四种方法提升数据处理的速度

    在数据科学计算.机器学习.以及深度学习领域,Python 是最受欢迎的语言.Python 在数据科学领域,有非常丰富的包可以选择,numpy.scipy.pandas.scikit-learn.mat ...

  8. Object.assign () 和深拷贝

    先看看啥叫深拷贝?啥叫浅拷贝? 假设B复制了A,修改A的时候,看B是否发生变化: 如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值) 如果B没有改变,说明是深拷贝,自食其力!(修改堆 ...

  9. [HDU4117] GRE

    Recently George is preparing for the Graduate Record Examinations (GRE for short). Obviously the mos ...

  10. [ABC261C] NewFolder(1)

    Problem Statement For two strings $A$ and $B$, let $A+B$ denote the concatenation of $A$ and $B$ in ...