General:
ArchStudio 3 Architecture

ArchStudio 3 Conceptual Architecture

ArchStudio 3 is built in the C2 architectural style. Components provide services in the architecture, and often represent indivdual tools in the ArchStudio 3 environment. All communication among components is done through events. Events are simply programmatic messages that can be turned into a stream of bits. That is, they do not contain direct pointers to data or functions inside any component.

The following diagram depicts the conceptual architecture of ArchStudio 3, as of build 1018 (click to enlarge in a separate window).

The important thing to understand from this diagram is ArchStudio 3's layered architecture. Each layer, or tier, provides services to the layer(s) below it. The layers are connected by traditional C2-style two-way broadcast bus connectors.

The layers presented in the diagram above are fixed, and will always be available. However, further stratification by adding more layers or subdividing existing layers is possible if the need arises.

Let's look at the kinds of components found at each layer.

ADT Tier

The ADT Layer is where xArchADT sits. xArchADT is the component that contains all data about all the architectures under consideration by ArchStudio. While xArchADT may have its own internal architecture, there will most likely never be any more ADTs at this layer.

Convenience Tier

The xArchADT component exposes a fairly low-level interface for editing architectures. Currently, this interface is based almost entirely on the apigen-generated Data Binding Library's interface. The Convenience Layer is a layer where components can expose "convenience" services to tools in lower layers. Convenience components expose a simpler or more intuitive API than xArchADT, but the implementation of the component is mostly geared towards translating calls made to the convenience component into calls to xArchADT. Convenience services should contain little semantic knowledge. For instance, an analyzer, or a tool that creates new xADL documents, would NOT be convenience tools.

Critics Tier

The Critics Tier holds design critic component that "watch" the architectures open in higher tiers for problems, then report those issues to lower tiers. See the online documentation for more information.

No-UI Tools Tier

Much of the functionality of high-value architecture tools like analyzers and simulators can be built without being directly associated with a user interface. If built properly, these tools will have the analysis component separated out from the user interface that gathers the data for analysis and visualizes the results of the analysis. For instance, an analyzer that generates code for a given architecture description can be invoked with simple parameters like the URL of a xADL document and a destination directory on the local machine. Certainly, some UI will have to supply these parameters, but the exact form of this UI is irrelevant. Such tools (or tool parts) should go in this tier. If such a tool already has a user interface, the UI and the functionality of the tool should be split up when possible. The functional parts of the tool will reside in this tier.

UI Tools Tier

While tools in the No-UI Tools Tier provide functionality with no user interface, the tools in this tier are all about user interface. This includes user interfaces specifically built to invoke and respond to tools in the No-UI tier. It also includes editors and other tools that are mostly UI and have no Non-UI component.

Editors Tier

More than tools with user interfaces, editors are user-interface-based tools who can manipulate the architecture in some significant way. This tier resides below other tiers so it can recieve EditorFocusMessages from above. ArchEdit resides in this tier.

File Manager Tier

With all the different user interfaces exposed by the UI tools tier, something has to manage them all and tell them when to appear. This is the job of the component(s) in the Management Tier. In general, new components will not be added to this tier. The management tier exposes the main UI present on ArchStudio startup. It contains a tool called the Invoker. The Invoker tells all other UIs when to start up, and provides them information about the documents they should be editing. It is likely that no new tools will be added to the management tier.