Types, Design Rules, and Architectural Styles
The Acme design language provides constructs for capturing three fundamental classes of architectural design expertise – design vocabulary, design rules, and architecural styles. A brief overview of each of these follows.
· Design vocabulary is the most basic form of design expertise that can be captured with Acme, and possibly the most valuable. The design vocabulary available to a software architect specifies the basic building blocks for system design. Design vocabulary describes the selection of components, connectors, and interfaces (ports and roles) that can be used in system design. As an example, the design vocabulary available for a naïve client-server style of design might include client and server components and an HTTP connector. Acme provides a rich predicate-based type system that environment designers can use to specify the design vocabulary, the properties of vocabulary elements, and the design invariants and heuristics that describe how the vocabulary elements can be used.
· Design rules specify heuristics, invariants, composition constraints, and contextual cues to assist architects with the design and analysis of software architectures. Acme makes the following aspects of a design rule independently modifiable: the specification of the rule itself, the policy for dealing with violations of the rule, and the scope over which the rule is enforced. Acme allows the association of design rules with a complete style, a collection of related design elements (such as all of the components in a system), a type of design element, or an individual instance of a component or connector. By making the scoping of design rules highly flexible and specifying their policy independent of the rule itself, Acme allows an architect to add, remove, modify, or temporarily ignore design rules as appropriate for various stages and types of design.
· Architectural styles provide a mechanism for packaging and aggregating related design vocabulary, rules, and analyses. An Acme style specification consists of the declaration of a set of design vocabulary that can be used for designing in the style, and a set of design rules that guide and constrain the composition and instantiation of the design vocabulary.