Description of a Reference Architecture

A reference architecture is a description of how to build a class of artifacts. An architecture describes how to build a particular artifact. The appropriate way to write the description for a reference architecture depends on the particular artifact. For example, one could describe the properties of the artifact. Another way is to write a set of steps (e. g. a recipe) for building the artifact. You could decompose the artifact to an appropriate number of components and subcomponents.

The SOA reference architecture (RA) provides a bridge between the concepts and vocabulary defined by the SOA Reference model and the implementation of a SOA. The SOA reference architecture models the abstract architectural elements for a SOA independent of the technologies, protocols, and products that are used to implement a SOA. Some sections of the RA will use common abstracted elements derived from several standards. The OASIS RA for SOA uses the machine metaphor to describe how to build a SOA. The machine metaphor describes the various components that make up the machine, and the interactions among these components.

How can we describe the components of the machine? Patterns are the best way to describe the components of the machine. Each pattern represents a solution to a particular recurring problem that has to be solved if the machine is to be built. For each component of the machine we can list multiple possible patterns (implementations). A particular pattern for a particular component may impose constraints on another pattern in another component (i.e. another possible implementation of the component).

By listing the patterns that are potential implementations of the components we can describe the RA at the appropriate level of description for a particular purpose. The more concrete the pattern, the closer you get to the an actual architecture for building a particular SOA. But the patterns of the various components of the machine may not be at the same level of abstraction.

Using the pattern approach the SOA Reference Architecture is a means for generating other more specific reference architectures, or even concrete architectures depending on the nature of the patterns. Or to put it another way, it is a machine for generating other machines.

To illustrate what I mean I have two analogies. This first analogy uses the machine metaphor. The second is an architectural analogy. It is inspired in general by the Housing Example in the RM, and uses the work of Christopher Alexander in such books as "A Pattern Language", and "The Oregon Experiment".

Machine Analogy

Suppose we are building a machine such as a car. At the most abstract level a car needs:

Each part of the machine must state what basic problem it seeks to solve, and how it interacts with the other parts of the machine. For example, the means of propulsion needs some way to connect to the moving mechanism. Depending on how you place the other components you will have more or less room for passengers or storage.

Let us consider one particular part of the car: the means of propulsion.

Here are some patterns for generating power (http://www.keveney.com/Engines.html)

Each of these patterns can be made more concrete:

Each of those patterns can be made even more concrete by designing them for particular cars.

For each pattern you have to specify its context, the advantages and disadvantages of this pattern, any related patterns and restrictions it places on other patterns.

For the Internal Combustion Engine Pattern

Architectural Analogy

When building one needs a common language to express what is being done. The elements of this language are patterns. Each pattern describes a recurring problem and a particular solution for it. Patterns have connections between them. Some patterns cannot be used with other patterns. Other patterns require the use of certain other patterns. The pattern expresses a solution to a certain problem. Let us use some examples provided by Christopher Alexander in "A Pattern Language" he describes a lattice of patterns.

One of the patterns is called "Accessible Green". The idea is that people need open green spaces close to where they live and work. The book describes in great detail how to build such green spaces, that is not important to us right now. What is important is how this pattern is related to other patterns. Building an "Accessible Green" is one of several ways of providing places for people to relax and renew themselves. Other such patterns allow for "Pools and Streams", "Small Public Squares", "Holy Grounds" (churches and temples), etc. These are all possible patterns that can be used to solve the same problem.

But you do not use the "Accessible Green" in isolation. "Accessible Greens" provide demarcations for "Identifiable Neighborhoods". "Identifiable Neighborhoods" is one possible pattern for providing subdivisions of larger city patterns. The "Identifiable Neighborhoods" pattern might conflict with the "Subcultures" pattern which is used to encourage different lifestyles and communities.

"Accessible Greens" is implemented by several possible patterns such as "Positive Outdoor Space", "Tree Places", and "Garden Wall". These possible implementation patterns are mentioned in the discussion of "Accessible Greens".

"Positive Outdoor Space" means paying conscious attention to how buildings are spaced so that those spaces can be used constructively and are not just "left over". "Tree Places" means to put trees in meaningful patterns such as umbrellas, groves, or avenues. "Garden Wall" means to protect public spaces from noise and other disturbances through appropriate landscaping or walls. Of course these patterns conflict with the "Garden Growing Wild" pattern."

The Reference Architecture is the collection of patterns and their relationships. They describe a way of generating several possible solutions without concretely describing a single solution to a problem. At some level this resembles a master plan for a particular neighborhood or school.

Question: one difficulty in describing patterns here is that patterns usually arise from experience of creation. Do we yet have enough experience with SOA to reasonably describe such patterns?

What_Is_A_Reference_Architecture? (last edited 2009-08-12 18:05:13 by localhost)