Software

Research Projects

srcTools Framework

The srcTools framework is an open source, C++ program analysis toolkit built on top of the srcML C++ markup (developed by Drs. Jonathan Maletic and Michael Collard). It provides parsing and program model construction support to different C++ analysis applications. A holistic representation of the source code preserves preprocessor information, identifiers, and comments for subsequent analysis. Programmatic hooks (signals) are provided to allow integration with diverse and varied applications. Applications of the srcTools framework include srcmodel, and srccon. The srcmodel application builds a queryable SQL-based program model of C++ programs that incorporates code locations, preprocessor directives, language elements (functions, classes, etc.), and their relationships (e.g., inheritance, function call, etc). The srccon application implements a constraint inference algorithm and supports the migration from C++ to C++0x and the maintenance and evolution of C++0x concept hierarchies.

Origin C++0x Libraries

The Origin Libraries project is a collection of open source, generic algorithms and data structures patterned after the Boost C++ Libraries and written in C++0x. The libraries serve as an experimental testing ground for evaluating analysis tools and techniques for generic and template source code. The project also supports experimentation with new techniques for generic library design and the specification of concept hierarchies. The project serves as framework for both graduate and undergraduate research projects and independent studies. Libraries hosted under this umbrella include the Origin.Graph Library (an evolution of the Boost.Graph Library), a generic tree library, prefix and suffix tree data structures, and a generic binning facility.

Open Modeling Framework

An open source, implementation of the UML and MOF metamodels and XMI interchange format written in C++. Decoupling of the metamodel from the visual representation allows the development of applications that target the analysis and manipulation of UML/MOF models without needing a heavy weight user-interface component.

Open Source Contributions

Boost C++ Libraries

As maintainer of the Boost.Graph libary (BGL), I oversee its maintenance, evolution, and releases. I have also contributed work to the Boost.Random library and the Boost.Math library (pending and in Boost sandbox).

Clang

A front-end parser parser for C, C++, Objective-C, and Objective C++. I have contributed to the parsing and AST representation of templates for C++.