CSci 658: Software Language Engineering
Introduction to Patterns

H. Conrad Cunningham

8 February 2018

Acknowledgements: These slides are based partially on my notes titled “Introduction to Patterns”. The original version of these slides (in Powerpoint) was supported by a grant from the Acxiom Corporation titled “The Acxiom Laboratory for Software Architecture and Component Engineering (ALSACE)” in 2004. The research team consisted of Dr. Conrad Cunningham, PhD students Yi Liu and Pallavi Tadepalli, and MS students Mingxian Fu and Hui Xiong.

Advisory: The HTML version of this document may require use of a browser that supports the display of MathML. A good choice as of February 2018 is a recent version of Firefox from Mozilla.

Approach

Concept of Design Pattern

Pattern

Characteristics of Patterns (1)

Characteristics of Patterns (2)

Description of Pattern

[Buschmann 1996] approach. Others differ in structure but have same purpose.

  1. Context

  2. Problem

  3. Solution

Description of Pattern: Context

Description of Pattern: Problem

Description of Pattern: Solution

Categories of Patterns

  1. Architectural patterns

  2. Design patterns

  3. Idioms

Architectural Pattern

“An architectural pattern expresses a fundamental structural organization schema for software systems. It provides a set of predefined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them” [Buschmann]

Architectural Pattern Examples

From [Buschmann 1996] unless otherwise noted

Design Pattern

“A design pattern provides a scheme for refining the subsystems or components of a software system, or the relationships between them. It describes a commonly-recurring structure of communicating components that solves a general design problem within a particular context” [Buschmann]

Design Pattern Examples (1)

Names from [Gamma 1995] unless otherwise noted

Design Pattern Examples (2)

Design Pattern Examples (3)

Idiom

“An idiom is a low-level pattern specific to a programming language. An idiom describes how to implement particular aspects of components or the relationships between them using the features of the given language” [Buschmann]

References

[Buschmann 1996]
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. Pattern-Oriented Software Architecture: A System of Patterns, Wiley, 1996.
[Gamma 1995]
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley, 1995.
[Shaw 1996a]
Mary Shaw. Some Patterns for Software Architecture, In John M. Vlissides, James O. Coplien, and Norman L. Kerth, editors, Pattern Languages of Program Design 2, Addison Wesley, 1996, pages 255-270. [local]
[Shaw 1996b]
Mary Shaw and David Garlan. Software Architecture: Perspectives on an Emerging Discipline, Prentice-Hall, 1996
[Woolf 1997]
Bobby Woolf. Null Object, In Robert Martin, Dirk Riehle, and Frank Buschmann, Pattern Languages of Program Design 3, Addison-Wesley, 1997.