Ch5 Analysis
Ch5 Analysis
Ch5 Analysis
An Overview of Analysis
1
Analysis focuses on producing a model of
the system, called the analysis model,
which is correct, complete, consistent, and
verifiable.
Analysis is different from requirements
elicitation in that developers focus on
structuring and formalizing the
requirements elicited from users.
The analysis model is composed of three
individual models:
the functional model, represented by use cases
and scenarios,
the analysis object model, represented by class
and object diagrams, and
the dynamic model, represented by state
machine and sequence diagrams.
Analysis Concepts
Analysis Object Models and Dynamic Models
The analysis object model is a part of the analysis model and
focuses on the individual concepts that are manipulated by the
system, their properties and their relationships.
depicted with UML class diagrams, includes classes, attributes, and operations.
is a visual dictionary of the main concepts visible to the user.
The dynamic model focuses on the behavior of the system.
is depicted with sequence diagrams and with state machines.
Sequence diagrams represent the interactions among a set of objects during a
single use case.
State machines represent the behavior of a single object (or a group of very
tightly coupled objects).
The dynamic model serves to assign responsibilities to individual classes and, in
the process, to identify new classes, associations, and attributes to be added to
the analysis object model.
When working with either the analysis object model or
the dynamic model, it is essential to remember that
these models represent user-level concepts, not
actual software classes or components.
For example, classes such as Database, Subsystem, Session
Manager, Network, should not appear in the analysis model as
the user is completely shielded from those concepts.
Note that most classes in the analysis object model
will correspond to one or more software classes in the
source code.
However, the software classes will include many more
attributes and associations than their analysis
counterparts.
Entity, Boundary, and Control Objects
Entity objects represent objects in the real
world problem domain.
Boundary objects represent the interactions
between the actors and the system.
Control objects are in charge of realizing
use cases.
Generalization and
Specialization
Generalization is the modeling activity that
identifies abstract concepts from lower-level ones.
For example, assume we are reverse-engineering
an emergency management system and discover
screens for managing traffic accidents and fires.
Noticing common features among these three
concepts, we create an abstract concept called
Emergency to describe the common (and
general) features of traffic accidents and fires.
Specialization is the activity that identifies more specific
concepts from a high-level one.
For example, assume that we are building an emergency
management system from scratch and that we are discussing its
functionality with the client.
The client first introduces us with the concept of an incident, then
describes three types of Incidents:
Disasters, which require the collaboration of several agencies,
Emergencies, which require immediate handling but can be handled
by a single agency, and
LowPriorityIncidents, that do not need to be handled if resources
are required for other, higher-priority Incidents.
Analysis Activities: From Use Cases to Objects
Identifying Entity Objects
Developers name and briefly describe the objects, their
attributes, and their responsibilities as they are identified.
Uniquely naming objects promotes a standard terminology.
For entity objects we recommend always to start with the
names used by end users and application domain specialists.
Describing objects, even briefly, allows developers to clarify
the concepts they use and avoid misunderstandings (e.g.,
using one object for two different but related concepts).
Developers should document attributes and responsibilities if
they are not obvious; a tentative name and a brief description
for each object is sufficient otherwise.
Entity objects for ReportEmergency use case:
Identifying Boundary Objects
Boundary objects represent the system interface
with the actors.
In each use case, each actor interacts with at
least one boundary object.
The boundary object collects the information
from the actor and translates it into a form that
can be used by both entity and control objects.
Boundary objects model the user interface at a coarse
level. They do not describe in detail the visual aspects
of the user interface.
For example, boundary objects such as “menu item” or
“scroll bar” are too detailed.
First, developers can discuss user interface details more
easily with sketches and mock-ups.
Second, the design of the user interface continues to
evolve as a consequence of usability tests, even after the
functional specification of the system becomes stable.
Updating the analysis model for every user interface
change is time consuming and does not yield any
substantial benefit.
Identifying Control Objects
Control objects are responsible for coordinating boundary
and entity objects and ensure the right steps are occurring
in the right order.
Control objects usually do not have a concrete counterpart
in the real world.
A close relationship exists between a use case and a
control object; a control object is usually created at the
beginning of a use case and ceases to exist at its end.
It is responsible for collecting information from the
boundary objects and dispatching it to entity objects.
For example, control objects describe the behavior associated
with the sequencing of forms, undo and history queues, and
dispatching information in a distributed system.
Heuristics for identifying control objects
Identify one control object per use case.
Identify one control object per actor in the use case.
The life span of a control object should cover the extent
of the use case or the extent of a user session.
If it is difficult to identify the beginning and the end of
a control object activation, the corresponding use
case probably does not have well-defined entry and
exit conditions.
Rules applied for the communication
between entity-boundary-controller obj
Actors can only talk to boundary objects
Boundary obj can only talk to controllers and
actors
Entity obj can only talk to controllers
Controllers can talk to boundary and entity obj
and to other controllers, but not to actors.
Mapping Use Cases to Objects with Sequence
Diagrams
A sequence diagram ties use cases with objects.
It shows how the behavior of a use case is distributed
among its participating objects.
Sequence diagrams are usually not as good a medium for
communication with the user as use cases are, since
sequence diagrams require more background about the
notation.
For clients who know computers well, they are intuitive
and can be more precise than use cases.
In all cases sequence diagrams represent another shift in
perspective and allow the developers to find missing
objects in the requirements specification.
Heuristics for drawing sequence diagrams
The first column should correspond to the actor
who initiated the use case.
The second column should be a boundary object
(that the actor used to initiate the use case).
The third column should be the control object that
manages the rest of the use case.
Control objects are created by boundary objects
initiating use cases.
Entity objects are accessed by control and
boundary objects.
Identifying Associations
While sequence diagrams allow developers to represent
interactions among objects over time, class diagrams allow
developers to describe the inter-dependencies of objects.
An association shows a relationship between two or more classes.
For example, a FieldOfficer writes an EmergencyReport.
Identifying associations has two advantages.
First, it clarifies the analysis model by making relationships between
objects explicit (e.g., an EmergencyReport can be created by a
FieldOfficer or a Dispatcher).
Second, it enables the developer to discover boundary cases associated
with links.
Boundary cases are exceptions that must be clarified in the model.
For example, it is intuitive to assume that most
EmergencyReports are written by one FieldOfficer.
Associations have several properties.
A name to describe the association between the two classes.
Association names are optional and need not be unique globally.