Recovering design patterns can enhance existing source code analysis tools by bringing program understanding to the design level. This dissertation presents a new, fully automated pattern detection approach based on our reclassification of the GoF patterns by their pattern intent. We argue that the GoF pattern catalog classifies design patterns in the forward-engineering sense; our reclassification is better suited for reverse engineering. Our approach uses lightweight static program analysis techniques to capture program intent. This dissertation also describes our tool, PINOT, that implements this new approach. PINOT detects all the GoF patterns that have concrete definitions driven by code structure or system behavior. PINOT is faster, more accurate, and targets more patterns than existing pattern detection tools. PINOT has been tested against several benchmark applications, including Apache Ant, Java AWT, JHotDraw, and Swing. Since PINOT has proven successful, we extend PINOT to recognize a broader range of design patterns. This dissertation describes our pattern detection language, MUSCAT, that allows users to define and analyze their own design patterns using the PINOT engine. MUSCAT is a visual language that allows users to model program intent by specifying both the structural- and behavioral-aspects of a design pattern. This dissertation evaluates MUSCAT and discusses the trade-offs between effectiveness and flexibility.Our future work with PINOT includes: upgrading PINOT to recognize the latest version of the Java language, extending PINOTa#39; s recognition ... There have been discussions  on exposing the AST of the source code through the Java API.
|Title||:||Reverse Engineering of Design Patterns from Java Source Code|
|Publisher||:||ProQuest - 2007|