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.
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.
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.
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).