This is a project I did for my CS 706 class. For the project, I created a system that extracts information about Java programs from .class files. The information is placed in a program model, making it possible to evaluate queries about the program being analyzed. I used the ability to write queries about Java programs to create design pattern implementation checkers for many of the design patterns in the classic GOF (Gang Of Four) Design Patterns book. After completing the project, I wrote a research paper describing the project entitled: "A System for Querying Program Models to Discover Design Pattern Implementation Mistakes". The abstract for the paper as well as the complete .pdf document are below.



Design patterns are an abstraction that can provide guidance in creating software. However, the adherence of design pattern implementations to design pattern descriptions is typically not enforced. While guaranteeing perfect adherence of an implementation is impossible for many non-trivial patterns given their subjective nature, many flaws can be discovered by making simple assertions about an implementation.


Complete Document

Click here to get the full research paper.