The Software Architecture Renaissance
Paul A. Kogut · 2009
There is a revival of interest in the software product after several years of intense focus by the software engineering community on the software process. Similarly, within the software design community, there is a revival of interest in higher levels of design (e.g. software architecture) after several years of intense focus on object-oriented (OO) design methodologies (e.g. identifying objects, classes and inheritance relations). The increasing importance of software in systems is also driving the software architecture renaissance. Problems with software architecture have contributed to the difficulties of large projects like the FAA’s Advanced Automation System [1]. Because architectural decisions are usually made early in the life-cycle, they are the hardest to change and hence the most critical and far-reaching. Without a good system and software architecture it is difficult to achieve satisfaction of the original performance and behavioral requirements and it is probably impossible to accommodate major design changes. Software architecture also provides the critical context for high leverage reuse of design and components. The importance of architectural context for reuse is derived from observing the common practices in mature engineering fields such as civil engineering and chemical engineering. Within software engineering, common practices and solutions within particular application areas can be reused to provide domain-wide leverage of architectural-level decisions. This article provides a brief overview of some of the important architecture related efforts.