Lecture 5
Lecture 5
Before we start to develop our software, it becomes quite essential for us to understand and
document the exact requirement of the customer. Experienced members of the development team
carry out this job. They are called as system analysts.
The analyst starts requirements gathering and analysis activity by collecting all information from
the customer which could be used to develop the requirements of the system. He then analyzes the
collected information to obtain a clear and thorough understanding of the product to be developed,
with a view to remove all ambiguities and inconsistencies from the initial customer perception of
the problem. The following basic questions pertaining to the project should be clearly understood
by the analyst in order to obtain a good grasp of the problem:
After the analyst has understood the exact customer requirements, he proceeds to identify and
resolve the various requirements problems. The most important requirements problems that the
analyst has to identify and eliminate are the problems of anomalies, inconsistencies, and
incompleteness. When the analyst detects any inconsistencies, anomalies or incompleteness in the
gathered requirements, he resolves them by carrying out further discussions with the end- users
and the customers.
The functional requirements part discusses the functionalities required from the system. The
system is considered to perform a set of high-level functions {f }. The functional view of the
i
system is shown in fig. 5.1. Each function f of the system can be considered as a transformation
i
of a set of input data (ii) to the corresponding set of output data (o ). The user can get some
i
meaningful piece of work done using a high-level function.
Nonfunctional requirements:-
Nonfunctional requirements deal with the characteristics of the system which cannot be expressed
as functions - such as the maintainability of the system, portability of the system, usability of the
system, etc.
Goals of implementation:-
The goals of implementation part documents some general suggestions regarding development.
These suggestions guide trade-off among design goals. The goals of implementation section might
document issues such as revisions to the system functionalities that may be required in the future,
new devices to be supported in the future, reusability issues, etc. These are the items which the
developers might keep in their mind during development so that the developed system may meet
some aspects that are not required immediately.
Identifying functional requirements from a problem description
The high-level functional requirements often need to be identified either from an informal problem
description document or from a conceptual understanding of the problem. Each high- level
requirement characterizes a way of system usage by some user to perform some meaningful piece
of work. There can be many types of users of a system and their requirements from the system
may be very different. So, it is often useful to identify the different types of users who might use
the system and then try to identify the requirements from each user’s perspective.
Output: details of the author’s books and the location of these books in the library
So the function Search Book (F1) takes the author's name and transforms it into book details.
Functional requirements actually describe a set of high-level requirements, where each high-level
requirement takes some data from the user and provides some data to the user as an output. Also
each high-level requirement might consist of several other functions.
For documenting the functional requirements, we need to specify the set of functionalities
supported by the system. A function can be specified by identifying the state at which the data is
to be input to the system, its input data domain, the output data domain, and the type of processing
to be carried on the input data to obtain the output data. Let us first try to document the withdraw-
cash function of an ATM (Automated Teller Machine) system. The withdraw-cash is a high-level
requirement. It has several sub-requirements corresponding to the different user interactions. These
different interaction sequences capture the different scenarios.
Description: The withdraw cash function first determines the type of account that the user has and
the account number from which the user wishes to withdraw cash. It checks the balance to
determine whether the requested amount is available in the account. If enough balance is available,
it outputs the required cash; otherwise it generates an error message.
R1.1 select withdraw amount option
Input: amount to be withdrawn in integer values greater than 100 and less than 10,000 in
multiples of 100.
Processing: the amount is debited from the user’s account if sufficient balance is
available, otherwise an error message displayed
Black-box view. It should only specify what the system should do and refrain from stating
how to do these. This means that the SRS document should specify the external behavior
of the system and not discuss the implementation issues. The SRS document should view
the system to be developed as black box, and should specify the externally visible behavior
of the system. For this reason, the SRS document is also called the black-box specification
of a system.
Conceptual integrity. It should show conceptual integrity so that the reader can
easily understand it.
The important problems that an organization would face if it does not develop a SRS
document are as follows:
Without developing the SRS document, the system would not be implemented
according to customer needs.
Software developers would not know whether what they are developing is what
exactly required by the customer.
Without SRS document, it will be very much difficult for the maintenance
engineers to understand the functionality of the system.
It will be very much difficult for user document writers to write the users’ manuals
properly without understanding the SRS document.