Date post: | 20-Aug-2015 |
Category: |
Software |
Upload: | fizza-durrani |
View: | 148 times |
Download: | 1 times |
Lahore Garrison University 1
GRASPSubmitted To:
Submitted by:Fizza Durrani
110737th Semester UET(A)
October 15, 2014
Lahore Garrison University 2
GRASP “The critical design tool for software
development is a mind well educated in design principles. It is not the UML or any other technology.“ Craig Larman
Thus, GRASP is really a mental toolset, a learning aid to help in the design of object-oriented software.
Lahore Garrison University 3
GRASPIt stands for: General Responsibilities Assignment Software Patterns (Principles)
Lahore Garrison University 4
GRASPResponsibility
A contract / obligation that a class / module / component must accomplish
Knowledge Private state Computed state
Behavior
Send messages itself and modify its private state Instantiate another objects Send messages to another objects
Lahore Garrison University 5
RESPONSIBILITY-DRIVEN DESIGN “doing” responsibilities
Doing something itself, such as creation an object or doing a calculation.
Initiating action in other objectsControlling and coordinating activities in other
objects.
“knowing” responsibilitiesKnowing about encapsulated data.Knowing about related objects.Knowing about things it can derive or calculate.
Lahore Garrison University 7
GRASP PATTERNS Informational Expert Creator Low Coupling High Cohesion Controller Polymorphism Pure Fabrication Indirection Controlled Variation
Lahore Garrison University 9
INFORMATIONAL EXPERTProblem: Which class possesses information about object A?
More common question: What is a general principle of assigning responsibilities to objects?
Assign the responsibility to the class that knows the necessary information for performing required action and fulfill the responsibility.
Lahore Garrison University 10
INFORMATIONAL EXPERTA B C D
DO
GetDataX()
GetDataY()
GetDataZ()
return Z
return Y
return X
Lahore Garrison University 13
CREATORProblem: Who should be responsible for creating
object
A?
Class B must have that responsibility if: B is composed by A (composition) B knows the necessary information in order to
instantiate A objects B depends heavily on A
Lahore Garrison University 14
• The goal is to define creator-object, which will be related to all created objects.
Board Square64
Square
Boardcreate
create
CREATOR
Lahore Garrison University 16
LOW COUPLINGProblem: How to minimize dependencies between
classes ?
Coupling is the degree, defines how tightly one
component linked to other components, or how much
information it knows about other components.Examples Inheritance Composition / aggregation / association A send messages to B
Lahore Garrison University 17
LOW COUPLING Assign a responsibility so that coupling remains
low.
Low Coupling is an evaluative pattern, which dictates how to assign responsibilities to support: lower dependency between the classes, change in one class having lower impact on
other classes, higher reuse potential.
Lahore Garrison University 19
HIGH COHESIONProblem: How to keep objects focused,
understandable, manageable, and support low
coupling?
Cohesion is a measure of how strongly related or focused the responsibilities of a single module are.
High Cohesion is an evaluative pattern that attempts to keep objects appropriately focused, manageable and understandable.
Lahore Garrison University 20
HIGH COHESION Alternatively, low cohesion is a situation in
which a given element has too many unrelated responsibilities (“God Object”)
Low Cohesion implies: Hard to reuse Hard to maintain Constantly changing
Lahore Garrison University 23
CONTROLLERProblem: Who should be responsible for
handling events and messages from external
actors (UI, …)? Assign the responsibility to a class, such as:
A class that represents the overall system, device, or subsystem.Façade Controller Pattern
A class that represent a use case, whereby performs handling particular system operation.Use Case Controller Pattern
Generally does not perform operation by itself, but delegate responsibility to component objects.
Lahore Garrison University 25
POLYMORPHISMProblem: How to act different depending in
object’s
class, or how to design pluggable components? In case of class behavior might changes,
responsibilities segregates to different behavior specific classes, using polymorphic operations for this class.
Advise: Do not use type checking, but conditional logic for implementation different variations based on object type.
Lahore Garrison University 26
There are (roughly) 3 types a polymorphism:Ad hoc PolymorphismParametric PolymorphismSubtype Polymorphism
POLYMORPHISMPlayer
Square
landedOn
RegularSquare
landedOn
GoSquare
landedOn
OtherSquare
landedOn
Lahore Garrison University 28
Problem: How to assign responsibilities if applying the Informational Expert principle decreases cohesion and increases coupling?
Assign the responsibility to an artificial class that does not belongs to the domain model.
Pure Fabrication is a class that does not reflect any business domain object, but required only for increase cohesion and decrease coupling.
PURE FABRICATION
Lahore Garrison University 30
Problem: How to assign responsibilities in order to avoid direct coupling between two components, and keep ability for reuse.
Assign responsibility to intermediate class for providing linking between objects not linking directly.
Related design patterns: Adapter, Bridge, Mediator.
INDIRECTION
Lahore Garrison University 32
Problem: How to design system and subsystems, that changes in these components does not affects on other components.
Identify points of possible variations and instability; create stable interfaces upon instable components.
Open-Closed Principle almost equivalent to CV pattern.
CONTROLLED VARIATION
Lahore Garrison University 33
There are 2 types of points:Variation point – branching point on existing system or
in requirements. For example we need to support several types of interfaces for tax payment system
Evolution point – supposed branching point, which might occur in future, but does not declared by existing requirements.
Protected variation pattern applying for both variation and evolution points.
CONTROLLED VARIATION
Lahore Garrison University 34
Informational Expert Assign a responsibility to the class that has the information needed to fulfill it.
Creator Assign class B the responsibility to create an instance of class A if one of these is true (the more the better):• B "contains" or compositely aggregates A. • B records A. • B closely uses A. • B has the initializing data for A that will be passed
to A when it is crated. Thus B is an Expert with respect to creating A.
Controller Assign the responsibility to a class representing one of the following choices:• Major subsystem classes• A use case scenario classes within which the
system event occurs
Low Coupling Assign a responsibility so that coupling remains low.
High Cohesion Assign a responsibility so that cohesion remains high.
OVERVIEW
Lahore Garrison University 35
Polymorphism The same name operations (methods) in the difference classes is defined. And assign a responsibility to the class the class that the behavior is changed.
Pure Fabrication Define a class for convenience' sake that doesn't express the concept of the problem area at all.
Indirection Assign the responsibility to an intermediate object to mediate between other components or services, so that they are not directly coupled.
Protected Variations Assign responsibility to create a stable interface around an unstable or predictably variable subsystem or component.
OVERVIEW
Lahore Garrison University 36
http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29
http://www.slideshare.net/snmgian/grasp-principles
http://www.slideshare.net/eduardo_diederichsen/design-talk-grasp-patterns?related=1
http://www.slideshare.net/eduardo_diederichsen/design-talk-grasp-patterns?related=1
BIBLIOGRAPHY