Chapter 3 - Requirement Engineering (PART 1)
Chapter 3 - Requirement Engineering (PART 1)
Engineering (PART 1)
Topic Outline
• Functional and non-functional requirements
• The software requirements document
• Requirements specification
• Requirements engineering processes
• Requirements elicitation and analysis
• Requirements validation
• Requirements management
Objectives
▪ Understand the concept of users and system
requirements and why these requirements should be
written in different ways.
▪ Understand the differences between functional and non-
functional requirements.
Requirements Engineering
▪ The requirement for a system descriptions of what the
system should do (services that its provides & the constraints
on its operation).
▪ These requirements reflect the needs of customer for a system
that serves a certain purpose (e.g. controlling a device, placing
order, finding information).
▪ The process of finding out, analyzing, documenting and
checking these services and constraints is called requirements
engineering (RE).
What is a requirements
It may range from a high-level abstract statement of a service
or of a system constraint to a detailed mathematical
functional specification.
This is inevitable as requirements may serve a dual function
▪ May be the basis for a bid for a contract - therefore must be
open to interpretation;
▪ May be the basis for the contract itself - therefore must be
defined in detail;
▪ Both these statements may be called requirements.
Types of Requirement
User requirements
– Describes the services that the system should provide and the
constrains under which it must operate.
– It’s more of generic requirements. Don’t expect to see any level
of detail, or what exactly the system will do.
– Usually written in a natural language and supplied by diagrams.
System Requirements
– A more detailed description of the system services and the
operational constrains such as how the system will be used, and
development constrains such as the programming languages.
– Level of detail is needed by those who are involved in the
system development, like engineers, system architects, testers,
etc.
User and system requirements
General
More
specific
Readers of different types of
requirements specification
3.1 FUNCTIONAL AND NON-
FUNCTIONAL REQUIREMENT
Functional and non-functional
requirements
Functional requirements
– Statements of services/functions the system should provide, how the
system should react to particular inputs and how the system should
behave in particular situations.
– May state what the system should not do.
Non-functional requirements
– Constraints on the services or functions provided by the system such as
timing constraints, constraints on the development process, standards,
etc.
– Often apply to the system as a whole rather than individual features or
services.
Domain requirements
– Constraints on the system from the domain of operation.
– Derived from the application domain and describe system characteristics
and features that reflect the domain.
Functional requirements
Describe what the system should do.
Depend on the type of software being developed, expected
users of the software and the general approach taken by the
organization when writing requirements.
Functional user requirements may be high-level statements of
what the system should do.
Functional system requirements should describe the system
services in detail, its i/o, exceptions and so on.
Examples of functional
requirements of LIBSYS System
A library system that provides a single interface to a
number of databases of articles in different
libraries.
User can search for, download and print these
articles for personal study.
Functional requirements for the
MHC-PMS
A user shall be able to search the appointments lists
for all clinics.
The system shall generate each day, for each clinic, a
list of patients who are expected to attend
appointments that day.
Each staff member using the system shall be uniquely
identified by his or her 8-digit employee number.
Organizational requirement
Users of the MHC-PMS system shall authenticate themselves using
their health authority identity card.
External requirement
The system shall implement patient privacy provisions as set out in
HStan-03-2006-priv.
Common Problem with non-
functional requirements
– In practice, customers for a system often find it difficult to
translate their goals into measurable requirements.
– Problem: User/customers often propose these requirements as
general goals (e.g. ease of use, the ability of the system to
recover from failure).
– They don’t understand what some number defining the required
speed or reliability.
– Non-functional requirements should be measurable.
– We should write non-functional requirements quantitatively, so
that they can be tested.
– We can measure them when the system being tested to check
whether the system meet it’s non-functional requirements.
Non-functional requirements examples
• Product requirement
The user interface for LIBSYS shall be implemented as simple
HTML without frames or Java applets.
• Organisational requirement
The system development process and deliverable documents shall
conform to the process and deliverables defined in XYZCo-SP-
STAN-95.
• External requirement
The system shall not disclose any personal information about
customers apart from their name and reference number to the
operators of the system.
Goals and requirements
• Non-functional requirements may be very difficult to state
precisely and imprecise requirements may be difficult to
verify.
• Goal
– A general intention of the user such as ease of use.
• Verifiable non-functional requirement
– A statement using some measure that can be objectively tested.
• Goals are helpful to developers as they convey the intentions
of the system users.
User requirements Here, you describe the services provided for the user. The non-functional system
definition requirements should also be described in this section. This description may use natural
language, diagrams, or other notations that are understandable to customers. Product
and process standards that must be followed should be specified.
System architecture This chapter should present a high-level overview of the anticipated system
architecture, showing the distribution of functions across system modules.
Architectural components that are reused should be highlighted.
The structure of a
requirements document
Chapter Description
System This should describe the functional and non-functional requirements in more detail. If
requirements necessary, further detail may also be added to the non-functional requirements.
specification Interfaces to other systems may be defined.
System models This might include graphical system models showing the relationships between the
system components and the system and its environment. Examples of possible models
are object models, data-flow models, or semantic data models.
System evolution This should describe the fundamental assumptions on which the system is based, and
any anticipated changes due to hardware evolution, changing user needs, and so on.
This section is useful for system designers as it may help them avoid design decisions
that would constrain likely future changes to the system.
Appendices These should provide detailed, specific information that is related to the application
being developed; for example, hardware and database descriptions. Hardware
requirements define the minimal and optimal configurations for the system. Database
requirements define the logical organization of the data used by the system and the
relationships between data.
Index Several indexes to the document may be included. As well as a normal alphabetic
index, there may be an index of diagrams, an index of functions, and so on.
3.3 REQUIREMENTS SPECIFICATION
Requirement Specification
Structured natural The requirements are written in natural language on a standard form or template. Each
language field provides information about an aspect of the requirement.
Design description This approach uses a language like a programming language, but with more abstract
language features to specify the requirements by defining an operational model of the system.
This approach is now rarely used although it can be useful for interface specifications.
Graphical notations Graphical models, supplemented by text annotations, are used to define the functional
requirements for the system; UML use case and sequence diagrams are commonly
used.
Mathematical These notations are based on mathematical concepts such as finite-state machines or
specifications sets. Although these unambiguous specifications can reduce the ambiguity in a
requirements document, most customers don’t understand a formal specification.
They cannot check that it represents what they want and are reluctant to accept it as a
system contract.
Requirements and Design
■ In principle, requirements should state what the system
should do and the design should describe how it does this.
■ In practice, requirements and design are inseparable.
– A system architecture maybe designed to structure the
requirements;
–The system may inter-operate with other systems that generate
design requirements;
–The use of a specific architecture to satisfy non-functional
requirements maybe a domain requirement.
–This maybe the consequence of a regulatory requirement.
Natural Language Specification
■ Requirements are written as natural language sentences
supplemented by diagrams and tables.
■ Used for writing requirements because it is expressive,
intuitive and universal. This means that the requirements can
be understood by users and customers.
Guidelines for writing requirements
■ Invent a standard format and use it for all requirements.
■ Use language in a consistent way. Use shall for mandatory
requirements, should for desirable requirements.
■ Use text highlighting to identify key parts of the
requirement.
■ Avoid the use of computer jargon.
■ Include an explanation (rationale) of why a requirement is
necessary.
Problems With Natural Language
Lack of clarity
– Precision is difficult without making the document difficult to
read.
Requirements confusion
– Functional and non-functional requirements tend to be mixed-
up.
Requirements amalgation
– Several different requirements maybe expressed together.
Example requirements (Natural
Language Specification) for the Insulin
Pump Software System
3.2 The system shall measure the blood sugar and deliver insulin, if
required, every 10 minutes. (Changes in blood sugar are relatively slow so
more frequent measurement is unnecessary; less frequent measurement
could lead to unnecessarily high sugar levels.)
3.6 The system shall run a self-test routine every minute with the
conditions to be tested and the associated actions defined in Table 1. (A
self-test routine can discover hardware and software problems and alert the
user to the fact the normal operation may be impossible.)