Master's thesis, McMaster University, Hamilton, Ontario, Canada, June, 2004. Paper abstract bibtex
This study introduces a formal abstract notation to describe precisely structural and behavioral aspects of design patterns. A pattern description is constructed based on the book of Gamma et al., and is refined through analyzing carefully selected example implementations. Example implementations come from existing large real-world programs. Produced pattern descriptions can be used to check the compliance of other instances with intended patterns. It is also shown that for some patterns, even the combined structural and behavioral descriptions are not enough to capture the essence of a pattern. An invariant has to be introduced to complement the pattern description. Based on components needed to describe patterns, they can be classified into structure-based patterns, behavior-based patterns, and invariant-based patterns. The latest require the most comprehensive description and are the focus of this study. As a very detail-rich pattern, Iterator is selected as an example to apply the complete process on it. Invariants are also introduced for three other patterns to show that the need for invariants is not limited to one pattern. The study shows that differentiating design patterns in their formal abstract notation is easier and more precise than when done based on class diagrams and natural language descriptions. Also, the process of establishing a pattern description can itself give a better insight about the essence and details of the described pattern.