CSci 658: Software Language Engineering
Introduction to Patterns

H. Conrad Cunningham

6 February 2018

Acknowledgements: These slides are adapted from 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.

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]

  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]

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]

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