(@DeveloperVibes) Chapter
(@DeveloperVibes) Chapter
Chapter Includes :
• Software Requirements
• Functional And Non-Functional Requirements
• User Requirements
• System Requirements
• Software Requirements Document
SOFTWARE REQUIREMENTS
It has been shown in various process models that a successful development process
involves several key activities. Every process model includes one such activity that
determines the product requirements. These requirements enable the software engi-
neer to understand the expectations of the customers from the proposed product. It
is a statement of services and constraints that the software product needs to satisfy.
IEEE defines requirement as “A condition or capability that must be met or possessed
by a system to satisfy a contract, standard, specification or other formally imposed
document”. The software requirements can be categorized as :
a) User requirements : The client provides the description of services required
and constraints under which the system must operate smoothly. The state-
ments of services and constraints are recorded in textual or graphical forms.
b) System requirements : It is also known as functional specification. It is an
elaboration of services and constraint statements. This document must be
prepared with preciseness as it may form a part of the contract.
c) Software design specification : It is a brief outline of the software design that
forms a basis for the detailed design and implementation.
The requirements phase finally leads to the Software Requirements Specification 87
(SRS). Thus, the basic goal of requirements phase is to produce the SRS.
Software Readers of different types of requirements specification
Engineering
User requirements Client managers, system end-users, client engineers,
contractor managers, system architects.
NOTES System requirements System end-users, system architects, client engineers,
software developers.
Software design specification Client engineers, system architects, software
developers.
Needs of Requirements
The requirements serve three important purposes:
➤ The requirements help the test team in presenting the system to the client
in a convincing manner.
Characteristics of requirements
In order to ensure that the software engineers and customers understand and use
these requirements correctly, it is necessary that requirements should be of high
quality. To ensure the same, the requirements can be checked for the following
characteristics:
➤ Correctness : Customer and developer should ensure that requirements are stated
without error.
➤ Consistency : All requirements should be free from ambiguities.
➤ Completeness : It ensures that all possible conditions, input, products and con-
straints have been included.
➤ Realistic : All the requirements must be examined to ensure that they are pos-
sible.
➤ Verifiability : It must be possible for the software engineer to demonstrate that
the requirements have been met.
Non-Functional Requirements
Non-functional requirements refer to the constraints or restrictions on the system.
These constraints may narrow the selection of language, platform, implementation
techniques and tools. The non-functional requirements may sometimes be more
critical than the functional requirements as they may relate to the total system rather
than to individual system features. The non-functional requirements can be built on
the basis of needs of the user, budget constraints, organizational policies, inter-
operability and external factors like safety and privacy considerations.
The non-functional requirements can be listed as follows:
➤ Response time
➤ Throughput
➤ Resource usage
➤ Reliability
➤ Availability
➤ Recovery from failure
➤ Ease for maintainability and enhancement
➤ Allowances for reusability
➤ Platform to be used
➤ Technology to be used
➤ Development process
➤ Cost and delivery data
➤ A System Goal : The system should be easy to use and users’ errors should
be minimized.
➤ A verifiable non-functional requirement : Two days of training should be
enough to use all the system functions and average number of errors made
by users shall not exceed two errors per day. Non-functional requirements
should be expressed and measured by using metrics. A number of possible
metrics to specify non-functional system properties is given in the following
Table. System requirements should be calculated quantitatively and measures
can be made during system testing.
Property Measure
Speed Processed transactions/second,
User/event-response time,
Screen refresh time.
Size Kbytes
Number of RAM Chips
Ease of use Training time, Number of help frames
Reliability Mean time to failure,
Probability of unavailability,
Rate of failure occurrence, Availability.
Robustness Time to restart after failure
Percentage of events causing failure
Probability of data corruption on failure.
Portability Percentage of target-dependent statements
Number of target systems.
Domain Requirements
These requirements are derived from the application domains employed in the de-
sign of the system. This may add a new set of functional requirements to the existing
fist. It may also pose new constraints on the system design. It is essential to satisfy
these requirements as they may affect the capability of the system.
USER REQUIREMENTS
User requirements are expressed in natural language and may be supported with
figures and diagrams. It must easily be understandable by the people who may not
have sound computer knowledge. Users’ requirements comprise of both functional
90 and non-functional requirements for a proposed system. These requirements should
specify only the external behavior of the system. Inclusion of system design charac- Software
teristics may be avoided. Project Requirements
The use of natural language in describing the users’ requirements has the following
drawbacks:
NOTES
a) Lack of clarity : The natural language may lack the technical clarity and
preciseness.
b) Requirements confusion : The user requirements description in natural lan-
guage may not present the functional and non-functional requirements and
system goals etc. in a distinct manner.
c) Requirements amalgamation : A set of requirements may sometime be amal-
gamated into a single requirement.
Guidelines for writing user requirements :
➤ Use standard format for describing all the requirements. It will minimize the
omission and simplifies the task of requirements verification.
➤ Impose consistency in language to distinguish between the mandatory and
desirable requirements.
➤ Distinguish the important parts of requirements using text highlighting.
➤ Use reader friendly language by avoiding complex terminologies and phrases.
➤ User requirements should be separated from more detailed system require-
ments in a requirements document to make it readable for nontechnical
readers.
Example : If a railway reservation system is to be developed, the following can be
the different types of requirements:
1. Functional requirements
➤ The system must be available at all times. Downtime of only two minutes
a week is to be permitted - Availability.
➤ Response time should be short - Efficiency.
➤ System should not produce incorrect results - Reliability.
3. Domain requirements
SYSTEM REQUIREMENTS
A detailed description of user requirements results in system requirements. They
serve as basis for starting the system design. System requirements must be complete
and consistent as they may form a part of the contract for system implementation.
System requirements only reveal the system’s functions that are supposed to be
performed and which can be shown by different models such as data flow model and
object model. These requirements do not state function’s implementation. But prac-
tically, it is not possible to separate requirements and design completely. The follow-
ing are the reasons for this:
➤ While using a natural language, it is assumed that there will not be any
deviation in interpretation of the words used in system requirements.
➤ Using natural language, a particular specification can be written in different
ways. Such descriptions may be misinterpreted.
➤ It is difficult to write the related requirements in form of groups.
Thus, requirements specifications written in natural language may lead to misunder-
standings. At later stage of the process, it is very expensive to resolve these misun-
derstandings. Following table shows various alternatives to natural language.
Notation Description
Structured natural language This relies on standard forms or templates to
describe the requirements specifications.
Design description language The requirements are specified by defining an
operational model of the system with more
abstract features by using PDL.
Graphical notation The functional requirements of the system are
defined by using a graphical language support
by text annotations (example SADT, usecase
description).
Mathematical specifications This approach uses a mathematical concept such
as finite state machines or sets, to define the
system specifications without any ambiguities,
but it is hard to be, understood by non-techni-
92
cal customers.
Table : Notations for requirements specifications
Structured Language Specifications Software
Project Requirements
The limitation of a natural language can be overcome by using structured natural
language. The use of structured natural language brings uniformity in description of
system requirements and minimizes the ambiguities. The language retains the salient NOTES
qualities of natural language such as expressiveness and understandability. The struc-
tured language may derive notation and format to specify the system requirements,
and certain features of programming languages may also be incorporated. This will
help uniting the use of various terminologies from the natural language.
While using the structured language, the software developers can design special
purpose forms to specify the system requirements. This approach requires more than
one form to describe the requirements. The specifications of the system may be
structured around the objects, functions or the events.
The standard form used for specifying functional requirements should contain de-
scription of following information:
➤ Functions specified
➤ Input and their sources
➤ Output and their destination
➤ Pre and post condition in a functional approach
➤ Side-effects of the operation
The formatted specification overcomes some of the drawbacks of the natural language
specification as the variability in specification is reduced and requirements are ex-
pressed more effectively.
Void perform-char-count ()
{
string validated-file-name
int char-count;
If (get-input (validated-file-name) is false)
Print “error message: file does not exist”;
else
{
Set char-count equal to count-number-of -chars (validated-file-name);
if (char-count is equal to -1)
print “error message: file is not a text file”; Check Your Progress
else 1. What is requirment?
produce-output (char-count); 2. What re non-technical
requirements?
}
} 93
boolean get-input (string validated-file-name) {
Software string file-name;
Engineering file-name = read-file-name ();
if (validated-file-name (file-name) is true)
{
NOTES
set validated-file-name equal to file-name; return true;
}
else
return false;
}
Interface Specification
Any new software system must be designed to work with the system that already
exists in the environment. This makes it necessary that the interfaces of existing
systems are precisely denned and included in requirements document early in the
development process.
There are three types of interfaces:
1. Procedure interfaces : When sub-systems offer various services and these
94
services are implemented by different procedures. The procedural interfaces
should be well denned.
2. Data structure interfaces between subsystems : A Java based PDL or entity Software
relationship diagrams can be used to define the interface and passing the Project Requirements
data structure from one subsystem to another.
3. Representation of data : Data which is already established for an existing
subsystem should be represented for new system in a consistent way. NOTES
Chapter Description
Preface This section should define the intended reader
ship. The history of the present version and
rationale for creating a new version should be
described. Summary of changes should be included.
Introduction This part should describe the need for the system.
The functions of the system should be briefly
described. It should describe how the new system
fits into the overall business objective of the
organization.
Glossary This should define all technical terms used in the
document.
User requirements In this section, users’ and non-functional require-
ments should be dedefinition scribed using natural
language and other notations. Product and process
standard must be specified.
System architecture This section provides a high-level view of the
anticipated system architecture. Distribution of
functions across system modules should be described
and reused components must be highlighted.
System requirements This part should contain detailed description of
functional and and specifications nonfunctional
requirements.
System models This section should include system models used
for representing relationship between the system
components and the system, and its environment.
The system models may be object model, data flow
model etc.
System evolution This part describes the fundamental assumptions
on which the system is based. It should also
include anticipated changes, changing user needs
etc.
Appendices This section provides detailed, specific information
related to the application being developed.
Appendices may be on topics like hardware
description, data base description, requirements for
system configurations etc.
Index It should include indexes of diagram, functions etc.
in alphabetical order.
97
Software SUMMARY
Engineering • Requirement is a condition or capability that must be met or possessed by
a system to satisfy a contract, standard, specification or other formally im-
posed document
NOTES • The functional requirements describe an interaction between the system and
its environment. It is a statement expected from a system. These are state-
ments of services, behavior of system with particular input, in particular
situations and output of the system with different input.
• Non-functional requirements refer to the constraints or restrictions on the
system. These constraints may narrow the selection of language, platform, imple-
mentation techniques and tools. The non-functional requirements may some-
times be more critical than the functional requirements as they may relate to the
total system rather than to individual system features.
• The non-functional requirements are difficult to verify and these can be misin-
terpreted by users.
• Domain requirements are derived from the application domains employed in the
design of the system.
• User requirements are expressed in natural language and may be supported with
figures and diagrams. It must easily be understandable by the people who may
not have sound computer knowledge.
• A detailed description of user requirements results in system requirements. They
serve as basis for starting the system design. System requirements must be
complete and consistent as they may form a part of the contract for system
implementation.
• SRS a technical specification of the requirements for the software product.
• The requirements document must include all the requirements of the system in
a clear and concise manner.
ANSWERS TO "CHECK YOUR PROGRESS"
1. Requirement is a condition or capability that must be met or possessed
by a system to satisfy a contract, standard, specification or other formally
imposed document.
2. The non-functional requirements are difficult to verify and these can be
misinterpreted by users.
3. SRS a technical specification of the requirements for the software
product.
4. The requirements document must include all the requirements of the
system in a clear and concise manner.
EXERCISES
1. What are the differences between requirements definition and requirements
specification?
2. What are the different levels of software requirements? Who are the users of these
requirements?
3. Describe different software requirements with examples.
4. Explain briefly different notations for requirements specifications.
5. How can requirements be specified using a PDL? Give an example.
98 6. Explain the characteristic features of a software requirements document.
7. Explain the structure of a software requirements document.