Abstract
Theories of human behavior are an important but largely untapped resource for software engineering research. They facilitate understanding of human developers’ needs and activities, and thus can serve as a valuable resource to researchers designing software engineering tools. Furthermore, theories abstract beyond specific methods and tools to fundamental principles that can be applied to new situations. Toward filling this gap, we investigate the applicability and utility of Information Foraging Theory (IFT) for understanding information-intensive software engineering tasks, drawing upon literature in three areas: debugging, refactoring, and reuse. In particular, we focus on software engineering tools that aim to support information-intensive activities, that is, activities in which developers spend time seeking information. Regarding applicability, we consider whether and how the mathematical equations within IFT can be used to explain why certain existing tools have proven empirically successful at helping software engineers. Regarding utility, we applied an IFT perspective to identify recurring design patterns in these successful tools, and consider what opportunities for future research are revealed by our IFT perspective.
- Alexander, C. 1979. The Timeless Way of Building. Oxford University Press.Google Scholar
- Arlotta, L., Crescenzi, V., Mecca, G., and Merialdo, P. 2003. Automatic annotation of data extracted from large Web sites. In Proceedings of the International Workshop on the Web and Databases. 12--17.Google Scholar
- Ashok, B., Joy, J., Liang, H., Rajamani, S. K., Srinvasa, G., and Vangala, V. 2009. DebugAdvisor: A Recommender system for debugging. In Proceedings of the Joint Meeting of the European Software Engineering Conference and ACM SIGSOFT Symposium on the Foundations of Software Engineering. 373--382. Google ScholarDigital Library
- Aula, A., Jhaveri, N., and Kaki, M. 2005. Information search and re-access strategies of experienced Web users. In Proceedings of the International Conference on World Wide Web. 583--592. Google ScholarDigital Library
- Baeza-Yates, R. and Ribeiro-Neto, B. 1999. Modern Information Retrieval. Addison Wesley Longman. Google ScholarDigital Library
- Bellon, S., Koschke, R., Antoniol, G., and Krinke, J. 2007. Comparison and evaluation of clone detection tools. IEEE Trans. Softw. Eng. 577--591. Google ScholarDigital Library
- Bloch, J. 2001. Effective Java Programming Language Guide. Sun Microsystems. Google ScholarDigital Library
- Borchers, J. 2000. A pattern approach to interaction design. In Proceedings of the ACM International Conference on Designing Interactive Systems. 369--378. Google ScholarDigital Library
- Bragdon, A., Reiss, Steven P., Zeleznik, R., Karumuri, S., Cheung, W., Kaplan, J., Adeputra, F., and LaViola Jr., J. J. 2010. Code Bubbles: Rethinking the user interface paradigm of integrated development. In Proceedings of the ACM/IEEE International Conference on Software Engineering. 455--464. Google ScholarDigital Library
- Brandt, J., Guo, P., Lewenstein, J., and Klemmer, S. 2008. Opportunistic programming: How rapid ideation and prototyping occur in practice. In Proceedings of the International Workshop on End-User Software Engineering. 1--5. Google ScholarDigital Library
- Brooks, R. 1983. Towards a theory of the comprehension of computer programs. Int. J. Man-Machine Stud. 18, 543--554.Google ScholarCross Ref
- Budiu, R., Pirolli, P., and Hong, L. 2009. Remembrance of things tagged: How tagging effort affects tag production and human memory. In Proceedings of the ACM Conference on Human Factors in Computing Systems. 615--624. Google ScholarDigital Library
- Caldiera, G. and Basili, V. 1991. Identifying and qualifying reusable software components. Computer 24, 2, 61--70. Google ScholarDigital Library
- Chi, E., Pirolli, P., Chen, K., and Pitkow, J. 2001. Using information scent to model user information needs and actions and the Web. In Proceedings of the ACM Conference on Human Factors in Computing Systems. 490--497. Google ScholarDigital Library
- Chi, E., Rosien, A., Supattanasiri, G., and Williams, A. 2003. The Bloodhound project: Automating discovery of Web usability issues using the InfoScent simulator. In Proceedings of the ACM Conference on Human Factors in Computing Systems. 512--519. Google ScholarDigital Library
- Coblenz, M. J., Ko, A. J., and Myers, B. A 2006. JASPER: An eclipse plug-in to facilitate software maintenance tasks. In Proceedings of the OOPSLA Workshop on Eclipse Technology eXchange. 65--69. Google ScholarDigital Library
- Cottrell, R., Walker, R., and Denzinger, J. 2008. Semi-automating small-scale source code reuse via structural correspondence. In Proceedings of the ACM/IEEE International Symposium on Foundations of Software Engineering. 214--225. Google ScholarDigital Library
- Cubranic, D., Murphy, G., Singer, J., and Booth, K. 2005. HIPIKAT: A project memory for software development. IEEE Trans. Softw. Eng. 31, 6, 446--465. Google ScholarDigital Library
- Dagenais, B. and Robillard, M. P. 2010. Creating and evolving developer documentation: Understanding the decisions of open source contributors. In Proceedings of the ACM SIGSOFT International Symposium on the Foundations of Software Engineering, 127--136. Google ScholarDigital Library
- De Alwis, B. and Murphy, G. C. 2008. Answering conceptual queries with ferret. In Proceedings of the ACM/IEEE International Conference on Software Engineering. Google ScholarDigital Library
- Dearden, A. and Finlay, J. 2006. Pattern languages in HCI: A critical review. Hum.-Comput. Interact. 21, 49--102.Google ScholarCross Ref
- DeLine, R., Czerwinski, M., and Robertson, G. 2005. Easing program comprehension by sharing navigation data. In Proceedings of the IEEE Symposium on Visual Languages and Human-Centered Computing. 241--248. Google ScholarDigital Library
- Duala-Ekoko, E. and Robillard, M. 2007. Tracking code clones in evolving software. In Proceedings of the 29th International Conference on Software Engineering. 158--167. Google ScholarDigital Library
- Ducasse, S., Rieger, M., and Demeyer, S. 1999. A language independent approach for detecting duplicated code. In Proceedings of the International Conference on Software Maintenance. 109--118. Google ScholarDigital Library
- Dudziak, T. 2002. Tool-supported discovery and refactoring of structural weaknesses in code. Ph.D. thesis, Technical University of Berlin.Google Scholar
- Dunn, M. and Knight, J. 1993. Automating the detection of reusable parts in existing software. In Proceedings of the ACM/IEEE International Conference on Software Engineering. 381--390. Google ScholarDigital Library
- Erl, T. 2007. SOA Principles of Service Design. Prentice-Hall. Google ScholarDigital Library
- Fowler, M. and Beck, K. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley. Google ScholarDigital Library
- Fritz, T. and Murphy, G. C. 2010. Using information fragments to answer the questions developers ask. In Proceedings of the ACM/IEEE International Conference on Software Engineering. Google ScholarDigital Library
- Fu, W.-T. and Pirolli, P. 2007. SNIF-ACT: A cognitive model of user navigation on the World Wide Web. Hum.-Comput. Interact. 22, 355--412. Google ScholarDigital Library
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1994. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. Google ScholarDigital Library
- Garlan, D., Allen, R., and Ockerbloom, J. 2002. Architectural mismatch: Why reuse is so hard. IEEE Softw. 12, 6, 17--26. Google ScholarDigital Library
- Geiger, R., Fluri, B., Gall, H., and Pinzger, M. 2006. Relation of code clones and change couplings. In Proceedings of the 9th International Conference on Fundamental Approaches to Software Engineering. Lecture Notes in Computer Science, vol. 3922, 411--425. Google ScholarDigital Library
- Hannay, J., Sjoberg, D., and Dyba, T. 2007. A systematic review of theory use in software engineering experiments. IEEE Trans. Softw. Eng. 33, 2, 87--107. Google ScholarDigital Library
- Henninger, S. 1994. Using iterative refinement to find reusable software. IEEE Softw. 11, 5, 48--59. Google ScholarDigital Library
- Hill, E., Pollock, L., and Vijay-Shanker, K. 2009. Automatically capturing source code context of NL-queries for software maintenance and reuse. In Proceedings of the ACM/IEEE International Conference on Software Engineering. 232--242. Google ScholarDigital Library
- Holmes, R. and Walker, R. 2007. Supporting the investigation and planning of pragmatic reuse tasks. In Proceedings of the ACM/IEEE International Conference on Software Engineering. 447--457. Google ScholarDigital Library
- Holmes, R., Walker, R., and Murphy, G. 2006. Approximate structural context matching: An approach to recommend relevant examples. IEEE Trans. Softw. Eng. 32, 12, 952--970. Google ScholarDigital Library
- Hundhausen, C. 2005. Using end-user visualization environments to mediate conversations: A “Communicative dimensions” framework. J. Vis. Lang. Comput. 16, 3, 153--185. Google ScholarDigital Library
- Jeon, J., Lavrenko, V., and Manmatha, R. 2003. Automatic image annotation and retrieval using cross-media relevance models. In Proceedings of the 26th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval. 119--126. Google ScholarDigital Library
- Kersten, M. and Murphy, G. 2006. Using task context to improve programmer productivity. In Proceedings of the ACM Symposium on the Foundations of Software Engineering. 1--11. Google ScholarDigital Library
- Ko, A. 2008. Asking and answering questions about the causes of software behaviors. Ph.D. thesis, Carnegie Mellon University.Google Scholar
- Ko, A., Myers, B., Coblenz, M., and Aung, H. 2006. An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Trans. Softw. Eng. 32, 12, 971--987. Google ScholarDigital Library
- Ko, A., DeLine, R., and Venolia, G. 2007. Information needs in collocated software development teams. In Proceedings of the ACM/IEEE International Conference on Software Engineering. 344--353. Google ScholarDigital Library
- Lanubile, F. and Visaggio, G. 1993. Function recovery based on program slicing. In Proceedings of the International Conference on Software Maintenance. 396--404. Google ScholarDigital Library
- Lanubile, F., Ebert, C., Prikladnicki, R. and Vizcaino, A. 2010. Collaboration tools for global software engineering. IEEE Softw. 52--55. Google ScholarDigital Library
- LaToza, T. and Myers, B. 2010. Developers ask reachability questions. In Proceedings of the ACM/IEEE International Conference on Software Engineering. 185--194. Google ScholarDigital Library
- LaToza, T., Venolia, G., and DeLine, R. 2006. Maintaining mental models: A study of developer work habits. In Proceedings of the ACM/IEEE International Conference on Software Engineering. 492--501. Google ScholarDigital Library
- LaToza, T., Garlan, D., Herbsleb, J., and Myers, B. 2007. Program comprehension as fact finding. In Proceedings of the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. Google ScholarDigital Library
- Lawrance, J., Bellamy, R., Burnett, M., and Rector, K. 2008a. Using information scent to model the dynamic foraging behavior of programmers in maintenance tasks. In Proceedings of the ACM Conference on Human Factors in Computing Systems. 1323--1332. Google ScholarDigital Library
- Lawrance, J., Bellamy, R., Burnett, M., and Rector, K. 2008b. Can information foraging pick the fix?: A field study. In Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing. 57--64. Google ScholarDigital Library
- Lawrance, J., Bogart, C., Burnett, M., Bellamy, R., Rector, K., and Fleming, S. 2011. How programmers debug, revisited: An information foraging theory perspective, IEEE Trans. Softw. Eng. (http://doi.ieeecomputersociety.org/10.1109/TSE.2010.111).Google Scholar
- Lawrance, J., Burnett, M., Bellamy, R., and Bogart, C. 2010. Reactive information foraging for evolving goals. In Proceedings of the ACM Conference on Human Factors in Computing Systems. 25--34. Google ScholarDigital Library
- Layman, L. 2009. Information needs of developers for program comprehension during software maintenance tasks. Ph.D. thesis, North Carolina State University. Google ScholarDigital Library
- Mani, I. and Maybury, M. 1999. Advances in Automatic Text Summarization. MIT Press. Google ScholarDigital Library
- McMillan, C., Grechanik, M., Poshyvanyk, D., Fu, C., and Xie, Q. 2012. Exemplar: A source code search engine for finding highly relevant applications. IEEE Trans. Softw. Eng. 38, 5, 1269--1287. Google ScholarDigital Library
- Mens, T., Tourwe, T., and Munoz, F. 2003. Beyond the refactoring browser: Advanced tool support for software refactoring. In Proceedings of the 6th International Workshop on Principles of Software Evolution. 39--44. Google ScholarDigital Library
- Minto, S. and Murphy, G. C. 2007. Recommending emergent teams. In Proceedings of the 4th International Workshop on Mining Software Repositories, 5--13. Google ScholarDigital Library
- Mockus, A. and Herblseb, J. D. 2002. Expertise browser: A quantitative approach to identifying expertise. In Proceedings of the 24th International Conference on Software Engineering, 503--512. Google ScholarDigital Library
- Murphy-Hill, E. and Black, A. 2008. Refactoring tools: Fitness for purpose. IEEE Softw. 25, 5, 38--44. Google ScholarDigital Library
- Murphy-Hill, E., Parnin, C., and Black, A. 2009. How we refactor, and how we know it. In Proceedings of the ACM/IEEE International Conference on Software Engineering. 287--297. Google ScholarDigital Library
- Olivero, F., Lanza, M., D’Ambros, M., and Robbes, R. 2011. Enabling program comprehension through an object-focused development environment. In Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing. 127--134.Google Scholar
- Olson, G. and Olson, J. 2003. Human-computer interaction: Psychological aspects of the human use of computing. Ann. Rev. Psych. 54, 1, 491--516.Google ScholarCross Ref
- Olston, C. and Chi, E. 2003. ScentTrails: Integrating browsing and searching on the Web. ACM Trans. Comput.-Hum. Interact. 10, 3, 177--197. Google ScholarDigital Library
- Pane, J. 2002. A programming system for children that is designed for usability. Ph.D. thesis, Carnegie Mellon University. Google ScholarDigital Library
- Parnin, C. and Görg, C. 2006. Building usage contexts during program comprehension. In Proceedings of the 14th IEEE International Conference on Program Comprehension, 13--22. Google ScholarDigital Library
- Piorkowski, D., Fleming, S. D., Scaffidi, C., John, L., Bogart, C., John, B. E., Burnett, M., and Bellamy, R. 2011. Modeling programmer navigation: A head-to-head empirical evaluation of predictive models. In Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing, 109--116.Google Scholar
- Pirolli, P. 2007. Information Foraging Theory: Adaptive Interaction with Information. Oxford University Press. Google ScholarDigital Library
- Pirolli, P. and Card, S. 1995. Information foraging in information access environments. In Proceedings of the ACM Conference on Human Factors in Computing Systems. 51--58. Google ScholarDigital Library
- Pirolli, P. and Card, S. 1998. Information foraging models of browsers for very large document spaces. In Proceedings of the Working Conference on Advanced Visual Interfaces. 83--93. Google ScholarDigital Library
- Pirolli, P. and Card, S. 1999. Information foraging. Psych. Rev. 106, 4, 643--675.Google ScholarCross Ref
- Pirolli, P. and Fu, W. 2003. SNIF-ACT: A model of information foraging on the World Wide Web. In Proceedings of the 9th International Conference on User Modeling. Lecture Notes in Computer Science, vol. 2702, 45--54. Google ScholarDigital Library
- Rahman, F., Bird, C., and Devanbu, P. 2010. Clones: What is that smell? In Proceedings of the 7th IEEE Working Conference on Mining Software Repositories. 72--81.Google Scholar
- Rastkar, S., Murphy, G. C., and Murray, G. 2010. Summarizing software artifacts: A case study of bug reports. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering. 505--514. Google ScholarDigital Library
- Reiss, S. 2009. Semantics-based code search. In Proceedings of the 31st International Conference on Software Engineering. 243--253. Google ScholarDigital Library
- Robillard, M., Coelho, W., and Murphy, G. 2004. How effective developers investigate source code: An exploratory study. IEEE Trans. Softw. Eng. 889--903. Google ScholarDigital Library
- Robillard, M., Walker, R., and Zimmermann, T. 2010. Recommendation systems for software engineering. IEEE Softw. 80--86. Google ScholarDigital Library
- Sillito, J., Murphy, G., and De Volder, K. 2008. Asking and answering questions during a programming change task. IEEE Trans. Softw. Eng. 34, 4, 434--451. Google ScholarDigital Library
- Simon, F., Steinbruckner, F., and Lewerentz, C. 2001. Metrics based refactoring. In Proceedings of the European Conference on Software Maintenance and Reengineering. 30--38. Google ScholarDigital Library
- Sjøberg, D. I. K., Dybå, T., Anda, B. C. D., and Hannay, J. E. 2008. Building theories in software engineering. In Guide to Advanced Empirical Software Engineering. Springer, 312--336.Google Scholar
- Stack Exchange Inc. last accessed 2011. Stack overflow. http://stackoverflow.com/.Google Scholar
- Storey, M.-A., Cheng, L., Singer, J., and Muller, M. 2007. How programmers can turn comments into waypoints for code navigation. In Proceedings of the IEEE International Conference on Software Maintenance. 265--274.Google Scholar
- Tidwell, J. 2006. Designing Interfaces. O’Reilly. Google ScholarDigital Library
- Tokuda, L. and Batory, D. 2001. Evolving object-oriented designs with refactorings. Automat. Softw. Eng. 8, 1, 89--120. Google ScholarDigital Library
- Toomim, M., Begel, A., and Graham, S. 2004. Managing duplicated code with linked editing. In Proceedings of the IEEE Symposium on Visual Languages-Human Centric Computing. 173--180. Google ScholarDigital Library
- Treude, C. and Storey, M.-A. 2010. Awareness 2.0: Staying aware of projects, developers and tasks using dashboards and feeds. In Proceedings of the ACM/IEEE International Conference on Software Engineering, 365--374. Google ScholarDigital Library
- Treude, C. and Storey, M.-A. 2011. Effective communication of software development knowledge through community portals. In Proceedings of the European Software Engineering Conference and the ACM SIGSOFT International Symposium on Foundations of Software Engineering ESEC/FSE). 91--101. Google ScholarDigital Library
- Treude, C. and Storey, M.-A. 2012. Work item tagging: Communicating concerns in collaborative software development. IEEE Trans. Softw. Eng. 38, 1, 19--34. Google ScholarDigital Library
- Treude, C., Barzilay, O., and Storey, M.-A. 2011. How do programmers ask and answer questions on the web? (NIER Track). In Proceedings of the ACM/IEEE International Conference on Software Engineering. 804--807. Google ScholarDigital Library
- van Emden, E. and Moonen, L. 2002. Java quality assurance by detecting code smells. In Proceedings of the 9th Working Conference on Reverse Engineering. 97--108. Google ScholarDigital Library
- Vigo, M., Leporini, B., and Paterno, F. 2009. Enriching Web information scent for blind users. In Proceedings of the ACM International Conference on Computers and Accessibility. 123--130. Google ScholarDigital Library
- Wexelblat, A. and Maes, P. 1999. Footprints: History-rich tools for information foraging. In Proceedings of the ACM Conference on Human Factors in Computing Systems. 270--277. Google ScholarDigital Library
- Würsch, M., Ghezzi, G., Reif, G., and Gall, H. C 2010. Supporting developers with natural language queries. In Proceedings of the ACM/IEEE International Conference on Software Engineering. 165--174. Google ScholarDigital Library
- Xing, Z. and Stroulia, E. 2006. Refactoring practice: How it is and how it should be supported: An Eclipse case study. In Proceedings of the ACM/IEEE International Conference on Software Maintenance. 458--468. Google ScholarDigital Library
- Ye, Y., Fischer, G., and Reeves, B. 2000. Integrating active information delivery and reuse repository systems. In Proceedings of the 8th ACM SIGSOFT International Symposium on Foundations of Software Engineering. 60--68. Google ScholarDigital Library
- Ye, Y., Yamamoto, Y., and Nakakoji, K. 2007. A Socio-technical framework for supporting programmers. In Proceedings of the European Software Engineering Conference and the ACM SIGSOFT International Symposium on Foundations of Software Engineering. 351--360. Google ScholarDigital Library
- Zimmermann, T., Weisgerber, P., Diehl, S., and Zeller, A. 2004. Mining version histories to guide software changes. In Proceedings of the 26th International Conference on Software Engineering. 563--572. Google ScholarDigital Library
Index Terms
- An Information Foraging Theory Perspective on Tools for Debugging, Refactoring, and Reuse Tasks
Recommendations
Reactive information foraging: an empirical investigation of theory-based recommender systems for programmers
CHI '12: Proceedings of the SIGCHI Conference on Human Factors in Computing SystemsInformation Foraging Theory (IFT) has established itself as an important theory to explain how people seek information, but most work has focused more on the theory itself than on how best to apply it. In this paper, we investigate how to apply a ...
Using information scent to model the dynamic foraging behavior of programmers in maintenance tasks
CHI '08: Proceedings of the SIGCHI Conference on Human Factors in Computing SystemsIn recent years, the software engineering community has begun to study program navigation and tools to support it. Some of these navigation tools are very useful, but they lack a theoretical basis that could reduce the need for ad hoc tool building ...
An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks
Much of software developers' time is spent understanding unfamiliar code. To better understand how developers gain this understanding and how software development environments might be involved, a study was performed in which developers were given an ...
Comments