The Acme Project

Acme is a simple, generic software architecture description language (ADL) that can be used as a common interchange format for architecture design tools and/or as a foundation for developing new architectural design and analysis tools. This site provides an introduction to Acme along with a collection of useful Acme software and technical information.


The Acme project began in early 1995 with the goal of providing a common language that could be used to support the interchange of architectural descriptions between a variety of architectural design tools. Although it is still useful as an architectural interchange language, since the project's inception the Acme language and its supporting toolkit have grown into a solid foundation upon which new software architecture design and analysis tools can be built without the need to rebuild standard infrastructure. Currently, the Acme Language and the Acme Tool Developer's Library (AcmeLib) provide a generic, extensible infrastructure for describing, representing, generating, and analyzing software architecture descriptions.

The Acme language and toolkit provide three fundamental capabilities:

  • Architectural interchange. By providing a generic interchange format for architectural designs, Acme allows architectural tool developers to readily integrate their tools with other complementary tools. Likewise, architects using Acme-compliant tools have a broader array of analysis and design tools available at their disposal than architects locked into a single ADL.
  • Extensible foundation for new architecture design and analysis tools. Many, if not most, architectural design and analysis tools require a representation for describing, storing, and manipulating architectural designs. Unfortunately, developing good architectural representations is difficult, time consuming, and costly. Acme can mitigate the cost and difficulty of building architectural tools by providing a language and toolkit to use as a foundation for building tools. Acme provides a solid, extensible foundation and infrastructure that allows tool builders to avoid needlessly rebuilding standard tooling infrastructure. Further, Acme's origin as a generic interchange language allows tools developed using Acme as their native architectural representation to be compatible with a broad variety of existing architecture description languages and toolsets with little or no additional developer effort.
  • Architecture Description. Acme has emerged as a useful architecture description language in its own right. It provides a straightforward set of language constructs for describing architectural structure, architectural types and styles, and annotated properties of the architectural elements. Although not appropriate for all applications, the Acme architecture description language provides a good introduction to architectural modelling, and an easy way to describe relatively simple software architectures.

This site provides an introduction to and overview of Acme along with a repository of Acme specifications, papers and technical literature, Acme examples, Acme tool developer libraries (AcmeLib's), and freely available tools and software contributed by Acme users.

Language and Toolkit Release Status

You can find the latest version at our download area here .

Acme Team

The Acme project has benefited from the contributions and feedback of many members of the software architecture design community. The principle language design and tool development work for Acme has been undertaken by the ABLE group at Carnegie Mellon University, and Dave Wile at USC's Information Sciences Institute. This development process has included significant and frequent input and feedback from many members of the DARPA EDCS project.