Jim's Pages

Software Architecture  

Introduction   

[Architecture Home]

   Architectural Viewpoints
  What Is Architecture?

There are many definitions of "architecture." Let's begin with the basics, a good dictionary. My old Webster's New World Dictionary of the English Language has two entries related to putting up buildings, and three that are more general:

ar-chi-tec-ture n. ... 3. a style of construction 4. design and construction 5. any framework system.

These definitions fit well with my ideas of software architecture, but they are too generic to get a real understanding.

I surveyed a number of definitions of software architecture, too. (The Software Engineering Institute at Carnegie Mellon has dozens of definitions from text books, experts, and contributions from readers.) One point I found in several is that every structure has an architecture. It may be unique or common, it may not have been planned and it may not be pretty, but in some real sense any structure defines an architecture by just being.

A more rigorous distinction between architecture and design specifies that architecture is a description of a structure that can be applied to more than one example. You could say "French Gothic" is an architectural style and the cathedrals at Notre Dame and Chartres are but two examples.

Almost all definitions I found brought out the idea that architecture is not the finest details of design, but the higher (or highest!) levels of style and overall shape and structure.

Grady Booch sometimes distinguishes architecturally interesting stuff from all the other stuff as things that will be expensive to change in the future. The point is that one should devote extra effort to getting these things right the first time. I think that's a very important idea for architects to keep in mind.

And finally, my own definition. I am not trying for academic completeness or lawyerly precision, but a concept that I can use to tell my mother what I do for a living.

In most problem-solving and building disciplines, people break large, complex problems into smaller parts that are more easily understood and solved by one at a time. Software architecture is the study of how many parts there should be, how big they should be, how they share responsibilities in the larger problem and how they communicate. If you look inside the parts, you will find many are made up of smaller parts in another complete architecture.

Introduction   

[Architecture Home]

   Architectural Viewpoints
Copyright 2001-2005, Jim Standley