Introduction
Introduction
MODULE 2
Requirements engineering is a major software engineering action that begins during the
communication activity and continues into the modeling activity. It must be adapted to
the needs of the process, the project, the product, and the people doing the work.
1. Inception: It establishes 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.
2. Elicitation: In this stage, proper information is extracted to prepare and 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.
3. 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.
Hence by following the below steps we can start a requirement engineering process.
Stakeholder is the one who benefits in a direct or indirect way from the system which is
being developed.
Business operations managers, product managers, marketing people, internal and external
customers, end users, consultants, product engineers, software engineers, support and
maintenance engineers, and others.
Each stakeholder has a different view of the system, achieves different benefits when the
system is successfully developed, and is open to different risks if the development effort
should fail.
As many stakeholders exist, they all have different views regarding the system to be
developed, hence it is the duty of software engineers to consider all the viewpoints of
stakeholders in a way that allows decision makers to choose an internally consistent set of
requirements for the system.
For example, the marketing group is interested in functions and features that will excite
the potential market, making the new system easy to sell and End users may want
features that are easy to learn and use.
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.
These questions help to identify all stakeholders who will have interest in the software to be
built. In addition, the questions identify the measurable benefit of a successful implementation
and possible alternatives to custom software development.
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.
The goal is to identify the problem, propose elements of the solution, negotiate different
approaches, and specify a preliminary set of solution requirements in an atmosphere that is
conducive to the accomplishment of the goal.
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.
QFD is a quality management technique that translates the needs of the customer into
technical requirements for software. QFD “concentrates on maximizing customer satisfaction
from the software engineering process”. To accomplish this, QFD emphasizes an understanding
of what is valuable to the customer and then deploys these values throughout the engineering
process.
Normal requirements. The objectives and goals that are stated for a product or system
during meetings with the customer. If these requirements are present, the customer is
satisfied. Examples of normal requirements might be requested types of graphical
displays, specific system functions, and defined levels of performance.
Expected requirements. These requirements are implicit to the product or system and
may be so fundamental that the customer does not explicitly state them. Their absence
will be a cause for significant dissatisfaction.
Examples of expected requirements are: ease of human/machine interaction,
overall operational correctness and reliability, and ease of software installation.
Exciting requirements. These features go beyond the customer’s expectations and prove
to be very satisfying when present.
For example, the mobile phone with standard features, but the developer adds few
additional functionalities like voice searching, multi-touch screen etc. then the customer
is more excited about that feature.
Although QFD concepts can be applied across the entire software process, QFD uses
customer interviews and observation, surveys, and examination of historical data as raw data for
Prof.Varsharani k Shirolkar, Assistant Professor, Dept of CSE, BLDEACET,VIJAYAPUR. 9
BCS501
SE&PM
the requirements gathering activity. These data are then translated into a table of requirements—
called the customer voice table—that is reviewed with the customer and other stakeholders.
As requirements are gathered, an overall vision of system functions and features begins
to materialize.
However, it is difficult to move into more technical software engineering activities until
you understand how these functions and features will be used by different classes of end
users.
To accomplish this, developers and users can create a set of scenarios that identify a
thread of usage for the system to be constructed. The scenarios, often called use cases,
provide a description of how the system will be used.
Each of these work products is reviewed by all people who have participated in requirements
elicitation.
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.
Actors represent the roles that people (or devices) play as the system operates. Formally,
an actor is anything that communicates with the system or product and that is external to the
system itself.
Every actor has one or more goals when using the system. It is important to note that an
actor and an end user are not necessarily the same thing. A typical user may play a number of
Because requirements elicitation is an evolutionary activity, not all actors are identified
during the first iteration. It is possible to identify primary actors during the first iteration and
secondary actors as more is learned about the system.
Primary actors interact to achieve required system function and derive the intended
benefit from the system. Secondary actors support the system so that primary actors can do their
work. Once actors have been identified, use cases can be developed.
1. The homeowner observes the SafeHome control panel as shown in Fig 5.1 to determine if the
system is ready for input. If the system is not ready, a not ready message is displayed on the
LCD display.
2. The homeowner uses the keypad to key in a four-digit password. The password is compared
with the valid password stored in the system. If the password is incorrect and reset itself for
additional input. If the password is correct, the control panel awaits further action.
3. The homeowner select the keys in stay or away to activate the system.
✓ Stay activates only perimeter sensors (inside motion detecting sensors are deactivated).
✓ Away activates all sensors.
4. When activation occurs, a red alarm light can be observed by the homeowner. The basic use
case presents a high-level story that describes the interaction between the actor and the system.
Preconditions: System has been programmed for a password and to recognize various
sensors.
Trigger: The homeowner decides to “set” the system, i.e., to turn on the alarm
functions
Note:
The basic use case presents a high-level story that describes the interaction between the actor and
the system.
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 analysis model is a
snapshot of requirements at any given time.
The specific elements of the requirements model are dictated by the analysis modeling
method that is to be used. However, a set of generic elements is common to most requirements
models.
Scenario Based Elements: The system is described from the user’s point of view using a
scenario- based approach Ex: Use Case diagrams and Activity diagrams.
Class-based Elements: Each usage scenario implies a set of objects that are manipulated as an
actor interacts with the system. These objects are categorized into classes—a collection of things
that have similar attributes and common behaviors(operations). Ex: Class diagram,
Collaboration diagram.
Behavioral Elements: In Software Engineering, the Behavioral Elements Model is a concept used
to describe the dynamic behavior of a software system. It focuses on how the system's
components interact with each other and with external entities to achieve specific tasks or
behaviors. The state diagram is one method for representing the behavior of a system by
depicting its states and the events that cause the system to change state. This model indicates
how the software will respond on occurrence of external event. Ex: State diagram and
Sequential Diagram.
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. They are also stored in a
repository so that requirements engineers can use
The intent of negotiation is to develop a project plan that meets stakeholder needs while at
the same time reflecting the real-world constraints (e.g., time, people, budget) that have been
placed on the software team. 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
you 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:
• Is each requirement consistent with the overall objectives for the system/product?
• Have all requirements been specified at the proper level of abstraction? That is, do
some requirements provide a level of technical detail that is inappropriate at this stage?
• Is the requirement really necessary or does it represent an add-on feature that may not be
essential to the objective of the system?
• Does each requirement have attribution? That is, is a source (generally, a specific
individual) noted for each requirement?
• Is each requirement achievable in the technical environment that will house the system or
product?
• Does the requirements model properly reflect the information, function, and behavior of
the system to be built?
• Has the requirements model been “partitioned” in a way that exposes progressively more
detailed information about the system?
• Have all patterns been properly validated? Are all patterns consistent with
customer requirements?
These and other questions should be asked and answered to ensure that the requirements model
is an accurate reflection of stakeholder needs and that it provides a solid foundation for design.
MODULE 2
CHAPTER 2—REQUIREMENT MODELLING SCENARIOS,
INFORMATION AND ANALYSIS CLASSES
The requirements modeling action results in one or more of the following types of models:
Data models that depict the information domain for the problem.
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 analysis model is
a snapshot of requirements at any given time.
These models provide a software designer with information that can be translated to
architectural, interface, and component-level designs. Finally, the requirements model
provides the developer and the customer with the means to assess quality once software is
built.
Throughout requirements modeling, primary focus is on what, not how. What user
interaction occurs in a particular circumstance, what objects does the system manipulate,
what functions must the system perform, what behaviors does the system exhibit, what
interfaces are defined, and what constraints apply?
The analysis model bridges the gap between a system-level description that describes
overall system or business functionality as it is achieved by applying software, hardware,
data, human, and other system elements and a software design that describes the
Prof. Varsharani K Shirolkar, Assistant Professor, Dept of CSE, 19
BLDEACET,VIJAYAPUR
BCS501
SE&PM
software’s application architecture, user interface, and component-level structure.
Arlow and Neustadt suggest a number of worthwhile rules of thumb that should be followed
when creating the analysis model:
The model should focus on requirements that are visible within the problem or
business domain. The level of abstraction should be relatively high.
Be certain that the requirements model provides value to all stakeholders. Each
constituency has its own use for the model
Keep the model as simple as it can be. Don’t create additional diagrams when they add
no new information. Don’t use complex notational forms, when a simple list will do.
Domain analysis doesn’t look at a specific application, but rather at the domain in which
the application resides.
The “specific application domain” can range from avionics to banking, from multimedia
video games to software embedded within medical devices.
The goal of domain analysis is straightforward: to identify common problem-solving
elements that are applicable to all applications within the domain, to find or create those analysis
classes and/or analysis patterns that are broadly applicable so that they may be reused.
One view of requirements modeling, called structured analysis, considers data and the
processes that transform the data as separate entities. Data objects are modeled in a way
that defines their attributes and relationships.
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.
Scenario-based elements depict how the user interacts with the system and the specific
sequence of activities that occur as the software is used.
Alistair Cockburn characterizes a use case as a “contract for behavior”, the “contract” defines
the way in which an actor uses a computer-based system to accomplish some goal. In essence, a
use case captures the interactions that occur between producers and consumers of information
and the system itself.
A use case describes a specific usage scenario in straightforward language from the point of
view of a defined actor.
These are the questions that must be answered if use cases are to provide value as a
requirement modeling tool.
what to write about,
how much to write about it,
how detailed to make your description, and
how to organize the description? To begin developing a set of use cases, list the functions
or activities performed by a specific actor.
Use case: Access camera surveillance via the Internet—display camera views (ACS-DCV)
Actor: homeowner
Each step in the primary scenario is evaluated by asking the following questions:
Can the actor take some other action at this point?
Is it possible that the actor will encounter some error condition at this point? If so, what
might it be?
Is it possible that the actor will encounter some other behavior at this point (e.g., behavior
that is invoked by some event outside the actor’s control)? If so, what might it be?
Are there cases in which some “validation function” occurs during this use case? This
implies that validation function is invoked and a potential error condition might occur.
Are there cases in which a supporting function (or actor) will fail to respond
appropriately? For example, a user action awaits a response but the function that is to
respond times out.
When a use case involves a critical activity or describes a complex set of steps with a significant
number of exceptions, a more formal approach may be desirable.
The typical outline for formal use cases can be in following manner:
The goal in context identifies the overall scope of the use case.
The precondition describes what is known to be true before the use case is initiated.
The trigger identifies the event or condition that “gets the use case started”
The scenario lists the specific actions that are required by the actor and the appropriate
system responses.
Exceptions identify the situations uncovered as the preliminary use case is refined
The UML activity diagram supplements the use case by providing a graphical representation of
the flow of interaction within a specific scenario. Similar to the flowchart,
An activity diagram uses:
Rounded rectangles to imply a specific system function
Arrows to represent flow through the system
Decision diamonds to depict a branching decision.
Solid horizontal lines to indicate that parallel activities are occurring.
A UML activity diagram represents the actions and decisions that occur as some function is
performed.
The UML swimlane diagram is a useful variation of the activity diagram and allows you to
represent the flow of activities described by the use case and at the same time indicate which
actor or analysis class has responsibility for the action described by an activity rectangle.
Responsibilities are represented as parallel segments that divide the diagram vertically, like the
lanes in a swimming pool.
A data object can be an external entity (e.g., anything that produces or consumes
information), a thing (e.g., a report or a display), an occurrence (e.g., a telephone call) or event
(e.g., an alarm), a role (e.g., salesperson), an organizational unit (e.g., accounting department),
a place (e.g., a warehouse), or a structure (e.g., a file).
For example, a person or a car can be viewed as a data object in the sense that either can
be defined in terms of a set of attributes. The description of the data object incorporates the data
object and all of its attributes.
A data object encapsulates data only—there is no reference within a data object to
operations that act on the data. Therefore, the data object can be represented as a table as shown
in following table. The headings in the table reflect attributes of the object.
2.4.3 Relationships
Data objects are connected to one another in different ways. Consider the two data
objects, person and car. These objects can be represented using the following simple notation
and relationships are 1) A person owns a car, 2) A person is insured to drive a car.
The elements of a class-based model include classes and objects, attributes, operations, class
responsibility collaborator (CRC) models, collaboration diagrams, and packages.
We can begin to identify classes by examining the usage scenarios developed as part of
the requirements model and performing a “grammatical parse” on the use cases developed
for the system to be built.
External entities (e.g., other systems, devices, people) that produce or consume
information to be used by a computer-based system.
Things (e.g., reports, displays, letters, signals) that are part of the information domain for
the problem.
Roles (e.g., manager, engineer, salesperson) played by people who interact with the system.
Organizational units (e.g., division, group, team) that are relevant to an application.
Places (e.g., manufacturing floor or loading dock) that establish the context of the
problem and the overall function of the system.
Coad and Yourdon suggest six selection characteristics that should be used as you consider each
potential class for inclusion in the analysis model:
1. Retained information. The potential class will be useful during analysis only if information
about it must be remembered so that the system can function.
4. Common attributes. A set of attributes can be defined for the potential class and these
attributes apply to all instances of the class.
5. Common operations. A set of operations can be defined for the potential class and these
operations apply to all instances of the class.
6. Essential requirements. External entities that appear in the problem space and produce or
consume information essential to the operation of any solution for the system will almost always
be defined as classes in the requirements model.
Attributes describe a class that has been selected for inclusion in the requirements model.
In essence, it is the attributes that define the class—that clarify what is meant by the class in the
context of the problem space.
To develop a meaningful set of attributes for an analysis class, you should study each use
case and select those “things” that reasonably “belong” to the class.
Operations define the behavior of an object. Although many different types of operations
exist, they can generally be divided into four broad categories: (1) operations that manipulate
data in some way (e.g., adding, deleting, reformatting, selecting), (2) operations that perform a
computation, (3) operations that inquire about the state of an object, and (4) operations that
monitor an object for the occurrence of a controlling event.
A CRC model is really a collection of standard index cards that represent classes.
The cards are divided into three sections. Along the top of the card, you write the name of the
class. In the body of the card, you list the class responsibilities on the left and the collaborators
on the right. The CRC model may make use of actual or virtual index cards. The intent is to
develop an organized representation of classes. Responsibilities are the attributes and operations
that are relevant for the class. i.e., a responsibility is “anything the class knows or does”
Collaborators are those classes that are required to provide a class with the information needed
to complete a responsibility. In general, a collaboration implies either a request for information
or a request for some action.
Classes: The taxonomy of class types can be extended by considering the following categories:
Entity classes, also called model or business classes, are extracted directly from the
statement of the problem. These classes typically represent things that are to be stored in
a database and persist throughout the duration of the application.
Boundary classes are used to create the interface that the user sees and interacts with as
the software is used. Boundary classes are designed with the responsibility of managing
Responsibilities: Wirfs-Brock and her colleagues suggest five guidelines for allocating
responsibilities to classes:
1. System intelligence should be distributed across classes to best address the needs
of the problem. Every application encompasses a certain degree of intelligence; that
is, what the system knows and what it can do.
3. Information and the behavior related to it should reside within the same class.
This achieves the object-oriented principle called encapsulation. Data and the
processes that manipulate the data should be packaged as a cohesive unit.
4. Information about one thing should be localized with a single class, not
distributed across multiple classes. A single class should take on the responsibility
for storing and manipulating a specific type of information. This responsibility should
not, in general, be shared across a number of classes. If information is distributed,
software becomes more difficult to maintain and more challenging to test.
1. A class can use its own operations to manipulate its own attributes, thereby fulfilling a
particular responsibility, or
When a complete CRC model has been developed, stakeholders can review the model
using the following approach:
2. All use-case scenarios (and corresponding use-case diagrams) should be organized into
categories.
3. The review leader reads the use case deliberately. As the review leader comes to a
named object, she passes a token to the person holding the corresponding class index
card.
4. When the token is passed, the holder of the card is asked to describe the
responsibilities noted on the card. The group determines whether one (or more) of the
responsibilities satisfies the use-case requirement.
2.5.6 Analysis Packages: An important part of analysis modeling is categorization. That is,
various elements of the analysis model (e.g., use cases, analysis classes) are categorized in a
manner that packages them as a grouping—called an analysis package—that is given a
representative name.