Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to main content

How do programmers fix bugs as workarounds? An empirical study on Apache projects

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

Abstract

In software development, issue tracker systems are widely used to manage bug reports. In such a system, a bug report can be filed, diagnosed, assigned, and fixed. In the standard process, a bug can be resolved as fixed, invalid, duplicated, or won’t fix. Although the above resolutions are well-defined and easy to understand, a bug report can end with a less -known resolution, i.e., a workaround. Compared with other resolutions, the definition of workarounds is more ambiguous. Besides the problem that is reported in a bug report, the resolution of a workaround raises more questions. Some questions are important for users, especially those programmers who build their projects upon others (e.g., libraries). Although some early studies have been conducted to analyze API workarounds, many research questions on workarounds are still open. For example, which bugs are resolved as workarounds? Why is a bug report resolved as a workaround? What are the repairs and impacts of workarounds? In this paper, we conduct the first empirical study to explore the above research questions. In particular, we analyzed 200 real workarounds that were collected from 81 Apache projects. Our results lead to eight findings and answers to all the above questions. For example, if bug reports are resolved as workarounds, their problems often either arise in external projects (40%) or reside in programming environments (23.5%). Although the problems of some workarounds (38.5%) reside in the project where they are reported, it is difficult to fix them fully and perfectly. Our findings are useful to understand workarounds, and to improve software projects and issue trackers.

This is a preview of subscription content, log in via an institution to check access.

Access this article

We’re sorry, something doesn't seem to be working properly.

Please try refreshing the page. If that doesn't work, please contact support so we can address the problem.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5

Similar content being viewed by others

Data Availability

The data of this study have been deposited in the following public repository: https://github.com/tetradecane/Workaround_journal_website

References

  • Agrawal R, Srikant R (1995) Mining sequential patterns. In: Proc. ICDE, pp. 3–14

  • Ammons G, Bodík R, Larus JR (2002) Mining specifications. In: Proc. POPL, pp. 4–16

  • Anvik J, Hiew L, Murphy GC (2006) Who should fix this bug? In: Proc. ICSE, pp. 361–370

  • Bettenburg N, Just S, Schröter A, Weiss C, Premraj R, Zimmermann T (2008) What makes a good bug report? In: Proc. ESEC/FSE, pp. 308–318

  • Bettenburg N, Premraj R, Zimmermann T, Kim S (2008) Duplicate bug reports considered harmful? really? In: Proc. ICSM, pp. 337–345

  • Bhattacharya P, Ulanova L, Neamtiu I, Koduru SC (2013) An empirical analysis of bug reports and bug fixing in open source android apps. In: Proc. CSMR, pp. 133–143

  • Bogart C, Kästner C, Herbsleb J, Thung F (2016) How to break an API: cost negotiation and community values in three software ecosystems. In: Proc. ESEC/FSE, pp. 109–120

  • Dallmeier V, Knopp N, Mallon C, Hack S, Zeller A (2010) Generating test cases for specification mining. In: Proc. ISSTA, pp. 85–96

  • Dehaghani SMH, Hajrahimi N (2013) Which factors affect software projects maintenance cost more? Acta Informatica Medica 21(1):63

    Article  Google Scholar 

  • Endrikat S, Hanenberg S, Robbes R, Stefik A (2014) How do API documentation and static typing affect API usability? In: Proc. ICSE, pp. 632–642

  • Engler DR, Chen DY, Chou A (2001) Bugs as inconsistent behavior: A general approach to inferring errors in systems code. In: Proc. SOSP, pp. 57–72

  • Erlikh L (2000) Leveraging legacy system dollars for e-business. IT professional 2(3):17–23

    Article  Google Scholar 

  • Ernst MD, Perkins JH, Guo PJ, McCamant S, Pacheco C, Tschantz MS, Xiao C (2007) The daikon system for dynamic detection of likely invariants. Sci Comput Program 69(1–3):35–45

    Article  MathSciNet  MATH  Google Scholar 

  • Francalanci C, Merlo F (2008) Empirical analysis of the bug fixing process in open source projects. In: Proc. OSS, pp. 187–196

  • Gabel M, Su Z (2008) Javert: fully automatic mining of general temporal properties from dynamic traces. In: Proc. ESEC/FSE, pp. 339–349

  • Guo PJ, Zimmermann T, Nagappan N, Murphy B (2010) Characterizing and predicting which bugs get fixed: an empirical study of microsoft windows. In: Proc. ICSE, pp. 495–504

  • Guo PJ, Zimmermann T, Nagappan N, Murphy B (2011) Not my bug! and other reasons for software bug report reassignments. In: Proc. CSCW, pp. 395–404

  • Han J, Kamber M, Pei J (2011) Data Mining: Concepts and Techniques. Morgan Kaufmann Publishers

  • Herzig K, Just S, Zeller A (2013) It’s not a bug, it’s a feature: how misclassification impacts bug prediction. In: Proc. ICSE, pp. 392–401

  • Hora AC, Robbes R, Anquetil N, Etien A, Ducasse S, Valente MT (2015) How do developers react to API evolution? the pharo ecosystem case. In: Proc. ICSME, pp. 251–260

  • Jeong G, Kim S, Zimmermann T (2009) Improving bug triage with bug tossing graphs. In: Proc. ESEC/FSE, p. 111–120

  • Jia L, Zhong H, Wang X, Huang L, Lu X (2020) An empirical study on bugs inside tensorflows. In: Proc. DASFAA, p. to appear

  • Kazman R, Cai Y, Mo R, Feng Q, Xiao L, Haziyev S, Fedak V, Shapochka A (2015) A case study in locating the architectural roots of technical debt. Proc. ICSE 2:179–188

    Google Scholar 

  • Krippendorff K (2011) Computing Krippendorff’s alpha-reliability

  • Lamothe M, Guéhéneuc YG, Shang W (2021) A systematic review of api evolution literature. ACM Computing Surveys 54(8):1–36

    Article  Google Scholar 

  • Lamothe M, Shang W (2020) When APIs are intentionally bypassed: An exploratory study of API workarounds. In: Proc. ICSE, p. to appear

  • Le Goues C, Nguyen T, Forrest S, Weimer W (2011) Genprog: A generic method for automatic software repair. IEEE transactions on software engineering 38(1):54–72

    Article  Google Scholar 

  • Li Z, Tan L, Wang X, Lu S, Zhou Y, Zhai C (2006) Have things changed now? an empirical study of bug characteristics in modern open source software. In: Proc. ASID, pp. 25–33

  • Li Z, Zhong H (2021) An empirical study on obsolete issue reports. In: Proc. ASE, p. to eappear

  • Li Z, Zhou Y (2005) Pr-miner: automatically extracting implicit programming rules and detecting violations in large software code. In: Proc. ESEC/FSE, pp. 306–315

  • Lin Z, Shu F, Yang Y, Hu C, Wang Q (2009) An empirical study on bug assignment automation using chinese bug data. In: Proc. ESEM, pp. 451–455

  • Lorenzoli D, Mariani L, Pezzè M (2008) Automatic generation of software behavioral models. In: Proc. ICSE, pp. 501–510

  • Monperrus M, Eichberg M, Tekes E, Mezini M (2012) What should developers be aware of? an empirical study on the directives of API documentation. Empir Softw Eng 17(6):703–737

    Article  Google Scholar 

  • Nadi S, Krüger S, Mezini M, Bodden E (2016) Jumping through hoops: why do java developers struggle with cryptography apis? In: Proc. ICSE, pp. 935–946

  • Nawaz A (2012) A comparison of card-sorting analysis methods. In: APCHI, pp. 28–31

  • Nguyen TT, Nguyen HA, Pham NH, Al-Kofahi JM, Nguyen TN (2009) Graph-based mining of multiple object usage patterns. In: Proc. ESEC/FSE, pp. 383–392

  • Okur S, Dig D (2012) How do developers use parallel libraries? In: Proc. ESEC/FSE, p. 54

  • Pandita R, Xiao X, Zhong H, Xie T, Oney S, Paradkar AM (2012) Inferring method specifications from natural language API descriptions. In: Proc. ICSE, pp. 815–825

  • Potdar A, Shihab E (2014) An exploratory study on self-admitted technical debt. In: Proc. ICSME, pp. 91–100

  • Qiu D, Li B, Leung H (2016) Understanding the API usage in Java. Inf Softw Technol 73:81–100

  • Ramasubbu N, Kemerer CF (2019) Integrating technical debt management and software quality management processes: A normative framework and field tests. IEEE Trans Softw Eng 45(3):285–300

    Article  Google Scholar 

  • Robbes R, Lungu M, Röthlisberger D (2012) How do developers react to API deprecation?: the case of a smalltalk ecosystem. In: Proc. ESEC/FSE, p. 56

  • Robillard MP, Bodden E, Kawrykow D, Mezini M, Ratchford T (2013) Automated API property inference techniques. IEEE Trans. Softw. Eng. 39(5):613–637

    Article  Google Scholar 

  • Robillard MP, DeLine R (2011) A field study of API learning obstacles. Empir Softw Eng 16(6):703–732

    Article  Google Scholar 

  • Seacord RC, Plakosh D, Lewis GA (2003) Modernizing legacy systems: software technologies, engineering processes, and business practices. Addison-Wesley Professional

    Google Scholar 

  • Shi L, Zhong H, Xie T, Li M (2011) An empirical study on evolution of API documentation. In: Proc. ETAPS/FASE, pp. 416–431

  • Tan L, Liu C, Li Z, Wang X, Zhou Y, Zhai C (2014) Bug characteristics in open source software. Empir Softw Eng 19(6):1665–1705

    Article  Google Scholar 

  • Tang Y, Khatchadourian R, Bagherzadeh M, Singh R, Stewart A, Raja A (2021) An empirical study of refactorings and technical debt in machine learning systems. In: Proc. ICSE, pp. 238–250

  • Thung F, Wang S, Lo D, Jiang L(2012) An empirical study of bugs in machine learning systems. In: Proc. ISSRE, pp. 271–280

  • Tom E, Aurum A, Vidgen R (2013) An exploration of technical debt. J Syst Softw 86(6):1498–1516

    Article  Google Scholar 

  • Vásquez ML, Bavota G, Bernal-Cárdenas C, Penta MD, Oliveto R, Poshyvanyk D (2013) API change and fault proneness: a threat to the success of android apps. In: Proc. ESEC/FSE, pp. 477–487

  • Vásquez ML, Bavota G, Penta MD, Oliveto R, Poshyvanyk D (2014) How do API changes trigger stack overflow discussions? a study on the android SDK. In: Proc. ICPC, pp. 83–94

  • Vetró A (2012) Using automatic static analysis to identify technical debt. In: Proc. ICSE, pp. 1613–1615. https://doi.org/10.1109/ICSE.2012.6227226

  • Xia X, Lo D, Wen M, Shihab E, Zhou B (2014) An empirical study of bug report field reassignment. In: Proc. CSMR-WCRE, pp. 174–183

  • Yan A, Zhong H, Song D, Jia L (2022) The symptoms, causes, and repairs of workarounds in apache issue trackers. In: Proc. ICSE

  • Yan M, Xia X, Shihab E, Lo D, Yin J, Yang X (2018) Automating change-level self-admitted technical debt determination. IEEE Trans Softw Eng 45(12):1211–1229

    Article  Google Scholar 

  • Zeller A (2006) Why Programs Fail: A Guide to Systematic Debugging. Elsevier

  • Zhang F, Khomh F, Zou Y, Hassan AE (2012) An empirical study on factors impacting bug fixing time. In: Proc. WCRE, pp. 225–234

  • Zhang H, Gong L, Versteeg S (2013) Predicting bug-fixing time: an empirical study of commercial software projects. In: Proc. ICSE, pp. 1042–1051

  • Zhang Y, Chen Y, Cheung S, Xiong Y, Zhang L (2018) An empirical study on TensorFlow program bugs. In: Proc. ISSTA, pp. 129–140

  • Zhong H (2022) Enriching compiler testing with real program from bug report. In: Proc. ASE, pp. 1–12

  • Zhong (2022) H Which exception shall we throw? In: Proc. ASE, p. to appear

  • Zhong H, Mei H (2018) An empirical study on API usages. IEEE Trans Softw Eng 45:319–334

    Article  Google Scholar 

  • Zhong H, Wang X (2023) An empirical study on API usages from code search engine and local library. Empirical Software Engineering p. to appear

  • Zimmermann T, Premraj R, Bettenburg N, Just S, Schroter A, Weiss C (2010) What makes a good bug report? IEEE Trans Softw Eng 36(5):618–643

    Article  Google Scholar 

Download references

Acknowledgements

We appreciate reviewers for their insightful comments. This work is sponsored by the National Nature Science Foundation of China No. 62232003 and 62272295.

Funding

This work is sponsored by the National Nature Science Foundation of China No. 62232003 and 62272295.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Hao Zhong.

Additional information

Communicated by: Eric Bodden.

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Springer Nature or its licensor (e.g. a society or other partner) holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Yan, A., Zhong, H., Song, D. et al. How do programmers fix bugs as workarounds? An empirical study on Apache projects. Empir Software Eng 28, 96 (2023). https://doi.org/10.1007/s10664-023-10318-7

Download citation

  • Accepted:

  • Published:

  • DOI: https://doi.org/10.1007/s10664-023-10318-7

Keywords