Lecture 3 - Software Requirement Elicitation I
Lecture 3 - Software Requirement Elicitation I
Requirement
Engineering and
Construction
LECTURE THREE: SOFTWARE
REQUIREMENT ELICITATION I
Preparing for Requirements
Elicitation
Develop The Product Mission Statement
The first thing we need to do when undertaking the development of a new
system, or redesign of an old one is to obtain or develop a concise description
of what it is supposed to do.
Such a statement is often called a product mission statement (or system
mission statement).
Some organizations refer to a concept of operations statement, which is
similar to the mission statement, though it tends to be longer.
Preparing for Requirements
Elicitation
The product mission statement acts as a focal point for all involved in the
system,
It allows us to weigh the importance of various features by asking, “How
does that functionality serve its intent?”
A product mission statement should be brief, descriptive, compelling, and
never detailed.
For the baggage handling system, we may have something like - To automate
all aspects of baggage handling from passenger origin to destination.
Preparing for Requirements
Elicitation
For the pet store POS system, consider - To automate all aspects of customer
purchase interaction and inventory control.
Preparing for Requirements
Elicitation
Identify the System Boundaries
The system boundary is a conceptual line that divides a system from
‘everything else’.
They can be physical, logical, temporal, spatial, functional, or conceptual,
depending on the purpose and perspective of the analysis.
Physical boundary of a computer system defines its hardware components,
such as the CPU, memory, disk, keyboard, mouse, and monitor, as well as
their connections and interactions.
Preparing for Requirements
Elicitation
Logical boundary of a software system outlines its software components,
such as modules, classes, functions, variables, and data structures
Temporal boundary of a system specifies its phases, milestones, tasks, and
deadlines
Spatial boundary of a system include the geographic differences among
team members (different cities).
Functional boundary of a system outlines its activities and roles.
Conceptual boundary of a system includes its actors and norms
Preparing for Requirements
Elicitation
System boundaries help to define the scope, context, and interfaces of a
system, as well as its inputs, outputs, and feedback loops.
System boundaries are not fixed or absolute, but rather flexible and relative,
depending on the level of abstraction, the stakeholder needs, and the system
goals.
It is useful to think of a system’s boundary as being made up of those things
that are part and not part of the system, things that can either affect the
system or be affected by it.
Preparing for Requirements
Elicitation
Knowing the system boundaries will help to identify the set of people and
entities involved with the system and define their interaction with the system
(this could be direct or indirect interaction)
Without defining the system boundaries correctly, it is possible that important
stakeholders will be overlooked—a potentially disastrous situation.
Preparing for Requirements
Elicitation
Develop Context Diagrams
A context diagram is a visual
representation diagram for a
system of interest showing system
boundaries and interactions with
other systems, people, and the
environment.
Change management
Evaluate and prioritize defect corrections and enhancement requests.
Dynamically adjust the scope of future releases or iterations.
Evaluate the impact of proposed changes on users and business processes.
Participate in making change decisions.
Preparing for Requirements
Elicitation
Stakeholder Prioritization
Not all stakeholders are of equal importance.
We have many stakeholders and some of their needs and desires may conflict, we
rank or prioritize the stakeholder classes to help resolve these situations.
Usually rank denotes the risk of not satisfying the stakeholder e.g., legal
requirements should be no. 1 unless you want to go to jail.
Ranking the stakeholders will lead to requirements prioritization, which is the key to
reconciliation and risk mitigation.
Preparing for Requirements
Elicitation
These table contains Stakeholder Class Rank Rationale
a partial list of Cashiers 2 They have the most interaction with the system.
stakeholders for the Managers 1 They are the primary customer/sponsor
pet store POS system System maintenance 4 They have to fix things when they break.
ranked using ratings personnel
Store customers 3 They are the most likely to be adversely affected.
1 through 6, where 1
Inventory/warehouse 6 They have the least direct interaction with the
represents the highest personnel system.
importance or Accountants/sales 5 They read the reports
personnel
priority.
Preparing for Requirements
Elicitation
Stakeholder Negotiations
It is inevitable that along the way the requirements engineer must negotiate with
customers and other stakeholders.
Often the negotiations deal with convincing the customer that some desired
functionality is impossible or too costly.
And expectation setting and management throughout the life cycle of any system
project is an exercise in negotiation.
Preparing for Requirements
Elicitation
Some simple principles that should be remembered in managing negotiation
include –
Set the ground rules up front - When a negotiation is imminent, make sure
that the scope and duration of the discussions are agreed. If there are to be
third parties present, make sure that this is understood. If certain rules need
to be followed, make both parties aware. Trying to eliminate unwanted
surprises for both sides in the negotiation will lead to success.
Preparing for Requirements
Elicitation
Understand people’s expectations - Make sure you realize that what matters
to you might not matter to the other party. Some people care about money;
others care more about their image, reputation, or feelings. When dealing
with negotiations surrounding system functionality, understand what is
most important to the customer. Ranking requirements will be most helpful
in this regard.
Look for early successes - It always helps to build positive momentum if
agreement, even on something small, can be reached. Fighting early about
the most contentious issues will amplify any bad feelings and make
agreement on those small issues more difficult later.
Preparing for Requirements
Elicitation
Be sure to give a little and push back a little - If you give a little in the
negotiation, it always demonstrates good faith. But the value of pushing
back in a negotiation is somewhat counterintuitive. It turns out that by not
pushing back, you leave the other party feeling cheated and empty.
Conclude negotiating only when all parties are satisfied - Never end a
negotiation with open questions or bad feelings. Everyone needs to feel
satisfied and whole at the end of a negotiation. If you do not ensure mutual
satisfaction, you will likely not do business together again, and your
reputation at large may be damaged (customers talk to one another).