Adding Nonfunctional Requirements

To add a non-functional requirement, select Edit | Add NFR from the main menu, or select the ‘Add non-functional requirement’ button from the toolbar as indicated by a red arrow in the screenshot below. Once selected a new empty nonfunctional requirement will appear in the editing panel to the right of the Use Case Editor main window:

Adding a non-functional requirement

In case you were wondering what the strange icon is on the ‘Add NFR’ button, it is supposed to be a few links of a chain. Non-functional requirements are sometimes also called constraints. A chain can be used to constrain things, so hence the choice of icon . . . .

Editing Nonfunctional Requirements

To edit a non-functional requirement, first select it by navigating to it in the tree view. Alternatively, add a new non-functional requirement as described above.

Once you have the non-functional requirement available for editing in the right hand panel, you should set a brief descriptive name for the NFR in the upper text box, then describe the details of the NFR in the multiline textbox beneath.

Deleting Nonfunctional Requirements

To delete a non-functional requirement, first select it by navigating to it via the tree view at the left side of the main window. Once selected, it can be deleted by selecting Edit | Delete NFR from the main menu, or by clicking on the ‘Delete NFR’ button on the toolbar, highlighted by a red arrow in the screenshot below:

Deleting a non-functional requirement

Associating NFRs with Use Cases

It is sometimes useful to link the non-functional requirements with the functional requirements that they will impose a constraint on. By doing this, the developer that constructs automated unit and use case tests for that use case can include suitable tests to make sure the NFR is being met as well. Hence each use case has an extra editing tab that allows you to select the NFRs that apply to that use case.

To associate a subset of the NFRs with a particular use case, first select the use case in the tree view, by drilling down into ‘Use case packages’ then down into the parent package, and finally selecting the use case whose associated NFRs you wish to set.

Now click the third tab on the right hand editing panel, with tab title ‘Non-Functional Requirements’ . Initially only the list of previously linked non-functional requirements is visible in the grid.

Check the check box whose caption suggests you do so if you want to change the list of associated non-functional requirements. The grid is now filled with a list of every non-functional requirement, together with check boxes alongside for you to indicate whether that NFR should be linked with this use case, as shown in the screenshot below:

Associating a non-functional requirement with a use-case

Once you uncheck the check box at the top of the grid, only the list of associated NFRs will be displayed in the grid, minus their selection check boxes.