Se - Unit - Ii
Se - Unit - Ii
Understanding Requirements
REQUIREMENTS ENGINEERING
Requirements analysis, also called requirements engineering, is the process of
determining user expectations for a new or modified product. 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. Requirements engineering builds a bridge to design
and construction.
Requirements engineering provides the appropriate mechanism for understanding what
the customer wants, analyzing need, assessing feasibility, negotiating a reasonable solution,
specifying the solution unambiguously, validating the specification, and managing the
requirements as they are transformed into an operational system. It encompasses seven distinct
tasks: inception, elicitation, elaboration, negotiation, specification, validation, and
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.
NEGOTIATING REQUIREMENTS
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:
1. Identification of the system or subsystem’s key stakeholders.
2. Determination of the stakeholders’ “win conditions.”
3. Negotiation of the stakeholders’ win conditions to reconcile them into a set of win-win
conditions for all concerned.
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
As each element of the requirements model is created, it is examined for inconsistency,
omissions, and ambiguity. The requirements represented by the model are prioritized by the
stakeholders and grouped within requirements packages that will be implemented as software
increments.
A review of the requirements model addresses the following questions:
• 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?
• Is each requirement bounded and unambiguous?
• Does each requirement have attribution? That is, is a source (generally, a specific
individual) noted for each requirement?
• Do any requirements conflict with other requirements?
• Is each requirement achievable in the technical environment that will house the system or
product?
• Is each requirement testable, once implemented?
• 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 requirements patterns been used to simplify the requirements model?
• 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.
REQUIREMENTS MODELING: SCENARIOS,
INFORMATION, AND ANALYSIS CLASSES
REQUIREMENTS ANALYSIS
Requirements analysis results in the specification of software’s operational characteristics,
indicates software’s interface with other system elements, and establishes constraints that
software must meet. Requirements analysis allows you to elaborate on basic requirements
established during the inception, elicitation, and negotiation tasks that are part of requirements
engineering.
The requirements modeling action results in one or more of the following types of models:
• Scenario-based models of requirements from the point of view of various system
“actors”
• Data models that depict the information domain for the problem
Class-oriented models that represent object-oriented classes (attributes and operations)
and the manner in which classes collaborate to achieve system requirements
Flow-oriented models that represent the functional elements of the system and how they
transform data as it moves through the system
Behavioral models that depict how the software behaves as a consequence of external
“events”
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?
Fig : The requirements model as a bridge between the system description and the design model
Behavioral elements depict how external events change the state of the system or the
classes that reside within it. Finally,
Flow-oriented elements represent the system as an information transform, depicting how
data objects are transformed as they flow through various system functions.
SCENARIO-BASED MODELING
Scenario-based elements depict how the user interacts with the system and the specific
sequence of activities that occur as the software is used.
Creating a Preliminary Use Case
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 requirements modeling tool. (1) what to write about, (2) how much to write about it,
(3) how detailed to make your description, and (4) how to organize the description?
To begin developing a set of use cases, list the functions or activities performed by a
specific actor.
Refining a Preliminary Use Case
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?
Cockburn recommends using a “brainstorming” session to derive a reasonably complete set of
exceptions for each use case. In addition to the three generic questions suggested earlier in this
section, the following issues should also be explored:
• 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.
• Can poor system performance result in unexpected or improper user actions? For
example, a Web-based interface responds too slowly, resulting in a user making multiple
selects on a processing button. These selects queue inappropriately and ultimately
generate an error condition.
Writing a Formal Use Case
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
Additional headings may or may not be included and are reasonably self-explanatory.
Every modeling notation has limitations, and the use case is no exception. A use case focuses on
functional and behavioral requirements and is generally inappropriate for nonfunctional
requirements
However, scenario-based modeling is appropriate for a significant majority of all situations that
you will encounter as a software engineer.
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
CLASS-BASED MODELING
Class-based modeling represents 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. The elements of a
class-based model include classes and objects, attributes, operations, class responsibility-
collaborator (CRC) models, collaboration diagrams, and packages.
Identifying Analysis Classes
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.
Analysis classes manifest themselves in one of the following ways:
• 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.
• Occurrences or events (e.g., a property transfer or the completion of a series of robot
movements) that occur within the context of system operation.
• 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.
• Structures (e.g., sensors, four-wheeled vehicles, or computers) that define a class of
objects or related classes of objects.
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.
2. Needed services. The potential class must have a set of identifiable operations that can change
the value of its attributes in some way.
3. Multiple attributes. During requirement analysis, the focus should be on “major” information;
a class with a single attribute may, in fact, be useful during design, but is probably better
represented as an attribute of another class during the analysis activity.
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.
.2 Specifying Attributes
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.
Defining Operations
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.
Fig : Dependencies
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.
Fig : Packages
Requirements Modeling (Flow, Behavior, Patterns and WEBAPPS)
One view of requirements modeling, called structured analysis,. Data objects are
modeled in a way that defines their attributes and relationships. Processes that manipulate data
objects are modeled in a manner that shows how they transform data as data objects flow through
the system.
A second approach to analysis modeled, called object-oriented analysis, focuses on the
definition of classes and the manner in which they collaborate with one another to effect
customer requirements.
FLOW-ORIENTED MODELING
The behavioral model indicates how software will respond to external events or stimuli.
To create the model, you should perform the following steps:
1. Evaluate all use cases to fully understand the sequence of interaction within the
system.
2. Identify events that drive the interaction sequence and understand how these events
relate to specific objects.
3. Create a sequence for each use case.
4. Build a state diagram for the system.
5. Review the behavioral model to verify accuracy and consistency.
Identifying Events with the Use Case
The use case represents a sequence of activities that involves actors and the system. In
general, an event occurs whenever the system and an actor exchange information. A use case is
examined for points of information exchange. To illustrate, we reconsider the use case for a
portion of the SafeHome security function. 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, the control panel will beep once and reset itself for additional input. If the
password is correct, the control panel awaits further action.
The underlined portions of the use case scenario indicate events. An actor should be
identified for each event; the information that is exchanged should be noted, and any conditions
or constraints should be listed. Once all events have been identified, they are allocated to the
objects involved. Objects can be responsible for generating events .
State Representations
In the context of behavioral modeling, two different characterizations of states must be
considered: (1) the state of each class as the system performs its function and (2) the state of the
system as observed from the outside as the system performs its Function Two different
behavioral representations are discussed in the paragraphs that follow. The first indicates how
an individual class changes state based on external events and the second shows the behavior of
the software as a function of time.
State diagrams for analysis classes. One component of a behavioral model is a UML state
diagram that represents active states for each class and the events (triggers) that cause changes
between these active states. The following figure illustrates a state diagram for the ControlPanel
object in the SafeHome security function. Each arrow shown in figure represents a transition
from one active state of an object to another. The labels shown for each arrow represent the event
that triggers the transition
Software patterns are a mechanism for capturing domain knowledge in a way that allows
it to be reapplied when a new problem is encountered. In some cases, the domain knowledge is
applied to a new problem within the same application domain. The domain knowledge captured
by a pattern can be applied by analogy to a completely different application domain.
The pattern can be reused when performing requirements modeling for an application
within a domain. Analysis patterns are stored in a repository so that members of the software
team can use search facilities to find and reuse them. Once an appropriate pattern is selected, it
is integrated into the requirements model by reference to the pattern name.
Discovering Analysis Patterns
The requirements model is comprised of a wide variety of elements: scenario-based (use
cases), data-oriented (the data model), class-based, flow-oriented, and behavioral. Each of
these elements examines the problem from a different perspective, and each provides an
opportunity to discover patterns that may occur throughout an application domain, or by analogy,
across different application domains.
The most basic element in the description of a requirements model is the use case. Use
cases may serve as the basis for discovering one or more analysis patterns.
A semantic analysis pattern (SAP) “is a pattern that describes a small set of coherent
use cases that together describe a basic generic application”