Exploring SOA patterns and design pattern language

This excerpt from "Principles of Service Design" defines the terms "design pattern" and "design pattern language" and explains how these two concepts can provide solutions for common design problems.

SOA patternsSOA patterns and design pattern language

We've established that service-orientation is a design paradigm comprised of a set of design principles, each of which provides a generalized rule or guideline for realizing certain design characteristics. The paradigm itself sounds pretty complete, and it actually is. However, to successfully apply it in the real world requires more than just a theoretical understanding of its principles.

Service designers will be regularly faced with obstacles and challenges when attempting to apply a design paradigm because the realization of desired design characteristics is frequently complicated by various factors, including:

  • Constraints imposed by the technology being used to build and/or host the units of solution logic.
  • Constraints imposed by technology or systems that reside alongside the deployed units of solution logic.
  • Constraints imposed by the requirements and priorities of the project delivering the units of solution logic.

A design pattern describes a common problem and provides a corresponding solution (Figure 3.4). It essentially documents the solution in a generic template format so that it can be repeatedly applied. Knowledge of design patterns not only arms you with an understanding of the potential problems designs may be subjected to, it provides answers as to how these problems are best dealt with.

Figure 3.4

design pattern

SOA patterns provide recommended solutions for common design problems. In this simplified example, a pattern suggests we reduce external access to a database to increase application autonomy.

Design patterns are born out of experience. Pioneers in any field had to undergo cycles of trial and error and by learning from what didn't work, approaches that finally did achieve their goals were developed. When a problem and its corresponding solution were identified as sufficiently common, the basis of a design pattern was formed. Design patterns can be further combined into compound patterns that solve larger problems and a series of patterns can form the basis of a pattern language, as explained next.

Design Pattern Language

The application of one design pattern can raise new issues or problems for which another pattern may be required. A collection of related patterns can establish a formalized expression of a design process whereby each addresses a primary decision point. Combining patterns in this manner forms the basis of a pattern language.

A pattern language is essentially comprised of a chain of related design patterns that establish a configurable sequence in which the patterns can be applied (Figure 3.5). Such a language provides a highly effective means of communicating fundamental aspects of a given design approach because it supplies detailed documentation of each major step in a design process that shapes the design characteristics of solution logic.

Figure 3.5

pattern language

A sequence of related design patterns formalize the primary decision points of a design paradigm. In this example, the logic in application design B is decomposed as a result of one pattern, and then further decomposed as a result of another. Subsequent fundamental SOA patterns continue to shape the logic.

Use the following table of contents to navigate to chapter excerpts.

SOA: Principles of Service Design
  Home: Service-oriented computing and SOA: Introduction
  1: Design fundamentals: Design characteristics
  2: Design fundamentals: Design principles
  3: Design fundamentals: Design pattern and design pattern language
  4: Design fundamentals: Design standard
  5: Design fundamentals: Best practices
  6: Introduction to service-oriented computing
  7: Service oriented architecture
  8: Service compositions
  9: Understanding service oriented computing elements
  10: Entity services
  11: Web services and service oriented computing
  12: Service inventory blueprints
  13: Service-oriented analysis and service modeling
  14: Service-oriented design
  15: Goals and benefits of service-oriented computing
  16: Increased intrinsic interoperability
  17: Increased federation
  18: Increased vendor diversification options
  19: Increased business and technology domain alignment
  20: Increased ROI
  21: Increased organizational agility
  22: Reduced IT burden

SOA: Principles of Service Design is dedicated to service engineering and establishing service-orientation as a design paradigm. This hands-on manual for service design establishes concrete links between specific service-orientation design principles and the strategic goals and benefits associated with SOA. Purchase the book from Amazon.com.
Thomas Erl is the world's top-selling SOA author, Series Editor of the "Prentice Hall Service-Oriented Computing Series and editor of The SOA Magazine. His books have become international bestsellers and have been formally endorsed by senior members of major software organizations such as IBM, Microsoft and Oracle. He is the founder of SOA Systems Inc., a company specializing in SOA training, certification and strategic consulting services with a vendor-agnostic focus.


Dig Deeper on IT systems integrators