Alfa: Tools and Software

An Assembly Language for Software Architecture


Various tools and software are being developed to support the use of Alfa for modeling, analyzing, and implementing Alfa compositions.


ViSAC is a domain-specific modeling environment for architectural styles and style-based sotware architectures using Alfa's primitives. ViSAC has been implemented using Vanderbilt University's Generic Modeling Environment (v3.10.13). To use ViSAC:

  1. Download GME, the xAlfa paradigm for customizing GME, and the xAlfa icons.
  2. Unzip the icons into a folder and note its path.
  3. Start GME, and set the "File -> Settings... -> User icon path" to the icons path from Step 2.
  4. Choose "File -> Register Paradigm...". Navigate to the downloaded xAlfa paradigm and select it.

Now ViSAC is ready for use. Any time you want to create a model for styles and/or architectures, you can create a new GME project using the xAlfa paradigm, or open an existing xAlfa project. Detailed instructions on how to use ViSAC for modeling styles and architectures can be found in Alfa publications.

A more recent version of the xAlfa paradigm, which performs type verification for style conformance is also available now. To perform type verification on an architecture, open the model corresponding to the architecture by double-clicking its icon in the model hierarchy and selecting "File -> Check -> Check All" menu item.

An example architecture created in ViSAC from three different styles: client-server, pipeline and event-based integration is also available for download.


Alfaac is an analyzer and compiler for compositions of styles and architectures created from Alfa's primitives. Alfaac can be run from the command-line using the Java run time on your platform according to the following usage:
edu.usc.alfa.alfaac.Main [-d|-l|-c|-t|-s] <source> <architecture>
Option Description
<source> The location of file containing the architecture to compile and analyze
<architecture> The architectural composition to compile and analyze
-d <driver> xAlfa driver to be used for reading the <source> either of
-l <file> Verify language using the temporary file
-c <file> Verify constraints using the temporary file
-s Generate primitive usage statistics
-t Synthesize code in dir

To run alfaac you will need to install the following on your computer:

  1. alfaac.jar
  2. cocoa.jar
  3. jintegra.jar (Only if you wish to extract xAlfa models from ViSAC, i.e., using GMEDriver. Not required if using Alfa serialized pickles, i.e., FileDriver)
  4. antlr.jar
  5. JDK 1.4 or above

To get started with using alfaac, you can use the serialized pickle of the Photo Album architecture generated from its ViSAC model.  In fact you can generate a serialized pickle for any ViSAC architecture using alfaac. For this purpose, alfaac provides a test utility in Java GMEDriverTest with the following usage:

edu.usc.alfa.xalfa.driver.gme.GMEDriverTest <source> <architecture> <pickle>
Option Description
<source> The location of file containing the architecture to serialize
<architecture> The architectural composition to serialize
<pickle> The target file in which to store the pickled architecture


The behavior of Alfa compositions can be modeled using constraint automata developed at CWI. We have developed a plain text notation for constraint automata called CoLa (Constraint automata Language) along the lines of the FSP notation developed at Imperial College London. We have also developed an analyzer for CoLa called CoCoA (Composite Constraint automata Analyzer). CoCoA executes on any platform with Java 1.4.2 and uses ANTLR from

Download alpha version of CoCoA in a ZIP package here.

Download sample CoLa specifications in a ZIP package here.

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