blob: 413b115238c6a33db24f2c480dab5d74e8c52f6b [file] [log] [blame]
<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>