SE Unit-2 Material
SE Unit-2 Material
Software Engineering
[B20CS2102]
Unit-II
_____________________________________________________________________________
SYLLABUS :
Requirements Engineering, Establishing the Groundwork, Eliciting Requirements,
Developing Use Cases, Building the Requirements Model, Negotiating Requirements,
Validating Requirements, Requirements Analysis.
_____________________________________________________________________________
REQUIREMENTS ENGINEERING:
The broad spectrum (means range) of tasks and techniques that lead to an
understanding of requirements is called requirements engineering. From a software
process perspective, requirements engineering is a major software engineering action
that begins during the communication activity and continues into the modeling
activity.
Requirements engineering provides the appropriate mechanism for understanding
what the customer wants, analyzing need, assessing feasibility, negotiating (means
discuss) a reasonable solution, specifying the solution unambiguously, validating the
specification, and managing the requirements as they are transformed into an
operational system.
It includes seven distinct tasks:
1) Inception,
2) Elicitation,
3) Elaboration,
4) Negotiation,
5) Specification,
6) Validation, and
7) Management.
Inception:
It establish a basic understanding of the problem, the people who want a solution,
the nature of the solution that is desired, and the effectiveness of preliminary
communication and collaboration between the other stakeholders and the
software team.
Elicitation:
In this stage, proper information is extracted to prepare to document the requirements. It
certainly seems simple enough—ask the customer, the users, and others what the
objectives for the system or product are, what is to be accomplished, how the system or
product fits into the needs of the business, and finally, how the system or product is to be
used on a day- to-day basis.
Problems of scope. The boundary of the system is ill-defined or the
customers/users specify unnecessary technical detail that may confuse, rather
than clarify, overall system objectives.
Problems of understanding. The customers/users are not completely sure of
what is needed, have a poor understanding of the capabilities and limitations of
their computing environment, don’t have a full understanding of the problem
domain, have trouble communicating needs to the system engineer, omit
information that is believed to be “obvious,” specify requirements that conflict with
the needs of other customers/users, or specify requirements that are ambiguous or
un testable.
Problems of volatility. The requirements change over time.
Elaboration:
The information obtained from the customer during inception and elicitation is expanded
and refined during elaboration.
This task focuses on developing a refined requirements model that identifies
various aspects of software function, behavior, and information.
Elaboration is driven by the creation and refinement of user scenarios that
describe how the end user (and other actors) will interact with the system.
Negotiation:
To negotiate the requirements of a system to be developed, it is necessary to identify
conflicts and to resolve those conflicts.
You have to reconcile these conflicts through a process of negotiation.
Customers, users, and other stakeholders are asked to rank requirements and then
discuss conflicts in priority.
Using an iterative approach that prioritizes requirements, assesses their cost and
risk, and addresses internal conflicts, requirements are eliminated, combined,
and/or modified so that each party achieves some measure of satisfaction.
Specification:
The term specification means different things to different people.
A specification can be a written document, a set of graphical models, a formal
mathematical model, a collection of usage scenarios, a prototype, or any
combination of these.
For large systems, a written document, combining natural language descriptions
and graphical models may be the best approach.
Validation:
The work products produced as a consequence of requirements engineering are assessed
for quality during a validation step.
Requirements validation examines the specification to ensure that all software
Management:
Requirements for computer-based systems change, and the desire to change requirements
persists throughout the life of the system.
Requirements management is a set of activities that help the project team identify,
control, and track requirements and changes to requirements at any time as the
project proceeds. Many of these activities are identical to the software
configuration management (SCM) techniques.
Identifying Stakeholders
A stakeholder is anyone who has a direct interest in or benefits from the system
that is to be developed. At inception, you should create a list of people who will
contribute input as requirementsare elicited.
Recognizing Multiple Viewpoints
Because many different stakeholders exist, the requirements of the system will be
explored from many different points of view. The information from multiple
viewpoints is collected, emerging requirements may be inconsistent or may conflict
with one another.
Working toward Collaboration
The job of a requirements engineer is to identify areas of commonality and areas of
conflict or inconsistency. It is, of course, the latter category that presents a
challenge. Collaboration does not necessarily mean that requirements are defined
by committee. In many cases, stakeholders collaborate by providing their view of
requirements, but a strong “project champion” (e.g., a business manager or a senior
technologist) may make the final decision about which requirements make the cut.
Asking the First Questions
Questions asked at the inception of the project should be “context free” . The first
set of context- free questions focuses on the customer and other stakeholders, the
overall project goals and benefits. Forexample, you might ask:
Who is behind the request for this work?
Who will use the solution?
What will be the economic benefit of a successful solution?
Is there another source for the solution that you need?
These questions help to identify all stakeholders who will have interest in the
The next set of questions enables you to gain a better understanding of the problem
and allows the customer to voice his or her perceptions about a solution:
How would you characterize “good” output that would be generated by a
successful solution?
What problem(s) will this solution address?
Can you show me (or describe) the business environment in which the solution
will be used?
Will special performance issues or constraints affect the way the solution is
approached?
The final set of questions focuses on the effectiveness of the communication activity
itself. Gause and Weinberg call these “meta-questions” and propose the following
list:
Are you the right person to answer these questions? Are your answers “official”?
Are my questions relevant to the problem that you have?
Am I asking too many questions?
Can anyone else provide additional information?
Should I be asking you anything else?
These questions will help to “break the ice” and initiate the communication that is
essential to successful elicitation. But a question-and-answer meeting format is not
an approach that has been overwhelmingly successful.
ELICITING REQUIREMENTS
During inception basic questions and answers establish the scope of the problem and
the overall perception of a solution. Out of these initial meetings, the developer and
customers write a one or two page “product request.”
A meeting place, time, and date are selected; a facilitator is chosen; and attendees from
the software team and other stakeholder organizations are invited to participate. The
product request is distributed to all attendees before the meeting date.
While reviewing the product request in the days before the meeting, each attendee is
asked to make a list of objects that are part of the environment that surrounds the
system, other objects that are to be produced by the system, and objects that are used
by the system to perform its functions. In addition, each attendee is asked to make
another list of services that manipulate or interact with the objects. Finally, lists of
constraints (e.g., cost, size, business rules) and performance criteria (e.g., speed,
accuracy) are also developed. The attendees are informed that the lists are not
expected to be exhaustive but are expected to reflect each person’s perception of the
system.
The lists of objects can be pinned to the walls of the room using large sheets of paper,
stuck to the walls using adhesive-backed sheets, or written on a wall board. After
individual lists are presented in one topic area, the group creates a combined list by
eliminating redundant entries, adding any new ideas that come up during the
discussion, but not deleting anything.
Use cases are defined from an actor’s point of view. An actor is a role that people
(users) or devices play as they interact with the software.
The first step in writing a use case is to define the set of “actors” that will be
involved in the story. Actors are the different people (or devices) that use the
system or product within the context of the function and behavior that is to be
described.
The intent of the analysis model is to provide a description of the required informational,
functional, and behavioral domains for a computer-based system. The model changes
dynamically as you learn more about the system to be built, and other stakeholders
understand more about what they really require.
Analysis Patterns
Analysis patterns suggest solutions (e.g., a class, a function, a behavior) within the
application domain that can be reused when modeling many applications.
Geyer-Schulz and Hahsler suggest two benefits that can be associated with the use
of analysis patterns:
First, analysis patterns speed up the development of abstract analysis models that
capture the main requirements of the concrete problem by providing reusable
analysis models with examples as well as a description of advantages and
limitations.
Second, analysis patterns facilitate the transformation of the analysis model into a
design model by suggesting design patterns and reliable solutions for common
problems.
Analysis patterns are integrated into the analysis model by reference to the pattern
name.
NEGOTIATING REQUIREMENTS
The intent of this negotiation is to develop a project plan that meets stakeholder
needs.
The best negotiations strive for a “win-win” result.
That is, stakeholders win by getting the system or product that satisfies the
majority of their needs and developer win by working to realistic and achievable
budgets and deadlines.
Boehm defines a set of negotiation activities at the beginning of each software
process iteration.
Rather than a single customer communication activity, the following activities are
defined:
Successful completion of these initial steps achieves a win-win result, which
becomes the key criterion for proceeding to subsequent software engineering
activities.
VALIDATING REQUIREMENTS
REQUIREMENTS ANALYSIS
Fig: The requirements model as a bridge between the system description and the design
model.
The requirements model as a bridge between the system description and the design model
Overall Objectives and Philosophy
Domain Analysis
Software domain analysis is the identification, analysis, and specification of
common requirements from a specific application domain, typically for reuse on
multiple projects within that application domain.
Object-oriented domain analysis is the identification, analysis, and specification of
common, reusable capabilities within a specific application domain, in terms of
common objects, classes, subassemblies, and frameworks.
The above figure illustrates key inputs and outputs for the domain analysis
process. Sources of domain knowledge are surveyed in an attempt to identify
objects that can be reused across the domain.
Each element of the requirements model is represented in following figure presents the
problem from a different point of view.
Scenario-based elements depict how the user interacts with the system and the
specific sequence of activities that occur as the software is used.
Class-based elements model the objects that the system will manipulate, the
operations that will be applied to the objects to effect the manipulation,
relationships between the objects, and the collaborations that occur between the
classes that are defined.
Behavioral elements depict how external events change the state of the system or
the classes that reside within it. Finally,
Question Bank