Unit-II ch-2 Requirements Engineering
Unit-II ch-2 Requirements Engineering
Unit-II ch-2 Requirements Engineering
Requirements Engineering
•Introduction
•Establishing the ground work
•Eliciting requirements
•Developing Use Cases
•Building the Analysis model
•Negotiating Requirements
•Requirement Monitoring
•Validating Requirements
Introduction
⚫ The broad spectrum of tasks and techniques that lead to an
understanding of re-quirements is called requirements
engineering.
⚫ From a software process perspective, requirements
engineering is a major software engineering action that
begins during the communication activity and continues into
the modeling activity.
⚫ Requirements engineering builds a bridge to design and
construction.
⚫ Requirements engineering provides the appropriate
mechanism for understand- ing what the customer wants,
analyzing need, assessing feasibility, negotiating a rea-
sonable solution, specifying the solution unambiguously,
validating the specification, and managing the requirements
as they are transformed into an operational system
⚫Collecting needs from the customer. Managing the
Process.
Tasks involved:
⚫ Inception
⚫ Elicitation
⚫ Elaboration
⚫ Negotiation
⚫ Specification
⚫ Validation
⚫ Requirements Management
Inception (Beginning)
Duringinception, the
requirements asks a set of
questions to establish:
•Basic understanding of the
problem.
•Nature of the solution that
is desired.
Requirements Engineers
needs to Identify the
stakeholders,recognize
multiple viewpoints, work
toward collaboration
initiate the and communication
Elicitation: (Extraction)
Flow-oriente
Scenerio-bas d elements Component-
Level Design
ed elements
Use cases – text Data flow
diagrams
Use-case diagrams Control-flow
Activity diagrams
Swimlane diagrams diagrams
Processing
narratives Interface Design
Analysis Model
Design Model
Contd…
⚫ The data/class design transforms class models into
design class realizations and the requisite data structures
required to implement the software.
⚫ The architectural design defines the relationship
between major structural elements of the software, the
architectural styles and design patterns that can be used
to achieve the requirements defined for the system, and
the constraints that affect the way in which architecture
can be implemented.
Contd….
⚫ The interface design describes how the software
communicates with systems that interoperate with it,
and with humans who use it. An interface implies a flow
of information (e.g., data and/or control) and a specific
type of behavior.
⚫ The component-level design transforms structural
elements of the software ar-chitecture into a
procedural description of software components.
DESIGN PROCESS
7
Data Abstraction
8
Procedural Abstraction
details of
enter
algorithm
9
Architecture
“The overall structure of the software and the ways in which that
structure provides conceptual integrity for a system.” [SHA95a]
Structural properties. This aspect of the architectural design
representation defines the components of a system (e.g., modules, objects,
filters) and the manner in which those components are packaged and
interact with one another. For example, objects are packaged to encapsulate
both data and the processing that manipulates the data and interact via the
invocation of methods
Extra-functional properties. The architectural design description should
address how the design architecture achieves requirements for performance,
capacity, reliability, security, adaptability, and other system characteristics.
Families of related systems. The architectural design should draw upon
repeatable patterns that are commonly encountered in the design of
families of similar systems. In essence, the design should have the
ability to reuse architectural building blocks.
10
Patterns
⚫ Design Pattern Template
⚫ Pattern name—describes the essence of the pattern in a short but
expressive name
⚫ Intent—describes the pattern and what it does
⚫ Also-known-as—lists any synonyms for the pattern
⚫ Motivation—provides an example of the problem
⚫ Applicability—notes specific design situations in which the pattern is
applicable
⚫ Structure—describes the classes that are required to implement the pattern
⚫ Participants—describes the responsibilities of the classes that are
⚫ required to implement the pattern
⚫ Collaborations—describes how the participants collaborate to carry out their
responsibilities
⚫ Consequences—describes the “design forces” that affect the pattern and the
potential trade-offs that must be considered when the pattern is implemented
⚫ Related patterns—cross-references related design patterns
11
Separation of Concerns
■ Any complex problem can be more easily handled
if it is subdivided into pieces that can each be
solved and/or optimized independently
■ A concern is a feature or behavior that is specified
as part of the requirements model for the software
■ By separating concerns into smaller, and therefore
more manageable pieces, a problem takes less
effort and time to solve.
Number of modules
Information Hiding
modul
econtrolle
d
interface
client
"secret
s "
a specific design
decision
Stepwise Refinement
open
walk to door;
reach for
knob;
open repeat until door
door; opens
walk if knob doesn't turn,
through; then
find correct
key; insert in
lock;
endif
pull/push door
move out of
way; end
repeat
Functional Independence
■ Functional independence is achieved by developing modules with
"single-minded" function and an "aversion" to excessive interaction with
other modules.
■ Cohesion is an indication of the relative functional strength of a
module.
■ A cohesive module performs a single task, requiring little interaction with other
components in other parts of a program. Stated simply, a cohesive module
should (ideally) do just one thing.
■ Coupling is an indication of the relative interdependence among modules.
■ Coupling depends on the interface complexity between modules, the point at
which entry or reference is made to a module, and what data pass across the
interface.
Aspects
■ Consider two requirements, A and B.
Requirement A crosscuts requirement B
“if a software decomposition
[refinement] has been chosen in which
B cannot be satisfied without taking A
into account. [Ros04]
■ An aspect is a representation of a
cross-cutting concern.
Refactoring
■ Fowler [FOW99] defines refactoring in the following manner:
a na ly sis m
ode l
class diagrams use-cases - t
analysis packages ext use-case class diagrams
Elements
Sensor Management
Sensor
Cont rol CPI
Panel server
Security homeow
Deployment nerAcces
s
Elements
Personal comput
er
extern
alAcc
ess
Security Surveillan
ce
communic
homeMan
ation
agement
30
.
Thank you