Hot Topic - Patterns for Software Architecture

Introduction

Many authors cite the development of better software architecture as one of the key elements in improving the practice of software development. This is especially true for large-scale systems.

The intent of the workshop is to describe how software patterns relate to software architecture, organize the existing architecture patterns in to categories, and identify missing patterns for software architecture.

Topic Overview

In 1996 the POSA1 book defines an architecture pattern as: "expressing 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."[1] The 1996 POSA1 book describes 8 architectural patterns that mostly follow this definition. The Patterns Almanac [2] lists 79 architectural patterns. Not all of these patterns meet the POSA1 definition. There is also a body of related work on component design patterns.

There are many open questions about how patterns are best applied to the practice of software architecture. These include classifications of which patterns are "architecturally significant", how to effectively use patterns in the development of an architecture, and how various architecture patterns are related.

Some questions that the group will attempt to address include:

  • How is this list of patterns related to the actual needs of a software architect/development team?
  • Are all of these architectural patterns?
  • How to handle large systems that use many architectural patterns together?
  • What is the relationships between and classifications of these patterns?
    • example: layering patterns
    • example: component patterns
  • What architecture patterns are missing?
    • example: patterns for reuse/integration of off-the-shelf architectures (CORBA, JavaBeans, etc)
    • example: runtime organization patterns
  • How do we effectively document the use of patterns in the architecture?
  • What is the relationship between patterns and component designs that are often used to develop architectures?

Workshop Agenda, Goals, & Output

As a starting agenda, we will discuss the at least some of the following topics:

  • discuss use of patterns in the development of software architectures
  • discuss architecture patterns
    • discuss the definition of an architectural pattern
    • clarify existing patterns relationship to software architectures
    • organize patterns into groupings
    • map relationships between the patterns
    • brainstorm missing architecture patterns
Since this is the beginning of a broad discussion of this topic, the workshop is likely to uncover additional areas of exploration.

The desired output of the workshop will be as follows. The goal will be to capture the workshop results in a Wiki which can be used to continue the discussion after the workshop is completed.

  • definition for categorization of a pattern as an architecture pattern (perhaps same as POSA1, perhaps not)
  • a list of missing architecture patterns that need to be developed
  • a map of classifications of architecture patterns
  • a diagram of relationships between architecture patterns
  • a list of suggestions for application of patterns to architecture

Expected Participants

Ideally 4-8 practicing software architects and developers that are familiar with at least some of the architectural patterns, development of software architectures, and application of patterns.

Workshop Organizer

      Jeff Garland
      President & CTO
      CrystalClear Software, Inc
      Phoenix, Az
      email
      

References

[1] Buschmann, F, et. al., "Pattern-oriented Software Architecture - A system of Patterns", Wiley, 1996, p. 25.

[2] Rising, L., "The Pattern Alamanc 2000", Addison-Wesley, 2000.