复杂性是软件质量的关键要素。本文探讨了测量代码复杂性的问题,并讨论了一项受控实验的结果,以比较测量代码复杂性的不同观点和方法。参与者(27 名程序员)被要求阅读并(尝试)理解一组程序,而这些程序的复杂性则通过不同的方法和视角进行评估:(a)经典的代码复杂性指标,如 McCabe 和 Halstead 指标,(b)基于评分代码构造的认知复杂性指标,(c)来自 SonarQube 等最先进工具的认知复杂性指标,(d)依赖于使用眼动追踪直接评估程序员行为特征(例如阅读时间和重访)的人本指标,以及(e)使用脑电图 (EEG) 评估的认知负荷/心理努力。以人为本的观点与参与者使用 NASA 任务负荷指数 (TLX) 对理解程序所需的心理努力的主观评估相得益彰。此外,代码复杂度的评估在程序级别和尽可能低的代码构造/代码区域级别上进行测量,以识别可能引发程序员对代码理解难度感知的复杂性激增的实际代码元素和代码上下文。使用 EEG 测量的程序员认知负荷被用作参考,以评估不同指标如何表达(人类)理解代码的难度。大量实验结果表明,流行的指标(如 V(g) 和 SonarSource 工具的复杂性指标)与程序员对代码复杂性的感知存在很大偏差,并且通常不会显示预期的单调行为。本文
主要关键词