A Qualitative Study on Framework Debugging

Features of frameworks, such as inversion of control and the structure of framework applications, require developers to adjust their programming and debugging strategies as compared to sequential programs. However, the benefits and challenges of framework debugging are not fully understood, and gaining this knowledge could provide guidance in debugging strategies and framework tool design. To gain insight into the framework application debugging process, we performed two human studies investigating how developers fix applications that use a framework API incorrectly. These studies focused on the Android Fragment class and the ROS framework. We analyzed the results of the studies using a mixed-methods approach, using techniques from qualitative approaches. Our analysis found that participants benefited from the structure of frameworks and the pre-made solutions to common problems in the domain. Participants encountered challenges with understanding frame-work abstractions, and had particular difficulty with inversion of control and object protocol issues. When compared to prior work on debugging, these results show that framework applications have unique debugging challenges.

[1]  Margaret M. Burnett,et al.  End-user debugging strategies: A sensemaking perspective , 2012, TCHI.

[2]  Per Runeson,et al.  Software Engineers' Information Seeking Behavior in Change Impact Analysis - An Interview Study , 2017, 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC).

[3]  Brian Ellis,et al.  The Factory Pattern in API Design: A Usability Evaluation , 2007, 29th International Conference on Software Engineering (ICSE'07).

[4]  Gabriele Bavota,et al.  An Empirical Investigation on Documentation Usage Patterns in Maintenance Tasks , 2013, 2013 IEEE International Conference on Software Maintenance.

[5]  Brad A. Myers,et al.  An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks , 2006, IEEE Transactions on Software Engineering.

[6]  B. Myers Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior , 2008 .

[7]  Fabio Palomba,et al.  Information Needs in Contemporary Code Review , 2018, Proc. ACM Hum. Comput. Interact..

[8]  Jonathan Aldrich,et al.  An Empirical Study of Object Protocols in the Wild , 2011, ECOOP.

[9]  Margaret M. Burnett,et al.  To fix or to learn? How production bias affects developers' information foraging during debugging , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[10]  Margaret-Anne D. Storey,et al.  Understanding, Debugging, and Optimizing Distributed Software Builds: A Design Study , 2018, 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[11]  H. James Hoover,et al.  Using SCL to specify and check design intent in source code , 2006, IEEE Transactions on Software Engineering.

[12]  Uri Dekel,et al.  Increasing awareness of delocalized information to facilitate API usage , 2009 .

[13]  Jonathan Aldrich,et al.  Are object protocols burdensome?: an empirical study of developer forums , 2011, PLATEAU '11.

[14]  Rachel K. E. Bellamy,et al.  How Programmers Debug, Revisited: An Information Foraging Theory Perspective , 2013, IEEE Transactions on Software Engineering.

[15]  Gabriele Bavota,et al.  The Impact of API Change- and Fault-Proneness on the User Ratings of Android Apps , 2015, IEEE Transactions on Software Engineering.

[16]  Emerson R. Murphy-Hill,et al.  The Design Space of Bug Fixes and How Developers Navigate It , 2015, IEEE Transactions on Software Engineering.

[17]  练启光 Android , 2018, Encyclopedia of Social Network Analysis and Mining. 2nd Ed..

[18]  Lin Li,et al.  Obstacles in Using Frameworks and APIs: An Exploratory Study of Programmers' Newsgroup Discussions , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[19]  Ralph E. Johnson,et al.  Documenting frameworks using patterns , 1992, OOPSLA '92.

[20]  Brad A. Myers,et al.  Mapping the Space of API Design Decisions , 2007, IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC 2007).

[21]  John A. Gould,et al.  Some Psychological Evidence on How People Debug Computer Programs , 1975, Int. J. Man Mach. Stud..

[22]  Jeffrey Stylos,et al.  Usability Implications of Requiring Parameters in Objects' Constructors , 2007, 29th International Conference on Software Engineering (ICSE'07).

[23]  Brad A. Myers,et al.  The implications of method placement on API learnability , 2008, SIGSOFT '08/FSE-16.

[24]  K. Charmaz,et al.  Constructing Grounded Theory , 2014 .

[25]  Jonathan Aldrich,et al.  Retrieving relationships from declarative files , 2009 .

[26]  Morgan Quigley,et al.  ROS: an open-source Robot Operating System , 2009, ICRA 2009.

[27]  James D. Herbsleb,et al.  Improving API documentation usability with knowledge pushing , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[28]  Brad A. Myers,et al.  Six Learning Barriers in End-User Programming Systems , 2004, 2004 IEEE Symposium on Visual Languages - Human Centric Computing.

[29]  Mira Mezini,et al.  Mining subclassing directives to improve framework reuse , 2010, 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010).

[30]  Andreas Zeller,et al.  Where is the bug and how is it fixed? an experiment with practitioners , 2017, ESEC/SIGSOFT FSE.

[31]  Xiang Gao,et al.  Repairing Crashes in Android Apps , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[32]  John R. Anderson,et al.  Debugging: An Analysis of Bug-Location Strategies , 1987, Hum. Comput. Interact..

[33]  Brian Detlor,et al.  Information Seeking on the Web: An Integrated Model of Browsing and Searching , 2000, First Monday.

[34]  Yang Liu,et al.  Large-Scale Analysis of Framework-Specific Exceptions in Android Apps , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[35]  Wei Wu,et al.  An exploratory study of api changes and usages based on apache and eclipse ecosystems , 2015, Empirical Software Engineering.

[36]  Rachel K. E. Bellamy,et al.  Scents in Programs:Does Information Foraging Theory Apply to Program Maintenance? , 2007, IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC 2007).

[37]  Iris Vessey,et al.  Expertise in Debugging Computer Programs: A Process Analysis , 1984, Int. J. Man Mach. Stud..

[38]  Craig Larman,et al.  Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition) , 1997 .

[39]  Yu Zhou,et al.  Analyzing APIs Documentation and Code to Detect Directive Defects , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE).

[40]  Margrit Schreier,et al.  Qualitative Content Analysis in Practice , 2012 .

[41]  R. Yin,et al.  Case Study Research: Design and Methods (4th ed. , 2009 .

[42]  Miryung Kim,et al.  An Empirical Study of API Stability and Adoption in the Android Ecosystem , 2013, 2013 IEEE International Conference on Software Maintenance.

[43]  David Garlan,et al.  Design fragments make using frameworks easier , 2006, OOPSLA '06.

[44]  Jonathan Aldrich,et al.  Checking framework interactions with relationships , 2008, ECOOP.

[45]  Thomas D. LaToza,et al.  Hard-to-answer questions about code , 2010, PLATEAU '10.

[46]  James D. Herbsleb,et al.  Program comprehension as fact finding , 2007, ESEC-FSE '07.

[47]  Weng-Keen Wong,et al.  Explanatory Debugging: Supporting End-User Debugging of Machine-Learned Programs , 2010, VL/HCC.

[48]  Paul Ralph,et al.  Grounded Theory in Software Engineering Research: A Critical Review and Guidelines , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[49]  Thomas D. LaToza,et al.  Programmers Are Users Too: Human-Centered Methods for Improving Programming Tools , 2016, Computer.

[50]  Jonathan Aldrich,et al.  Proper plugin protocols , 2011 .

[51]  Michael W. Godfrey,et al.  Detecting API usage obstacles: A study of iOS and Android developer questions , 2013, 2013 10th Working Conference on Mining Software Repositories (MSR).

[52]  Michael Eichberg,et al.  What should developers be aware of? An empirical study on the directives of API documentation , 2011, Empirical Software Engineering.

[53]  Jiamou Sun,et al.  Improving API Caveats Accessibility by Mining API Caveats Knowledge Graph , 2018, 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME).