Fowler on Architecture
Read: http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf. The following is an except:
Ralph Johnson: So, a better definition would be “In most successful software projects, the expert developers working on that project have a shared understanding of the system design. This shared understanding is called ‘architecture.’ […] the architecture only includes the components and interfaces that are understood by all the developers.â€
_
“[..] Johnson’s secondary definition [is]: “Architecture is the decisions that you wish you could get right early in a project.†Why do people feel the need to get some things right early in the project? The answer, of course, is because they perceive those things as hard to change. So you might end up defining architecture as “things that people perceive as hard to change.”
“One of the differences between building architecture and software architecture is that a lot of decisions about a building are hard to change. It is hard to go back and change your basement, though it is possible.
There is no theoretical reason that anything is hard to change about software. If you pick any one aspect of software then you can make it easy to change, but we don’t know how to make everything easy to change.”
_
Software is not limited by physics, like buildings are. It is limited by imagination, by design, by organization. In short, it is limited by properties of people, not by properties of the world. “We have met the enemy, and he is us.â€