软件质量要素
理解软件质量因素
Section titled “理解软件质量因素”软件质量是一个多方面的概念,包含了各种属性,这些属性决定了软件在多大程度上满足用户需求和工程标准。这些属性通常被称为“质量因素”(quality factors)或“质量特性”(quality characteristics)。有些因素可以直接测量(例如,测试中发现的缺陷数量),而其他因素则通过相关指标间接测量(例如,通过代码复杂度度量评估可维护性)。
已经提出了几种模型来对这些因素进行分类。一个基础模型是由 McCall、Boehm 等人在 20 世纪 70 年代末开发的。尽管具有影响力,但当代实践常引用 ISO/IEC 25010:2011 标准(SQuaRE - 软件产品质量要求和评估系列的一部分),该标准提供了更现代、更全面的框架。
McCall 的质量因素模型(经典视图)
Section titled “McCall 的质量因素模型(经典视图)”McCall 模型虽然较旧,但提供了一个有用的历史视角,并引入了关键概念。它将 11 个因素分为三类:
- 产品运行(Product Operation):与软件运行时行为相关的方面。(正确性、可靠性、效率、完整性、可用性)
- 产品修订(Product Revision):与修改软件相关的方面。(可维护性、灵活性、可测试性)
- 产品迁移(Product Transition):与软件适应新环境相关的方面。(可移植性、可重用性、互操作性)
让我们简要回顾一下 McCall 模型中各类别下的因素:
产品运行因素 (McCall)
Section titled “产品运行因素 (McCall)”- 正确性(Correctness):软件是否准确地执行其指定功能?是否满足需求?
- 可靠性(Reliability):软件是否在指定条件下、指定时间内无故障运行?
- 效率(Efficiency):软件利用系统资源(CPU、内存、网络带宽、存储)的程度如何?
- 完整性(安全性)(Integrity (Security)):软件或数据的未授权访问被阻止的程度如何?
- 可用性(Usability):软件对其目标用户来说学习和操作的容易程度如何?
产品修订因素 (McCall)
Section titled “产品修订因素 (McCall)”- 可维护性(Maintainability):定位和修复缺陷或进行修改的容易程度如何?
- 灵活性(Flexibility):添加新功能或使软件适应不同需求的容易程度如何?
- 可测试性(Testability):测试软件以确保其满足需求并发现缺陷的容易程度如何?
产品迁移因素 (McCall)
Section titled “产品迁移因素 (McCall)”- 可移植性(Portability):将软件转移到不同环境(硬件、操作系统、云平台)运行的容易程度如何?
- 可重用性(Reusability):软件的某些部分(代码、组件、设计)是否可以在其他应用中使用?
- 互操作性(Interoperability):软件是否能与其他系统或组件有效交互?
ISO/IEC 25010 质量模型(现代标准)
Section titled “ISO/IEC 25010 质量模型(现代标准)”ISO/IEC 25010 标准提出了一个更详细、更广泛接受的软件产品质量模型,分为八个主要特性:
- 功能适用性(Functional Suitability):产品或系统在指定条件下使用时,提供满足规定和隐含需求的功能的程度。(子特性:功能完备性、功能正确性、功能恰当性)。
- 性能效率(Performance Efficiency):在规定条件下使用资源量与性能的关系。(子特性:时间行为、资源利用率、容量)。
- 兼容性(Compatibility):产品、系统或组件与其他产品、系统或组件交换信息以及在共享相同硬件或软件环境的同时执行其所需功能的程度。(子特性:共存性、互操作性)。
- 可用性(Usability):产品或系统在指定使用情境下,由指定用户以有效性、效率和满意度达到指定目标的程度。包括可访问性。(子特性:恰当性可识别、易学性、易操作性、用户错误防护、用户界面美观性、可访问性)。
- 可靠性(Reliability):系统、产品或组件在指定条件下、指定时间内执行指定功能的程度。(子特性:成熟度、可用性、容错性、可恢复性)。
- 安全性(Security):产品或系统保护信息和数据,使人员或其他产品或系统具有与其授权类型和级别相符的数据访问程度。(子特性:机密性、完整性、不可否认性、可追溯性、真实性)。
- 可维护性(Maintainability):产品或系统能由目标维护者有效且高效地修改的程度。(子特性:模块化、可重用性、可分析性、可修改性、可测试性)。
- 可移植性(Portability):系统、产品或组件从一个硬件、软件或其他操作或使用环境转移到另一个环境的有效性和效率程度。(子特性:适应性、易安装性、可替换性)。
理解这些因素,无论是使用 McCall 框架作为基础还是更现代的 ISO 25010 标准,对于定义质量目标、选择适当的度量以及指导开发和测试工作都至关重要。具体强调哪些因素通常取决于应用领域、用户期望和业务目标。
考虑开发一个手机银行 App。关键质量因素可能包括:
- 安全性(Security)(对金融数据至关重要)
- 可靠性(Reliability)(用户必须相信它能持续正常工作)
- 可用性(Usability)(便于各类用户导航和执行交易)
- 性能效率(Performance Efficiency)(快速响应时间、低电量消耗)
- 功能正确性(Functional Correctness)(交易必须准确)
对于一个内部数据处理工具,可维护性(Maintainability)和性能效率(Performance Efficiency)的优先级可能与面向公众的银行 App 不同。