The eXtensible Tool-chain for Evaluation of Architectural Models (XTEAM) implements a
model-driven engineering (MDE) approach to software architecture that combines extensible modeling languages based
on architectural constructs with a model interpreter framework that enables rapid implementation of customized
dynamic analyses at
the architectural level. XTEAM consists of a suite of architecture description language (ADL) extensions and model
transformation engines targeted specifically for highly distributed, resource-constrained, and mobile computing
environments. XTEAM model transformations generate system simulations that provide a dynamic, scenario- and
risk-driven view of the executing system. XTEAM provides the extensibility to easily accommodate both new modeling
language features and new architectural analyses.

Providing Design Rationale

Early in the architectural development process, software architects are, in many situations, required to rely on their own intuition and past experience when weighing fundamental design questions. For example, the choice of a particular architectural style, the distribution of components across hosts, or the functionality allocated to components can dramatically effect the ultimate behaviors and properties of a system, but architects have very limited mechanisms for arriving at such decisions beyond their own knowledge and expertise and the collective wisdom of the architecture community. In other words, rationalizing such decisions using specific processes and tools is relatively rare. The XTEAM approach to software architecture provides a means of experimentation with fundamental design decisions and the rationalization of those decisions through quantifiable means. By generating and executing simulations of a distributed system, the consequences of crucial architectural choices can be better understood.

Weighing Architectural Trade-offs

Nearly all non-trivial architectural decisions come down to trade-offs between multiple desirable properties. The relative importance of different system properties to the user (e.g., availability or performance) can be determined prior to architectural development, but the architect is still required to engineer the right balance between conflicting goals. Emphasizing one attribute over others will eventually yield diminishing returns, and usually this tipping-point between different qualities is anything but obvious. For example, given a system with both fixed and mobile hosts, deploying components to a mobile host will likely increase the availability and reduce the latency perceived by a client using that device, but will also drain the battery power faster. The "right" deployment (i.e., that which maximizes the system's utility given users' quality-of-service preferences) depends heavily on the wireless network characteristics, such as bandwidth and the frequency of disconnects, in addition to a number of other factors. Rather than relying on intuition or past development projects to achieve the right balance, our approach allows an architect to determine the relationships between various design goals and increase system utility experimentally.

Understanding Assemblies of Off-The-Shelf Components

In the present day, independent teams or organizations are often responsible for producing components that are ultimately assembled to create a unified system. In such settings, detailed information about individual components (e.g., resource consumption, failure rates) may be available, but the properties of their assembly may not be well-understood. Subtle interactions between components can result in unforseeable and unpredictable system behaviors. In such a case, XTEAM can produce accurate measurements of the emergent properties of the composed system. This knowledge ultimately enhances the architects' understanding of the system and increases their confidence in the ability of the composed system to meet end-user operational goals. Both of these outcomes serve to reduce the risk associated with a large-scale development and/or integration project.

Incremental System Validation

In large-scale development projects, component implementations often become available in a piecemeal fashion - infrastructure components are generally developed
first, while components at higher layers of an application or system architecture are developed later. XTEAM takes advantage
of this situation by allowing an architect to transparently substitute the implementation of an individual component
for its simulated counterpart in an XTEAM simulation. This has two important consequences: (1) the accuracy of the analysis
provided by the simulation is increased because measured values, rather than stochastic parameters, are used, and (2) the component
implementation can be easily tested for conformance to its behavioral model in a wide variety of operational scenarios.