三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

软件质量的“宪法”:深入解读 ISO/IEC 25010 产品质量模型

软件质量的“宪法”:深入解读 ISO/IEC 25010 产品质量模型

引言:什么是软件质量?

当我们说一个软件“质量好”时,到底在说什么?是运行速度快?是界面好看?是从来没崩溃过?还是代码写得漂亮?

这个问题,软件工程界争论了几十年。直到ISO/IEC 25010的出现——它像一部“宪法”,为“软件质量”给出了全球公认的定义和衡量框架。

从 McCall 到 ISO 25010:质量模型的演进

软件质量模型并非一蹴而就。早在1977年,McCall 模型就提出了软件质量的11个维度。随后,Boehm 模型ISO/IEC 9126(1991年发布)等相继出现。

ISO/IEC 9126曾是全球最广泛使用的软件质量标准,它将质量分为内部质量、外部质量和使用质量三个层面。2011年,ISO/IEC 25010正式取代了 ISO/IEC 9126,将内部质量和外部质量合并为统一的“产品质量模型”

2023年11月,ISO/IEC 25010 发布了第二版(ISO/IEC 25010:2023),将质量特性从8个扩展为9个。

产品质量模型 vs 使用质量模型

ISO/IEC 25010 实际上定义了两个质量模型:

  • 产品质量模型(Product Quality Model):关注软件本身的内在属性——功能是否完整、代码是否好维护、运行是否安全。这些是开发人员可以直接影响的技术特性。
  • 使用质量模型(Quality in Use Model):关注用户在真实场景中使用软件的结果——用户是否有效达成了目标、是否满意、是否存在风险。

简单说:产品质量是“软件做得好不好”,使用质量是“用户用得爽不爽”

产品质量模型的 9 大特性

ISO/IEC 25010:2023 的产品质量模型由9 个质量特性组成,每个特性下又细分为多个子特性:

1. 功能适用性(Functional Suitability)

软件在特定使用场景下满足明确及隐含需求的程度。包含功能完整性(该有的都有)、功能正确性(算得全对)和功能适当性(不多不少刚刚好)。

2. 性能效率(Performance Efficiency)

在特定条件下,软件的响应速度、处理能力及资源消耗表现。包含时间行为(响应快不快)、资源利用率(CPU/内存省不省)和容量(能扛多少并发)。

3. 兼容性(Compatibility)

软件与其他系统共存并交换信息的能力。包含共存性(能否和睦相处)和互操作性(能否顺畅沟通)。

4. 交互能力(Interaction Capability)⭐ 2023 新增命名

取代旧版的“易用性(Usability)”。强调用户与系统双向交互的体验,包含包容性(无障碍设计)、可学习性用户粘性等子特性。

5. 可靠性(Reliability)

在规定条件和时期内维持稳定性能的能力。包含可用性(不宕机)、容错性(出错不崩溃)和可恢复性(挂了能重启)。

6. 安全性(Security)

保护信息和数据免遭泄露或篡改的能力。包含机密性完整性不可否认性真实性以及新增的抗性(Resistance)

7. 可维护性(Maintainability)

软件被修改(修复、增强、适配)的难易程度。包含可分析性可修改性稳定性可测试性

8. 灵活性(Flexibility)⭐ 2023 新增命名

取代旧版的“可移植性(Portability)”。指软件适应不同硬件、环境或业务需求变化的能力,包含适应性可扩展性(Scalability)易安装性易替换性

9. 防危性(Safety)⭐ 2023 全新特性

2023版全新新增的质量特性。指软件运行时不造成人员伤亡、设备损坏或环境灾难的风险控制能力——这对自动驾驶、医疗设备、工业控制系统至关重要。

2023 版的核心变化

相比 2011 版,ISO/IEC 25010:2023 的主要变化:

变化类型旧版(2011)新版(2023)
特性数量8 个9 个(新增防危性)
易用性 →交互能力(强调双向互动)
可移植性 →灵活性(强调适应变化)
安全性已有新增子特性抗性
灵活性新增子特性可扩展性
交互能力新增子特性包容性自描述性

这些变化反映了软件行业的最新趋势:现代软件必须安全、包容、有弹性、能适应变化,而不仅仅是“能用”

这个模型有什么用?

ISO/IEC 25010 不是象牙塔里的理论,它在软件工程实践中有着广泛的应用:

  • 需求定义:用质量特性作为框架,系统化地梳理和验证需求
  • 架构设计:在技术选型时,明确每个决策在“保护”或“牺牲”哪些质量维度
  • 测试规划:根据质量特性制定测试策略(功能测试、性能测试、安全测试等)
  • 质量度量:建立可量化的质量指标,持续追踪和改进
  • 验收标准:为产品上线设定客观、可衡量的准入门槛

结语

ISO/IEC 25010:2023 是全球软件工程质量领域最权威的参考框架。它不仅是面试中的加分项,更是架构师日常决策的“指南针”。

真正的架构能力,不是背下9个特性,而是在性能与可靠性、功能正确性与用户体验之间,做出明智的权衡。


本文参考自 ISO/IEC 25010:2023 官方标准及 SonarSource 等专业机构的解读。

← 返回列表