Using natural language program analysis to locate and understand action-oriented concerns

Most current software systems contain undocumented high-level ideas implemented across multiple files and modules. When developers perform program maintenance tasks, they often waste time and effort locating and understanding these scattered concerns. We have developed a semi-automated concern location and comprehension tool, Find-Concept, designed to reduce the time developers spend on maintenance tasks and to increase their confidence in the results of these tasks. Find-Concept is effective because it searches a unique natural language-based representation of source code, uses novel techniques to expand initial queries into more effective queries, and displays search results in an easy-to-comprehend format. We describe the Find-Concept tool, the underlying program analysis, and an experimental study comparing Find-Concept's search effectiveness with two state-of-the-art lexical and information retrieval-based search tools. Across nine action-oriented concern location tasks derived from open source bug reports, our Eclipse-based tool produced more effective queries more consistently than either competing search tool with similar user effort.

[1]  Ted Briscoe,et al.  High Precision Extraction of Grammatical Relations , 2001, COLING.

[2]  Michael Eichberg,et al.  Comprehensive software understanding with SEXTANT , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[3]  M. F. Porter,et al.  An algorithm for suffix stripping , 1997 .

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

[5]  Ruzanna Chitchyan,et al.  EA-Miner: a tool for automating aspect-oriented requirements identification , 2005, ASE.

[6]  Martin F. Porter,et al.  An algorithm for suffix stripping , 1997, Program.

[7]  Andrian Marcus,et al.  Identifications of Concepts, Features, and Concerns in Source Code , 2005, ICSM.

[8]  Karl J. Lieberherr,et al.  Object-oriented design , 1996, CSUR.

[9]  Andrian Marcus,et al.  An information retrieval approach to concept location in source code , 2004, 11th Working Conference on Reverse Engineering.

[10]  Martin P. Robillard,et al.  Concern graphs: finding and describing concerns using structural program dependencies , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[11]  Alexander Dekhtyar,et al.  Information Retrieval , 2018, Lecture Notes in Computer Science.

[12]  David Shepherd Using Language Clues to Discover Crosscutting Concerns , 2005 .

[13]  Andrian Marcus,et al.  Static techniques for concept location in object-oriented code , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[14]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[15]  Giuliano Antoniol,et al.  Recovering Traceability Links between Code and Documentation , 2002, IEEE Trans. Software Eng..

[16]  Rainer Koschke,et al.  Locating Features in Source Code , 2003, IEEE Trans. Software Eng..

[17]  AntoniolGiuliano,et al.  Recovering Traceability Links between Code and Documentation , 2002 .

[18]  Wei Zhao,et al.  SNIAFL: towards a static non-interactive approach to feature location , 2004, Proceedings. 26th International Conference on Software Engineering.

[19]  Wenke Lee,et al.  Grappa: A GRAPh PAckage in Java , 1997, GD.

[20]  Amir Michail,et al.  Design recovery of interactive graphical applications , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[21]  Václav Rajlich,et al.  RIPPLES: tool for change in legacy software , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[22]  Martin P. Robillard,et al.  The Emergent Structure of Development Tasks , 2005, ECOOP.

[23]  Norman Wilde,et al.  TraceGraph: immediate visual location of software features , 2000, Proceedings 2000 International Conference on Software Maintenance.

[24]  Stanley M. Sutton,et al.  N degrees of separation: multi-dimensional separation of concerns , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[25]  Lori L. Pollock,et al.  Towards supporting on-demand virtual remodularization using program graphs , 2006, AOSD.

[26]  Siobhán Clarke,et al.  Theme: an approach for aspect-oriented analysis and design , 2004, Proceedings. 26th International Conference on Software Engineering.

[27]  Amir Michail Browsing and searching source code of applications written using a GUI framework , 2002, ICSE '02.

[28]  L. Erlikh,et al.  Leveraging legacy system dollars for e-business , 2000 .

[29]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[30]  Martin P. Robillard,et al.  Automatic generation of suggestions for program investigation , 2005, ESEC/FSE-13.

[31]  Andrian Marcus,et al.  Recovering documentation-to-source-code traceability links using latent semantic indexing , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..