Research

Interest

Software engineering, software maintenance & evolution, program comprehension, reverse engineering, design recovery, source code analysis, source modeling, generic programming & library design

Statememnt

The research program focuses on the definition and construction of methods, tools, and environments for the analysis of source code and other programming artifacts. These tools and environments are applied to support and improve a programmer’s ability to develop, maintain, and evolve software systems. Their application to the empirical analysis of existing software provides valuable insight into current development trends and emergent (design) patterns. The program supports the definition of a feedback loop for continual analysis and evaluation for both the software and the programmer.

The general approach to source code analysis is based on a data-centric view of source code and programming artifacts. Specifically, source code is lexically translated into an XML format. The lightweight markup provides a holistic view of the source code, preserving the author’s use of commenting, and identifier usage. These elements are critical to the development of semantically meaningful models of a program.

Of specific interest is the application of these techniques to C++ generic libraries and the improved support for generic programming in C++0x. The generic programming paradigm and its realization in C++ have defined an approach to library development that synthesizes advanced language elements, programming idioms, and design patterns, and it is used in an increasingly wide variety of scientific and high-performance computing applications. The reverse engineering of generic and template source code to produce abstract models of these libraries directly supports a number of tasks in software development, maintenance, and evolution including redocumentation, design recovery, concept inference, and the maintenance of concept hierarchies.

The models and tools developed for the analysis of generic libraries are applied to study the design and composition of existing, best-of-breed libraries. Results of studies are incorporated into an existing body of knowledge of library design, design patterns for generic libraries, and emergent trends in development and maintenance of generic libraries. Trends and approaches to design are evaluated by the development of open source generic data structures and algorithms.