Overview of CUTS

The Component Workload Emulator (CoWorkEr) Utilization Test Suite (CUTS) is a system execution modeling (SEM) tool designed primarily for component-based distributed real-time and embedded (DRE) systems. CUTS, which is based on agile development methodologies, enables developers to conduct system integration test during early phases of the software lifecycle, and continuously throughout, on the target architecture—as opposed to waiting until complete system integration time. This enables system developers and testers to identify performance problems and bottlenecks before they become too hard and costly to locate and resolve.

CUTS workflow
Figure 1. The CUTS System Execution Modeling Tool Workflow

As shown in Figure 1 above, system developers and testers use CUTS via the following steps:

  1. Model the behavior and workload of the system under development using the Component Behavior Modeling Language (CBML) and the Workload Modeling Language (WML), which are domain-specific modeling languages;

  2. Generate a complete test system for their target architecture from the constructed models. The generated software components that makeup the test system look-and-feel like their counterparts currently under development;

  3. Execute the test system in its target environment using emulation techniques, collect data, and use analysis tools to evaluate domain-specific quality-of-service (QoS) metrics, such as performance, reliability, and scalablity. CUTS does not place any constraints on what metrics can be evaluated! It's data collection and analysis capabilities can handle many different metrics without knowing a priori the metrics under evaluation; and

  4. Determine the next plan of action based on analyzed metrics. Such actions can include resolving identified QoS bottlenecks, or evaluating different system configurations.

CUTS also intergrates with continuous integration environments. This enables system integration testing to occur continuously throughout the software lifecycle. Finally, real components can replace the emulated components as their development is complete, which further supports continuous system integration testing through refinement.