Download as pdf or txt
Download as pdf or txt
You are on page 1of 51

HANOI UNIVERSITY OF INDUTRY

Faculty of Information Technology

Introduction to Software Engineering

Lecturer: Dr. Nguyen Thi My Binh


Department: Software engineering
Mobile: 0977901599

3/7/2024 1
Chapter 3. Software Requirements
Analysis and Specification
3.1. Value of a Good SRS
3.2. Requirement Process
3.3. Requirements Specification
3.4. Functional Specification with Use Cases
3.5. Other Approaches for Analysis
3.6. Validation
3.7. Conclusion

2
Software Requirements Analysis and
Specification
◼ IEEE defines a requirement as:
◼ (1) A condition of capability needed by a user to solve a problem
or achieve an objective;
◼ (2) A condition or a capability that must be met or possessed by a
system ... to satisfy a contract, standard, specification, or other
formally imposed document. \
◼ All development models require requirements to be
specified.
◼ Approaches like agile require only high-level requirements
to be specified in written form—detailed requirements are
elicited through interaction with the customer in the
iteration the requirement is to be implemented and directly
reflected in software.
3
Software Requirements Analysis and
Specification
◼ The goal of the requirements activity is to produce the
Software Requirements Specification (SRS) that describes
what the proposed software should do without describing
how the software will do it.
◼ In this chapter we will discuss:
◼ The role of the SRS in a project and the value a good SRS brings
to it.
◼ The different activities in the process for producing the desired
SRS.
◼ The desired characteristics of an SRS, the structure of an SRS
document, and its key components.
◼ The use case approach for analyzing and specifying functional
requirements, and how use cases can be developed.
◼ Some other approaches for analyzing requirements like the data
flow diagram.
4
◼ How requirements are validated
Value of a Good SRS
◼ The origin of most software systems is in the needs of
some clients.
◼ The software system itself is created by some developers.
◼ The completed system will be used by the end users.
◼ Thus, there are three major parties interested in a new
system: the client, the developer, and the users
◼ Somehow the requirements for the system that will satisfy
the needs of the clients and the concerns of the users have
to be communicated to the developer.
◼ The problem is that the client usually does not understand
software or the software development process, and the
developer often does not understand the client’s problem
and application area.
5
Value of a Good SRS
◼ This causes a communication gap between the parties
involved in the development project.
◼ A basic purpose of the SRS is to bridge this
communication gap so they have a shared vision of the
software being built. Hence, one of the main advantages of
a good SRS is: an SRS establishes the basis for agreement
between the client and the supplier on what the software
product will do.
◼ This basis for agreement is frequently formalized into a
legal contract between the client (or the customer) and the
developer (the supplier).
◼ So, through SRS, the client clearly describes what it
expects from the supplier, and the developer clearly
understands what capabilities to build in the software 6
Value of a Good SRS
◼ An SRS provides a reference for validation of the final
product.
◼ The SRS helps the client determine if the software meets
the requirements.
◼ Without a proper SRS, there is no way a client can
determine if the software being delivered is what was
ordered, and there is no way the developer can convince
the client that all the requirements have been fulfilled.
◼ Providing the basis of agreement and validation should be
strong enough reasons for both the client and the developer
to do a thorough and rigorous job of requirement
understanding and specification, but there are other very
practical and pressing reasons for having a good SRS.
7
Value of a Good SRS
◼ Studies have shown that many errors are made during the
requirements phase.
◼ An error in the SRS will manifest itself as an error in the final
system implementing the SRS.
◼ Clearly, if we want a high-quality end product that has few
errors, we must begin with a high-quality SRS.
◼ We can conclude that: a high-quality SRS is a prerequisite to
high-quality software. the quality of SRS has an impact on cost
(and schedule) of the project.
◼ We know that errors can exist in the SRS. It is also known that
the cost of fixing an error increases almost exponentially as time
progresses.
◼ Hence, by improving the quality of requirements, we can have a
huge savings in the future by having fewer expensive defect
removals. A high-quality SRS reduces the development cost. 8
Requirement Process
◼ Desirable Characteristics of an SRS
◼ Components of an SRS
◼ Structure of a Requirements Document

9
Requirement Process
◼ The requirement process is the sequence of activities that need
to be performed in the requirements phase and that culminate in
producing a high-quality document containing the SRS.
◼ The requirements process typically consists of three basic tasks:
problem or requirement analysis, requirements specification,
and requirements validation.
◼ Problem analysis often starts with a high-level “problem
statement.”
◼ During analysis the problem domain and the environment are
modeled in an effort to understand the system behavior,
constraints on the system, its inputs and outputs, etc.
◼ The basic purpose of this activity is to obtain a thorough
understanding of what the software needs to provide.

10
Requirement Process
◼ Frequently, during analysis, the analyst will have a series of
meetings with the clients and end users.
◼ In the early meetings, the clients and end users will explain to
the analyst about their work, their environment, and their needs
as they perceive them.
◼ Any documents describing the work or the organization may be
given, along with outputs of the existing methods of performing
the tasks.
◼ In these early meetings, the analyst is basically the listener,
absorbing the information provided.
◼ Once the analyst understands the system to some extent, he uses
the next few meetings to seek clarifications of the parts he does
not understand.
◼ He may document the information or build some models, and he
may do some brainstorming or thinking about what the system 11
Requirement Process
◼ In the final few meetings, the analyst essentially explains to the
client what he understands the system should do and uses the
meetings as a means of verifying if what he proposes the system
should do is indeed consistent with the objectives of the clients.
◼ The understanding obtained by problem analysis forms the basis
of requirements specification, in which the focus is on clearly
specifying the requirements in a document.
◼ Issues such as representation, specification languages, and tools
are addressed during this activity.
◼ As analysis produces large amounts of information and
knowledge with possible redundancies, properly organizing and
describing the requirements is an important goal of this activity.

12
Requirement Process
◼ Requirements validation focuses on ensuring that what have
been specified in the SRS are indeed all the requirements of the
software and making sure that the SRS is of good quality.
◼ The requirements process terminates with the production of the
validated SRS.

13
Requirement Process
◼ It should be pointed out that the requirements process is not a
linear sequence of these three activities and there is considerable
overlap and feedback between these activities.
◼ As shown in the figure, from the specification activity we may
go back to the analysis activity. This happens as frequently
some parts of the problem are analyzed and then specified
before other parts are analyzed and specified.
◼ Furthermore, the process of specification frequently shows
shortcomings in the knowledge of the problem, thereby
necessitating further analysis.
◼ Once the specification is done, it goes through the validation
activity. This activity may reveal problems in the specification
itself, which requires going back to the specification step, or
may reveal shortcomings in the understanding of the problem,
which requires going back to the analysis activity.
14
Requirements Specification
◼ The final output is the SRS document. As analysis
precedes specification, the first question that arises is: If
formal modeling is done during analysis, why are the
outputs of modeling not treated as an SRS? The main
reason is that modeling generally focuses on the problem
structure, not its external behavior.
◼ Consequently, things like user interfaces are rarely
modeled, whereas they frequently form a major component
of the SRS.
◼ Similarly, for ease of modeling, frequently “minor issues”
like erroneous situations (e.g., error in output) are rarely
modeled properly, whereas in an SRS, behavior under such
situations also has to be specified.
15
Requirements Specification
◼ Similarly, performance constraints, design constraints, standards
compliance, recovery, etc., are not included in the model, but
must be specified clearly in the SRS because the designer must
know about these to properly design the system. It should
therefore be clear that the outputs of a model cannot form a
desirable SRS.
◼ The modeling is essentially a tool to help obtain a thorough and
complete knowledge about the proposed system.
◼ The SRS is written based on the knowledge acquired during
analysis.
◼ As converting knowledge into a structured document is not
straightforward, specification itself is a major task, which is
relatively independent.

16
Requirement Process
◼ Desirable Characteristics of an SRS
◼ Components of an SRS
◼ Structure of a Requirements Document

17
Desirable Characteristics of an SRS
◼ To properly satisfy the basic goals, an SRS should have certain
properties and should contain different types of requirements.
Some of the desirable characteristics of an SRS are:
1. Correct
2. Complete
3. Unambiguous
4. Verifiable
5. Consistent
6. Ranked for importance and/or stability
◼ An SRS is correct if every requirement included in the SRS

represents something required in the final system.


◼ It is complete if everything the software is supposed to do and
the responses of the software to all classes of input data are
specified in the SRS.
18
Desirable Characteristics of an SRS
◼ An SRS is verifiable if and only if every stated
requirement is verifiable. A requirement is verifiable if
there exists some cost-effective process that can check
whether the final software meets that requirement. It is
consistent if there is no requirement that conflicts with
another.
◼ Terminology can cause inconsistencies; for example,
different requirements may use different terms to refer to
the same object.
◼ There may be logical or temporal conflict between
requirements that causes inconsistencies. This occurs if the
SRS contains two or more requirements whose logical or
temporal characteristics cannot be satisfied together by any
software system. 19
Desirable Characteristics of an SRS
◼ Generally, all the requirements for software are not of
equal importance.
◼ Some are critical, others are important but not critical, and
there are some which are desirable but not very important.
◼ Similarly, some requirements are “core” requirements
which are not likely to change as time passes, while others
are more dependent on time.
◼ Some provide more value to the users than others.
◼ An SRS is ranked for importance and/or stability if for
each requirement the importance and the stability of the
requirement are indicated.

20
Requirement Process
◼ Desirable Characteristics of an SRS
◼ Components of an SRS
◼ Structure of a Requirements Document

21
Components of an SRS
◼ Completeness of specifications is difficult to achieve and even
more difficult to verify. Having guidelines about what different
things an SRS should specify will help in completely specifying
the requirements. The basic issues an SRS must address are:
◼ Functionality

◼ Performance

◼ Design constraints imposed on an implementation

◼ External interfaces

◼ Functional requirements specify the expected behavior of the


system—which outputs should be produced from the given
inputs.
◼ They describe the relationship between the input and output of
the system. For each functional requirement, a detailed
description of all the data inputs and their source, the units of
measure, and the range of valid inputs must be specified. 22
Components of an SRS
◼ The performance requirements part of an SRS specifies the
performance constraints on the software system.
◼ All the requirements relating to the performance characteristics of
the system must be clearly specified. There are two types of
performance requirements: static and dynamic.
◼ Static requirements are those that do not impose constraint on the
execution characteristics of the system. These include requirements
like the number of terminals to be supported, the number of
simultaneous users to be supported, and the number of files that the
system has to process and their sizes. Theseare also called capacity
requirements of the system.
◼ Dynamic requirements specify constraints on the execution
behavior of the system. These typically include response time and
throughput constraints on the system. Response time is the expected
time for the completion of an operation under specified
23
circumstances.
Components of an SRS
◼ There are a number of factors in the client’s environment
that may restrict the choices of a designer leading to design
constraints.
◼ Such factors include standards that must be followed,
resource limits, operating environment, reliability and
security requirements, and policies that may have an
impact on the design of the system.

24
Components of an SRS
◼ An SRS should identify and specify all such constraints.
Some examples of these are:
◼ Standards Compliance: This specifies the
requirements for the standards the system must follow.
◼ Hardware Limitations: The software may have to

operate on some existing or predetermined hardware,


thus imposing restrictions on the design.
◼ Reliability and Fault Tolerance: Fault tolerance

requirements can place a major constraint on how the


system is to be designed, as they make the system more
complex and expensive.
◼ Security: Security requirements are becoming
increasingly important
25
Components of an SRS
◼ In the external interface specification part, all the
interactions of the software with people, hardware, and
other software should be clearly specified.
◼ For the user interface, the characteristics of each user
interface of the software product should be specified.
◼ For hardware interface requirements, the SRS should
specify the logical characteristics of each interface between
the software product and the hardware components.

26
Requirement Process
◼ Desirable Characteristics of an SRS
◼ Components of an SRS
◼ Structure of a Requirements Document

27
Structure of a Requirements Document
◼ Requirements have to be specified using some
specification language.
◼ Though formal notations exist for specifying specific
properties of the system, natural languages are now most
often used for specifying requirements.
◼ When formal languages are employed, they are often used
to specify particular properties or for specific parts of the
system, as part of the overall SRS.
◼ All the requirements for a system, stated using a formal
notation or natural language, have to be included in a
document that is clear and concise.

28
Structure of a Requirements Document
◼ We discuss the organization based on the IEEE guide to
software requirements specifications.
◼ The IEEE standards recognize the fact that different
projects may require their requirements to be organized
differently, that is, there is no one method that is suitable
for all projects.

29
Structure of a Requirements Document
◼ It provides different ways of structuring the SRS. The first
two sections of the SRS are the same in all of them. The
general structure of an SRS is given in Figure 3.2.

30
Structure of a Requirements Document
◼ The introduction section contains the purpose, scope,
overview, etc., of the requirements document. The key
aspect here is to clarify the motivation and business
objectives that are driving this project, and the scope of the
project.
◼ The next section gives an overall perspective of the
system—how it fits into the larger system, and an
overview of all the requirements of this system.
◼ Detailed requirements are not mentioned. Product
perspective is essentially the relationship of the product to
other products; defining if the product is independent or is
a part of a larger product, and what the principal interfaces
of the product are.
31
Structure of a Requirements Document
◼ A general abstract description of the functions to be
performed by the product is given.
◼ Schematic diagrams showing a general view of different
functions and their relationships with each other can often
be useful. Similarly, typical characteristics of the eventual
end user and general constraints are also specified.
◼ If agile methods are being used, this may be sufficient for
the initial requirements phase, as these approaches prefer
to do the detailed requirements when the requirement is to
be implemented.

32
Structure of a Requirements Document
◼ The detailed requirements section describes the details of
the requirements that a developer needs to know for
designing and developing the system.
◼ One method to organize the specific requirements is to first
specify the external interfaces, followed by functional
requirements, performance requirements, design
constraints, and system attributes.
◼ The external interface requirements section specifies all the
interfaces of the software: to people, other software,
hardware, and other systems.
◼ In the functional requirements section, the functional
capabilities of the system are described. In this
organization, the functional capabilities for all the modes
of operation of the software are given. 33
34
Functional Specification with Use Cases
◼ Basics
◼ Examples
◼ Extensions
◼ Developing Use Cases

35
Functional Specification with Use Cases
◼ Functional requirements often form the core of a
requirements document.
◼ The traditional approach for specifying functionality is to
specify each function that the system should provide.
◼ Use cases specify the functionality of a system by
specifying the behavior of the system, captured as
interactions of the users with the system.
◼ Use cases can be used to describe the business processes of
the larger business or organization that deploys the
software, or it could just describe the behavior of the
software system.

36
Functional Specification with Use Cases
◼ Though use cases are primarily for specifying behavior,
they can also be used effectively for analysis. Later when
we discuss how to develop use cases, we will discuss how
they can help in eliciting requirements also.
◼ Use cases drew attention after they were used as part of the
object-oriented modeling approach proposed by Jacobson.
◼ A software system (in our case whose requirements are
being uncovered) may be used by many users, or by other
systems. In use case terminology, an actor is a person or a
system which uses the system for achieving some goal.
◼ Note that as an actor interacts for achieving some goal, it is
a logical entity that represents a group of users (people or
system) who behave in a similar manner.
37
Functional Specification with Use Cases
◼ Though use cases are primarily for specifying behavior,

38
Functional Specification with Use Cases
◼ Basics
◼ Examples
◼ Extensions
◼ Developing Use Cases

39
Examples
◼ Let us illustrate these concepts with a few use cases, which
we will also use to explain other concepts related to use
cases. Let us consider that a small on-line auction system is
to be built for a university community, called the
University Auction System (UAS), through which
different members of the university can sell and buy goods.
◼ In this system, though we have the same people who might
be buying and selling, we have “buyers” and “sellers” as
separate logical actors, as both have different goals to
achieve. Besides these, the auction system itself is a
stakeholder and an actor.
◼ The financial system is another. Let us first consider the
main use cases of this system—“put an item for auction,”
“make a bid,” and “complete an auction.” These use cases 40
are given in Figure 3.4.
41
Functional Specification with Use Cases
◼ Basics
◼ Examples
◼ Extensions
◼ Developing Use Cases

42
Extensions
◼ Besides specifying the primary actor, its goal, and the
success and exceptional scenarios, a use case can also
specify a scope.
◼ If the system being built has many subsystems, as is often
the case, sometimes system use cases may actually be
capturing the behavior of some subsystem.
◼ In such a situation it is better to specify the scope of that
use case as the subsystem.

43
Extensions

44
Functional Specification with Use Cases
◼ Basics
◼ Examples
◼ Extensions
◼ Developing Use Cases

45
Developing Use Cases
◼ UCs not only document requirements, as their form is like
storytelling and uses text, both of which are easy and
natural with different stakeholders, they also are a good
medium for discussion and brainstorming.

46
Other Approaches for Analysis
◼ Data Flow Diagrams
◼ ER Diagrams

47
Validation

48
Summary

49
The test examine 1
1. What is the relationship between a process
model, process specification, and process
for a project?
2. What are the key outputs during an iteration
in a project following an iterative
development model?

50
51

You might also like