ABSTRACT
Though many tools are available to help programmers working on change tasks, and several studies have been conducted to understand how programmers comprehend systems, little is known about the specific kinds of questions programmers ask when evolving a code base. To fill this gap we conducted two qualitative studies of programmers performing change tasks to medium to large sized programs. One study involved newcomers working on assigned change tasks to a medium-sized code base. The other study involved industrial programmers working on their own change tasks on code with which they had experience. The focus of our analysis has been on what information a programmer needs to know about a code base while performing a change task and also on howthey go about discovering that information. Based on this analysis we catalog and categorize 44 different kinds of questions asked by our participants. We also describe important context for how those questions were answered by our participants, including their use of tools.
- R. DeLine, A. Khella, M. Czerwinski, and G. Robertson. Towards understanding programs through wear-based filtering. In Proceedings of ACM 2005 Symposium on Software Visualization, pages 183--192, 2005. Google ScholarDigital Library
- A. Erdem, W. L. Johnson, and S. Marsella. Task oriented software understanding. In Proceedings of Automated Software Engineering, pages 230--239, 1998. Google ScholarDigital Library
- K. Erdos and H. M. Sneed. Partial comprehension of complex programs (enough to perform maintenance). In Proceedings of 6th International Workshop on Program Comprehension, pages 98--105, 1998. Google ScholarDigital Library
- N. V. Flor and E. L. Hutchins. Analyzing distributed cognition in software teams: A case study of team programming during perfective software maintenance. In Proceedings of the Empirical Studies of Programmers: Fourth Workshop, pages 36--64, 1991.Google Scholar
- B. G. Glaser and A. L. Strauss. The Discovery of Grounded Theory: Strategies for Qualitative Research. Aldine Publishing, 1967.Google Scholar
- J. Herbsleb and E. Kuwana. Preserving knowledge in design projects: What designers need to know. In Proceedings of Human Factors in Computing Systems (CHI), pages 7--14, 1993. Google ScholarDigital Library
- W. L. Johnson and A. Erdem. Interactive explanation of software systems. In Proceedings of Knowledge-Based Software Engineering (KBSE), pages 155--164, 1995. Google ScholarDigital Library
- W. L. Johnson and A. Erdem. Interactive explanation of software systems. Proceedings of Automated Software Engineering, 4(1):53--75, 1997. Google ScholarDigital Library
- A. J. Ko, H. H. Aung, and B. A. Myers. Eliciting design requirements for maintenance-oriented IDEs: A detailed study of corrective and perfective maintenance tasks. In Proceedings of the International Conference on Software Engineering (ICSE), pages 126--135, 2005. Google ScholarDigital Library
- S. Letovsky. Cognitive processes in program comprehension. In Proceedings of Conference on Empirical Studies of Programmers, pages 80--98, 1986. Google ScholarDigital Library
- S. Letovsky. Cognitive processes in program comprehension. The Journal of Systems and Software, 7(4):325--339, 1987. Google ScholarDigital Library
- N. Miyake. Constructive interaction and the iterative process of understanding. Cognitive Science, 10:151--177, 1986.Google ScholarCross Ref
- N. Pennington. Stimulus structures and mental representations in expert comprehension of computer programs. Cognitive Psychology, 19:295--341, 1987.Google ScholarCross Ref
- M. P. Robillard, W. Coelho, and G. C. Murphy. How effective developers investigate source code: An exploratory study. IEEE Transactions on Software Engineering, 30(12):889--903, 2004. Google ScholarDigital Library
- J. Sillito, K. D. Volder, B. Fisher, and G. C. Murphy. Managing software change tasks: An exploratory study. In Proceedings of the International Symposium on Empirical Software Engineering, 2005.Google ScholarCross Ref
- E. Soloway and K. Ehrlich. Empirical studies of programming knowledge. IEEE Transactions on Software Engineering, SE10(5):595--609, 1984.Google ScholarDigital Library
- M.-A. Storey, F. Fracchia, and H. A. Muller. Cognitive design elements to support the construction of a mental model during software exploration. Journal of Software Systems, special issue on Program Comprehension, 44(3):171--185, 1999. Google ScholarDigital Library
- M.-A. Storey, K. Wong, and H. A. Muller. How do program understanding tools affect how programmers understand programs? Science of Computer Programming, 36(2-3):183--207, 2000. Google ScholarDigital Library
- A. L. Strauss and J. Corbin. Basics of Qualitative Research: Techniques and Procedures for developing Grounded Theory. Sage Publications, 1998.Google Scholar
- W. Teitelman and L. Masinter. The interlisp programming environment. IEEE Computer, 14:25--34, 1981.Google ScholarDigital Library
- M. W. van Someren, Y. F. Barnard, and J. A. Sandberg. The Think Aloud Method; A Practical Guide to Modelling Cognitive Processes. Academic Press, 1994.Google Scholar
- A. von Mayrhauser and A. M. Vans. From code understanding needs to reverse engineering tool capabilities. In Proceedings of CASE'93, pages 230--239, 1993.Google ScholarCross Ref
- A. von Mayrhauser and A. M. Vans. Program comprehension during software maintenance and evolution. IEEE Computer, 28(8):44--55, 1995. Google ScholarDigital Library
- N. Wilde and C. Casey. Early field experience with the software reconnaissance technique for program comprehension. In Proceedings of WCRE, pages 270--276, 1996. Google ScholarDigital Library
- L. Williams, R. R. Kessler, W. Cunningham, and R. Jeffries. Strengthening the case for pair-programming. IEEE Software, 17(4):19--25, 2000. Google ScholarDigital Library
Index Terms
- Questions programmers ask during software evolution tasks
Recommendations
Hard-to-answer questions about code
PLATEAU '10: Evaluation and Usability of Programming Languages and ToolsTo 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 ...
Managing crosscutting concerns during software evolution tasks: an inquisitive study
AOSD '02: Proceedings of the 1st international conference on Aspect-oriented software developmentCode is modularized, for many reasons, including making it easier to understand, change, and verify. Aspect-oriented programming approaches extend the kind of code that can be modularized, enabling the modularization of crosscutting code. We conducted ...
Works for Me! Cannot Reproduce – A Large Scale Empirical Study of Non-reproducible Bugs
AbstractSoftware developers attempt to reproduce software bugs to understand their erroneous behaviours and to fix them. Unfortunately, they often fail to reproduce (or fix) them, which leads to faulty, unreliable software systems. However, to date, only ...
Comments