This is a glossary of the words we use in the ABLE group to talk about the Aesop system. This glossary is sorted alphabetically, even though this may not be the best order in which to learn about all these terms.
ACME
Agent
Aggregate
Architectural Type
Architecture
Attachment
Binding
Certification
Class
Component
Configuration
Connector
Derived Style
Design
Design Rule
Design Vocabulary
Downcasting
Environment
Environment Description
Event
Fable
FAM
Group
MVC
Object
Placeholder
Policy
Policy Map
Port
Post-action
Pre-check
Pre-condition
Role
Shelf
Style
Style Description
Style Developer's Tool
Stylet
Subclass
Substyle
Subtype
Tool
Tool Server
Type
UI
Unification
Upcasting
Value
ACME
ACME is our generic architectural description language, intended to be a mechanism for sharing designs among different architectural tools.

Agent
An agent is a tool that is like the user interface in that it presents an abstract view of a design to the user and allows more or less arbitrary manipulation of a design. Agents are unlike other tools in that they cannot easily be thought of as derived methods of objects.

Aggregate
An aggregate is an arrangement of components and connectors into a graph structure. Formally, an aggregate is defined by a set of components, a set of connectors, and a set of attachments from ports of the components to roles of the connectors.
An aggregate representation is a representation of a component or connector by an aggregate sub-architecture. In addition to the elements that an aggregate has, an aggregate representation also has a set of bindings from ports and roles inside the aggregate to ports and roles on the element that the aggregate representation represents.

Architectural Type
The architectural type of a design element is the appropriate member of the following set: component, connector, port, role, configuration. For example, although a filter has type `filter', its architectural type is `component'.

Architecture
Here's a definition that we're working with for software architecture, from the IEEE Transactions on Software Engineering's Special Issue on Software Architecture:

The structure of the components of a program/system, their interrelationships, and principles and guidelines governing their design and evolution over time.
Attachment
An attachment is a joining of a port and a role. At present, there is no internal structure for attachments.

See also: port, role

Binding
A binding is an identification of a port or role in an aggregate representation with a port or role in the component or connector that the aggregate represents. Bindings, at present, have very little internal detail; they are not mediating interactions, they are showing that two different elements are really the same element.

Certification
Certification is the process by which an object of one type is converted in a type-safe manner to an object of a sub-type. For example, a component which has only reader and writer ports may be certified as a filter.
We used to refer to Certification as blessing, but changed because of the religious connotations of "blessing".

Class
A class is the code for the implementation of a set of objects. The difference between a class and a type is that a type defines the externally visible behavior of a set of objects, but a class defines the code that implements that behavior.

See also: type, subclass, subtype.

Component
A component is a locus of computation or data storage. Component is one of our fundamental architectural types. Connectors are usually represented as boxes or other compact shapes in our environments.

Configuration
Configuration is the word used by the rest of the architectural community to refer to what we call an aggregate. We changed the word we use because at one point we were using the word "configuration" to refer to a set of components, connectors, and attachments, to the process of turning a partially specified object on the shelf into a fully specified object in a design, or to the suite of tools making up a design environment.

Connector
A connector represents a communication between two or more components. The interfaces of a connector are roles.

Derived Style
A derived style is simply a style that reuses code and definitions from another style, without any implications of compatibility. For example, the "Unix pipe and filter" style, which adds files to the design vocabulary of the "pipe and filter" style, is a derived style of the "pipe and filter" style, but it is not a substyle.

Design
A design is the architectural model of a system that is created, modified, and analyzed by the use of an Aesop environment.

Design Rule
A design rule is an element of code with which a class extends a method of a superclass. A design rule consists of the following:
Design Vocabulary
Downcasting
Environment
An Environment is a design environment tailored to a particular style. It includes a set of policies about the style, and a set of tools that work in harmony with that style, visualization information for tools, and so forth. The applicable rule of thumb is that if something is part of the formal meaning, it should be part of a style; if it's part of the presentation to the user, it should be part of the environment.

See also: Style, Environment Description

Environment Description
An Environment Descripion is the description of an environment that serves as the other input to the Style Developer's Tool.

See also: Environment, Style Description

Event
Fable
FAM
Group
MVC
Object
Placeholder
Policy
Policy Map
Port
Post-action
Pre-check
Pre-condition
Role
Shelf
Style
A Style is a family of related architectural designs. It includes a design vocabulary, a set of invariants that characterize well-formed designs in that style, and a set of properties that are meaningful in that style.

For example, a pipe and filter style would include filters, pipes, etc. in the design vocabulary, include the rules that input ports attach only to sink roles and so forth in the set of invariants, and include properties like `cyclicity' and `throughput'.

See also: Stylet, Style Description, Environment

Style Description
A Style Description is the description of a style that serves as input to the Style Developer's Tool. A style description includes a list of design vocabulary, invariants, and properties.

See also: Style, Environment Description

Style Developer's Tool
Stylet
A stylet is the set of values associated with a particular word of design vocabulary. For example, a definition of the `filter' stylet might express that `a filter is a component that has only input ports and output ports.'

See also: Type, Class

Subclass
Substyle
Subtype
Tool
Tool Server
Type
UI
Unification
Upcasting
Value
ralph@cs.cmu.edu