ABSTRACT
Empirical studies have revealed that software developers spend 35%–50% of their time navigating through source code during development activities, yet fundamental questions remain: Are these percentages too high, or simply inherent in the nature of software development? Are there factors that somehow determine a lower bound on how effectively developers can navigate a given information space? Answering questions like these requires a theory that captures the core of developers' navigation decisions. Therefore, we use the central proposition of Information Foraging Theory to investigate developers' ability to predict the value and cost of their navigation decisions. Our results showed that over 50% of developers' navigation choices produced less value than they had predicted and nearly 40% cost more than they had predicted. We used those results to guide a literature analysis, to investigate the extent to which these challenges are met by current research efforts, revealing a new area of inquiry with a rich and crosscutting set of research challenges and open problems.
- Aho, A., Lam, M., Sethi, R., and Ullman, J. 2006. Compilers: Principles, Techniques & Tools. Addison Wesley. Google ScholarDigital Library
- Bajracharya, S. K. and Lopes, C. V. 2012. Analyzing and mining a code search engine usage log. Empirical Soft. Engr., 17(4-5), 424–466. Google ScholarDigital Library
- Baltes, S., Schmitz, P., and Diehl, S. 2014. Linking sketches and diagrams to source code artifacts. ACM Symp. Found. Soft. Engr. (FSE), 743–746. Google ScholarDigital Library
- Brooks, R. 1983. Towards a theory of the comprehension of computer programs. Intl. J. Man-Machine Studies, 18(6), 543–554.Google ScholarCross Ref
- Chen, X. and Grundy, J. 2011. Improving automated documentation to code traceability by combining retrieval techniques. IEEE/ACM Intl. Conf. Automated Software Engineering (ASE), 223–232. Google ScholarDigital Library
- Cottrell, R., Walker, R., and Denzinger, J. 2008. Semiautomating small-scale source code reuse via structural correspondence. ACM Symp. Found. Soft. Engr. (FSE). 214– 225. Google ScholarDigital Library
- De Alwis, B. and Murphy, G. C. 2008. Answering conceptual queries with Ferret. ACM/IEEE Int’l. Conf. Software Engineering (ICSE). 21–30. Google ScholarDigital Library
- DeLine, R., Khella, A., Czerwinski, M. and Robertson, G. 2005. Towards understanding programs through wear-based filtering. ACM Symp. Software Visualization (SoftVis), ACM, 183–192. Google ScholarDigital Library
- DeLine, R., Czerwinski, M., and Robertson, G. 2005. Easing program comprehension by sharing navigation data. IEEE Symp. Visual Languages and Human-Centered Computing (VL/HCC). 241–248. Google ScholarDigital Library
- Duala-Ekoko, E. and Robillard, M. P. 2012. Asking and answering questions about unfamiliar APIs: An exploratory study. ACM/IEEE Intl. Conf. Soft. Engr. (ICSE), 266–276. Google ScholarDigital Library
- Duala-Ekoko, E. and Robillard, M. 2007. Tracking code clones in evolving software. ACM/IEEE Intl. Conf. Soft. Engr. (ICSE). 158–167. Google ScholarDigital Library
- Fleming, S., Scaffidi, C., Piorkowski, D., Burnett, M., Bellamy, R., Lawrance, J., and Kwan, I. 2013. An information foraging theory perspective on tools for debugging, refactoring, and reuse tasks. ACM Trans. Soft. Engr. and Method. (TOSEM), 22(2), 14:1–14:41. Google ScholarDigital Library
- Fritz, T., Shepherd, D. C., Kevic, K., Snipes, W., and Bräunlich, C. 2014. Developers’ code context models for change tasks. ACM Intl. Symp. Found. Soft. Engr. (FSE), 7–18. Google ScholarDigital Library
- Furnas, G. W., Landauer, T. K., Gomez, L. M., and Dumais, S. T. 1987. The vocabulary problem in human-system communication. Comm. ACM, 30(11), 964–971. Google ScholarDigital Library
- Ge, X. and Murphy-Hill, E. 2014. Manual refactoring changes with automated refactoring validation. ACM/IEEE Intl. Conf. Soft. Engr. (ICSE), 1095–1105. Google ScholarDigital Library
- Grigoreanu, V., Burnett, M., Wiedenbeck, S., Cao, J., Rector, K., and Kwan, I. 2012. End-user debugging strategies: A sensemaking perspective. ACM Trans. Comp.-Human Interaction (TOCHI), 19(1), 5:1–5:28. Google ScholarDigital Library
- Henley, A. and Fleming, S. 2014. The Patchworks code editor: Toward faster navigation with less code arranging and fewer navigation mistakes. ACM Conf. Human Factors in Comp. Sys. (CHI)., 2511–2520. Google ScholarDigital Library
- Karrer, T., Kramer, J., Diehl, J., Hartmann, B., and Borchers, J. 2011. Stacksplorer: Call graph navigation helps increasing code maintenance efficiency. ACM Symp. User Interface Soft. and Technology (UIST), 217–224. Google ScholarDigital Library
- Kevic, K., Fritz, T., and Shepherd, D. 2014. CoMoGen: An approach to locate relevant task context by combining search and navigation. ACM/IEEE Intl. Conf. Soft. Maint. and Evolution (ICSME), 61–70. Google ScholarDigital Library
- Ko, A. and Myers, B. 2008. Debugging reinvented: Asking and answering why and why not questions about program behavior. ACM/IEEE Int’l Conf. Software Eng. (ICSE), 301– 310. Google ScholarDigital Library
- Ko, A., Myers B., Coblenz, M., Aung, H. 2006. An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Trans. Soft. Eng (TSE). 33, 971–987. Google ScholarDigital Library
- Kramer, J., Karrer, T., Kurz, J., Wittenhagen, M., and Borchers, J. 2013. How tools in IDEs shape developers’ navigation behavior. ACM Conf. Human Factors in Comp. Sys. (CHI), 3073–3082. Google ScholarDigital Library
- LaToza, T. D. and Myers, B. A. 2010. Developers ask reachability questions. ACM/IEEE Intl. Conf. Soft. Engr. (ICSE), 185–194. Google ScholarDigital Library
- LaToza, T. D. and Myers, B. A. 2011. Visualizing call graphs. IEEE Symp. Visual Lang. and Human-Centric Computing (VL/HCC), 117–124.Google Scholar
- Lawrance, J., Bellamy, R., Burnett, M., and Rector, K. 2008. Using information scent to model the dynamic foraging behavior of programmers in maintenance tasks. ACM Conf. Human Factors in Comp. Sys. (CHI), 1323–1332. Google ScholarDigital Library
- Lawrance, J., Bogart, C., Burnett, M., Bellamy, R., Rector, K., and Fleming, S. 2013. How programmers debug, revisited: An information foraging theory perspective. IEEE Trans. Soft. Eng. (TSE), 39(2), 197–215. Google ScholarDigital Library
- Lawrance, J., Burnett, M., Bellamy, R., Bogart, C., and Swart, C. 2010. Reactive information foraging for evolving goals. ACM Conf. Human Factors in Comp. Sys. (CHI), 25–34. Google ScholarDigital Library
- Lin, Y., Xing, Z., Xue, Y., Liu, Y., Peng, X., Sun, J., and Zhao, W. 2014. Detecting differences across multiple instances of code clones. ACM/IEEE Intl. Conf. Soft. Engr. (ICSE), 164–174. Google ScholarDigital Library
- Maalej, W., Tiarks, R., Roehm, T., and Koschke, R. 2014. On the comprehension of program comprehension. ACM Trans. Soft. Engr. and Method. (TOSEM), 23(4), 31:1–31:38. Google ScholarDigital Library
- Majid, I. and Robillard, M. 2005. NaCIN: An Eclipse plug-in for program navigation-based concern inference. ACM OOPSLA Wkshp. Eclipse Technology Exchange, 70–74. Google ScholarDigital Library
- Niu, N., Mahmoud, A., Chen, Z. and Bradshaw, G. 2013. Departures from optimality: Understanding human analyst’s information foraging in assisted requirements tracing. ACM/IEEE Intl. Conf. Soft. Engr. (ICSE), 572–581. Google ScholarDigital Library
- Piorkowski, D., Fleming, S., Kwan, I., Burnett, M., Scaffidi, C., Bellamy, R., and Jordahl, J. 2013. The whats and hows of programmers’ foraging diets. ACM Conf. Human Factors in Comp. Sys. (CHI), 3063–3072. Google ScholarDigital Library
- Piorkowski, D., Fleming, S., Scaffidi, C., Bogart, C., Burnett, M., John, B., Bellamy, R., and Swart, C. 2012. Reactive information foraging: An empirical investigation of theory-based recommender systems for programmers. ACM Conf. Human Factors in Comp. Sys. (CHI), 1471–1480. Google ScholarDigital Library
- Pirolli, P. and Card, S. 1995. Information foraging in information access environments. ACM Conf. Human Factors in Comp. Sys. (CHI), 51–58. Google ScholarDigital Library
- Posnett, D., D’Souza, R., Devanbu, P., and Filkov, V. 2013. Dual ecological measures of focus in software development. ACM/IEEE Int’l Conf. Software Eng. (ICSE), 452–461. Google ScholarDigital Library
- Robillard, M. P. and Chhetri, Y. B. 2014. Recommending reference API documentation. Empirical Soft. Engr., 1–29. Google ScholarDigital Library
- Robillard, M., Coelho, W., and Murphy, G. 2004. How effective developers investigate source code: An exploratory study. IEEE Trans. Soft. Eng. (TSE), 30(12), 889–903. Google ScholarDigital Library
- Sawadsky, N., Murphy, G. C., and Jiresal, R. 2013. Reverb: Recommending code-related web pages. ACM/IEEE Intl. Conf. Soft. Engr. (ICSE), 812–821. Google ScholarDigital Library
- Seaman, C.B. 1999. Qualitative methods in empirical studies of software engineering. IEEE Trans. Soft. Engr. (TSE), 25(4), 557–572. Google ScholarDigital Library
- Shaw, M. 1990. Prospects for an engineering discipline of software, IEEE Software, 15–24. Google ScholarDigital Library
- Shepard, D., Fry, Z. P., Hill, E., Pollock, L. and Vijay-Shanker, V. 2007. Using natural language program analysis to locate and understand action-oriented concerns. ACM Int’l Conf. Aspect-Oriented Soft. Dev. (AOSD). 212–214. Google ScholarDigital Library
- Sillito, J., Murphy, G. C., and De Volder, K. 2006. Questions programmers ask during software evolution tasks. ACM Symp. Found. Soft. Engr. (FSE), 23–34. Google ScholarDigital Library
- Singer, J., Elves, R. and Storey, M. 2005. NavTracks: Supporting navigation in software maintenance. IEEE Intl. Conf. Soft. Maint. (ICSM), 325–334. Google ScholarDigital Library
- Soh, Z., Khomh, F., Gueheneuc, Y., Antoniol, G., and Adams, B. 2013. On the effect of program exploration on maintenance tasks. Working Conf. Reverse Engr., 391–400.Google Scholar
- Sridhara, G., Hill, E., Pollock, L. and Vijay-Shanker, K. 2008. Identifying word relations in software: A comparative study of semantic similarity tools. IEEE Int’l Conf. Prog. Comprehension (ICPC), 123–132. Google ScholarDigital Library
- Xuan, Q., Okano, A., Devanbu, P., and Filkov, V. 2014. Focus-shifting patterns of OSS developers and their congruence with call graphs. ACM Int’l. Symp. Found. Soft. Engr. (FSE), 401–412. Google ScholarDigital Library
- Ying, A. and Robillard, M. 2011. The influence of the task on programmer behaviour. IEEE Int’l Conf. Program Comprehension (ICPC), 31–40. Google ScholarDigital Library
Index Terms
- Foraging and navigations, fundamentally: developers' predictions of value and cost
Recommendations
How do developers resolve merge conflicts? an investigation into the processes, tools, and improvements
ESEC/FSE 2018: Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software EngineeringMost software development is done in teams. When more than one developer is modifying the source code, there is a change that their changes will conflict. When this happens, developers have to interrupt their workflow in order to resolve the merge ...
Examining the structure of lean and agile values among software developers
Agile Processes in Software Engineering and Extreme ProgrammingGaining maximum benefit of Lean and Agile methods requires a thorough understanding of their assumptions regarding culture, mindset, and values. This paper examines the value system structure of experienced developers working with Lean and Agile methods,...
Developers Motivation in Agile Teams
SEAA '12: Proceedings of the 2012 38th Euromicro Conference on Software Engineering and Advanced ApplicationsA motivated individual is one of the cornerstones of agile software development. Although motivation has been recognized and studied in the software development field, little research has examined motivation in agile teams. Our study aims to provide a ...
Comments