Patterns for Software Architectures

By: M. Shaw
Published in: PLoPD1
Pages: 453-462
Category: Architectural

Summary: Architectural patterns. Continued in [Shaw96].

Pattern: Pipeline

Pages: 455

Apply when a series of independent computations are to be performed on ordered data, particularly when the computations can be performed incrementally on a data stream. The computations or filters incrementally transform one or more input streams to one or more output streams.

Pattern: Data Abstraction or Object-Oriented

Pages: 455

Data representations and their associated primitive operations are encapsulated in an abstract data type or object. The components of this architecture are instances of abstract data types or objects.

Pattern: Implicit Invocation or Event-Based

Pages: 456

Components typically interact by announcing or broadcasting one or more events. Other components can register an interest in an event by associating a procedure with it. When the event is announced, the system invokes all registered procedures.

Category: Architectural, Event-Driven Systems

Pattern: Repository

Pages: 456

There are two kinds of components: a central data structure that represents the current state, and a collection of independent components that operate on the central data structure.

Pattern: Interpreter

Pages: 456

This solution generally has four components: (1) an interpretation engine to do the work; (2) the pseudocode to be interpreted; (3) the control state of the interpretation engine; and (4) the current state of the program being simulated.

Pattern: Main Plus Subroutines

Pages: 456

Architectures implemented in languages without support for modularization usually result in a main program and a collection of subroutines. The main program is a driver, typically providing a control loop for sequencing the subroutines.

Pattern: Layered Architecture

Pages: 457

Suitable for applications with distinct classes of services that can be arranged hierarchically.