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.