Requirements Engineering - Reading
Requirements Engineering - Reading
Requirements Engineering
1. Introduction
• Unit 3 Learning Outcome
Students evaluate the quality of information systems in an organization,
including its effects on all stakeholders inside and outside the organization.
• Prior Knowledge
Information System Design and Implementation.
2. Theory
• Requirements Engineering
This section contains excerpts from Pressman and Maxim (2015).
Understanding the requirements of a problem is among the most difficult
tasks that face a software engineer. When you first think about it,
developing a clear understanding of requirements doesn’t seem that hard.
After all, doesn’t the customer know what is required? Shouldn’t the end
users have a good understanding of the features and functions that will
provide benefit? Surprisingly, in many instances the answer to these
questions is “no.” And even if customers and end users are explicit in their
needs, those needs will change throughout the project.
Designing and building an elegant computer program that solves the wrong
problem serves no one’s needs. That’s why it’s important to understand
what the customer wants before you begin to design and build a computer-
based system. Requirements engineering establishes a solid base for design
and construction. Without it, the resulting software has a high probability of
not meeting customer’s needs.
1
Requirements engineering begins with inception (a task that defines the
scope and nature of the problem to be solved). It moves onward to
elicitation (a task that helps stakeholders define what is required), and then
elaboration (where basic requirements are re- fined and modified). As
stakeholders define the problem, negotiation occurs (what are the priorities,
what is essential, when is it required?) Finally, the problem is specified in
some manner and then reviewed or validated to ensure that your
understanding of the problem and the stakeholders’ understanding of the
problem coincide.
Inception
In general, most projects begin when a business need is identified, or a
potential new market or service is discovered. Stakeholders from the
business community (e.g., business managers, marketing people, product
managers) define a business case for the idea, try to identify the breadth and
depth of the market, do a rough feasibility analysis, and identify a working
description of the project’s scope. All of this information is subject to
change, but it is sufficient to precipitate discussions with the software
engineering organization.
Elicitation
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,
2
and finally, how the system or product is to be used on a day-to-day basis.
But it isn’t simple— it’s very hard.
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.
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.”
3
Specification
In the context of computer-based systems (and software), 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.
Some suggest that a “standard template” should be developed and used for a
specification, arguing that this leads to requirements that are presented in a
consistent and therefore more understandable manner. However, it is
sometimes necessary to remain flexible when a specification is to be
developed. For large systems, a written document, combining natural
language descriptions and graphical models may be the best approach.
However, usage scenarios may be all that are required for smaller products
or systems that reside within well-understood technical environments.
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 requirements have
been stated unambiguously; that inconsistencies, omissions, and errors have
been detected and corrected; and that the work products conform to the
standards established for the process, the project, and the product.
4
Requirements 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.
Identifying Stakeholders
Sommerville and Sawyer define a stakeholder as “anyone who benefits in a
direct or indirect way from the system which is being developed.” We have
already identified the usual suspects: 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.
At inception, you should create a list of people who will contribute input as
requirements are elicited. The initial list will grow as stakeholders are
5
contacted because every stakeholder will be asked: “Whom else do you think
I should talk to?”
There are several things that can make it hard to elicit requirements for
software that satisfies its users: project goals are unclear, stakeholders’
priorities differ, people have unspoken assumptions, stakeholders interpret
meanings differently, and requirements are stated in a way that makes them
difficult to verify. The goal of effective requirements engineering is to
eliminate or at least reduce these problems.
6
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.
7
• 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 (and others) 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. In fact, the Q&A session should be used for the first encounter
only and then replaced by a requirements elicitation format that combines
elements of problem solving, negotiation, and specification.
Nonfunctional Requirements
A nonfunctional requirement (NFR) can be described as a quality attribute, a
performance attribute, a security attribute, or a general constraint on a
system. These are often not easy for stakeholders to articulate. Chung
suggests that there is a lopsided emphasis on functionality of the software,
yet the software may not be useful or usable without the necessary non-
functional characteristics. Nonfunctional requirements are often listed
separately in a software requirements specification.
Traceability
Traceability is a software engineering term that refers to documented links
between software engineering work products (e.g., requirements and test
cases). A traceability matrix allows a requirements engineer to represent the
relationship between requirements and other software engineering work
products. Rows of the traceability matrix are labeled using requirement
names and columns can be labeled with the name of a software engineering
work product (e.g., a design element or a test case). A matrix cell is marked
to indicate the presence of a link between the two.
8
from one project phase to another, regardless of the process model being
used. Traceability matrices often can be used to ensure the engineering work
products have taken all requirements into account.
3. References
Pressman, R. S., & Maxim B. R. (2015). Software Engineering: A Practitioner’s
Approach (8th ed.). New York, United States of America: McGraw-Hill
Education.
4. Extra Material
• Business Analyst Training - Requirements Elicitation Techniques
https://youtu.be/kCJFBmAAvV4
https://youtu.be/fGyMt6tWCPs