Printed Notes SEPM
Printed Notes SEPM
In this article, we will discuss two important terms used in software engineering that
are functional requirements and non-functional requirements, along with the
comparison between them. Understanding the difference between both terms helps to
ensure that the delivered product meets the expectations of the client.
Functional Requirements
Functional requirements define a function that a system or system element must be
qualified to perform and must be documented in different forms. The functional
requirements describe the behavior of the system as it correlates to the system's
functionality.
There are a number of ways to prepare functional requirements. The most common
way is that they are documented in the text form. Other formats of preparing the
functional requirements are use cases, models, prototypes, user stories, and diagrams.
Non-functional requirements
Non-functional requirements are not related to the software's functional aspect. They
can be the necessities that specify the criteria that can be used to decide the operation
instead of specific behaviors of the system. Basic non-functional requirements are -
usability, reliability, security, storage, cost, flexibility, configuration, performance,
legal or regulatory requirements, etc.
Execution qualities like security and usability, which are observable at run time.
Evolution qualities like testability, maintainability, extensibility, and scalability that
embodied in the static structure of the software system.
Functional requirements help to understand the They help to understand the system's
functions of the system. performance.
They describe what the product does. They describe the working of
product.
These requirements are specified by the user. These requirements are specified by
the software developers, architects,
and technical persons.
There is functional testing such as API testing, There is non-functional testing such
system, integration, etc. as usability, performance, stress,
security, etc.
These requirements are important to system These are not always the important
operation. requirements, they may be desirable.
Completion of Functional requirements allows While system will not work only
the system to perform, irrespective of meeting with non-functional requirements.
the non-functional requirements.
Software Requirement Specifications
The production of the requirements stage of the software development process
is Software Requirements Specifications (SRS) (also called a requirements
document). This report lays a foundation for software engineering activities and is
constructing when entire requirements are elicited and analyzed. SRS is a formal
report, which acts as a representation of software that enables the customers to
review whether it (SRS) is according to their requirements. Also, it comprises user
requirements for a system as well as detailed specifications of the system
requirements.
2. Completeness: The SRS is complete if, and only if, it includes the following
elements:
(2). Definition of their responses of the software to all realizable classes of input data
in all available categories of situations.
(3). Full labels and references to all figures, tables, and diagrams in the SRS and
definitions of all terms and units of measure.
(a) The format of an output report may be described in one requirement as tabular but
in another as textual.
(b) One condition may state that all lights shall be green while another states that all
lights shall be blue.
(a) One requirement may determine that the program will add two inputs, and another
may determine that the program will multiply them.
(b) One condition may state that "A" must always follow "B," while other requires
that "A and B" co-occurs.
(3). Two or more requirements may define the same real-world object but use
different terms for that object. For example, a program's request for user input may
be called a "prompt" in one requirement's and a "cue" in another. The use of standard
terminology and descriptions promotes consistency.
5. Ranking for importance and stability: The SRS is ranked for importance and
stability if each requirement in it has an identifier to indicate either the significance
or stability of that particular requirement.
Typically, all requirements are not equally important. Some prerequisites may be
essential, especially for life-critical applications, while others may be desirable. Each
element should be identified to make these differences clear and explicit. Another
way to rank requirements is to distinguish classes of items as essential, conditional,
and optional.
Requirements validation
Requirements validation is the process of checking that requirements defined for
development, define the system that the customer really wants. To check issues
related to requirements, we perform requirements validation. We usually use
requirements validation to check error at the initial phase of development as the
error may increase excessive rework when detected later in the development
process.
In the requirements validation process, we perform a different type of test to check
the requirements mentioned in the Software Requirements Specification (SRS),
these checks include:
Completeness checks
Consistency checks
Validity checks
Realism checks
Ambiguity checks
Verifiability
The output of requirements validation is the list of problems and agreed on actions
of detected problems. The lists of problems indicate the problem detected during the
process of requirement validation. The list of agreed action states the corrective
action that should be taken to fix the detected problem.
There are several techniques which are used either individually or in conjunction
with other techniques to check to check entire or part of the system:
1. Test case generation:
Requirement mentioned in SRS document should be testable, the conducted tests
reveal the error present in the requirement. It is generally believed that if the test
is difficult or impossible to design than, this usually means that requirement will
be difficult to implement and it should be reconsidered.
2. Prototyping:
In this validation techniques the prototype of the system is presented before the
end-user or customer, they experiment with the presented model and check if it
meets their need. This type of model is generally used to collect feedback about
the requirement of the user.
3. Requirements Reviews:
In this approach, the SRS is carefully reviewed by a group of people including
people from both the contractor organisations and the client side, the reviewer
systematically analyses the document to check error and ambiguity.
4. Automated Consistency Analysis:
This approach is used for automatic detection of an error, such as
nondeterminism, missing cases, a type error, and circular definitions, in
requirements specifications.
First, the requirement is structured in formal notation then CASE tool is used to
check in-consistency of the system, The report of all inconsistencies is identified
and corrective actions are taken.
5. Walk-through:
A walkthrough does not have a formally defined procedure and does not require
a differentiated role assignment.
Checking early whether the idea is feasible or not.
Obtaining the opinions and suggestion of other people.
Checking the approval of others and reaching an agreement.
Requirements elicitation is perhaps the most difficult, most error-prone and most
communication intensive software development. It can be successful only through
an effective customer-developer partnership. It is needed to know what the users
really need.
Requirements elicitation Activities:
Requirements elicitation includes the subsequent activities. Few of them are listed
below –
Knowledge of the overall area where the systems is applied.
The details of the precise customer problem where the system are going to be
applied must be understood.
Interaction of system with external requirements.
Detailed investigation of user needs.
Define the constraints for system development.
Requirements elicitation Methods:
There are a number of requirements elicitation methods. Few of them are listed
below –
1. Interviews
2. Brainstorming Sessions
3. Facilitated Application Specification Technique (FAST)
4. Quality Function Deployment (QFD)
5. Use Case Approach
The success of an elicitation technique used depends on the maturity of the analyst,
developers, users, and the customer involved.
1. Interviews:
Objective of conducting an interview is to understand the customer’s expectations
from the software.
It is impossible to interview every stakeholder hence representatives from groups
are selected based on their expertise and credibility.
Interviews maybe be open-ended or structured.
1. In open-ended interviews there is no pre-set agenda. Context free questions may
be asked to understand the problem.
2. In structured interview, agenda of fairly open questions is prepared. Sometimes a
proper questionnaire is designed for the interview.
2. Brainstorming Sessions:
It is a group technique
It is intended to generate lots of new ideas hence providing a platform to share
views
A highly trained facilitator is required to handle group bias and group conflicts.
Every idea is documented so that everyone can see it.
Finally, a document is prepared which consists of the list of requirements and
their priority if possible.
The software design phase is the first step in SDLC (Software Design Life Cycle),
which moves the concentration from the problem domain to the solution domain. In
software design, we consider the system to be a set of components or modules with
clearly defined behaviors & boundaries.