I have to write an overview on "What is architecture" for an upcoming website that we are working on and so went out to look at some definitions. The first I remembered was one I used in an old overview of Enterprise Architecture that I wrote in 2002 which is still up on MSDN (abet very well hidden).
The definition of an architecture used in ANSI/IEEE Std 1471-2000 is: "the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution."
Strangely enough this seemed a bit vague and limiting at the same. Over to my favourite Wikipedia which has the following different definitions:
None of these really had what I was looking for so I came up with the following short definition:
Architecture is the use of abstractions and models to simplify and communicate complex structures and processes to improve understanding and forecasting.
This seemed to wrap up all the above definitions and cover off all the bases. Interestingly it also works for all the other architecture types that are out there however, as is common with my writings is brief to the point of non comprehensibility so I wrote the following long definition:
Architecture is the use of sets of abstractions and models of a environment, problem space or domain, either physical or logical, with a set of associated views into that domain to provide:
I think that about covers it. Note that the whole area is self defining and recursive. I still like the short definition though.
I like the fact that you define architecture not as an artefact (organization, representation, description, structure) but as a practice (the use of ...).
So when you refer to future architectures, I hope this means future architectural directions and practices, and not just future artefacts.
I would change it slightly:
"...abstractions, models, and industry best practices...".
A key element of architecture is to apply lessons from past projects. In the civil engineering world, especially, it's important not to reinvent the wheel when well-defined requirements and best practices have been established.
Agree totally, learning from history is something we do far too little of in IT.
I like it - it does what it describes to the long winded 8¬) wording below, abstracts it to simplify and communicate, and leaves me with a picture in my mind of what Architecture is all about.
Of course they do!! Craig blogged about my architecture definition and said that my definition didn't...
Arrgh, yet again I have been drawn into the "what is an architect" discussion! I knew it was a mistake...
I found quite a good definition of what a software architect has to do in the audio commentary of one of the Lord of the Rings movies. Peter Jackson described how the script always changed just days or hours before shooting and he compared the script writers to someone who "ferociously lays down tracks in front of a running train".
Software architects must ensure that their train (software project) goes in the right direction by laying down the tracks, that it stays on the rails and that it arrives at the destination in time. Passengers (programmers, managers, ...) have to feel comfortable and safe. The train should run smoothly, even in hard weather.
For me an architecture is a mix of a science, engineering and marketing. First an architect must understand why there is some kind of a problem. Then an architect must understand how to solve the problem and how to implement the solution. And last but not least the architect must promote and sell the outcome of the previous stages and predict new trends.
So, your short version definition fits rather well! I maybe would add a goal part by adding for example:
Architecture is the use of abstractions and models to simplify and communicate complex structures and processes to improve understanding, implementation and forecasting.
PingBack from http://www.agilecases.com/2006/04/01/michael-platts-weblog-what-is-architecture-a-definition/
PingBack from http://www.chanduonline.com/2006/03/31/linkblog-for-friday-31-march-2006/
&nbsp;What is a software architecture? &nbsp;http://www-128.ibm.com/developerworks/rational/library/feb06/eeles/index.html...