Permalink
Fetching contributors…
Cannot retrieve contributors at this time
69 lines (45 sloc) 3.15 KB
Model Oriented Tracing Language (MOTL)
Tracing
noreferences
@@description
<p align="justify">
Model Oriented Tracing Language (MOTL) allows developers to specify tracing at the model level.
</p>
<p align="justify">
Historically, developers have traced software using various techniques:
</p>
<ul>
<li>Adding print statements or some other special debug statement to code, often with conditional compilation so it can be switched off when the final system is compiled.</li>
<li>Using tracepoints or breakpoints in a debugger.</li>
<li>Using a tool Like <a href="http://dtrace.org/blogs/about/">DTrace</a> (also <a href="http://hub.opensolaris.org/bin/view/Community+Group+dtrace/WebHome">see here</a>) that specifies a trace script to dynamically patch live running code.</li>
<li>Using a tool like <a href="http://lttng.org/">LTTNG</a> to insert tracepoints.</li>
</ul>
<p align="justify">
However, in software generated from UML, these techniques can only be used effectively on <i>generated code</i>. They require understanding the structure of that generated code; furthermore trace directives need replacing when the code is replaced. Tracing thus occurs at a level of abstraction below the level at which the system is implemented.
</p>
<br>
<p align="justify">
MOTL is designed to allow tracing with direct reference to UML model elements (state machines and their states and events, associations and attributes). MOTL specifies how to inject trace code into generated code for UML constructs.
</p>
<br>
<p align="justify">
MOTL syntax is designed to be be usable independently of Umple. For example, trace statements could be used to inject tracing into code generated from a UML model specified in Papyrus. The current implementation of MOTL focuses on tracing Umple-generated code. In order to trace a UML model created by an arbitrary UML tool, it is currently necessary to have the model from that tool converted to Umple first.
</p>
<br>
<p align="justify">
MOTL can be used to generate tracing directives for different types of tracers. At its simplest level, if the phrase 'tracer Console;' is used (or no <a href="Tracers.html">tracer</a> statement is included), then trace output is directed to <i>standard error</i>. Generation of tracing for <a href="http://dtrace.org/blogs/about/">DTrace</a> and <a href="http://lttng.org/">LTTNG</a> is under development.
</p>
<br>
<p align="justify">
MOTL can be used in two modes:
</p>
<ul>
<li>As scripts that are independent of the model. These appear like DTrace scripts. When used with Umple, they are merged into an Umple model using Umple's mixin capability.</li>
<li>By directly annotating model elements.</li>
</ul>
<br>
<p align="justify">
The following pages describe how to use MOTL. Many aspects of MOTL are under development. Some <a href="https://github.com/umple/Umple/wiki/DraftManualPages">future pages for tracing features under development cam be found in Umple wiki pages.</a>
</p>
<hr />
<i>The MOTL project has been sponsored by NSERC, Ericsson and Defence Research and Development Canada, in the <a href="http://dmct.dorsal.polymtl.ca/">Distributed Multi-Core Tracing Project managed by Ecole Polytechnique de Montreal</a></i>