blob: 0eac2d60a4c18f4de7d27b55f913f33af7d0bd7b [file] [log] [blame]
<!--
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>ReqCycle</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 type="text/css">
dt {
display: list-item;
list-style-position: outside;
list-style-image:
url(/eclipse.org-common/themes/Phoenix/images/arrow.gif);
margin-left: 16px;
}
dd {
margin-left: 25px;
margin-bottom: 5px;
}
</style>
<body>
<p>
ReqCycle project is a proposed open source project under the <a
href="http://Polarsys.org/">PolarSys Top level Project</a>.
</p>
<!--
The communication channel must be specified. Typically, this is the
"Proposals" forum. In general, you don't need to change this.
-->
<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.proposals">Eclipse
Proposals</a> Forum.
</p>
<h2>Background</h2>
<!--
Optionally provide the background that has lead you to creating this project.
-->
<p>Model-driven engineering is more and more used and industry has
started to switch from traditional document-based approach to this new
approach. There is a clear need for system engineers to be able to
weave textual requirements and models all along the development cycle:
formalize requirements, refine them with specification models, implement
them with design models and verify them with testing models.</p>
<p>So there is a growing request from industry to get an open
source solution able to create textual requirements or gather
requirements wherever they exist (documents, Database, model elements,
annotations in code&hellip;) and to give ability to define links from
those requirements to any development artefact including models, but
also test cases, code&hellip;</p>
<p>There exist open source solutions to manage requirements but
they generally provide limited flexibility in requirement
organization/classification. Industry needs tooling able to:
1) classify requirements and links through a customizable data
model to organize requirements and links according to scopes
(customer, system, subsystem A, SubSystem B, &hellip;);
2) check coverage with traceability matrices and perform impact
analysis from customer needs to models. (and models to requirements); and
3) check coverage with traceability matrices and perform impact analysis
from customer needs to models. (and models to requirements).</p>
<p>There exist open source solutions that allow creating links
between requirements and other objects but there the creation of links
is generally too generic to provide required guidance and semantics.
Industry seeks for tooling able to give semantics to the links created
between requirements and development artefacts: for instance
&quot;refine&quot;, &quot;satisfy&quot;, &quot;implement&quot;,
verify&quot;, &hellip; and it must be possible to restrict links so
that they apply only between some requirements (some scope for
instance) and some artefacts (SysML blocks for instance).</p>
<p>
ReqCycle has been developed on the basis of <a
href="http://www.topcased.org">TOPCASED</a> Requirement component in
order to offer an Open Source solution addressing both requirement
management (create data model, create/import/reference
requirements&hellip;) and requirement traceability to any development
artefact that can be clearly identified as a &quot;Reacheable
object&quot; (through a Unified Resource Identifier) and with
flexibility to conform to a custom process and associated data model.
</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>ReqCycle can define data models to classify requirements in
scopes (team organization) and in types (list of attributes) like
&quot;functional requirements&quot;, &quot;safety requirements&quot;,
and more.</p>
<p>ReqCycle can create requirements, import/update or reference
textual requirements existing in different data sources or formats
such as ReqIF (.reqIf), OpenOffice Writer (.odt) , Microsoft
Word&trade;(.docx), openOffice Calc (.ods) or Microsoft
Excel&trade;(.xslx). It can also reference requirements contained in
EMF models through usage of OCL rules to identify requirements.</p>
<p>ReqCycle can display all imported/referenced/created
requirements into treeview or tables and filter them with custom
criteria on requirements attributes and values.</p>
<p>ReqCycle can define traceability link types from requirement to
a model element or code, provide associated semantics to the links and
attributes (for instance &quot;lifecycle&quot; attribute to manage
requirement validation or &quot;rationale&quot; attribute in case of
&quot;satisfy&quot; semantics). The requirement can be restricted to a
given scope or structure and the model element can be restricted to a
specific metaclass/concept.</p>
<p>ReqCycle can create traceability links between requirements and
UML/SysML Papyrus models or Java&trade; code according to the
traceability link types defined in preferences. ReqCycle provides
extension points to create traceability to other models, code or other
artefacts. ReqCycle can capture existing traceability links coming
from different sources like SysML models or Java code.</p>
<p>ReqCycle can display all traceability links (created or
captured) into a treeview or a table and filter links with custom
criteria.</p>
<p>The framework can be extended to add new requirement import
connectors, new traceability analysis engines, new artefacts to take
into account as link targets.</p>
<p>
<img src='ReqCycleBigPicture.png' alt="" width="480"/>
</p>
<br />
<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>ReqCycle addresses both requirement management (create data
model, create/import/reference requirements&hellip;) and requirement
traceability of development artefacts that can be clearly identified
as &quot;Reacheable objects&quot; (through a Unified Resource Identifier) and
with flexibility to conform to a custom process and associated data
model.</p>
<p>ReqCycle is generally used in two different steps: configuration
and operations. Configuration is generally done by
&quot;methods/quality&quot; team while operations are done by system
engineers.</p>
<table>
<tr>
<td><img src='1.png' alt=""/></td>
<td>Configuration: Define data model for your project or your
company with scopes and requirements types (list of attributes).</td>
</tr>
<tr>
<td><img src='2.png' alt=""/></td>
<td>Configuration: Define kinds of traceability links needed by
the project or your company.</td>
</tr>
<tr>
<td><img src='3.png' alt=""/></td>
<td>Operations: Import/update/reference requirements and manage
them according to the data model (scopes, requirements structure).</td>
</tr>
<tr>
<td><img src='4.png' alt=""/></td>
<td>Operations: Create links between requirements and
development artefacts according to traceability link types defined
in configuration.</td>
</tr>
<tr>
<td><img src='5.png' alt=""/></td>
<td>Operations: capture other traceability links according to
registered traceability engines and aggregate those links with those
created previously. Calculate traceability metrics. Export
traceability data.</td>
</tr>
</table>
<p>Example of SysML requirement traceability captured and
visualized in a treeview.</p>
<p>
<img src="Traceability.png" alt="" width="480"/>
</p>
<p>
ReqCycle is currently experimented in several contexts (avionics,
railways, automotive) to support use cases from <a
href="http://www.systematic-paris-region.org/fr/projets/agesys">AGeSys</a>
French collaborative project.
</p>
<h2>Why PolarSys?</h2>
<!--
Answer these two questions: What value does this project bring to the Eclipse
community? What value do you expect to obtain from hosting your project at Eclipse?
What value do you get by having your project at Eclipse over and above the value
of hosting at Eclipse Labs?
-->
<p>ReqCycle is a transversal component based on top of
Eclipse-based technologies (EMF, M2T, RMF, Papyrus) that can be used
in any industrial domain where requirements are key artefacts.
PolarSys has already identified the need of two components to manage
requirements and their traceability on top of Eclipse technologies.
ReqCycle seems to match those expectations and PolarSys is then the
natural place to host this project.</p>
<h2>Initial Contribution</h2>
<!--
Projects are expected to arrive at Eclipse with existing code.
Describe the existing code that will be contributed to the project. Please provide
a couple of paragraphs describing the code with modest detail, including important
information like code ownership (who holds the copyright?), and some consideration
of community that exists around the code. Include a listing of third-party libraries
and associated licenses.
-->
<p>
AGeSys consortium is offering ReqCycle as initial code base. See <a
href="https://github.com/aradouan/ReqCycle/">ReqCycle gitHub</a>.
</p>
<h2>Third party libraries</h2>
<ul>
<li><a href="https://code.google.com/p/guava-libraries">Google
guava</a> (license: <a href="http://www.apache.org/licenses/LICENSE-2.0">
http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
<li><a href="https://github.com/tinkerpop/blueprints/wiki">BluePrint
: </a> (license: BSD-like license, <a
href="https://github.com/tinkerpop/blueprints/raw/master/LICENSE.txt">
https://github.com/tinkerpop/blueprints/raw/master/LICENSE.txt</a>)</li>
<li><a href="http://www.openrdf.org/">OpenRDF Sesame : </a>
(license: <a
href="https://bitbucket.org/openrdf/sesame/raw/b21436e56ae5a0c1434117ccc5c97c7151a5fe05/core/LICENSE.txt">
https://bitbucket.org/openrdf/sesame/raw/b21436e56ae5a0c1434117ccc5c97c7151a5fe05/core/LICENSE.txt</a>)</li>
</ul>
<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?
-->
All contributions will be distributed under the Eclipse Public License.
<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>Anass RADOUANI, Atos</dt>
<dd>He is a committer on several TOPCASED components including
TOPCASED-requirement where he has made significant contributions over
the last years. He is the main developer of ReqCycle</dd>
<dt>Mathieu VELTEN, Atos</dt>
<dd>He is an Eclipse committer on MDT Papyrus and works on
TOPCASED.</dd>
</dl>
<p>We welcome additional committers and contributions.</p>
<p>The following individual is proposed as leader of the project:</p>
<dl>
<dt>Rapha&euml;l Faudou, Samares Engineering</dt>
<dd>He has written the ReqCycle specifications in the frame of ReqCycle
project.</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>Benoit LANGLOIS (Thales Global Services)</li>
<li>Wayne Beaton</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><a href='http://www.airbus.com'>Airbus</a></li>
<li><a href='http://www.ansys.com'>Ansys</a></li>
<li><a href='https://www.thalesgroup.com/'>Thales</a></li>
<li><a href='http://www.scilab-enterprises.com//'>Scilab
Enterprises</a></li>
</ul>
<h2>Project Scheduling</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>
</p><ul>
<li>November 2013: code submission and IP review</li>
<li>January 2014: first builds on the Eclipse infrastructure.</li>
</ul>
<p></p>
<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>
<th>Date</th>
<th>Change</th>
</tr>
<tr>
<td>04-November-2014</td>
<td>Document created</td>
</tr>
</table>
</body>
</html>