OOSAD Chapter 3
OOSAD Chapter 3
OOSAD Chapter 3
Chapter Three
Requirements Elicitation
3.1 Introduction
A requirement is a feature that the system must have or a constraint that it must
satisfy to be accepted by the client. Requirements engineering aims at defining the
requirements of the system under construction. Requirements engineering includes
two main activities; requirements elicitation, which results in the specification of the
system that the client understands, and analysis, which results into an analysis
model that the developers can unambiguously interpret. Requirements elicitation is
the more challenging of the two because it requires the collaboration of several groups
of participants with different backgrounds. On the one hand, the client and the users
are experts in their domain and have a general idea of what the system should do.
However, they often have little experience in software development. On the other
hand, the developers have experience in building systems but often have little
knowledge of the everyday environment of the users.
Scenarios and use cases provide tools for bridging this gap since both scenarios and
use cases are written in natural language, a form that is understandable to the user.
In this chapter, we focus on scenario-based requirements elicitation. Developers
elicit requirements by observing and interviewing users. Developers first represent the
user’s current work processes as as-is scenarios and then develop visionary scenarios
describing the functionality provided by the future system. The client and users
validate the system description by reviewing the scenarios and by testing small
prototypes provided by the developers. As the definition of the system matures and
stabilizes, developers and the client agree on a system specification in the form of use
cases.
Requirements elicitation is about communication among developers, clients, and
users for defining a new system. Failure to communicate and understand each other’s
domain results in a system that is difficult to use or that simply fails to support the
user’s work. Errors introduced during requirements elicitation are expensive to
correct, as they are usually discovered late in the process, often as late as delivery.
Such errors include missing functionality that the system should have supported,
functionality that was incorrectly specified, user interfaces that are misleading or
unusable, and functionality that is obsolete. Requirements elicitation methods aim at
improving communication among developers, clients, and users.
Requirements elicitation focuses on describing the purpose of the system. The client,
the developers, and the users identify a problem area and define a system that
addresses the problem. Such a definition is called a system specification and serves
as a contract between the client and the developers.
The system specification is structured and formalized during analysis. Both system
specification and analysis model represent the same information. They differ only in
the language and notation they use. The system specification is written in natural
language, whereas the analysis model is usually expressed in a formal or semiformal
notation. The system specification supports the communication with the client and
users. The analysis model supports the communication among developers. They are
both models of the system in the sense that they attempt to accurately represent the
external aspects of the system. Given that both models represent the same aspects of
the system, requirements elicitation and analysis occur concurrently and iteratively.
Requirements elicitation and analysis focus only on the user’s view of the system.
For example, the system functionality, the interaction between the user and the
system, the errors that the system can detect and handle, and the environmental
conditions in which the system functions, are part of the requirements. The system
structure, the implementation technology selected to build the system, the system
design, the development methodology, and other aspects not directly visible to the
user are not part of the requirements
We focus on three methods for eliciting information and making decisions with users
and clients
o Joint Application Design (JAD) focuses on building consensus among
developers, users, and clients by jointly developing the system specification.
Managers who are concerned for the system to succeed, although they do
not use it as such;
Regulators such as local and state governments and standards bodies,
which are concerned about the effects the system may have in its
environment.
People in the development organization may be stakeholders if they are
responsible for the safe and continued operation of the system, or for its
maintenance. A user organization is wise to involve its developers in this
way.
Techniques for capturing requirements include interviewing users and other
stakeholders, holding workshops, observing users at work, searching likely
documents, and seeing the changes that users have made to existing systems.
Problem reports and suggestions from existing systems can be valuable sources of
requirements, provided you find out and record how important each proposed
requirement is to its users.
3.3 Requirements Elicitation Concepts
Functional requirements
Nonfunctional and pseudo requirements
Levels of descriptions
Greenfield engineering, reengineering, and interface engineering
3.3.1 Functional Requirements
Describe the interactions between the system and its environment independent
of its implementation. The environment includes the user and any other
external system with which the system interacts.
Example, the following is an example of functional requirements for SatWatch, a
watch that resets itself without user intervention:
Pseudo requirements: are requirements imposed by the client that restricts the
implementation of the system. Typical pseudo requirements are the
implementation language and the platform on which the system is to be
implemented. For life-critical developments, pseudo requirements often include
process and documentation requirements (e.g., the use of a formal specification
method, the complete release of all work products). Pseudo requirements have
usually no direct effect on the users’ view of the system.
The following are the pseudo functional requirements for SatWatch:
In the SatWatch example, the watch owner, the GPS satellites, and the
WebifyWatch serial device are actors. They all interact and exchange information
with the SatWatch. Note, however, they all have specific interactions with the
SatWatch: the watch owner wears and looks at her watch; the watch monitors
the signal from the GPS satellites; the WebifyWatch downloads new data into the
watch. Actors define classes of functionality.
WatchOwner moves the watch (possibly across time zones) and consults it to
know what time it is. SatWatch interacts with GPS to compute its position.
WebifyWatch upgrades the data contained in the watch to reflect changes in
time policy (e.g., changes in daylight savings time start and end dates).
Consider a more-complex example, FRIEND, a distributed information system
for accident management. It includes many actors, such as FieldOfficer, who
represents the police and fire officers who are responding to an incident, and
Dispatcher, the police officer responsible for answering 911 calls and
dispatching resources to an incident.
Training scenarios are tutorials used for introducing new users to the
system. These are step by step instructions designed to hand-hold the user
through common tasks.
Factoring out shared behavior from use cases has many benefits, including
shorter descriptions and fewer redundancies.
Behavior should only be factored out into a separate use case if it is shared
across two or more use cases.
Extend versus include relationships
The main distinction between these constructs is the direction of the
relationship. In the case of an include relationship, the conditions under
which the target use case is initiated are described in the initiating use case,
as an event in the flow of events. In the case of an extend relationship, the
conditions under which the extension is initiated are described in the
extension as an entry condition.
If two use cases refer to the same concept, the corresponding object should be
the same. If two objects share the same name and do not correspond to the
same concept, one or both concepts are renamed to acknowledge and
emphasize their difference. This consolidation eliminates any ambiguity in the
terminology used.
Definition Guide. During this activity, the JAD facilitator forms a team
composed of users, clients, and developers. All stakeholders are
represented, and the participants are able to make binding decisions.
2. Research. During this activity, the JAD facilitator interviews present and
future users, gathers domain information, and describes the work flows.
The JAD facilitator also starts a list of issues that will need to be
addressed during the session. The primary results of the research activity
are a Session Agenda and a Preliminary Specification listing work flow
and system information.
3. Preparation. During this activity, the JAD facilitator prepares the
session. The JAD facilitator creates a Working Document, first draft of the
final document, an agenda for the session, and any number of overhead
slides or flip charts representing information gathered during the
Research activity.
4. Session. During this activity, the JAD facilitator guides the team in
creating the system specification. A JAD session lasts for 3–5 days. The
team defines and agrees on the work flow, the data elements, the screens,
and the reports of the system. All decisions are documented by a scribe
filling JAD forms.
5. Final document. The JAD facilitator prepares the Final Document,
revising the working document to include all decisions made during the
session. The Final Document represents a complete specification of the
system agreed on during the session. The Final Document is distributed
to the session’s participants for review. The participants then meet for a
1to 2 hour meeting to discuss the reviews and finalize the document.