skip to main content
10.1145/1937117.1937125acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Hard-to-answer questions about code

Published:17 October 2010Publication History

ABSTRACT

To build new tools and programming languages that make it easier for professional software developers to create, debug, and understand code, it is helpful to better understand the questions that developers ask during coding activities. We surveyed professional software developers and asked them to list hard-to-answer questions that they had recently asked about code. 179 respondents reported 371 questions. We then clustered these questions into 21 categories and 94 distinct questions. The most frequently reported categories dealt with intent and rationale -- what does this code do, what is it intended to do, and why was it done this way? Many questions described very specific situations -- e.g., what does the code do when an error occurs, how to refactor without breaking callers, or the implications of a specific change on security. These questions revealed opportunities for both existing research tools to help developers and for developing new languages and tools that make answering these questions easier.

References

  1. Abadi, M., Flanagan, C., and Freund, S. N. (2006.) Types for safe locking: Static race detection for Java. In TOPLAS, 28(2), 207--255. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Anvik, J, Hiew, L, and Murphy, G. C. (2006). Who should fix this bug? In Proc. of the Int'l Conf. on Soft. Eng. (ICSE). Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Burdy, L., Cheon, Y, Cok, D., Ernst, M., Kiniry, J., Leavens, G. T., Leino, K. R. M., and Poll, E. (2003). An overview of JML tools and applications. In International Journal on Software Tools for Technology Transfer, 7(3), 212--232. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Cook, B., Gotsman, A., Podelski, A., Rybalchenko, A., and Vardi, M. (2007). Proving that programs eventually do something good. In Principles of Programming Languages (POPL). Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Dietl, W. and Muller, P. (2005). Universes: lightweight ownership for JML. In Journal of Object Technology, 4(8).Google ScholarGoogle Scholar
  6. Erickson, C. (2003). Memory leak detection in C++. In Linux J., 110 (Jun. 2003), 8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Fritz, T., and Murphy, G. C. (2010). Using information fragments to answer the questions developers ask. In Proc ICSE, 175--184. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (2003) Design patterns: elements of reusable object-oriented software. Addison -- Wesley.Google ScholarGoogle Scholar
  9. Godefroid, P., Klarlund, N, and Sen, K. (2005). DART: directed automated random testing. In PLDI. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Goodenough, J. B. (1975). Exception handling: issues and a proposed notation. In Communications of the ACM (CACM), 18(12), 683--693. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Hoffmann, R., Fogarty, J., and Weld, D. S. (2007). Assieme: finding and leveraging implicit references in a web search interface for programmers. In UIST, 13--22. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Holmes, R., and Begel, A. (2008). Deep intellisense: a tool for rehydrating information. In Proc. Mining Software Repositories (MSR). Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Jordan, E., Sangal, N., Sinha, V., and Jackson, D. (2005). Using dependency models to manage complex software architecture. In Proc. OOPSLA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Kamiya, T., Kusumoto, S., and Inoue, K. (2002). CCFinder: a multi-linguistic token-based code clone detection system for large scale source code. In TSE, 28(7). Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Ko, A. J., DeLine, R., and Venolia, G. (2007). Information needs in collocated software development teams. In ICSE, 344--353. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Ko, A. J., and Myers, B. A. (2008). Debugging reinvented: asking and answering why and why not questions about program behavior. In Proc. of the Int'l Conf. on Soft. Eng. (ICSE). Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Kollmann, R., Selonen, P., Stroulia, E., Systä, T., and Zündorf, A. (2002). A study on the current state of the art in tool-supported UML-based static reverse engineering. In WCRE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. LaToza, T. D., Garlan, D., Herbsleb, J. D., and Myers, B. A. (2007). Program comprehension as fact finding. In FSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. LaToza, T. D., Myers, B. A. (2010). Developers ask reachability questions. In Proc. of the Int'l Conf. on Soft. Eng. (ICSE). Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. LaToza, T. D., Venolia, G., and DeLine, R. (2006). Maintaining mental models: a study of developer work habits. In Proc. ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Letovsky, S. (1986). Cognitive processes in program comprehension. In Empirical Studies of Programmers. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Mockus, A., and Herblseb, J. (2002). Expertise browser: a quantitative approach to identifying expertise. In Proc ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Moran, T. P. and Carroll, J. M., Eds. (1996). Design rationale: concepts, techniques, and use. Lawrence Erlbaum Associates, Inc. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Sillito, J., Murphy, G. C., and De Volder, K. (2008). Asking and answering questions during a programming change task. In Transactions on Software Engineering (TSE), 34(4). Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Sridharan, M., Fink, S. J., and Bodik, R. (2007). Thin slicing. In Programming Language Design & Implementation (PLDI). Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Strom, R. E., Yemini, S. (1986). Typestate: a programming language concept for enhancing software reliability. In Transactions on Software Engineering (TSE), 12(1), 157--171. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Sullivan, K. J., Griswold, W. G., Cai, Y., and Hallen, B. (2001). The structure and value of modularity in design. In Proc. FSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Sutherland, D. (2008). The code of many colors: semi-automated reasoning about multi-thread policy for Java. Dissertation, Carnegie Mellon University Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Hard-to-answer questions about code

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          PLATEAU '10: Evaluation and Usability of Programming Languages and Tools
          October 2010
          51 pages
          ISBN:9781450305471
          DOI:10.1145/1937117

          Copyright © 2010 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 17 October 2010

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          Overall Acceptance Rate5of8submissions,63%

          Upcoming Conference

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader