Identifying Non-Functional Requirements

Non-Functional Requirements

In addition to the functions a system must perform, there are often constraints the system must satisfy.

Some constraints may apply to individual use cases.

For example, a constraint on opening an account at an online liquor store is that customers must be at least 21 years old.

UML allows us to annotate elements by constraints. A constraint usually has the form:

{ condition }

The condition can be expressed informally or formally.

For example:

The FURPS+ Model

A system-wide constraint is called a non-functional requirement.

The FURPS model organizes all requirements into five categories:

F = Functional

U = Usability

R = Reliability

P = Performance

S = Supportability

The FURPS+ model adds a few more categories.

Non-Functional Requirements

Usability

Level of user expertise assumed.

User interface standards used.

Documentation provided.

Reliability

Safety and security requirements.

Availability, robustness, and reliability of the system.

Exception handling

Mean time between failures

Error tolerance

Data loss tolerance

Performance

number of concurrent users supported

response time

number of transactions per second

Supportability

How will system be extended?

Who maintains the system?

Implementation

Platform?

Interfaces

Interfaces to existing systems.

Protocols used.

Operation

Who manages the running system?

Packaging

Who installs the system?

How many installations are there?

Legal

Licensing?

Liability issues?

Licensing fees or liabilities incurred from using third-party components or algorithms?