Professional Documents
Culture Documents
Unit 2
Unit 2
Requirement Engineering
Requirement Engineering is the disciplined application of proven principles,
methods, tools, and notations to describe a proposed system’s intended
behaviour and its associated constraints.
SRS may act as a contract between developer and customer.
Requirements are difficult to uncover
Requirements change
Tight project Schedule
Communication barriers
Market driven software development
Lack of resources
Types of Requirement
Functional Requirements
Functional requirements define what the software should DO. They describe the
specific features, actions, and tasks the software must perform.
These are statement s of services the system should provide, how the system should
react to particular inputs, and how the system should be have in particular situations.
In some cases, the functional requirements may also explicitly state what the system
should not do.
Requirements, which are related to functional aspect of software fall into this
category.
They define functions and functionality within and from the software system.
.
Examples of Functional Requirements
Users should be able to log in with a username and password.
The software should allow users to search for products by name or category
The system must send a confirmation email whenever an order is placed.
The system must allow blog visitors to sign up for the newsletter by leaving their
email.
The system must allow users to verify their accounts using their phone number.
The system must allow users to log into their account by entering their email and
password.
The system must allow users to log in with their Google accounts.
The system must allow users to reset their password by clicking on "I forgot my
password" and receiving a link to their verified email address.
Non-Functional Requirements
Non-functional requirements define how the software should be. They focus
on qualities like performance, usability, security, and more.
These are constraints on the services or functions offered by the system.
They include timing constraints, constraints on the development process,
and constraints imposed by standards. Non-functional requirements often
apply to the system as a whole rather than individual system features or
services.
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.
3. Facilitated Application Specification
Technique:
Preliminary Schedule and Budget :In this, initial version and budget of
project plan are explained which include overall time duration required and
overall cost required for development of project.
Appendices :In this, additional information like references from where
information is gathered, definitions of some specific terms, acronyms,
abbreviations, etc. are given and explained.
SRS Document
The SRS is a specification for a specific software product, program,
or set of applications that perform particular functions in a specific
environment. It serves several goals depending on who is writing it.
First, the SRS could be written by the client of a system. Second, the
SRS could be written by a developer of the system. The two methods
create entirely various situations and establish different purposes for
the document altogether. The first case, SRS, is used to define the
needs and expectation of the users. The second case, SRS, is written
for various purposes and serves as a contract document between
customer and developer.
Features of a good SRS document:
2. There may be a reasonable or temporal conflict between the two specified actions.
For example,
(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.
4. Unambiguousness: SRS is unambiguous when every fixed requirement
has only one interpretation. This suggests that each element is uniquely
interpreted. In case there is a method used with multiple definitions, the
requirements report should determine the implications in the SRS so that it
is clear and simple to understand.
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.
6. Modifiability: SRS should be made as modifiable as likely and
should be capable of quickly obtain changes to the system to some
extent. Modifications should be perfectly indexed and cross-
referenced.
7. Verifiability: SRS is correct when the specified requirements can
be verified with a cost-effective system to check whether the final
software meets those requirements. The requirements are verified
with the help of reviews.
8. Traceability: The SRS is traceable if the origin of each of the
requirements is clear and if it facilitates the referencing of each
condition in future development or enhancement documentation.
9. Design Independence: There should be an option to select from
multiple design alternatives for the final system. More specifically,
the SRS should not contain any implementation details.
10. Testability :An SRS should be written in such a method that it is
simple to generate test cases and test plans from the report.
11. Understandable by the customer: An end user may be an expert
in his/her explicit domain but might not be trained in computer
science. Hence, the purpose of formal notations and symbols should
be avoided too as much extent as possible. The language should be
kept simple and clear.
12. The right level of abstraction: If the SRS is written for the
requirements stage, the details should be explained explicitly.
Whereas, for a feasibility study, fewer analysis can be used. Hence,
the level of abstraction modifies according to the objective of the
SRS.
Properties of a good SRS document
Concise: The SRS report should be concise and at the same time, unambiguous,
consistent, and complete. Verbose and irrelevant descriptions decrease readability
and also increase error possibilities.
Structured: It should be well-structured. A well-structured document is simple to
understand and modify. In practice, the SRS document undergoes several revisions
to cope up with the user requirements. Often, user requirements evolve over a period
of time. Therefore, to make the modifications to the SRS document easy, it is vital to
make the report well-structured.
Black-box view: It should only define what the system should do and refrain from
stating how to do these. This means that the SRS document should define the
external behavior of the system and not discuss the implementation issues. The SRS
report should view the system to be developed as a black box and should define the
externally visible behavior of the system. For this reason, the SRS report is also
known as the black-box specification of a system.
Conceptual integrity: It should show conceptual integrity so that the reader can
merely understand it. Response to undesired events: It should characterize
acceptable responses to unwanted events. These are called system response to
exceptional conditions.
Verifiable: All requirements of the system, as documented in the SRS document,
should be correct. This means that it should be possible to decide whether or not
requirements have been met in an implementation.
Requirement Validation
Requirements validation is the process of checking that requirements define
the system that the customer really wants. It overlaps with elicitation and
analysis, as it is concerned with finding problems with the requirements.
Requirements validation is critically important because errors in a
requirements document can lead to extensive rework costs when these
problems are discovered during development or after the system is in
service.
The cost of fixing a requirements problem by making a system change is
usually much greater than repairing design or coding errors. A change to the
requirements usually means that the system design and implementation
must also be changed. Furthermore, the system must then be retested.
During the requirements validation process, different types of checks should be carried
out on the requirements in the requirements document. These checks include:
• Validity checks: These check that the requirements reflect the real needs of
system users. Because of changing circumstances, the user requirements
may have changed since they were originally elicited.
Consistency checks: Requirements in the document should not conflict.
That is, there should not be contradictory constraints or different
descriptions of the same system function.
Completeness checks: The requirements document should include
requirements that define all functions and the constraints intended by the
system user.
Realism checks: By using knowledge of existing technologies, the requirements
should be checked to ensure that they can be implemented within the proposed
budget for the system. These checks should also take account of the budget and
schedule for the system development.
Verifiability: To reduce the potential for dispute between customer and contractor,
system requirements should always be written so that they are verifiable. This means
that you should be able to write a set of tests that can demonstrate that the delivered
system meets each specified requirement.
Requirements validation is the process of checking that requirements are
defined for development, and defining the system that the customer really
wants. To check issues related to requirements, we perform requirements
validation. Requirements validation usually helps us detect errors at an early
stage of product development so that it does not result in excessive rework
when detected later in the software development life cycle. we will look at
what Requirements Validation is, its Process, and various Tools used for
Requirements Validation.
Validation Vs Verification
Validation is a process used for checking if the system is up to the mark or
not. Validation answers the question, “Are we building the right system?” It
is about testing and validating the system and seeing if the system we built
is right or not and if it meets the customer’s expectations or not. Various
methods that are used to validate the system include black-box testing,
white-box testing, integration testing, and unit testing. Validation always
comes after verification. We usually use requirements validation to check
errors at the initial development phase as the error may increase excessive
rework when detected later in the development process. Requirements
validation is important as it helps us to validate that the requirements match
the ideal rules and standards.
Verification is a process used for checking if the system achieves its
expected goals or not without any bugs or issues. Verification answers the
question, “Are we building the product right?” It is about testing and
verifying if the system meets its requirements without any problems.
Various methods that are used to verify the system include reviews,
walkthroughs, inspections, and desk checkings. Verification is a manual
process done before validation.
Validation Techniques:
Checks–While checking the requirements, we proofread the requirements
documents to ensure that no elicitation notes are missed out. During these
checks, we also check the traceability level between all the requirements.
For this, the creation of a traceability matrix is required. This matrix ensures
that all the requirements are being considered seriously and everything that
is specified is justified. We also check the format of requirements during
these checks. We see if the requirements are clear and well-written or not.
Prototyping–This is a way of building a model or simulation of the system
that is to be built by the developers. This is a very popular technique for
requirements validation among stakeholders and users as it helps them to
easily identify the problems. We can just reach out to the users and
stakeholders and get their feedback.
Test Design–During test designing, we follow a small procedure where
we first finalize the testing team, then build a few testing scenarios.
Functional tests can be derived from the requirements specification
itself where each requirement has an associated test. On the contrary, the
non-functional requirements are hard to test as each test has to be traced
back to its requirement. The aim of this is to figure out the errors in the
specification or the details that are missed out.
Requirements Review–During requirement review, a group of
knowledgeable people analyze the requirements in a structured
and detailed manner and identify the potential problems. After
that, they gather up to discuss the issues and figure out a way to
address the issues. A checklist is prepared consisting of various
standards and the reviewers check the boxes to provide a formal
review. After that, a final approval sign-off is done.
verification and validation (V&V)