Chapter 03
Chapter 03
Requirements
Requirements Engineering Process
Requirements Management
The requirements for a system are the descriptions of what the system
should do - the services that it provides and the constraints on its operation.
These requirements reflect the needs of customers for a system that serves
a certain purpose such as controlling a device, placing an order, or finding
information.
The process of finding out, analyzing, documenting and checking these
services and constraints is called requirements engineering (RE)
Not directly concerned with the specific services delivered by the system to
its users
Relate to emergent system properties such as reliability, response time, and
store occupancy (e.g. constraints on the system implementation such as
the capabilities of I/O devices or the data representations used in
interfaces with other systems)
Types of non-functional requirements: performance, security, or availability,
usually specify or constrain characteristics of the system as a whole
Understandability
Requirements are expressed in the language of the application domain
This is often not understood by software engineers developing the system (e.g.
consider the previous slide) would they understand the Physics/Engineering
Implicitness
Domain specialists understand the area so well that they do not think of making
the domain requirements explicit which leads to problems later if software
developer implements the requirements in the wrong way
Elicitation: 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 that are encountered in Elicitation:
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.
Problems of volatility. The requirements change over time.
Negotiation: It isn’t unusual for customers and users to ask for more than
can be achieved, given limited business resources. It’s also relatively
common for different customers or users to propose conflicting
requirements, arguing that their version is “essential for our special needs.”
You have to reconcile these conflicts through a process of negotiation.
There should be no winner and no loser in an effective negotiation. Both
sides win, because a “deal” that both can live with is solidified.
Usage Scenarios:
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.
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.
A use case depicts the software or system from the end user’s point of view.
Steps:
Define the set of “actors”: the different people (or devices) that use the system or
product within the context of the function and behavior that is to be described.
Develop use cases: answer questions
The system is described from the user’s point of view using a scenario-based
approach.
• Functional - processing narratives for software functions
• Use-case - descriptions of the interaction between an “actor” and the system
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.
UML state diagram notation
SRSExample-webapp.doc