墨西哥韦拉克鲁斯大学研究团队的论文《Software Stability: A Systematic Literature Review》(CONISOFT 2018,IEEE,页码 109-115)系统梳理了软件稳定性(software stability)领域的已有研究,给出统一的概念定义、整理了主流度量指标,并指出该领域当前集中在架构设计阶段,为后续研究者画出一张完整的知识地图。
定义与重要性
论文给软件稳定性一个操作性定义:软件抵抗由修改、错误和其他干扰引起的”涟漪效应”(ripple effect)的能力。所谓涟漪效应,指修改一个功能波及其他模块、修复一个 bug 引入新 bug 的连锁扩散现象;稳定性好的软件能把这种扩散控制在最小范围,在大型系统中避免一处改动引发全局震荡。稳定性并不等于软件不出错,而是衡量出错或被修改之后,冲击会不会在系统里扩散开来。在工程实践中,稳定性的价值体现在三个位置:它是维护阶段的指南针,软件维护和演化时评估设计好坏、做技术决策都要参考它;它是架构设计的考量,现有稳定性研究主要集中在架构设计阶段,强调从源头打造结构稳定的软件;它还是质量属性的纽带,与可维护性、可靠性等质量属性密切相关,被视为软件质量的基石属性之一。
度量指标
综述整理了该领域常用的稳定性度量指标:核心设计不稳定性 CDI(Core Design Instability)衡量设计层面的不稳定程度;核心调用不稳定性 CCI(Core Call Instability)衡量模块调用关系的不稳定程度;设计波动性 Design Volatility衡量设计变化的频率和幅度;决策波动性 Decision Volatility衡量技术决策的变化情况。这些指标共同的特点是关注”变化如何发生、传播到哪里”,而非代码本身对错,正好补上了传统质量度量只看功能正确性的空白。相比代码行数、复杂度这类静态指标,它们度量的是变化在设计与调用关系上的传导过程。对工程团队而言,架构评审时除了性能与安全,也应把修改冲击面纳入考量:先用 CDI、CCI 这类指标度量不稳定集中在哪里,再决定解耦、分层等重构手段,比凭直觉拆模块更可靠。按这个思路,稳定性度量给出的不是”该不该改”,而是”改动会牵动多广”,两者结合才能判断一次重构的收益与风险。
综述的价值与局限
作为一篇系统性文献综述,这篇论文的价值在三点:把零散研究串成体系,说清领域已经研究了什么;指出研究空白和未来方向,为后续选题提供依据;为准备进入稳定性领域的研究者提供一份可直接使用的入门参考。局限也需要看到:论文发表于 2018 年,微服务、云原生等近年架构范式下的稳定性研究尚未覆盖,度量工具的更新也需自行补充;但涟漪效应这一核心概念和四类度量视角至今仍是理解稳定性的有效框架,把它当作领域地图的起点仍然称职。站内早期文章《当代软件监控:系统的文献回顾》同样采用系统性文献综述方法,可对照阅读。