Supporting developers with natural language queries

The feature list of modern IDEs is steadily growing and mastering these tools becomes more and more demanding, especially for novice programmers. Despite their remarkable capabilities, IDEs often still cannot directly answer the questions that arise during program comprehension tasks. Instead developers have to map their questions to multiple concrete queries that can be answered only by combining several tools and examining the output of each of them manually to distill an appropriate answer. Existing approaches have in common that they are either limited to a set of predefined, hardcoded questions, or that they require to learn a specific query language only suitable for that limited purpose. We present a framework to query for information about a software system using guided-input natural language resembling plain English. For that, we model data extracted by classical software analysis tools with an OWL ontology and use knowledge processing technologies from the Semantic Web to query it. We use a case study to demonstrate how our framework can be used to answer queries about static source code information for program comprehension purposes.

[1]  Harald C. Gall,et al.  A Tool for Visual Understanding of Source Code Dependencies , 2008, 2008 16th IEEE International Conference on Program Comprehension.

[2]  L. Stein,et al.  OWL Web Ontology Language - Reference , 2004 .

[3]  Stéphane Ducasse,et al.  FAMIX and XMI , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[4]  Abraham Bernstein,et al.  How Useful Are Natural Language Interfaces to the Semantic Web for Casual End-Users? , 2007, ISWC/ASWC.

[5]  Michael Gruninger,et al.  ONTOLOGY Applications and Design , 2002 .

[6]  Harald C. Gall,et al.  Populating a Release History Database from version control and bug tracking systems , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[7]  Michael Gruninger,et al.  Ontology Applications and Design - Introduction. , 2002 .

[8]  Scott Henninger,et al.  Using iterative refinement to find reusable software , 1994, IEEE Software.

[9]  Roger F. Crew ASTLOG: A Language for Examining Abstract Syntax Trees , 1997, DSL.

[10]  Gail C. Murphy,et al.  Asking and Answering Questions during a Programming Change Task , 2008, IEEE Transactions on Software Engineering.

[11]  Emily Hill,et al.  Automatically capturing source code context of NL-queries for software maintenance and reuse , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[12]  James A. Hendler,et al.  The Semantic Web" in Scientific American , 2001 .

[13]  Elnar Hajiyev,et al.  codeQuest: Scalable Source Code Queries with Datalog , 2006, ECOOP.

[14]  Gail C. Murphy,et al.  Answering conceptual queries with Ferret , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[15]  Premkumar T. Devanbu,et al.  LaSSIE—a knowledge-based software information system , 1991, ICSE '90.

[16]  Ian Horrocks,et al.  OWL Web Ontology Language Reference-W3C Recommen-dation , 2004 .

[17]  Atul Prakash,et al.  A Query Algebra for Program Databases , 1996, IEEE Trans. Software Eng..

[18]  Kris De Volder,et al.  Navigating and querying code without getting lost , 2003, AOSD '03.

[19]  Harald C. Gall,et al.  Change Analysis with Evolizer and ChangeDistiller , 2009, IEEE Software.

[20]  Yonggang Zhang,et al.  Empowering Software Maintainers with Semantic Web Technologies , 2007, ESWC.

[21]  Michael W. Godfrey,et al.  Facilitating software evolution research with kenyon , 2005, ESEC/FSE-13.

[22]  Stefan Seedorf,et al.  Applications of Ontologies in Software Engineering , 2006 .

[23]  Michael McGill,et al.  Introduction to Modern Information Retrieval , 1983 .

[24]  Jeremy J. Carroll,et al.  Resource description framework (rdf) concepts and abstract syntax , 2003 .

[25]  Abraham Bernstein,et al.  Mining Software Repositories with iSPAROL and a Software Evolution Ontology , 2007, Fourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007).

[26]  Mike Uschold,et al.  A Framework for Understanding and Classifying Ontology Applications , 1999 .

[27]  Thomas Zimmermann,et al.  Preprocessing CVS Data for Fine-Grained Analysis , 2004, MSR.

[28]  D. Hyland-Wood,et al.  Toward a Software Maintenance Methodology using Semantic Web Techniques , 2006, 2006 Second International IEEE Workshop on Software Evolvability (SE'06).

[29]  Andreas Zeller,et al.  Mining Version Histories to Guide Software Changes , 2004 .

[30]  Harald C. Gall,et al.  Change Distilling:Tree Differencing for Fine-Grained Source Code Change Extraction , 2007, IEEE Transactions on Software Engineering.

[31]  Thomas R. Gruber,et al.  A translation approach to portable ontology specifications , 1993 .

[32]  Antonio Vallecillo,et al.  An Ontology for Software Measurement , 2006, Ontologies for Software Engineering and Software Technology.

[33]  Abraham Bernstein,et al.  Querying the Semantic Web with Ginseng: A Guided Input Natural Language Search Engine , 2009 .

[34]  Huajun Chen,et al.  The Semantic Web , 2011, Lecture Notes in Computer Science.

[35]  Alberto O. Mendelzon,et al.  Visualizing and querying software structures , 1992, International Conference on Software Engineering.

[36]  E. Prud hommeaux,et al.  SPARQL query language for RDF , 2011 .

[37]  A. Bernstein,et al.  Ginseng : A Guided Input Natural Language Search Engine for Querying Ontologies , 2006 .

[38]  Gail C. Murphy,et al.  Questions programmers ask during software evolution tasks , 2006, SIGSOFT '06/FSE-14.

[39]  Axel Korthaus,et al.  KOntoR: An Ontology-enabled Approach to Software Reuse , 2006, SEKE.