What is Architecture: a Definition
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:
- 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. From ANSI/IEEE 1471-2000.
- The composite of the design architectures for products and their life cycle processes. From IEEE 1220-1998 as found at their glossary.
- A representation of a system in which there is a mapping of functionality onto hardware and software components, a mapping of the software architecture onto the hardware architecture, and human interaction with these components. From the Carnegie Mellon University's Software Engineering Institute as found at its glossary.
- An allocated arrangement of physical elements which provides the design solution for a consumer product or life-cycle process intended to satisfy the requirements of the functional architecture and the requirements baseline. From The Human Engineering Home Page's Glossary.
- An architecture is the most important, pervasive, top-level, strategic inventions, decisions, and their associated rationales about the overall structure (i.e., essential elements and their relationships) and associated characteristics and behavior. From OPEN Process Framework (OPF) Repository.
- A description of the design and contents of a computer system. If documented, it may include information such as a detailed inventory of current hardware, software and networking capabilities; a description of long-range plans and priorities for future purchases, and a plan for upgrading and/or replacing dated equipment and software. From The National Center for Education Statistics glossary.
- A formal description of a system, or a detailed plan of the system at component level to guide its implementation. TOGAF
- The structure of components, their interrelationships, and the principles and guidelines governing their design and evolution over time. TOGAF
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:
- Simplification and management of complexity in all it's forms (structural, procedural or informational), in particular the management, understanding and integration of the business and technical domains.
- Communication and common understanding of the problem space to multiple stakeholders from widely different environments by the use of multiple domain specific views of the architectural model.
- Completeness and relationship analysis of proposed solutions in the problem space or domain by examining the models and architectures from multiple differing viewpoints for incompleteness and gaps.
- Forecasting and predicting future architectures, strategies, structures, patterns, relationships and technologies in the business and technical space by extrapolation of present abstractions and models.
I think that about covers it. Note that the whole area is self defining and recursive. I still like the short definition though.
Comments
- Anonymous
January 01, 2003
PingBack from http://www.chanduonline.com/2006/03/31/linkblog-for-friday-31-march-2006/ - Anonymous
January 01, 2003
PingBack from http://www.agilecases.com/2006/04/01/michael-platts-weblog-what-is-architecture-a-definition/ - Anonymous
January 01, 2003
 What is a software architecture?  http://www-128.ibm.com/developerworks/rational/library/feb06/eeles/index.html... - Anonymous
January 01, 2003
Arrgh, yet again I have been drawn into the "what is an architect" discussion! I knew it was a mistake... - Anonymous
January 01, 2003
Of course they do!! Craig blogged about my architecture definition and said that my definition didn't... - Anonymous
March 28, 2006
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. - Anonymous
March 28, 2006
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. - Anonymous
March 28, 2006
Agree totally, learning from history is something we do far too little of in IT.
ike - Anonymous
March 29, 2006
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. - Anonymous
March 30, 2006
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.
Mike - Anonymous
March 30, 2006
Like that!
Mike - Anonymous
March 31, 2006
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.