I still content that you implement the model (a representation of the design), not the architecture. But the term "architecture" is frequently overloaded -- especially in IT. I often hear people use the terms "architecture", "blueprint", and "model" interchangeably.
Steve described it as: Architecture = conceptual model Design = logical model Implementation = physical model which kinda puts it into the right taxomony, except that architecture is not a model. Wikipedia describes "software architecture" [1] thus: The *software architecture* of a program or computing system is the
structure or structures of the system<http://en.wikipedia.org/wiki/Software_system>, which comprise software components, the externally visible properties of those components, and the relationships between them.
Wikipedia also has this to say about "architecture" [2] : By extension, the term "architecture" has come to denote the art<http://en.wikipedia.org/wiki/Art>and
discipline <http://en.wikipedia.org/wiki/Discipline> of creating an actual, or inferring an implied or apparent plan of any complex object or system <http://en.wikipedia.org/wiki/System>. The term can be used to connote the *implied architecture* of abstract things such as music<http://en.wikipedia.org/wiki/Music>or mathematics <http://en.wikipedia.org/wiki/Mathematics>, the *apparent architecture* of natural things, such as geological<http://en.wikipedia.org/wiki/Geology>formations or the structure of biological cells <http://en.wikipedia.org/wiki/Structural_biology>, or explicitly *planned architectures* of human-made things such as software<http://en.wikipedia.org/wiki/Software>, computers <http://en.wikipedia.org/wiki/Computers>, enterprises<http://en.wikipedia.org/wiki/Enterprise_architecture>, and databases <http://en.wikipedia.org/wiki/Database>, in addition to buildings. In every usage, an architecture may be seen as a *subjective mapping <http://en.wikipedia.org/wiki/Map_%28mathematics%29>* from a human perspective (that of the *user* in the case of abstract or physical artifacts) to the elements<http://en.wikipedia.org/wiki/Element_%28mathematics%29>or components <http://en.wiktionary.org/wiki/component> of some kind of structure <http://en.wikipedia.org/wiki/Structure> or system, which preserves the relationships among the elements or components.
Both of these definitions seem to focus on system structure, the systems components, and the relationships among system components. The second definition goes a bit deeper and talks about creating a "plan". Things get a bit murkier when you next look at the definition of "design" [3]: *Design*, usually considered in the context of the applied arts<http://en.wikipedia.org/wiki/Applied_art>,
engineering <http://en.wikipedia.org/wiki/Engineering>, architecture<http://en.wikipedia.org/wiki/Architecture>, and other such creative <http://en.wikipedia.org/wiki/Creativity>endeavors, is used both as a noun <http://en.wikipedia.org/wiki/Noun> and a verb<http://en.wikipedia.org/wiki/Verb>. As a verb, "to design" refers to the process of originating and developing a plan <http://en.wikipedia.org/wiki/Planning> for a product, structure, or component. As a noun, "a design" is used for both the final (solution) plan <http://en.wikipedia.org/wiki/Plan> (e.g. proposal, drawing, model, description) or the result of implementing that plan (e.g. object produced, result of the process).
So I have to ask: What is the difference between "architecture" and "design"? I was disappointed not to find an entry for "design principle".Next I looked up "architectural style" [4]: *Architectural styles* classify architecture<http://en.wikipedia.org/wiki/Architecture>in terms of
form <http://en.wikipedia.org/wiki/Form>, techniques<http://en.wikipedia.org/wiki/Technique>, materials <http://en.wikipedia.org/wiki/Materials>, time period, region, etc. It overlaps with, and emerges from the study of the evolution and history of architecture. In architectural history<http://en.wikipedia.org/wiki/Architectural_history>, the study of Gothic architecture<http://en.wikipedia.org/wiki/Gothic_architecture>, for instance, would include all aspects of the cultural context that went into the design and construction of these structures. Architectural style is a way of classifying architecture that gives emphasis to characteristic features of design, leading to a terminology such as Gothic "style".
In my definitions of SOA, I always refer to it as a style of design, and I think this last definition fits closest to the way I think about SOA -- it is a way of classifying software architecture to give emphasis to characteristic features of design -- i.e., design principles, or in a more specific application architectural style (such as REST), constraints. [1] http://en.wikipedia.org/wiki/Software_architecture [2] http://en.wikipedia.org/wiki/Architecture [3] http://en.wikipedia.org/wiki/Design [4] http://en.wikipedia.org/wiki/Architectural_style (Not that Wikipedia is a dependable source of truth, but I think these definitions are helpful to the discussion.) Anne On 7/4/07, jeffrschneider <[EMAIL PROTECTED]> wrote:
> * Many, many people whose opinions I respect often say "SOA > implementation." I have a long held belief that architectures > aren't "implemented." But perhaps I need to let that view go. > > I'm quite interested in hearing other points of view. > > -Rob > Rob, What term do you use to describe what happens after an architectural model is created? Some people might say they're going to "build it", "realize it", "construct it", "implement it", etc. If the system is made of a bunch of services, the same holds true. I think that the only point they're trying to make is that they're taking the concept off of the white board and moving it to the next stage of realization. Jeff
