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.â€