Ch7 Implementation
Ch7 Implementation
Ch7 Implementation
Definition:
Design is a problem-solving process whose objective is
to find and describe a way:
To implement the system’s functional requirements...
While respecting the constraints imposed by the quality,
platform and process requirements...
including the budget and deadline
And while adhering to general principles of good quality
9
Levels in Design Process
bottom-up top-down
Bottom-up design
Make decisions about reusable low-level utilities.
Then decide how these will be put together to create
high-level constructs.
Normally a mix of top-down and bottom-up approaches
are used:
Top-down design is almost always needed to give the
system a good structure.
Bottom-up design is normally useful so that reusable
components can be created.
Correctness :
The design of a system is correct if a system built
precisely according to the design satisfies the
requirements of that system.
is the most fundamental
Does design implement requirements?
Is design feasible, given the constraints?
Efficiency
Concerned with the proper use of scarce resources -
processor & memory
Other factors same, efficiency should be maximized
Chapter 7 Design and Implementation 16
Design Objective
Maintainability
Most important quality criteria
Most affected by architectural design
Should facilitate testing
Should facilitate discovery and correction of bugs
Make modifying the system easier
Cost
For same quality, minimize cost
Design costs are quite small
Should try to minimize cost in later phases
Chapter 7 Design and Implementation 17
Design and implementation
Name
A meaningful pattern identifier.
Problem description.
Solution description.
Not a concrete design but a template for a design solution that
can be instantiated in different ways.
Consequences
The results and trade-offs of applying the pattern.
Name
Observer.
Description
Separates the display of object state from the object itself.
Problem description
Used when multiple displays of state are needed.
Solution description
See slide with UML description.
Consequences
Optimisations to enhance display performance are impractical.
Pattern Observer
name
Description Separates the display of the state of an object from the object itself and
allows alternative displays to be provided. When the object state
changes, all displays are automatically notified and updated to reflect the
change.
Problem In many situations, you have to provide multiple displays of state
description information, such as a graphical display and a tabular display. Not all of
these may be known when the information is specified. All alternative
presentations should support interaction and, when the state is changed,
all displays must be updated.
This pattern may be used in all situations where more than one
display format for state information is required and where it is not
necessary for the object that maintains the state information to know
about the specific display formats used.
Solution This involves two abstract objects, Subject and Observer, and two concrete
description objects, ConcreteSubject and ConcreteObject, which inherit the attributes of the
related abstract objects. The abstract objects include general operations that are
applicable in all situations. The state to be displayed is maintained in
ConcreteSubject, which inherits operations from Subject allowing it to add and
remove Observers (each observer corresponds to a display) and to issue a
notification when the state has changed.
Consequences The subject only knows the abstract Observer and does not know details of the
concrete class. Therefore there is minimal coupling between these objects.
Because of this lack of knowledge, optimizations that enhance display
performance are impractical. Changes to the subject may cause a set of linked
updates to observers to be generated, some of which may not be necessary.