Recommended Practice for Architectural Description of Software-Intensive Systems
|Publication Date:||21 September 2000|
It has long been recognized that "architecture" has a strong influence over the life cycle of a system. In the past, hardware-related architectural aspects were dominant, whereas software-related architectural integrity, when it existed, often was to be sacrificed first in the course of system development. Today, software intensive systems are pervasive. The cost of software development and the increasing complexity of software systems have changed the relative balance. Software technology is maturing rapidly. The practice of system development can benefit greatly from adherence to architectural precepts.
However, the concepts of architecture have not been consistently defined and applied within the life cycle of software-intensive systems. Despite significant industrial and research activity in this area, there is no single, accepted framework for codifying architectural thinking, thereby facilitating the common application and evolution of available and emerging architectural practices.
The IEEE Architecture Planning Group (APG) was formed in August 1995 to address this need. The APG was chartered by the IEEE Software Engineering Standards Committee (SESC) to set a direction for incorporating architectural thinking into IEEE standards. The result of the APG's deliberations was to recommend an IEEE activity with the following goals:
- To define useful terms, principles and guidelines for the consistent application of architectural precepts to systems throughout their life cycle
- To elaborate architectural precepts and their anticipated benefits for software products, systems, and aggregated systems (i.e., "systems of systems")
- To provide a framework for the colilection and consideration of architectural attributes and related information for use in IEEE standards
- To provide a useful road map for the incorporation of architectural precepts in the generation, revision, and application of IEEE standards
This recommended practice addresses the architectural description of software-intensive systems. A software-intensive system is any system where software contributes essential influences to the design, construction, deployment, and evolution of the system as a whole.
The scope of this recommended practice encompasses those products of system development that capture architectural information. This includes architectural descriptions that are used for the following:
a) Expression of the system and its evolution
b) Communication among the system stakeholders
c) Evaluation and comparison of architectures in a consistent manner
d) Planning, managing, and executing the activities of system development
e) Expression of the persistent characteristics and supporting principles of a system to guide acceptable change
f) Verification of a system implementation's compliance with an architectural description
g) Recording contributions to the body of knowledge of software-intensive systems architecture