<div id="midcolumn"> | |
<div id="title"> | |
<img alt="Papyrus-RT-Logo" | |
src="/papyrus-rt/content/images/Papyrus-RT-logo-full.png" | |
> | |
</div> | |
<div id="screenshot"> | |
<img alt="Papyrus-RT 0.8 screenshot" | |
src="/papyrus-rt/content/images/Papyrus-RT-0.8-screenshot.png" | |
width="800" height="620" | |
> | |
</div> | |
<h3>Papyrus-RT - UML-RT modelling and code generation environment</h3> | |
<div id="introText"> | |
<p>Papyrus-RT provides an implementation of the UML-RT modeling | |
language together with editors, code generator for C++ and a | |
supporting runtime system and model-compare (diff/merge) capabilities.</p> | |
<p> | |
For more details, see the <a | |
href="/papyrus-rt/content/overview.php" | |
> Overview section</a>. | |
</p> | |
</div> | |
<h3>UML-RT in a nutshell</h3> | |
<div id="introText"> | |
<p>UML-RT is a modelling language intended for real-time and embedded systems.</p> | |
<p>It considerably simplifies the UML language while introducing a few new concepts. | |
The main concepts of UML-RT are <em>capsules</em> and <em>protocols</em>.</p> | |
<p>A <em>capsule</em> is an active class that defines concurrent behaviour (similar to a thread). | |
It's behaviour may be specified with a (hierarchical) state machine. A capsule has an interface consisting of | |
one or more <em>ports</em> that are typed by a <em>protocol</em>. A <em>protocol</em> defines the set of | |
messages that may be sent and received by the port and processed by its state machine. | |
A capsule may also have internal structure consisting of static or dynamic <em>parts</em> that contain instances of other | |
capsules. <em>Connectors</em> are used to link their ports.</p> | |
<p>UML-RT also supports the notion of <em>service ports</em> and includes a built-in <em>services library</em> | |
that provides communication, timing, logging and dynamic structure services.</p> | |
</div> | |
<h3>Some highlights</h3> | |
<div id="highlights"> | |
<table> | |
<tr> | |
<th width="45%"> | |
<h4>Graphical structure editor</h4> | |
</th> | |
<th width="10%"></th> | |
<th width="45%"> | |
<h4>Graphical behavior editor</h4> | |
</th> | |
</tr> | |
<tr> | |
<td width="45%" valign="top"> | |
<p align="justify">The structure editor allows the user to | |
edit capsule structure in a convenient way. It is possible | |
to create and arrange capsule references and ports and to | |
create bindings and layer connections.</p> | |
</td> | |
<td width="10%"></td> | |
<td width="45%" valign="top"> | |
<p align="justify">The behavior editor allows the user to | |
describe capsule behavior by means of a hierarchical finite | |
state machine. It is possible to create and arrange states, | |
choice points, junction points and transitions using the | |
state machine editor.</p> | |
</td> | |
</tr> | |
</table> | |
</div> | |
<br> | |
<div id="highlights"> | |
<table> | |
<tr> | |
<th width="45%"><h4>Code generator</h4></th> | |
<th width="10%"></th> | |
<th width="45%"><h4>C++ runtime services support</h4></th> | |
</tr> | |
<tr> | |
<td width="45%" valign="top"> | |
<p align="justify">A code generator will translate the | |
UML-RT model into C++ code. This code generator will | |
translate all structural (e.g., capsules, protocols, and | |
classes) and behavioral (i.e., state machines) elements into | |
C++ code, based on their properties, stereotypes, stereotype | |
properties (including those from a profile with properties | |
specific to C++), and runtime services elements. For the | |
generation of the behavioral C++ code from the state | |
machines, the code generator will first translate the | |
behavior provided by each capsule's (or passive class') | |
state machine into an intermediate model that will then be | |
translated to optimized code. Based on user-provided thread | |
allocation information, the code generator will also | |
allocate capsules, or groups of capsules, to threads.</p> | |
</td> | |
<td width="10%"></td> | |
<td width="45%" valign="top"> | |
<p align="justify">The C++ Runtime Services Library | |
provides support for the execution of the C++ code generated | |
from a UML-RT model. Capsule lifecycle functions (incarnate, | |
destroy, import, deport), message delivery and timing | |
services are provided by the services library and are used | |
by both the generated code as well as the user specifed | |
action code which is part of the capsule behaviour. The | |
runtime system code is distributed in source form as an | |
installable Eclipse feature. The code generator produces | |
both standard makefiles as well as CMakeList files to build | |
the generated code.</p> | |
</td> | |
</tr> | |
</table> | |
</div> | |
<br> | |
<div id="highlights"> | |
<table> | |
<tr> | |
<th width="22.5%"></th> | |
<th width="50%"><h4>Model compare</h4></th> | |
<th width="22.5%"></th> | |
</tr> | |
<tr> | |
<th width="22.5%"></th> | |
<td width="55%" valign="top"> | |
<p align="justify"> | |
The model-compare capability allows you to compare and merge different versions | |
of a model at the same abstraction level as the modelling experience, providing | |
integration with source control, specially EGit.</p> | |
</td> | |
<th width="22.5%"></th> | |
</tr> | |
</table> | |
</div> | |
</div> | |
<div id="rightcolumn"> | |
<div id="quicklinks" class="sideitem"> | |
<h3>Quick Links</h3> | |
<ul> | |
<li><a href="/papyrus-rt/content/download.php">Downloads</a> | |
</li> | |
<li><a href="https://wiki.eclipse.org/Papyrus-RT/Roadmap">Papyrus-RT | |
Roadmap</a></li> | |
<li><a href="https://wiki.eclipse.org/Papyrus-RT">Wiki Main page</a> | |
</li> | |
</ul> | |
</div> | |
<div id="news>" class="sideitem"> | |
<h3>News</h3> | |
<p> | |
<b>2017-07-20</b>: <b><em>Papyrus-RT 1.0.0</em> released.</b> | |
Get it in the <a href="/papyrus-rt/content/download.php">downloads</a> | |
section. See also the <a | |
href="https://wiki.eclipse.org/Papyrus-RT/Releases/Oxygen_v1.0_Release_Notes" | |
>Release notes</a>. | |
</p> | |
<p> | |
<b>2017-03-23</b>: <em>Papyrus-RT 0.9.0</em> released. | |
Get it in the <a href="/papyrus-rt/content/download.php">downloads</a> | |
section. See also the <a | |
href="https://wiki.eclipse.org/Papyrus-RT/Releases/Neon_v0.9_Release_Notes" | |
>Release notes</a>. | |
</p> | |
</div> | |
<div id="history>" class="sideitem"> | |
<h3>History</h3> | |
<p> | |
<b>Papyrus-RT 1.0.0</b> released July 20th, 2017. | |
</p> | |
<p> | |
<b>Papyrus-RT 0.9.0</b> released March 23rd, 2017. | |
</p> | |
<p> | |
<b>Papyrus-RT 0.8.0</b> released October 24th, 2016. | |
</p> | |
<p> | |
<b>Papyrus-RT 0.7.2</b> released December 15th, 2015. | |
</p> | |
<p> | |
<b>Papyrus-RT 0.7.1</b> released October 12th, 2015. | |
</p> | |
</div> | |
<div id="more" class="sideitem"> | |
<h3>More...</h3> | |
<ul> | |
<li>Read the <a | |
href="https://projects.eclipse.org/projects/modeling.papyrus-rt" | |
> project proposal</a></li> | |
<li>Join the discussions at the <a | |
href="http://www.eclipse.org/forums/eclipse.Papyrus-RT" | |
>forum</a></li> | |
</ul> | |
</div> | |
</div> |