Aspect Oriented Programming (AOP) is a paradigm that supplements OOP to help modularize cross-cutting concerns. AOP allows the developer to place code related to a cross-cutting concern in one location, which leads to eased maintenance and development. However, even in AOP code, a particular change task may involve navigation through code for multiple aspects. Additionally, few tools support AOP development, and so developers often do not use AOP because programming without tools requires undue human effort.
Our research focuses on developing analyses and integrated tools to assist software maintenance, program understanding, and AOP refactoring to reduce the burden on humans. A primary focus of our research is analysis that semi-automatically identifies (i.e., mines) cross-cutting concerns. Concern-mining analysis is considered fundamental because of its many uses:
We are developing analyses and integrated tools for assistance with concern mining and navigation. Based on the premise that OOP code is noun-oriented (modularized with respect to objects), our hypothesis is that cross-cutting concerns are primarily verb (i.e., action)-oriented. Programmers also often use naming and coding conventions. Our novel approach is to extend and apply natural language processing (NLP) techniques to program code in combination with static program analysis to exploit the verb-object relationships between user-defined names in a program.
If the above link does not work, refer to our static publications page.
Faculty: Lori Pollock, K. Vijay-Shanker
Ph.D. Students: Emily Gibson, Giriprisad Sridhara
Collaborators: Dr. David Shepherd
Master's Students: Kishen Maloor
Undergraduates: Zachary Fry, Susan Lister
Collaborators: Tom Tourwe (Centrum voor Wiskunde en Informatica) and Mark
Chu-Carroll (IBM)