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.