%*******************************************************************************
% 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.

\section{ReqIF.academy}
\index{ReqIF.academy}
\label{sec:reqif.academy}

For a tool to be useful, it is crucial to have quick access to all related information. \href{https://reqif.academy}{Reqif.academy} has been created for exactly that purpose. Instead of hunting information down from all over the web, ReqIF.academy provides all information in one spot. 

\begin{definition}{ReqIF.academy}
ReqIF.academy (\url{https://reqif.academy}) is an online knowledge base for ReqIF and ReqIF Studio. Visit it for videos, templates, checklists, references and of course software and this handbook.
\end{definition}

At ReqIF.academy, you find the following content:

\begin{description}
\item[Workshops.] There will be regular physical workshops regarding ReqIF. The current schedule is prominently posted.
\item[Videos.] Videos cover ReqIF Studio, requirements exchange, the Requirements Interchange Format, and much more. New videos are added on a regular basis.
\item[Software.] Software includes ReqIF Studio itself, for various platforms, and a number of free and premium software components.
\item[Books.] A number of free and premium eBooks, including this handbook as PDF or in print.
\item[References.] Many cheat sheets and other references, including one for the ReqIF standard.
\item[FAQs.] A number of continuously updated Frequently Asked Questions (FAQs).
\item[Checklists.] For commonly performed tasks, you can download appropriate checklists.
\item[Templates.] We will continuously add templates to the library, to help you get started quickly.
\item[Papers.] The library includes various publications related to the subject matter.
\end{description}  

\section{ReqIF Studio, RMF and ProR}
\index{ProR}
\label{sec:rmf_derivatives}

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{System Requirements}
\label{sec:system_requirements}

\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.

