grasp

38
GRASP Submitted To: Submitted by: Fizza Durrani 11073 7 th Semester UET(A) October 15, 2014 1 Lahore Garrison University

Upload: fizza-durrani

Post on 20-Aug-2015

148 views

Category:

Software


1 download

TRANSCRIPT

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 6

GRASP PATTERNS

Lahore Garrison University 7

GRASP PATTERNS Informational Expert  Creator Low Coupling High Cohesion Controller Polymorphism Pure Fabrication Indirection Controlled Variation

Lahore Garrison University 8

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 11

INFORMATIONAL EXPERTA B C D

DO

DoAction()

DoAction(X)

DoAction(Y)

Lahore Garrison University 12

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 15

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 18

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 21

A A ?? ??

DoA()

DoB()

DoC()

DoA()

DoB()

DoC()

HIGH COHESION

Lahore Garrison University 22

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 24

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 27

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 29

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 31

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

Lahore Garrison University 37

Any Question

Lahore Garrison University 38