| <!-- |
| This document is provided as a template along with some guidance for creating |
| your project proposal. This is just a template. Feel free to change it as |
| you see fit (add sections, remove section). We feel, however, that the |
| suggestions represented in this document represent the reasonable minimum |
| amount of information to move forward. |
| |
| Please keep the formatting in this document simple. Please do not edit |
| this document in Microsoft Word as it adds huge piles of markup that make |
| it difficult to restyle. |
| |
| More information is available here: |
| |
| http://wiki.eclipse.org/Development_Resources/HOWTO/Pre-Proposal_Phase |
| |
| Direct any questions about this template to emo@eclipse.org |
| --> |
| |
| <html> |
| <head> |
| |
| <!-- |
| Include the title here. We will parse it out of here and include it on the |
| rendered webpage. Do not duplicate the title within the text of your page. |
| --> |
| |
| <title>eTrice</title> |
| </head> |
| |
| <!-- |
| We make use of the 'classic' HTML Definition List (dl) tag to specify |
| committers. I know... you haven't seen this tag in a long while... |
| --> |
| |
| <style> |
| dt { |
| display: list-item; |
| list-style-position:outside; |
| list-style-image:url(/eclipse.org-common/themes/Phoenix/images/arrow.gif); |
| margin-left:16px; |
| } |
| </style> |
| |
| <body> |
| <p>The eTrice project is a proposed open source project under the <a |
| href="http://www.eclipse.org/projects/project_summary.php?projectid=modeling.mdt">MDT Project</a>.</p> |
| |
| <!-- |
| The communication channel must be specified. Typically, this is a forum |
| that is available from http://www.eclipse.org/forums with a URL using the |
| project's short name; it will be something along the lines of |
| of http://www.eclipse.org/forums/eclipse.woolsey. EMO can (and will) |
| provide assistance if you're not sure what to put here. |
| --> |
| <p>This proposal is in the Project Proposal Phase (as defined in the |
| Eclipse Development Process) and is written to declare its intent and |
| scope. We solicit additional participation and input from the Eclipse |
| community. Please send all feedback to the <a href="http://www.eclipse.org/forums/eclipse.etrice">eTrice</a> |
| Forum.</p> |
| |
| <h2>Background</h2> |
| |
| <!-- |
| Optionally provide the background that has lead you to creating this project. |
| --> |
| |
| <p>Domain Specific Languages (DSLs), whether they use a textual or graphical notation, are widely recognized |
| as a convenient way to formalize abstractions of a given domain. They allow the engineer |
| working on a problem in this domain to express his solution on exactly the level |
| of abstraction which is best suited for the domain and best adapted to the way |
| he states the problem and thinks about a solution.</p> |
| |
| <p>For event driven real-time embedded systems engineers traditionally tend to use |
| general purpose (and sometimes low level) programming languages like |
| assembler, C and (usually a restricted subset of) C++. This way they have maximum |
| control over the memory and performance impact of every single detail of their |
| system. But the exponentially growing complexity of current software systems in the domains |
| of telecommunication, automotive and industrial automation calls for advanced |
| engineering methods. The challenge is to master the new complexity of highly distributed, |
| concurrent and large software systems while maintaining quality and reliablity.</p> |
| |
| <p>In recent years UML has been adopted for modeling in many areas including |
| embedded systems. But while ULM1 lacked concepts for abstraction, e.g. the notion of ports and components, |
| which are agreed to be essential for distributed systems, UML2 suffers from |
| its mere complexity which is owed to its general and domain independent |
| applicability. Additionally there is a gap between the UML model and the semantics of the code produced |
| from it which is not addressed by the standard. State machines and ports |
| leave many degrees of freedom. So vendors of UML2 modeling tools independently |
| filled this gap while narrowing down the abundance of modeling elements |
| by stereotypes.</p> |
| |
| <p>In the early 1990s a DSL called <a href="#room-book">[ROOM]</a> |
| (Real-Time Object Oriented Modeling) was proposed |
| by Bran Selic et al. This language was designed for the, at this time, most complex |
| real time systems developed for the upcoming mobile |
| telephony. In a way, ROOM can be thought of a specific implementation, including |
| the semantics of the model, of a subset of UML2 for the very specific needs |
| of those kinds of systems - even though ROOM was proposed before the advent of UML. |
| In its relation to UML2 ROOM is in a similar position as EMF compared to MOF |
| where the design was guided by the principles of simplicity and performance. |
| ROOM was tailored to suit the needs of a very special class of problems and |
| uses concepts that address them in a highly formalized way. Maybe it is worth |
| to stress that ROOM is not limited at all to the domain of telecommunication. |
| It is general enough to be applied to any distributed event driven real time system.</p> |
| |
| <p>The proposed eTrice project aims at an implementation of the ROOM language |
| together with code generators and tooling for model editing. |
| For the embedded target a portable runtime library will be supplied as part of |
| the project which implements a platform abstraction, basic services like messaging, thread and |
| process creation and a layer with the invariant parts of the modeling elements .</p> |
| |
| <h2>Scope</h2> |
| |
| <!-- |
| All projects must have a well-defined scope. Describe, concisely, what |
| is in-scope and (optionally) what is out-of-scope. An Eclipse project |
| cannot have an open-ended scope. |
| --> |
| |
| <p>The objectives of the eTrice project are to:</p> |
| |
| <ul> |
| <li>provide an implementation of the real time modeling standard <a href="#room-book">[ROOM]</a></li> |
| <li>build exemplary but ready to use editors for ROOM models (textual and graphical)</li> |
| <li>create code generators and portable target runtime libraries for Java and C++, later also for ANSI-C</li> |
| <li>provide built-in support for modeling level debugging of the running target software: |
| state machine animation, data inspection and manipulation and message injection</li> |
| <li>provide built-in possibilities for sequence diagram creation from the running software</li> |
| <li>support distributed heterogenous systems out of the box</li> |
| </ul> |
| |
| <h2>Description</h2> |
| |
| <!-- |
| Describe the project here. Be concise, but provide enough information that |
| somebody who doesn't already know very much about your project idea or domain |
| has at least a fighting chance of understanding its purpose. |
| --> |
| |
| <p>The eTrice project will strive to deliver state of the art tooling and target middleware for |
| the model driven development of industry quality event driven real-time software. |
| Emphasis will be laid on the usablity of tooling, produced code and middleware in real |
| industry projects.</p> |
| |
| <p>The design will be guided by the following principles</p> |
| <ul> |
| <li><em>Simplicity</em>: eTrice will be kept as simple as possible to fulfill its purpose</li> |
| <li><em>Conceptual Integrity</em>: |
| <ul> |
| <li>eTrice will offer only <em>one</em> solution for a given class of problems</li> |
| <li>eTrice will offer coherent architecture conecpts</li> |
| </ul> |
| </li> |
| <li><em>Extensibility</em>: eTrice can be extended or changed in various ways by |
| <ul> |
| <li>extending the ROOM metamodel</li> |
| <li>extending or adding Editors</li> |
| <li>extending or adding new codegenerators e.g. for other languages or other middleware</li> |
| <li>extending or replacing the middleware</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <p>The eTrice project will create</p> |
| |
| <ul> |
| <li>a ROOM metamodel</li> |
| <li>textual and graphical model editors for classes, structure, behavior, deployment and instance configuration</li> |
| <li>code generators</li> |
| <li>target middlewares as environment for the generated code</li> |
| </ul> |
| |
| <h3>The ROOM Metamodel</h3> |
| |
| <p>The ROOM metamodel will be based on EMF. Since there is no industry standard the project adopts |
| the language as it is described in <a href="#room-book">[ROOM]</a>. |
| The model will be completed by elements to describe deployment and configuration data. |
| Also the model will be refined where appropriate as the project evolves. E.g. a concept of |
| libraries will be introduced.</p> |
| |
| <p>Model persistence will be in a textual, human readable form at a medium granularity. |
| This provides an easy way for a team to lock some parts and merge others if necessary.</p> |
| |
| <h3>Model Editors</h3> |
| |
| <p>Initial editors will be implemented using Xtext. The |
| concrete syntax will be similar to the one proposed in <a href="#room-book">[ROOM]</a> p. 493ff. Later graphical editors |
| for structure (component hierarchy) and behavior (state machines) will be added using GMF or |
| Graphiti.</p> |
| |
| <h3>Code Generators</h3> |
| |
| <p>Code generators will be based on Xpand and Xtend. Initially code generation in Java |
| and C++ will be supported. Later also an ANSI C version will follow.</p> |
| |
| <h3>Target Middleware</h3> |
| |
| <p>The middleware will |
| be supplied for exemplary OS/hardware combinations like Windows/PC and Linux/PC. A middleware |
| will be provided for each supported OS/hardware combination and target language. |
| Emphasis will be laid on easy portability.</p> |
| |
| <h2>Relationship with other Eclipse Projects</h2> |
| |
| <ul> |
| <li>eTrice will use EMF for the ROOM metamodel</li> |
| <li>eTrice will use Xtext for textual editors</li> |
| <li>eTrice will use Xpand and Xtend for code generation</li> |
| <li>eTrice will use GMF and/or Graphiti for graphical editors</li> |
| </ul> |
| |
| |
| <h2>Literature</h2> |
| |
| <dl> |
| <dt><a name="room-book">[ROOM]</a></dt> |
| <dd>Bran Selic, Garth Gullekson, Paul T. Ward: |
| <em>Real-Time Object Oriented Modeling</em>, |
| New York: John Wiley, 1994 (ISBN 0-471-59917-4)</dd> |
| </dl> |
| |
| <h2>Initial Contribution</h2> |
| <h3>Patterns and Experience from the Tool Trice</h3> |
| <p>The initial committers created between 1998 and 2002 a ROOM tool called Trice, that implements a good part of the ROOM language, including runtime and code generators for C++ and C. The tool is still used for the development of distributed realtime systems mainly in the domains of automation, automotive and telecommunications. |
| Since the tool was developed completely from scratch with Visual C++, it would be very hard to migrate it to Eclipse, XText, EMF, GMF, ... The decision is to redo it completely. </p> |
| <p>So the contribution from the Trice Project will not be code, but </p> |
| <ul> |
| <li>a deep understanding of the ROOM methodology and its application for real world problems</li> |
| <li>lots of patterns and howtos</li> |
| <li>a clear vision of what the eTrice project should achieve</li> |
| <li>some pilot projects that can be converted from Trice to eTrice</li> |
| </ul> |
| <h3>eTrice Prototype</h3> |
| <p>The current eTrice prototype is a proof of concept that was created to get a better feeling for the way to go with XText Grammar, syntax and semantic models, code generators and runtime.</p> |
| <p>The prototype that will be contributed contains:</p> |
| <ul> |
| <li>a ROOM grammar in XText</li> |
| <li>a Java runtime</li> |
| <li>Java code generators</li> |
| </ul> |
| <p>All other contributions will be developed from scratch.</p> |
| |
| <!-- |
| <h2>Legal Issues</h2> |
| Please describe any potential legal issues in this section. Does somebody else |
| own the trademark to the project name? Is there some issue that prevents you |
| from licensing the project under the Eclipse Public License? Are parts of the |
| code available under some other license? Are there any LGPL/GPL bits that you |
| absolutely require? |
| --> |
| |
| <h2>Committers</h2> |
| |
| <!-- |
| List any initial committers that should be provisioned along with the |
| new project. Include affiliation, but do not include email addresses at |
| this point. |
| --> |
| |
| <p>The following individuals are proposed as initial committers to the project:</p> |
| |
| <dl> |
| <dt>Thomas Schuetz, project lead, protos (<a href="http://www.protos.de">www.protos.de</a>)</dt> |
| <dd>Thomas has many years of experience in the development of real-time software for industrial automation, automotive and telecom applications. Together with Henrik and others he developed a ROOM tool |
| which he used over a long period for modeling and code generation. He also has a sound knowledge in designing |
| the middleware for event driven real-time software.</dd> |
| |
| <dt>Henrik Rentz-Reichert, committer, protos (<a href="http://www.protos.de">www.protos.de</a>)</dt> |
| <dd>Henrik has many years of experience in the development of modeling tools. Together with |
| Thomas S. and others he created a ROOM tool with code generators for C and C++ and a runtime |
| library for the generated code. He has developed Eclipse RCP tools and successfully used |
| technologies from the Eclipse Modeling Project like EMF, GMF, M2M/ATL and TMF/Xtext.</dd> |
| |
| </dl> |
| |
| <!-- |
| Describe any initial contributions of code that will be brought to the |
| project. If there is no existing code, just remove this section. |
| --> |
| |
| <h2>Mentors</h2> |
| |
| <!-- |
| New Eclipse projects require a minimum of two mentors from the Architecture |
| Council. You need to identify two mentors before the project is created. The |
| proposal can be posted before this section is filled in (it's a little easier |
| to find a mentor when the proposal itself is public). |
| --> |
| |
| <p>The following Architecture Council members will mentor this |
| project:</p> |
| |
| <ul> |
| <li>Ed Merks</li> |
| <li>Sven Efftinge</li> |
| </ul> |
| |
| <h2>Interested Parties</h2> |
| |
| <!-- |
| Provide a list of individuals, organisations, companies, and other Eclipse |
| projects that are interested in this project. This list will provide some |
| insight into who your project's community will ultimately include. Where |
| possible, include affiliations. Do not include email addresses. |
| --> |
| |
| <p>The following individuals, organisations, companies and projects have |
| expressed interest in this project:</p> |
| |
| <ul> |
| <li>Thomas Jung, Tieto (<a href="http://www.tieto.com">www.tieto.com</a>)</li> |
| <li>Klaus Birken, Harman Automotive (<a href="http://www.harman.com">www.harman.com</a>)</li> |
| <li>Bjoern Eschrich, PARItec (<a href="http://www.paritec.de">www.paritec.de</a>)</li> |
| <li>Georg Huba, Infineon (<a href="http://www.infineon.com">www.infineon.com</a>)</li> |
| <li>Stephan Eberle, Geensys (<a href="http://www.geensys.com/">www.geensys.com</a>)</li> |
| <li>Itemis (<a href="http://www.itemis.de/">www.itemis.de</a>)</li> |
| <li>Christoph Kunz, CSC (<a href="http://www.csc.com/">www.csc.com</a>)</li> |
| <li>Werner Keil, emergn (http://www.emergn.com/)</li> |
| <li>Robert Schachner, RST (www.rst-automation.com)</li> |
| <li>Vollrath Dirksen, NAT (http://www.nateurope.com/)</li> |
| <li>Andrea Asprian, Individual</li> |
| <li>Thomas Pibernik, Individual</li> |
| </ul> |
| |
| <h2>Tentative Plan</h2> |
| |
| <!-- |
| Describe, in rough terms, what the basic scheduling of the project will |
| be. You might, for example, include an indication of when an initial contribution |
| should be expected, when your first build will be ready, etc. Exact |
| dates are not required. |
| --> |
| |
| <p>The project will start with modeling editors and codegenerators for static structure and statemachines. Other ROOM features will follow step by step.</p> |
| |
| <table cellspacing=5> |
| <tr> |
| <td>July 2010:</td> |
| <td>Proposal published and announced to Eclipse membership</td> |
| </tr> |
| <tr align="left"> |
| <td>August 2010:</td> |
| <td>Initial Contribution</td> |
| </tr> |
| <tr align="left"> |
| <td>October 2010:</td> |
| <td>Prototype of ROOM meta model and XText grammar</td> |
| </tr> |
| <tr align="left"> |
| <td>December 2010:</td> |
| <td>Prototype of Java runtime and Java code generators, first tutorials</td> |
| </tr> |
| <tr align="left"> |
| <td>March 2011:</td> |
| <td>Prototype of graphical editors for statemachines and actor structure, model level debugging</td> |
| </tr> |
| <tr align="left"> |
| <td>August 2011:</td> |
| <td>First industrial project using eTrice</td> |
| </tr> |
| <tr align="left"> |
| <td>Further Steps:</td> |
| <td>C++ runtime and code generators, further ROOM features, C runtime and code generators</td> |
| </tr> |
| </table> |
| |
| |
| <h2>Changes to this Document</h2> |
| |
| <!-- |
| List any changes that have occurred in the document here. |
| You only need to document changes that have occurred after the document |
| has been posted live for the community to view and comment. |
| --> |
| |
| <table> |
| <tr align="left"> |
| <th>Date</th> |
| <th>Change</th> |
| <tr align="left"> |
| <td>16-June-2010</td> |
| <td>Document created.</td> |
| </tr> |
| <tr align="left"> |
| <td>29-June-2010</td> |
| <td>Added mentors and interested parties.</td> |
| </tr> |
| </tr> |
| <tr align="left"> |
| <td>29-September-2010</td> |
| <td>Added more interested parties.</td> |
| </tr> |
| </table> |
| |
| </body> |
| </html> |