There are many reasons why a system’s behavior over time is difficult to understand or, worse, confusing – even when the system is performing as designed. An example is a situation in which many concurrent activities share resources. Unforeseen interactions may arise due to the specific timing of the activities. Moreover, if the timing of the activities changes (e.g. due to an upgrade to the computational platform), the interactions may also change, which could result in significantly different behavior. Insight into the hows and whys of a system’s behavior over time is of paramount importance for making effective (design) choices and trade-offs in all phases of the system lifecycle, from the design of a new system to the maintenance of an old legacy system. The TRACE tool can help with this.
The TRACE tool works with execution traces. These capture (a single) system behavior over time. An execution trace contains time-stamped and user-annotated data for claims on resources, events and continuous signals. This execution trace concept is generic, which makes TRACE widely applicable:
- All levels of abstraction: the TRACE format can capture all levels of abstraction, from low-level embedded activities to system-level activities.
- Domain-independent: the TRACE format is domain-independent but nevertheless has the means to be tailored to a specific domain via the user-defined attributes.
- Source-independent: TRACE input can be created from any source, e.g. from the log files of legacy systems or from a discrete-event simulation model.
The TRACE tool provides insights into the system dynamics of all kinds of systems through the visualization and analysis of execution traces. The TRACE Gantt chart view offers coloring, grouping and filtering options. This visualization alone is already very powerful and can bring quick insights into the system dynamics. TRACE also provides several analysis methods, which sets it apart from other Gantt-chart visualization tools.
- Critical-path analysis can be used to detect activities and resources that are bottlenecks for performance.
- Distance analysis can be used to compare execution traces with respect to structure, e.g. to check a model trace against an implementation trace.
- Runtime verification provides a means to formally specify and verify the properties of execution traces using temporal logic. It is useful for expressing and checking performance properties, e.g., “the processing latency is at most 50 ms.”
- Latency, throughput and work-in-progress analysis provides built-in methods to derive these properties from an execution trace.
- Behavioral analysis can be used to visualize repetitive / cyclic patterns that often are present in systems such as image-processing pipelines and manufacturing machines.
- Resource-usage analysis can quickly give insights into the details of the resource usage.
The TRACE tool and the underlying concepts are relatively easy to learn and the TRACE input is easy to use.