Software Architecture: An Executive Overview
| Technical Report |
Abstract: Software architecture is an area of growing importance to practitioners and researchers in government, industry, and academia. Journals and international workshops are devoted to it. Working groups are formed to study it. Textbooks are emerging about it. The government is investing in the development of software architectures as core products in their own right. Industry is marketing architectural frameworks such as CORBA. Why all the interest and investment? What is software architecture, and why is it perceived as providing a solution to the inherent difficulty in designing and developing large, complex systems? This report will attempt to summarize the concept of software architecture for an intended audience of mid to senior level management. The reader is presumed to have some familiarity with common software engineering terms and concepts, but not to have a deep background in the field. This report is not intended to be overly-scholarly, nor is it intended to provide the technical depth necessary for practitioners and technologists. The intent is to distill some of the technical detail and provide a high level overview.
1. Introduction
Software architecture is an area of growing importance to practitioners and researchers in government, industry, and academia. The April 1995 issue of IEEE Transactions on Software Engineering and the November 1995 issue of IEEE Software were devoted to software architecture. Industry and government working groups on software architecture are becoming more frequent. Workshops and presentations on software architecture are beginning to populate software engineering conferences. There is an emerging software architecture research community, meeting and collaborating at special-purpose workshops such as the February 1995 International Workshop on Software Architectures held in Dagstuhl, Germany, or the April 1995 International Workshop on Architectures for Software Systems held in Seattle, Washington. The October 1996 ACM Symposium on the Foundations of Software Engineering will focus on software architecture. Textbooks devoted entirely to software architecture are appearing, such as the one by Shaw and Garlan [Shaw 95b]. The government is investing in the development of software architectures as core products in their own right; the Technical Architecture Framework for Information Management (TAFIM) is an example. The Common Object Request Broker Architecture (CORBA) and other computer-assisted software engineering environments with emphasis on architecture-based development are entering the marketplace with profound effect.
Why all the interest and investment? What is software architecture, and why is it perceived as providing a solution to the inherent difficulty in designing and developing large, complex systems?
- Section 2 discusses the concept of software architecture-its definition(s), its history, and its foundational underpinnings. It also suggests why there has been considerable confusion over the term and why we do not yet have a precise definition.
- Section 3 asks, and attempts to answer, the question "Why is software architecture important?" It discusses the importance of the concept of software architecture in system development from three vantages: as a medium of communication among a project's various stakeholders; as the earliest set of design decisions in a project; and as a high-level abstraction of the system that can be reused in other systems.
- Section 4 discusses the concept of architectural views-the need for different views, a description of some accepted views, and the relationship among views.
- Section 5 explains how the architecture-based model of system development differs from the traditional programming-oriented development paradigms of the past.
- Finally, Section 6 lists some of the most promising research areas in software architecture.