|Alfa is used to compose architectural elements from low-level, highly reusable architectural primitives. Architectural styles in particular represent a fertile area for attempting to codify architectural primitives. The primitives of Alfa originate from a existing literature on software architectures, coordination models and languages, distributed systems, and 10 years of research on a family of architectural styles. Alfa's primitives belong to one of five orthogonal characteristics of architectural styles:
- Data - the types of data exchanged during interactions among style elements;
- Structure - the form of elements from which a system composed, including the input and output interfaces of the elements;
- Interaction - the means by which data and control are transferred among different elements of a system;
- Behavior - the processing logic of elements by which input data is consumed and output data produced; and
- Topology - the setup and teardown of paths of interaction among different elements and the rules constraining allowed interaction paths.
Alfa has a set of seventeen primitives, eight forms (written as nouns) and nine functions (written as verbs), each of which is shown against their corresponding style characteristic:
||Particle, Input, Output, Interface, Twoway
||Duct, Relay, Birelay, holds, loses
||create, send, receive, handle, reply
||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.