Font Size: a A A

Natural language program analysis: Combining natural language processing with program analysis to improve software maintenance tools

Posted on:2008-07-09Degree:Ph.DType:Dissertation
University:University of DelawareCandidate:Shepherd, DavidFull Text:PDF
GTID:1448390005956322Subject:Computer Science
Abstract/Summary:PDF Full Text Request
Because software systems are large and complex, developers often use software tools to understand unfamiliar code. In turn, software tools often utilize information about the program in the form of various program representations, which can provide detailed program information. Because traditional program representations do not capture the natural language clues in code, they often fail to assist the developer during high-level program understanding tasks. To bridge the gap between current software tools and the software developers' high-level questions, we propose supplementing traditional program representations with a natural language representation that exploits the information embedded in the program's names and comments.; Any software tool that uses a program representation must automatically construct that representation. To automatically construct our natural language program representation, we combined natural language processing and traditional program analysis techniques. With these techniques, we extract the natural language clues from the method names, class names, and comments in a program.; We evaluated the usefulness of our natural language program representation by developing two software tools which access our representation. The first, a software search tool called Find-Concept, locates code segments relevant to a developer's query, a common first step in development tasks. In a user study, Find-Concept found code segments more effectively and more consistently than a state-of-the-art information retrieval search tool and a lexical search tool. The second, an aspect mining tool called Timna, identifies code segments that could be more elegantly represented in a new language paradigm, aspect-oriented programming. Timna originally only used traditional program representations, yet when we added our natural language program representation, Timna was much more effective.; In the software tools' respective evaluations, both tools performed well. The body of quantitative and qualitative evidence strongly suggests that supplementing traditional program representations with a natural language representation is a promising approach to increasing the effectiveness of software tools.
Keywords/Search Tags:Software, Natural language, Program, Tools, Code
PDF Full Text Request
Related items