Return to Home Page

The public review of the manuscript for "SOA Design Patterns" has concluded !
Thank you to all that participated. 234 reviews were received and over 30 new patterns have been contributed,
increasing the size of this book by over 50%. The second draft of the manuscript is currently in development.

About the Public Review
    History
    Podcasts (audio)
    Notification
    Submit Feedback
    Contribute a Proven Pattern
    Contribute a Candidate Pattern
    Acknowledgements
    Press Release

Introduction to SOA Types & Design Patterns
    The Architecture of
Service-Orientation
    Understanding SOA
Design Patterns

SOA Design Patterns
    Basic Service Inventory Design Pattern Language
    Architectural Design Patterns
    Basic Service Design
Pattern Language
    Service Design Patterns
    Common Compound
Design Patterns

Additional Resources
    View Entire TOC
    Symbol Legend
    Master Pattern List
(by category)
    Candidate Design Patterns
    Design Patterns Publications
    Download SOA Principles Poster (PDF)

About the Book



SOA Design Patterns
by Thomas Erl

For more information visit: www.soapatterns.com

Related Publications


Read the article "Introducing SOA Design Patterns" from the
June 2008 SOA World Magazine (High-Res PDF).

PLEASE NOTE

The content on this page is from the first draft of the manuscript for the upcoming book "SOA Design Patterns" by Thomas Erl. This version of the manuscript was authored in September, 2007. Since then, the manuscript has undergone significant content and structural changes as a result of an industry-wide review in which hundreds of SOA practitioners participated in addition to SOA vendors and experts from the design patterns community.

You are welcome to use the information on this page for research purposes, but you should assume that most of it will change in the final release of the "SOA Design Patterns" book.

Note also, that as a result of an industry-wide call for participation from December 2007 to February 2008, over 30 new design patterns have been contributed to this book. As they become finalized and are incorporated by the author, concise descriptions will be published on this site, and full descriptions with examples will be made available in the final, printed book.

Due to the volume of new content and changes, the release of the "SOA Design Patterns" book has been postponed to October, 2008. To learn more about the book, visit www.soapatterns.com. To be notified of updates to this site, use the notification form.

Chapter 4: Understanding SOA Design Patterns

Home > Chapter 4 Overview > 4.1 Fundamental Design Terminology
4

4.1 Fundamental Design Terminology

WhatŐs a Design Pattern?

The simplest way to describe a pattern is that it provides a proven solution to a common problem individually documented in a consistent format and usually as part of a larger collection.

The notion of a pattern is already a fundamental part of everyday life. Without acknowledging it each time, we naturally use proven solutions to solve common problems each day. For example, a hammer can be used to repeatedly solve a common problem in that it allows us to insert a nail into wood more effectively than other tools. We might further solve another problem by using a saw to cut a piece of wood to an appropriate size.

Patterns in the IT world tend to revolve around the design of automated systems, which is why they are referred to as design patterns.

Design patterns are helpful because they:

     represent field-tested solutions to common design problems

     organize design intelligence into a standardized and easily consumable format

     are generally repeatable by anyone

     can be used to ensure consistency in how systems are designed

     can become the basis for design standards

     are usually flexible and optional (and openly document the impacts of their application and even suggest alternative approaches)

     can be used as educational aids by documenting specific aspects of system design (regardless of whether they are applied)

     can sometimes be applied prior and subsequent to the implementation of a system

     can be supported via the application of other design patterns that are part of the same collection

Furthermore, because the solutions provided by design patterns are proven, their consistent application tends to naturally improve the quality of system designs.

LetŐs provide a simple example of a (non SOA-related) design pattern:

Problem: How can users be limited to entering the value of a form field to a set of predefined values?

Solution: Use a drop-down list populated with the predefined values as the input field.

What this example also highlights is the fact that the solution provided by a given pattern may not necessary represent the only suitable solution for that problem. In fact, there can be multiple patterns that provide alternative solutions for the same problem. Each solution will have its own requirements and consequences, and it is up to the practitioner to determine which pattern is most appropriate.

In the previous example, a different solution to the stated problem would be to use a listbox instead of a drop-down list. This alternative would form the basis of a separate design pattern description. The user-interface designer can study and compare both patterns to learn about the benefits and trade-offs of each. A drop-down list, for instance, takes up less space than a list box, but requires that a user always perform a separate action to access the list. Because a list box can display more field lines at the same time, the user may have an easier time locating the desired value.

WhatŐs a Design Pattern Language?

A pattern language is a set of related patterns that act as building blocks in that they can be carried out in one or more predefined or suggested sequences where each subsequent pattern builds upon the former. As explained shortly in the Historical Influences section, the notion of a pattern language originated in building architecture as did the term "sequence" used in association with the order in which patterns can be carried out.

Some pattern languages are multi-directional, allowing patterns to be combined into a variety of sequences, while others are more structured whereby groups of patterns are presented in a suggested order. This order is generally based on the granularity of the patterns, in that coarser grained patterns are applied prior to finer-grained patterns that then build upon or extend the foundation established by the coarser-grained patterns. In these types of pattern languages, the manner in which patterns can be organized into sequences is limited to how they are applied within the groups.

Structured pattern languages are helpful because they:

     can organize groups of field-tested design patterns into proposed, field-tested application orders

     ensure consistency in how particular design goals are achieved (because by carrying out sets of inter-dependent patterns in a proven order, the quality of the results can be more easily guaranteed)

     are effective learning tools that can provide insight into how and why a particular method or technique should be applied as well as the effects of its application

     provide an extra level of depth in relation to pattern application (because they document the individual patterns plus the cumulative effects of their application)

     are flexible in that the ultimate pattern application sequence is up to the practitioner (and also because the application of patterns can be optional)

The two pattern languages documented in Chapters 5 and 7 of this book are comprised of basic design patterns that are structured into groups organized into a recommended application order. As a result, each establishes what can be considered a "primitive design process."

WhatŐs a Design Pattern Catalog?

A design pattern catalog is simply a documented collection of related design patterns. This book can be considered a catalog for design patterns associated with SOA and service-orientation.

Other Design-Related Terms

SOA Design Patterns is part of the Prentice Hall Service-Oriented Computing Series from Thomas Erl, a book series that includes several titles dedicated to service-oriented solution design. As already introduced in Chapter 3, a formal design framework has been established to ensure that key terms are used consistently throughout all titles. This abstract design framework includes the following additional terms:

     Design Characteristic

     Design Principle

     Design Paradigm

     Design Standard

     Best Practice

To avoid having to publish the definitions for these terms redundantly across multiple books, they have been made available as part of the online master glossary at SOAGlossary.com.

Prev | Next
The Prentice Hall Service-Oriented Computing Series from Thomas Erl
Home    SOA Books    SOA Magazine    What is SOA?    SOA Principles    SOA Methodology    SOA Glossary Copyright © 2007-2008
SOA Systems Inc.