What is a "bug"? On subjectivity, epistemic power, and implications for software research
CoRR(2024)
摘要
Considerable effort in software research and practice is spent on bugs.
Finding, reporting, tracking, triaging, attempting to fix them automatically,
detecting "bug smells" -these comprise a substantial portion of large projects'
time and development cost, and are of significant interest to researchers in
Software Engineering, Programming Languages, and beyond.
But, what is a bug, exactly? While segmentation faults rarely spark joy, most
bugs are not so clear cut. Per the Oxford English Dictionary, the word "bug"
has been a colloquialism for an engineering "defect" at least since the 1870s.
Most modern software-oriented definitions speak to a disconnect between what a
developer intended and what a program actually does. Formal verification, from
its inception, has developed means to identify deviations from a formal
specification, expected to more or less fully encode desired behavior. However,
software is rarely accompanied by full and formal specifications, and this
intention is instead treated as implicit or partially-documented at best. The
International Software Testing Qualifications board writes: "A human being can
make an error (mistake), which produces a defect (fault, bug) in the program
code, or in a document. If a defect in code is executed, the system may fail to
do what it should do (or do something it shouldn't), causing a failure. Defects
may result in failures, but not all [do]". Most sources forsake this precision.
The influential paper "Finding bugs is easy" begins by saying "bug patterns are
code idioms that are often errors"-with no particular elaboration. Other work
relies on imperfect practical proxies for specifications. For example, in
automatic program repair research, a bug corresponds to a failing test case:
when the test passes, the bug is considered fixed.
However, when we interrogate fairly straightforward definitions, they start
to break down...
更多查看译文
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要