Understanding Requirements
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.
• “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 will help initiate the communication that is essential to
successful elicitation.
Conduct FA ST
m eet ings
Make list s of
f unct ions, classes
Make list s of
const raint s, et c.
draw use-case
writ e scenario
diagram
Creat e Use-cases
com plet e t em plat e
Use-Case Diagram
Arms/ disarms
syst em
homeow ner
Responds t o
alarm event
Encount ers an
error condit ion
name/id
type
location
area
characteristic s
identify()
enable()
disable()
rec onfigure ()
•
Analysis Patterns
Pattern name: A descriptor that captures the essence of the pattern.
Intent: Describes what the pattern accomplishes or represents
Motivation: A scenario that illustrates how the pattern can be used to address
the problem.
Forces and context: A description of external issues (forces) that can affect how
the pattern is used and also the external issues that will be resolved when the
pattern is applied.
Solution: A description of how the pattern is applied to solve the problem with an
emphasis on structural and behavioral issues.
Consequences: Addresses what happens when the pattern is applied and what
trade-offs exist during its application.
Design: Discusses how the analysis pattern can be achieved through the use of
known design patterns.
Known uses: Examples of uses within actual systems.
Related patterns: On e or more analysis patterns that are related to the named
pattern because (1) it is commonly used with the named pattern; (2) it is
structurally similar to the named pattern; (3) it is a variation of the named
pattern.
Analysis Patterns
Analysis patterns suggest solutions (e.g., a class, a function, a
behavior) within the application domain that can be reused when modeling
many applications.
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:
REQUIREMENTS MONITORING
Requirements monitoring can be extremely useful when incremental
development is used.
It encompasses five tasks:
(1) distributed debugging uncovers errors and determines their cause,
(2) run-time verification determines whether software matches its
specification,
(3) run-time validation assesses whether the evolving software meets
user goals,
(4) business activity monitoring evaluates whether a system satisfies
business goals, and
(5) evolution and codesign provides information to stakeholders as the
system evolves.
Incremental development implies the need for incremental validation.
Requirements monitoring supports continuous validation by analyzing user goal
models against the system in use. For example, a monitoring system might
continuously assess user satisfaction and use feedback to guide incremental
improvements.
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?