Satisfying Programmers' Information Needs in API-Based Programming

Programmers encounter many difficulties in using an API to solve a programming task. To cope with these difficulties, they browse the Internet for code samples, tutorials, and API documentation. In general, it is time-consuming to find relevant help from the plethora of information on the web. While programmers can use search-based tools to help locate code snippets or applications that may be relevant to the APIs they are using, they still face the significant challenge of understanding and assessing the quality of the search results. We propose to investigate a proactive help system that is integrated in a development environment to provide contextual suggestions to the programmers as the code is being read and edited in the editor.

[1]  David F. Redmiles,et al.  Reducing the variability of programmers' performance through explained examples , 1993, INTERCHI.

[2]  Collin McMillan,et al.  A search engine for finding highly relevant applications , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[3]  Daqing Hou,et al.  An empirical study of the design and implementation of object equality in Java , 2008, CASCON '08.

[4]  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.

[5]  Gerhard Fischer,et al.  Cognitive tools for locating and comprehending software objects for reuse , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

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

[7]  H. James Hoover,et al.  Documenting and Evaluating Scattered Concerns for Framework Usability: A Case Study , 2008, 2008 15th Asia-Pacific Software Engineering Conference.

[8]  Gerhard Fischer,et al.  Cognitive View of Reuse and Redesign , 1987, IEEE Software.

[9]  Barbara G. Ryder Dimensions of Precision in Reference Analysis of Object-Oriented Programming Languages , 2003, CC.

[10]  Daqing Hou,et al.  An Abstraction-Oriented, Path-Based Approach for Analyzing Object Equality in Java , 2010, 2010 17th Working Conference on Reverse Engineering.

[11]  Brad A. Myers,et al.  Mica: A Web-Search Tool for Finding API Components and Examples , 2006, Visual Languages and Human-Centric Computing (VL/HCC'06).

[12]  Scott R. Klemmer,et al.  Example-centric programming: integrating web search into the development environment , 2010, CHI.

[13]  Laurie Hendren,et al.  Soot: a Java bytecode optimization framework , 2010, CASCON.

[14]  Harold Ossher,et al.  Automatically locating framework extension examples , 2008, SIGSOFT '08/FSE-16.

[15]  Mary Beth Rosson,et al.  A view matcher for reusing Smalltalk classes , 1991, CHI.

[16]  Christopher Scaffidi,et al.  Why are APIs difficult to learn and use? , 2006, CROS.

[17]  James Fogarty,et al.  Assieme: finding and leveraging implicit references in a web search interface for programmers , 2007, UIST '07.

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

[19]  Jian Pei,et al.  MAPO: mining API usages from open source repositories , 2006, MSR '06.

[20]  Kenny Wong,et al.  What can programmer questions tell us about frameworks? , 2005, 13th International Workshop on Program Comprehension (IWPC'05).