ICARIA/SPRITE
ICARIA is a suite of source code analysis tools and libraries for the C programming language including sprite, a program slicing tool for isolating faults in programs by indicating all lines that may have led to a variable having an incorrect value, cgraph, a call graph extractor for showing the relationships between functions, including those called through function pointers, and cawk, a syntactic pattern matcher for displaying or processing all parts of a program matching a given pattern.
To the best of my knowledge, only four whole-program slicing tools for C exist: Sprite, CodeSurfer from GrammaTech, Unravel from NIST, and VALSOFT by Jens Krinke. Sprite is a research prototype that is free is use and modify (which many people have done). CodeSurfer is a commercial tool, and Unravel is available for download from NIST.
The latest update to ICARIA was made on March 22nd, 2006. Major changes to ICARIA were made including numerous bug fixes that caused lots of fatal errors and improvements in the points-to analysis algorithms and the call graph extractor, which is now consistent with recent publications. As of January 2007, ICARIA and PONDER are no longer being actively maintained or supported, not that there ever was that much support to begin with.
- ICARIA version 4.0 (requires PONDER version 1.3.1 or 1.3)
- ICARIA version 3.0 (requires PONDER version 1.3)
- ICARIA version 2.0 (requires PONDER version 1.2)
- ICARIA version 1.2.3 (requires PONDER version 1.1.1)
PONDER/TAWK
PONDER is a suite of libraries comprising a highly efficient, programmable, retargetable, program understanding toolkit, including tawk, a syntactic source code pattern matching engine, sloth, a preprocessor for yacc that facilitates building abstract syntax trees, and generic abstract syntax tree and symbol table data types.
PONDER is usually used along with ICARIA. SAIC wanted the rights to the tool that I was building for them as a graduate student, but UCSD disagreed, so the compromise was that SAIC would have exclusive rights to use the MUMPS language specific components (PERICLES), but not the language independent components (PONDER).
The last change to PONDER was made March 22nd, 2006. Minor changes were made to bring it up to date with newer versions of the GNU autoconf suite and to accommodate compiling under Mac OS X.
PMLCHECK
PMLCHECK is a model checker for PML, a process modeling language designed by John Noll. The tool was developed by Dan Weeks as part of his Master's theses, and based on the lexical analyzer and parser that I had previously built. It can find resources that are required by a step in a process but which are never provided by any prior steps (i.e., starvation) as well as resources that are provided by a step but which are never required by later steps.
FElt
FElt is an easy-to use, interactive, open source system for finite element analysis developed by Jason Gobat and myself while we were undergraduates. It is designed primarily for teaching purposes and for solving structural engineering problems, since our main motivation at the time was to replace the clunky software that Jason had to use in his classes at UCSD. We developed it in our spare time, before open source projects became trendy. It is used a lot for teaching purposes, especially in Europe, where obtaining a package like ANSYS is just not practical.