ReqIF Studio
ReqIF Studio
1 Introduction 7
1.1 RMF, ProR, Essentials and formalmind Studio . . . . . . . . . . 7
1.2 Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Improve this Document . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 Overview 11
2.1 Requirements Engineering & Management . . . . . . . . . . . . . 11
2.2 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Requirements Interchange Format (ReqIF) . . . . . . . . . . . . . 12
2.3.1 ReqIF History . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.2 Previous Versions of ReqIF . . . . . . . . . . . . . . . . . 13
2.3.3 Internal Attributes . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4.1 The Most Important ReqIF Elements . . . . . . . . . . . 14
2.4.2 SpecElements . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.3 Comparing Excel and ReqIF . . . . . . . . . . . . . . . . 16
3 Tutorial 19
3.1 Basic Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Tutorial 1: Creating a Basic ReqIF Model . . . . . . . . . . . . . 19
3.2.1 Install ProR . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.2 Create the Model . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.3 Customizing the SpecType . . . . . . . . . . . . . . . . . 21
3.2.4 Showing the New Attributes . . . . . . . . . . . . . . . . 22
3.2.5 Adding new SpecObjects . . . . . . . . . . . . . . . . . . 23
3.2.6 Rearranging Elements . . . . . . . . . . . . . . . . . . . . 24
3.2.7 Export Specification as HTML . . . . . . . . . . . . . . . 24
3.2.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3 Tutorial 2: Use Presentations . . . . . . . . . . . . . . . . . . . . 25
3.3.1 ID Presentation . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4 Tutorial 3: Advanced SpecTypes . . . . . . . . . . . . . . . . . . 27
3
4 CONTENTS
4 Reference 33
4.1 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1.1 Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1.3 Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1.4 Installing New Features . . . . . . . . . . . . . . . . . . . 34
4.1.5 Workspaces . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.6 Committer License Agreement (CLA) . . . . . . . . . . . 35
4.2 ProR User Interface . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.1 Editors and Views . . . . . . . . . . . . . . . . . . . . . . 36
4.2.2 RMF Specification Editor . . . . . . . . . . . . . . . . . . 37
4.2.3 Project Explorer View . . . . . . . . . . . . . . . . . . . . 40
4.2.4 ReqIF Validation . . . . . . . . . . . . . . . . . . . . . . . 41
4.3 Configuration and Preferences . . . . . . . . . . . . . . . . . . . . 42
4.3.1 Global Preferences . . . . . . . . . . . . . . . . . . . . . . 42
4.3.2 General Configuration . . . . . . . . . . . . . . . . . . . . 42
4.3.3 Datatype Configuration . . . . . . . . . . . . . . . . . . . 43
4.3.4 Presentation Configuration . . . . . . . . . . . . . . . . . 44
4.3.5 Column Configuration . . . . . . . . . . . . . . . . . . . . 45
4.4 Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5 Import and Export . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5.1 Import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5.2 Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.6 Searching and Filtering . . . . . . . . . . . . . . . . . . . . . . . 47
4.6.1 Quicksearch . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.6.2 ReqIF Search . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.6.3 Raw ReqIF Search . . . . . . . . . . . . . . . . . . . . . . 52
5 Presentations 53
5.1 Working with Presentations . . . . . . . . . . . . . . . . . . . . . 53
5.2 Default Datatype Handlers . . . . . . . . . . . . . . . . . . . . . 54
5.3 Built-in ProR Presentations . . . . . . . . . . . . . . . . . . . . . 56
5.3.1 ID Generator Presentation . . . . . . . . . . . . . . . . . 56
5.3.2 Headline Presentation . . . . . . . . . . . . . . . . . . . . 56
5.3.3 Linewrap . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
CONTENTS 5
6 Style Guide 59
6.1 Alphabetization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.2 Punctuation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.3 Contributing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.3.1 Gerrit for Contributions . . . . . . . . . . . . . . . . . . . 60
6 CONTENTS
Chapter 1
Introduction
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 3) 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.
Information. If you are interested in adopting a lightweight development pro-
cess that can be used with ProR, visit our initiative [Link].
7
8 CHAPTER 1. INTRODUCTION
ProR. ProR is the name of the user interface that allows users to work with
ReqIF-based requirements. ProR is typically installed into existing Eclipse
installations. There used to be a standalone build of ProR, which has been
discontinued.
RMF Core. While ProR is the frontend of RMF, the Core is the back end.
This distinction is primarily intended for developers.
ProR Essentials. The company Formal Mind created this collection of add-
ons that make ProR much more usable. For instance, Essentials allows
for the editing and rendering of formatted text.
formalmind Studio. As there is no standalone version of ProR available, For-
mal Mind created one, which comes with Essentials preinstalled. For users
who “just want to edit requirements”, this is the most convenient way of
getting started.
1.2 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).
formalmind Studio is based on Eclipse Luna (4.4).
1.3 Conventions
Throughout this book you’ll see the following conventions:
Information. Tips are marked with this icon. They usually summarize how
to work more effectively. Details about the subject matter are found in
the text.
Warning. Warnings are marked with this icon. They point out things that
can go wrong, or important steps that are easily missed.
Example
Examples often demonstrate how a concept is applied in practice. They will
be marked with a black square at the beginning and at the end, as shown
with this text.
When referring to menus or user interface elements, they are shown like
here on gray background in small capitals.
When we introduce a new term or want it to stand out, it will be marked
like this in the text. Often this is done only the first time that it appears.
Terms that represent ReqIF model elements (e.g. SpecObject) are capital-
ized. Sometimes, we abbreviate them, for instance “SpecElement” instead of
the full “SpecElementWithAttributes”. They will still be capitalized to indicate
that these are model elements.
1.4. IMPROVE THIS DOCUMENT 9
Figure 1.1: The RMF team during a Sprint in April 2012 in Düsseldorf, Ger-
many: Lukas Ladenberger, Mark Brörkens, Ingo Weigelt, Said Salem and
Michael Jastram (left to right)
1.5 Acknowledgements
Many parties were involved in the creation of RMF. We would like to thank the
core team that made it possible.
The roots of this project were created by Andreas Graf, Michael Jastram
and Nirmal Sasidharan, who joined together individual projects to create RMF.
Their efforts were financed by the research projects itea Verde and FP7 Deploy.
RMF was assembled at the Eclipse Foundation, where it has been active ever
since. Figure 1.1 shows four of the five RMF Committers at a joint coding
10 CHAPTER 1. INTRODUCTION
1.6 License
This work, or parts thereof, are licensed under the Eclipse Public License Version
1.0 as part of the Eclipse Requirements Modeling Framework (RMF) project at
[Link]/rmf.
Chapter 2
Overview
2.2 Tools
There are many tools available for requirements engineering. These include free
or cheap ones, like Microsoft Word and Excel, Wikis and issue trackers. There
are expensive, professional ones available, like IBM R Rational R DOORS R ,
PTC Integrity or Visure IRQA. Lately, there are also web-based tools, like
Polarion.
11
12 CHAPTER 2. OVERVIEW
ProR falls into the category of free tools. But compared to the ones men-
tioned, it contains important features from professional tools, including trace-
ability and typed attributes. Further, by taking advantage of the Eclipse ecosys-
tem, the tool can be augmented by plug-ins for version support, model integra-
tion and much more.
Warning. ReqIF uses its own terminology. Section 2.4 defines the ReqIF vo-
cabulary and how it relates to the terms used in classical requirements
engineering.
(Audi, BMW Group, Daimler, VW, Bosch and Continental), tool vendors (At-
ego, IBM, MKS) and development partners (HOOD GmbH, PROSTEP AG).
The ReqIF team expects that making the Requirements Interchange Format
an OMG standard increases the number of interoperable exchange tool imple-
mentations on the market, fosters the trust of companies exchanging require-
ment information in the exchange format and provides safety of investments to
tool vendors.
2.4 Terminology
Working with ProR can be confusing as it uses the terminology from ReqIF. For
instance, ReqIF uses SpecObjects, rather than requirements. In the following, we
define the more important terms. More are defined throughout the document.
You can use the index to find the definition of terms.
14 CHAPTER 2. OVERVIEW
A ReqIF model is the data structure that holds all the information together.
In practical terms, it’s just a file, that usually ends in .reqif or .reqifz. It
contains not just the requirements, but also the data types of those requirements
and a lot of other stuff. It has been described in detail in Section 2.3.
Before defining the most important elements, we will provide a brief overview
with a concrete example.
INF-1 is a node with three children, REQ-1, REQ-2 and REQ-3 (this can be
seen by the indentation). Let’s look at INF-1 and REQ-1. When one is selected
in the main pain, it’s attributes appear in the Properties View, the pane at
the bottom.
INF-1 has two Attributes, “Description” and “ID”. The SpecType is “Infor-
mation Type” (shown as the header in the Properties View).
REQ-1, REQ-2, and REQ-3 have three Attributes, “Description”, “ID” and
“Status” (this is not obvious from the figure). To accommodate this, a column
called “Status” has been created. As the “Information Type” has no “Status”
attribute, it is not shown in the Properties View.
2.4.2 SpecElements
A requirement is called a SpecObject. This is arguably the most important
element in ReqIF, the actual requirements that you are working with. The
SpecObjects of a ReqIF model can be directly accessed in ProR via the outline.
It is more common to access them via a Specification. When a SpecObject
is selected, its details (attributes and internal information) are shown in the
Properties View.
There are other elements in ReqIF that have a type and attributes. We call
these SpecElements, although in the official ReqIF specification, they are called
SpecElementsWithAttributes.
•
• Boolean – true or false
• Integer – the range can be customized
• Real – range and precision can be customized
• Date – also includes the time
• String – the maximum length can be customized
• Enumeration – both single and multiple choice are supported
• XHTML – allow embedding objects of any type
Tutorial
19
20 CHAPTER 3. TUTORIAL
• Select the project and name the file “[Link]”. Click Finish;
• Upon completion, the model will be opened, as well as the one and only
Specification contained in this model.
After this, your window should look more or less as shown in Figure 3.1.
You will see your ReqIF file in the Project Explorer window (1).
The Specification Editor (2) shows your Specifications.
In the Specification Editor, you see the SpecObjects that exist in this Speci-
fication. There is currently only one, with the description “Start editing here”.
The Outline (3) has four folders:
Specifications. Shows the Specifications in the ReqIF. You can expand the
tree to expose the hierarchy of SpecObjects in the ReqIF model.
SpecObjects. Shows all SpecObjects in the ReqIF model as a flat list. Keep
in mind that SpecObjects in Specifications are references. In contrast,
this folder shows all SpecObjects created for the ReqIF model, whether
or not they are referenced.
SpecRelations. Shows all SpecRelations in the ReqIF as a flat list. For now,
we will ignore SpecRelations.
SpecRelationsGroups. These are special constructs that can be used for
grouping SpecRelations with the same source and target.
(“Requirements Type”) and its only Attribute (“Description”) with the value
“Start editing here.” There are two tabs Standard Attributes and All At
tributes at the bottom of the Properties View. The Standard Attributes
tab shows you all standard attributes of the selected element. All Attributes
shows all existing ReqIF attributes of the selected element.
Above the main working windows it the tool bar (5) and, at the very top,
the menu bar (6).
• Add two more attributes to the SpecObjectType called “ID” and “Owner”
and
• We will show those Attributes in the Specification
The resulting dialog box has two folders in the upper pane: one for SpecTypes
and one for Datatypes. Currently, there is only one Datatype “T String32k” and
two SpecTypes, one called “Requirements Type” with the attribute “Descrip-
tion” and one called “Specification Type” with the attribute “Description”.
In the lower pane are the details in regards to each attribute.
We add more Attributes to “Requirements Type” by right-clicking it and
selecting New Child | Attribute Definition String. This will create a new
element. Upon selecting it, we can rename it and tailor the details. Double-click
on the “Long Name” variable and type in “ID”. Change the Type by double-
clicking the field and choosing “T String32k” from the dropdown menu. Repeat
the process but this time change the “Long Name” to “Owner”. In the end, the
dialog should look as shown in Figure 3.2.
Upon closing the dialog, little will have changed - the Specification still shows
just two columns, Description and Link. However, if you select the requirement,
you will see the new Properties (ID and Owner) in the Property view.
By clicking on the “Add Column” icon at the top of the dialog, create a new
column and name it “Description”. In this view, the columns can be dragged
and dropped to change their order as desired.
The resulting window is shown in Figure 3.3.
Information. Note that you have to provide free text for the columns for the
same reason that we used free text for the “Labels” earlier: This way we
can easily match multiple SpecObjects of different types.
You can actually adjust the width of the columns simply by dragging the
column headers.
to the given SpecType. If we had more than just one SpecType (besides “Re-
quirements Type”), there would be an entry for each SpecType in the context
menu.
To continue the exercise, select the New Child | SpecObject (Requirement
Type). Now we have two SpecObjects. The original is numbered on the far
left-hand side of the pane with a “1”. The second one, the child, is numbered
“1.1”. Now we should change the ID’s of each entry. Click in the cell of the
column “ID“ (in row 1) and type in INF-1. Under Description, type ”A ProR
tutorial.“ For the second, change the ID to REQ-1 and ”Learn how to create a
new requirement” in the “Description” column.
Feel free to add a few more rows and or even new structures. Yours should
look somethinig similar to Figure 3.4.
3.2.8 Conclusion
Quite an achievement—but there’s still a bit of a way to go. One improvement
we can make is simplifying data entry. Another is improving the visibility of
the descriptions. In the next part of the tutorial, we will address these issues.
• Presentations can change the way Attributes are rendered in the Specifi-
cation,
• Presentations can change the way Attributes are edited in the Specification
and
3.3.1 ID Presentation
It would be nice if every SpecObject had its own unique ID. Actually, they do:
The unique ID is shown in the All Attributes tab of the Property View, if a
SpecObject is selected. But that ID is meant for machines and is not practical.
The ID Presentation allows the automatic creation of more user-friendly IDs.
Let’s create one.
Remember that Presentations are associated with Datatypes, not Attributes.
Thus, we first have to create a new Datatype called “T ID“. We then associate
that Datatype with the Attribute “ID”. We described this process in the first
tutorial. Figure 3.6 shows the configuration dialog, when all is done.
The next step is the association of the Datatype with the Presentation.
We open the Presentation Configuration and create a new Presentation from
the dropdown menu Select Action..., of type “Id” Presentation. We associate
it with the newly created Datatype. After configuration, it would look as shown
in Figure 3.7.
Note that you can adjust the prefix, count and the vertical alignment of the
presentation.
Warning. At this point, the Presentation does not yet check for duplicates.
It simply grabs a new value from count, increments it and uses it. Also,
existing values are never overwritten.
26 CHAPTER 3. TUTORIAL
• Create a new Datatype that will be used for the headline content.
We do not set the type yet, as we need to create a new Datatype. We do this,
as before, by right-clicking on the Datatypes folder in the upper pane. Create
a child of type Definition String. Call it “T Headline” and set the length to
50. Now we can go back to the “Description” Attribute (in the upper pane) and
set the type to T Headline, which is now available from the dropdown.
When all this is done, the resulting configuration should look as shown in
Figure 3.8.
You can change the type of a SpecObject by selecting it and changing it
in the Properties View. Please note that currently all existing values are lost
when changing the type.
Note the following:
• For SpecObjects of this SpecType, the columns “ID” and “Owner” are
now empty and cannot be edited.
• Note how the Property View changes as you select SpecObjects of different
SpecTypes.
• Right-clicking on a row now shows one more option for child/sibling cre-
ation: A new entry of type “Headline Type”.
Last, we will create a Headline Presentation and activate it for the type
“T Headline”. This is done via the Presentation Configuration, as before.
The configuration allows you to change the font size of the headline in the “Size”
property. The presentation configuration is shown in Figure 3.10.
After all the changes, the Specification should look as shown in Figure 3.9.
Note that the formatting is also applied in the Properties View.
The Link cell of a SpecRelation shows the label of the link target of that
SpecRelation. Selecting it will show the link target’s Attributes in the Proper
ties View (instead of the SpecRelation’s Attributes, as for all other cells).
Figure 3.12 shows a Specification where REQ-1a and REQ-3a are linked.
Reference
4.1 Eclipse
ProR is an extension of the generic Eclipse Platform. The following is concerned
with Eclipse in general.
Information. Please consult the Eclipse platform overview for further infor-
mation.
4.1.1 Prerequisites
Eclipse is a Java-based application. You need a Java Runtime Environment
(JRE) on your computer in order to run ProR.
ProR requires JRE 1.6 or better. However, some of the features from ProR
Essentials require JRE 1.7 or better. Further, we recommend the version from
Oracle, and not OpenJDK.
Information. You can download Java at [Link].
4.1.2 Installation
This chapter explores the installation of Eclipse Products, i.e. software that
you can download and run on your computer. This is in contrast to features or
plugins, which can be added to an existing product.
When working with Eclipse, you have to start with a base installation. For
working with ProR, we recommend using formalmind Studio, but you can start
with any Eclipse product.
Once you have identified the product you would like to use, you need to
download it, which is typically a .zip file. Create a folder and extract the
content of the .zip file into that folder.
33
34 CHAPTER 4. REFERENCE
You launch the product by double-clicking on the launcher in the folder you
created. For formalmind Studio, this is called [Link] or studio.
The first time you launch Eclipse, it will ask you for the Workspace location,
see Section 4.1.5.
4.1.3 Updates
The Eclipse Update Manager regularly checks for new versions and alerts the
user if one is found. It can also be started manually via Help | Check for
Updates.
4.1.5 Workspaces
The workspace is a folder on your computer, where all information related to
ProR is stored. This includes all your ReqIF files, organized into projects, as
well as various meta data.
Information. Read more about the The Workbench in the Eclipse documen-
tation.
Also, it is possible to have more than one workspace, and to switch between
them. This feature can be useful for advanced users.
(1) The Project Explorer shows a hierarchical listing of the project and the
associated models.
(2) The editor area shows two kinds of editors. First, each ReqIF file has
a ReqIF Editor that shows basic information about the mode. In addition,
Specification Editors can be opened for each Specification.
(3) The Outline View has four folders that show the content of the selected
model:
Specifications shows the Specifications in the ReqIF model. You can expand
the tree to expose the hierarchy of SpecObjects in each Specification.
36 CHAPTER 4. REFERENCE
SpecObjects shows all SpecObjects in the ReqIF model as a flat list. Keep in
mind that SpecObjects in Specifications are references. In contrast, this
folder shows all SpecObjects created for the ReqIF model, whether or not
they are referenced.
SpecRelations shows all SpecRelations in the ReqIF as a flat list.
SpecRelationsGroups represents an optional mechanism for grouping SpecRe-
lations between two specific specifications.
(4) The properties of a selected Element are shown in the Properties View.
It has two tabs, one for Standard Attributes and one for All Attributes.
(5) Above the main working windows is the tool bar, which may change ac-
cording to which editor is active.
(6) The menu bar provides access to all Eclipse and ProR features.
You can browse through the available Views and open them via Window |
Show Views..., resulting in a menu similar to the one shown in Figure 4.2.
Upon opening a ReqIF model, the editor opens providing an overview of the
model. In essence what you are seeing is the Eclipse Workbench, with several
modifications. Here you will find a quick overview of each component. A more
detailed description of the Workbench can be found in Eclipse’s Workbench
User Guide.
Information. There may be more than one editor for a given file type. To pick
a specific one, right-click the file and select Open With..., which will give
you the list of installed editors. In particular, the fmStudio Main Editor
from Formal Mind is more powerful than the stock editor (see Section ??).
A model contains any number of Specifications, and the details of each Spec-
ification can be inspected individually. The windows in which all relevant in-
formation appears are called views. At your disposal are many views with
productivity, debugging, help and team resources. We will be focusing only on
the views relevant to ProR.
Figure 4.3: Specification Editor with the context menu open for creating a new
child element
the Column Dialog, accessible via ProR | Column Configuration or the toolbar
.
The leftmost column shows the hierarchy and carries an icon. The icon
indicates whether it is a lone SpecHierarchy or a SpecObject .
Figure 4.5: Result: The requirement is now a child of the chosen parent.
Figure 4.6: Click on a requirement and drag onto the line (bolded) below or
above target sibling.
40 CHAPTER 4. REFERENCE
Figure 4.7: Result: The requirement is now a sibling of the chosen requirement.
Show Properties View. Opens the Properties View, where the selected el-
ement can be inspected and edited.
Information. In addition to the validator that is built into the tool, there is
also a command line version available, which can be downloaded for free
from [Link]
• If the Problem View is not visible, open it by hand via Window | Show
View | Other... | General | Problems
• To see the error in the file, you must open it in a text editor as follows:
Validation Rules
You can access and individually disable the validation rules via Window | Pref
erences | Model Validation | Constraints.
Information. A printable version of the validation rules can retrieved from the
build server at [Link]
ws/[Link]/[Link]
Consequent Acknowledgement
Consequent is part of the open source Eclipse project and was financed by the
ProStep ReqIF Implementor Forum.
Pror. In the top level menu, the warning message for encountering simplified
XHTML can be disabled.
Default Presentations. ProR has basic cell editors for each ReqIF Datatypes.
But it is possible to install new editors with better or different capabil-
ities. With this setting, Presentations can be selected to handle certain
Datatypes by default.
Label Configuration
The Label Configuration is used to determine what to use for the text labels
of elements in places, where a shorthand is needed. Examples are elements in
the Outline View or the link targets in the Link column.
ProR will determine the label by looking at the label configuration, which
is a list of Strings. It will go through the list, top to bottom. If the element has
an attribute with a matching name, that attribute value is used as the label.
If none is found, then the element’s internal ID is displayed.
To configure, select Label Configuration in the top pane of the dialog. On
the bottom pane, you see the Default Label property. Doubleclick the value
(on the right), then click on the ellipses (...) to open the configuration dialog.
Under Feature, you will see the list of attribute names that will be used for the
label, if found.
Use the Add and Remove buttons to add more attribute names to be searched
for. The search order can be adjusted with Up and Down.
Enumeration Datatypes
4.5.1 Import
The following importers exist:
ReqIFz Import. This standard importer takes ReqIF archive (.reqifz) and
imports it as an Eclipse project.
CSV. This standard importer takes comma-separated data and imports it into
an existing ReqIF model. It is described further below.
CSV Import
The CSV import adds the content from a comma-separated file into an existing
specification. Therefore, you first need to create a ReqIF model. Once this is
done, the importer is used as follows:
Warning. The importer will create new SpecTypes, Attributes and Datatypes.
Your existing types will not be reused! We recommend to clean up the
datatypes after the import.
• On the first dialog page, you need to select the source file containing
the CSV data. The dialog defaults to comma-separated data, but other
separators can be chosen as well.
• Last, the destination model has to be chosen. After this, the next button
is enabled.
• On the next page, the columns have to be mapped. Initially, there is just
a single element, Library.
• Right-click Library to open the context menu that allows you to add a
new mapping. There are four options. They all do the same, but the first
three prepopulate the attribute name with a sensible value.
4.6. SEARCHING AND FILTERING 47
• You need to create a mapping for each column that you would like to
import. A mapping consists of three elements:
Column Mapping. Select the column from the CSV file. The column
headings are shown if the checkbox was selected on the previous page,
otherwise just the column numbers.
Attribute Name. The name for the Attribute in the resulting ReqIF
model.
Data Type. The datatype of the resulting attribute. The safest option
is String, for other datatypes, a conversation attempt is made.
• You do not need to create a mapping for all columns. Figure4.11 shows
the importer dialog with one complete mapping.
• Once all mappings are complete, hitting finish will complete the import.
You can read more in the Formal Mind Blog.
4.5.2 Export
The following exporters exist:
ReqIFz Export. This standard exporter takes an Eclipse project and pro-
duces a ReqIF archive (.reqifz).
Axiom. This commercial exporter supports the selective exporting of exchange
data for supplier communication. More information at the Formal Mind
Product Site.
HTML. The HTML export is not a “real” export, as it is accessed differently.
It produces an HTML view from an open Specification. To use it, you
need to have a Specification Editor open. Then select File | Print....
4.6.1 Quicksearch
This feature allows you to search-as-you-type within the open Specification. The
search box is embedded in the toolbar and only visible if a Specification Editor
is open.
You can just begin typing in the box. With every keystroke, the view will
update and collapse those rows that do not match. All attributes are searched.
Information. The search dialog shows several tabs on the top. This handbook
will cover ReqIF Search and ReqIF Search (Raw)—our ReqIF search tools.
Depending on your Eclipse configuration, other search option may be
shown and may still be useful. For instance, the File Search is useful
for searching within all files, including .reqif files.
Search Criteria
The ReqIF Search conditions consist of search criteria, that are added by click-
ing on Add new. This creates a new criteria panel. An arbitrary number of
criteria can be defined. Criteria can be removed by clicking on × on the left
side of the panel, or by clicking clear to remove all.
The radio button on top allows to either Match all or match any of the
criteria.
Each criteria consists of three parts, attribute, operator and value. One such
criteria is shown in Figure 4.12, with the attribute dropdown open.
Attribute. Choose an attribute (datatype) from the list. The first four (IDEN-
TIFIER, DESC, LONG NAME, and LAST CHANGE) are ReqIF-internal
attributes and are rarely of interest to normal users (see Section 2.3.3).
The others attributes are taken directly from the document. The more
attributes you create, the longer the list will grow. After you have chosen
an attribute from the list, the rest of your choices (which are determined
by the datatype of the attribute) are displayed.
Operator. The operator dropdown is specific to the selected attribute and is
described for each type below.
Value. The value or values are specific to the operator and are also described
below.
4.6. SEARCHING AND FILTERING 49
The following operators are available for all attributes, no matter what their
type:
Equals (=). For a match, the value must match exactly as provided. This
implies that the attribute has actually been set. For instance, an empty
string matches an empty string. But it does not match if the value has
not been set (i.e. if it is null, in technical terms).
Set. For a match, the value must be set to any value. Note: A default value
does not represent a match.
Not set. For a match, the value must not be set. Note: If the attribute in
question does not exist, then there will not be a match either. See example
below.
50 CHAPTER 4. REFERENCE
Example
Not Set Operator. Assume you receive a ReqIF model for review, with
two SpecTypes, one called Information Type which contains an attribute De-
scription and one called Requirement Type which contains two attributes,
Description and Status. You are supposed to fill out the status for all re-
quirements.
To find those that are still missing, you search for Status not set. This will
deliver all requirements for which no status has been set, even if there is a
default value.
The interfaces for integer attributes and real attributes are identical, but the
text boxes will only accept numbers of the appropriate type.
Not equal (6=). The provided value is not equal to the given number. This
operator matches if the attribute has no value set.
Between. A match exists if the attribute value is between the given numbers,
including them.
Greater than (>). A match exists if the attribute value is greater than the
value, excluding it.
Less than (<). A match exists if the attribute value is less than the value,
excluding it.
The granularity of the date criteria are one day, while ProR date stamps also
include the time and have timezones.
Equal (=). The day matches, no matter what the time (but timezones apply).
Not equal (6=). Any day except the given day, or not set.
Between. A match exists if the attribute value is between the given numbers,
including them.
Before. A match exists if the attribute value is before the date, excluding it
(i.e. before the time [Link] on that date).
After. A match exists if the attribute value is after the date, including it (i.e.
after the time [Link] on that date).
52 CHAPTER 4. REFERENCE
Not equal (6=). Anything except an identical list will match. Note: An empty
list matches an unset attribute value.
All. All selected value must also be selected on the attribute (but the attribute
may have more).
Any. For a match, at least one of the list values must also be set on the at-
tribute.
Presentations
ProR has an extension mechanism that allows custom rendering, custom editing
and automatic modifications to the requirements model. These extensions are
called presentations.
Presentations can be created and configured via ProR | Presentation Con
figuration... or the icon in the toolbar. Launching it will show the dialog
shown in Figure 5.1. Initially, the dialog will be empty. The dialog in the figure
shows two presentation configurations.
Presentations are specific for a model, and its configuration is also stored in
the requirements model.
ProR ships with a small set of standard presentations. Additional presenta-
tions can be installed into ProR.
Warning. Note that presentations are specific to ProR, not to ReqIF. This
means that other tools will simply ignore presentations. Also note that
the behavior of the tool is unpredictable if a presentation used by a model
is not installed in ProR.
53
54 CHAPTER 5. PRESENTATIONS
Selecting a presentation in the upper pane will show its configuration pa-
rameters in the lower pane. In Figure 5.1, the ID-Generator is selected, and the
lower pane shows its four configuration parameters.
All presentations have a configuration parameter Datatype. Typically, the
datatype determines whether a presentation is applied to an element or not.
None. This is the default and implies that the build-in renderer is used. Upon
starting the tool, ProR will check whether a new presentation has been
installed that requests to act as the default handler for that datatype. If
such a presentation is found, it will be set as the handler.
Use Built-in. This forces the built-in handler to be used. Even if an installed
presentation requests to be the handler, the built-in handler will continue
to be used.
List of installed presentations. The remaining entries list all installed pre-
sentations. Note that the dialog does not filter the matching types. I.e.
even though the RTF presentation is only applicable for XHTML, it is
shown in the dropdown for all datatypes.
Warning. Please make sure that you only set datatype handlers of the correct
type. Also note that there is no access to the configuration parameters of
56 CHAPTER 5. PRESENTATIONS
default handlers. Therefore, this mechanism makes only sense for presen-
tations that do not require any additional configuration.
Datatype. The presentation will be applied to all attributes with this datatype.
Must by of type String.
Prefix. The prefix to the number. Note that changing this will only modify
newly created IDs, not those already generated.
Vertical align. Allows to adjust how the text shall be rendered in the cell.
Warning. Currently, the presentation does not check whether duplicate IDs
exist!
Datatype. The presentation will be applied to all attributes with this datatype.
Must by of type String.
5.3.3 Linewrap
This presentation wraps text at word boundaries, essentially what one would
expect anyway. The built-in renderer breaks the text anywhere, including in
the middle of words.
This presentation is usually set as the default presentation.
Information. Regular users can just ignore this presentation. It has been
created for developers to understand the presentation mechanism.
58 CHAPTER 5. PRESENTATIONS
Chapter 6
Style Guide
This simple guide is intended to explain the style used in this documentation.
We request that you follow it as closely as possible when creating content in
order to maintain a clear, concise and easy to read body of work.
The documentation was created with and is maintained with LATEX. That
stands to reason that much of the formatting is software-dependent, leaving us
to worry about more important things. But that still leaves some decisions for
us to make. For example, alphabetization, certain punctuation, spelling and
hyphenation of certain words, and the like will be accounted for here.
6.1 Alphabetization
What should and should not be alphabetized:
• General terms such as “requirements” or “specifations” not used in a ProR
or Eclipse specific manner are written in lower-case.
• ProR- and Eclipse-specific terms shall be capitalized. i.e., terms such as
“Eclipse Workbench,” “SpecObject,” “Editor,” and “Views” are capital-
ized.
6.2 Punctuation
• Mdashes shall be used when needed—here is a perfect example—with no
spaces.
• Periods will be followed by double-spaces.
• When Colons are used to introduce a series of numbered items in a list,
do not capitalize the first item after the colon (unless it’s a proper noun)
and seperate the list items with semi-colons, e.g.: There are three differ-
ences: (1) the first difference; (2) the second difference; and (3) the third
difference.
59
60 CHAPTER 6. STYLE GUIDE
6.3 Contributing
Documentation is one of those things that gets easily neglected in open source
projects. It is also one of the easiest for outsiders to contribute to. The docu-
mentation is managed as Latex, which may scare some people. But no worries,
those who don’t want to learn Latex don’t have to.
There are broadly two ways for contributing to the documentation:
File a bug. Visit the RMF Bug Tracker. You can just point out a problem or
request for improvement. You can also provide some text to be added to
the documentation (unformatted). If you do, however, then you need to
sign a Committer License Agreement (CLA)
Submit improved LATEXvia Gerrit. If you are technically inclined (mean-
ing that you know what LATEXand git are, and how to use them), then
you can contribute via the Gerrit code review system, as described at
[Link].