中文

“bug”是什么?论主观性、认识权力及其对软件研究的影响

软件工程 2024-02-14 v1 人机交互

摘要

软件研究和实践中耗费了大量精力来寻找、报告、跟踪、分级、尝试自动修复它们,检测“bug味道”——这些构成了大型项目时间和开发成本的很大一部分,是软件工程、编程语言等领域研究人员的重要关注点。但是,“bug”到底是什么?虽然段错误不太受欢迎,但大多数bug并不那么明确。根据牛津英语词典,“bug”一词至少自1870年代起就已作为工程“缺陷”的口语化说法。大多数现代软件导向的定义都指向开发者意图与程序实际行为之间的偏差。形式化验证自诞生之际就发展出识别形式规范偏差的手段,旨在更或或地完全编码所需行为。然而,软件很少伴随完整的形式规范,该意图反而被视为隐式的或至少部分记录的。国际软件测试资格委员会写道:“人类可以犯错(错误),从而在程序代码或文档中产生缺陷(fault, bug)。如果代码中的缺陷被执行,系统可能无法做它应该做的事情(或做它不应该做的事),导致故障。缺陷可能导致故障,但并非所有缺陷都如此。”大多数来源都忽略了这种精确性。 influential论文《寻找bug很容易》开头即说“bug模式是常常是错误的代码习惯”,却没有进一步阐述。其他工作依赖于不完美的规范代理。例如,在自动程序修复研究中,bug对应于一个失败的测试用例:当测试通过时,认为bug已被修复。然而,当我们诘询相当直接的定义时,它们开始出现问题……

关键词

引用

@article{arxiv.2402.08165,
  title  = {What is a "bug"? On subjectivity, epistemic power, and implications for software research},
  author = {David Gray Widder and Claire Le Goues},
  journal= {arXiv preprint arXiv:2402.08165},
  year   = {2024}
}