|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.