Perusing the SEI Architecture site today (http://www.sei.cmu.edu/architecture) and stumbled into an essay that I found interesting. But along the way, also snagged the following quote that seemed to aggregate several important aspects of our discipline:
"Software architecture forms the backbone for any successful software-intensive system. An architecture is the primary carrier of a software system's quality attributes such as performance or reliability. The right architecture - correctly designed to meet its quality attribute requirements, clearly documented, and conscientiously evaluated - is the linchpin for software project success. The wrong one is a recipe for guaranteed disaster."
Now let's get cooking... onto the essay...
"Architecture Paradox", by Dr. Subrahmanyam Allamaraju, gives a fascinating treatment of the discipline of software architecture and the conflicting forces that architects naturally attempt to balance (http://www.sei.cmu.edu/architecture/essays.html#paradox).
"The purpose of this article is to discuss "Architecture Paradox" and bring out the conflicting forces that influence the architecture over the life-time of software products and applications. This paper also presents some early ideas on how to build software systems that defy the architecture paradox."
Dr. Allamaraju goes on to setup a stark competition between Survival vs Evolution in the architecture of a typical software-intensive system and goes right at the question, "Why is it difficult to protect software architectures?" The answer, he asserts, lies in several universal principles/practices...
"How to build resilient architectures that are not trapped in the architecture paradox? The answer may be summarized in four points:
- A software system can defy the architecture paradox, only if the structure of the software can accommodate changes.
- Since anticipated changes are not to be implemented in the software right away, it is necessary to abstract these as a set of architecture goals.
- To realize these goals, it is necessary to devise a set of principles.
- To remove the human factor in enforcing these principles, integrate the principles into the architecture, such that the architecture poses the necessary constraints to protect itself."
"It is necessary to reemphasize that this is a creative activity and can not be driven by any process."
Architecture... The Art of Engineering.