摘要: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)
点击关注,第一工夫理解华为云陈腐技术~