An Assembly Language for Software Architecture


Software architectures provide high-level abstractions in the form of coarse-grained processing, connecting, and data elements, their interfaces, and their configurations. Architectures provide an additional level of abstraction that, while aiding comprehension and construction of the software system, also requires additional effort for its use. This additional effort can, however, be reduced by a great extent through the use of appropriate mechanisms for specifying software architecture, which is the goal of previous and continuing research on architectural description languages (ADLs) and associated tools.

A complementary and more powerful approach for bringing economy to the design of software architecture is the use of architectural styles. Architectural styles codify the recurring architectural design practices and successful system organizations. Architectural styles are the composition patterns and constraints on architectural elements targeted at families of systems with shared characteristics. The use of styles in software architectures simplifies their analysis, implementation, and evolution. Although there are many techniques for analyzing and describing styles, there is insufficient support for systematically constructing elements of architectural styles. This often leads to haphazard realizations of style elements in the construction of software systems, which eventually results in the loss of benefits of using a given style in the first place.

Systematic construction of style-based software architectures would require that we identify the primitives underlying elements of architectural styles and, indeed, software architectures. Alfa is a framework for understanding and constructing style-based software architectures from architectural primitives, to bridge this gap between architectural specification and construction. Alfa recognizes five orthogonal characteristics of architectural styles to assist in the construction of style elements. Alfa also provides a small set of expressive architectural primitives, each addressing one of the five orthogonal characteristics, for being composed into stylized software architectural elements.

This material is partly based upon work supported by the National Science Foundation under Grant No. CCR-9985441. Effort also sponsored by the Defense Advanced Research Projects Agency, Rome Laboratory, Air Force Materiel Command, USAF under agreement numbers F30602-99-C-0174 and F30602-00-2-0615. The U.S. Government is authorized to reproduce and distribute reprints for Governmental purposes notwithstanding any copyright annotation thereon. The views and conclusions contained herein are those of the authors and should not be interpreted as necessarily representing the official policies or endorsements, either expressed or implied, of the Defense Advanced Research Projects Agency, Rome Laboratory or the U.S. Government. Effort also sponsored in part by the U.S. Army Tank Automotive and Armaments Command, the Jet Propulsion Laboratory, and Xerox Corporation.

© University of Southern California, 2003