%*******************************************************************************
% Copyright (c) 2014 Formal Mind GmbH and others
% All rights reserved. This program and the accompanying materials
% are made available under the terms of the Eclipse Public License v1.0
% which accompanies this distribution, and is available at
% http://www.eclipse.org/legal/epl-v10.html
% 
% Contributors:
%     Michael Jastram - initial Copy
%******************************************************************************/

The importance of requirements has been recognized for a long time.  And with the advent of computer-aided engineering tools, a number of proprietary solutions have popped up all over the place.  While this has helped organizations to manage their requirements more efficiently, interoperability became a major issue.

The development of the ReqIF standard for requirements exchange finally provided a standard, feature-rich way of accessing requirements data.  Eclipse was the obvious choice for a reference implementation of this open standard.  The result is the Eclipse Requirements Modeling Framework, a complete, open source, user-friendly implementation of ReqIF.

This handbook is a comprehensive documentation of the \pror{} tool, which is based on Eclipse RMF.  All answers with respect to tool use should be answered here.  Furthermore, it contains a small tutorial (Chapter~\ref{sec:tutorial}) to get you started quickly.

Keep in mind that tools are meant to support processes, not the other way around.  \pror{} is a flexible tool, and it can be tailored to support your processes.  But development processes are explicitly outside the scope of this handbook.

\begin{info}
If you are interested in adopting a lightweight development process that can be used with \pror{}, please check out the resources we provide at \href{https://reqif.academy}{reqif.academy}.
\end{info}

\section{ReqIF Studio, RMF, Essentials and ProR}
\index{ReqIF Studio}
\index{ProR}
\index{Essentials}

There are a few derivatives of the RMF project that may be confusing.  The following will
help you to understand the ecosystem and how the pieces fit together:

\begin{description}
\item[RMF.] The Requirements Modeling Framework (RMF) is an open source project that is managed by the Eclipse Foundation.  It consists of software code, documentation, mailing lists, online forum, etc. It is a software framework, and you need an application to use it. Like:
\item[ReqIF Studio.] This is an application that is based on RMF and maintained by the company Formal Mind.  For users who ``just want to edit requirements'', this is the most convenient way of getting started. ReqIF Studio contains some useful extensions to RMF, which are called:
\item[Essentials.] The company Formal Mind created this collection of add-ons that make RMF much more usable.  For instance, Essentials allows for the editing and rendering of formatted text.
\item[ProR.] ProR is the old name of the user interface that allows users to work with ReqIF-based requirements.  You can build ProR from the RMF sources, but there is no ready-to-use download of ProR.
\end{description}

\section{Compatibility}

\pror{} and RMF require at least Java 6 and Eclipse 3.8.  Some features of ProR Essentials require Java 7 from Oracle (not openJDK). Of course, you can use newer versions of Java without problems.

ReqIF Studio is based on Eclipse Luna (4.4). This has not been upgraded, as some large organizations still use fairly old versions of Java. Using a newer version of Eclipse would require a newer version of Java as well.

