What is a "bug"? On subjectivity, epistemic power, and implications for software research
<|reference_start|>What is a "bug"? On subjectivity, epistemic power, and implications for software research: 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...<|reference_end|>
@article{widder2024what,
    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},
    archivePrefix={arXiv},
    eprint={2402.08165},
    primaryClass={cs.SE cs.HC}
}