Architecture Expert Design Assistant

The SEI Architecture Expert (ArchE) tool is a design assistant that helps architects explore architectural designs driven by quality attributes. ArchE shows the architect proposals for improving the current architecture and allows the architect to decide on the best alternative.

Download

ArchE V. 3.0 with support for adding additional quality attribute reasoning capability is now available for download.

A sample interaction of ArchE with an architect is described below.

  1. Let’s assume the architect inputs a set of functions to be computed by the system being designed:
    • Create user profile.
    • Modify user profile.
    • Handle user interactions.
    • Attach to model.
    • Save data.
  2. The architect also specifies two simple quality attribute scenarios:
    • Modifiability - “A new variable must be added to the user profile within five days of effort.”
      This scenario maps to functions “Create user profile” and “Modify user profile.”
    • Performance - “The user modifies the profile under normal conditions and the changes in the profile take effect in less than five seconds.”
      This scenario maps to functions “Create user profile,” “Modify user profile,” and “Handle user interactions.”
  3. ArchE asks for information necessary to determine quality attribute behavior such as: dependencies between functions and execution time or cost of change of the functions.
  4. ArchE proposes the following design:
arche-v2

Alternatively, the architect may want to provide a legacy design for ArchE to start with, such as a Model-View-Controller architecture allocating the above functions.

  1. ArchE identifies quality attribute scenarios that are not satisfied by the current design.
    • The performance scenario is met, but the modifiability is not met (as shown in the snapshot by the green and red ball icons, respectively)
  2. ArchE proposes a list of tactics that might improve the design.
    • Split a costly responsibility to reduce the impact of the changes.
    • Insert an intermediary to avoid the rippling of changes.
    • Introduce concurrency to improve performance in a certain area.
ArchE proposes a list of tactics that might improve the design.
  1. The architect chooses one or more tactics.
    • Splitting function - “Create user profile” yields modifiability benefits, although at the cost of some performance losses.
Applying Modifiability Tactics
  1. ArchE applies these tactics to produce a new design, such as the following:
ArchE applies tactics to produce a new design.

The architect then may need to provide additional information for the new design, such as a meaningful name for two newly created responsibilities or computation time for an intermediary.

  1. This process reoccurs until one of the following occurs:
    • The quality attribute scenarios are met.
    • The architect is satisfied with the result.
    • ArchE has no more proposals.

ArchE currently has quality attribute knowledge of real-time performance and modifiability.

In More Detail

ArchE embodies quality attribute theories; techniques for converting an architectural description into an appropriate quality attribute model; and techniques for solving the quality attribute model to determine a predicted response in given situations. This knowledge is packaged in reasoning frameworks, to facilitate its use by non-experts.

ArchE uses three different types of input. These are (1) the quality attribute requirements for the system being designed, (2) the set of features (functions) that the system should support, and (3) any legacy design.

From the features, ArchE abstracts a set of responsibilities that the system under design will compute. The quality attribute requirements also imply certain responsibilities. The legacy design includes responsibilities as well. From these sources, ArchE constructs a representation of the responsibilities and the dependencies among them. In one type of dependency, one responsibility may need to be computed prior to another. In another type of dependency, one responsibility may be decomposed into several other responsibilities.

The architect interacts with ArchE to identify the dependencies among the responsibilities. The architect also interacts with ArchE to provide properties such as the execution time or the cost that the quality attribute models of ArchE require in order to predict quality attribute behavior.

ArchE then creates an initial architecture and shows the architect this initial architecture, how well it satisfies the quality attribute requirements, and a series of suggestions for improvements to the architecture (based on the use of architectural tactics). The architect selects an option, and ArchE applies it to the architecture, calculates how well the revised architecture satisfies the quality attribute requirements, and so forth.
This continues until the architect is satisfied with the current design.

External Reasoning Frameworks

The more reasoning frameworks that are available to ArchE, the broader its reasoning capabilities will be. To achieve this goal, ArchE 3.0 provides a collaborative infrastructure called the ArchE Reasoning Framework Interface that allows third parties to contribute reasoning frameworks to ArchE.

This interface defines an application programming interface (API) for communications and provides an object-oriented structure that supports development of reasoning frameworks as external plug-ins that are ArchE compatible. The term external means that a reasoning framework resides anywhere outside the ArchE process, even on a remote machine over networks. The term plug-in means that a reasoning framework can be added to or removed from ArchE at runtime without disturbing the ongoing tasks of ArchE. Since reasoning frameworks are transparent in location, ArchE does not need to know their locations in order to interact with them. Thus, ArchE can utilize multiple computing resources simultaneously by executing reasoning frameworks in parallel. 

The interactions between ArchE and external reasoning frameworks are based on commands, as follows. Each external reasoning framework announces itself in the infrastructure via a manifesto, and ArchE enables the reasoning framework for operation. From that point on, ArchE sends asynchronous interaction commands to the reasoning frameworks and communicates information through a special database. Meanwhile, each reasoning framework acts as a “command listener,” executing the received commands with its own logic and accessing the database. Once a reasoning framework has successfully executed a command, it sends the results back to ArchE. ArchE is responsible for processing user inputs, coordinating the reasoning frameworks, combining their results, and passing specific questions to the user.

More details about how to build a reasoning framework for ArchE can be found in the Reasoning Framework Interface Developer’s Guide, downloadable through the link in the section below.

Downloading ArchE

  • ArchE V. 2.1 and the ArchE User's Guide [download]
  • ArchE V. 3.0 User's Guide and Reasoning Framework Interface Developer’s Guide [download]

ArchE depends on the JESS expert system, the Eclipse platform, the MySQL data base, and the xmlBlaster communication server (only for ArchE 3.0). We are not providing any of these systems, so you’ll need to download and install them. The installation procedure for ArchE will provide pointers to the appropriate websites. In theory, ArchE could run on any platform that supports JESS, Eclipse, XMLBlaster, or MySQL, but we have only tested ArchE on the Windows platform. If you are successful in installing and running ArchE on other platforms, we would like to hear about it.

Future Work

We encourage people to develop their own reasoning frameworks and integrate them into ArchE. Please let us know if you would like to contribute a reasoning framework to ArchE.

Technical Details

For technical details about ArchE, contact us using the link in the For more information box at the bottom of this page.

Software Architecture Training and Publications

Training

Publications

Further Reading

Current SEI SAT Initiative Technology Investigations
Philip Bianco & Andres Diaz-Pace

Designing Software Architectures to Achieve Quality Attribute Requirements, IEEE Proceedings on Software, August 2005.
Felix Bachmann, Len Bass, Mark Klein, & Charles Shelton

Integrating Quality Attribute Reasoning Frameworks in the ArchE Design Assistant.
Andres Diaz-Pace, Hyunwoo Kim, Len Bass, Philip Bianco, & Felix Bachmann

Preliminary Design of ArchE: A Software Architecture Design Assistant
Felix Bachmann, Len Bass, & Mark Klein

Software   Architecture Design with ArchE
Felix Bachmann, Len Bass, & Philip Bianco

Using ArchE in the Classroom: One Experience
John D. McGregor, Felix Bachmann, Len Bass, Philip Bianco, & Mark Klein

For more information

Contact Us

info@sei.cmu.edu

412-268-5800