SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Submitted To: 
Submitted by: 
Fizza Durrani 
11073 
7th Semester UET(A) 
October 15, 2014 
Lahore Garrison University 1
“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 2
It stands for: 
 General 
 Responsibilities 
 Assignment 
 Software 
 Patterns (Principles) 
Lahore Garrison University 3
Responsibility 
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 4
 “doing” responsibilities 
 Doing something itself, such as creation an 
object or doing a calculation. 
 Initiating action in other objects 
 Controlling and coordinating activities in other 
objects. 
 “knowing” responsibilities 
 Knowing about encapsulated data. 
 Knowing about related objects. 
 Knowing about things it can derive or 
calculate. 
Lahore Garrison University 5
Lahore Garrison University 6
 Informational Expert 
 Creator 
 Low Coupling 
 High Cohesion 
 Controller 
 Polymorphism 
 Pure Fabrication 
 Indirection 
 Controlled Variation 
Lahore Garrison University 7
Lahore Garrison University 8
Problem: 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 9
A B C D 
DO 
GetDataX() 
GetDataY() 
GetDataZ() 
return Z 
return Y 
return X 
Lahore Garrison University 10
A B C D 
DO 
DoAction() 
DoAction(X) 
DoAction(Y) 
Lahore Garrison University 11
Lahore Garrison University 12
Problem: 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 13
• The goal is to define creator-object, which will be 
related to all created objects. 
64 
Board Square 
Square 
Board 
create 
create 
Lahore Garrison University 14
Lahore Garrison University 15
Problem: 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 16
 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 17
Lahore Garrison University 18
Problem: 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 19
 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 20
A A ?? ?? 
DoA() 
DoB() 
DoC() 
DoA() 
DoB() 
DoC() 
Lahore Garrison University 21
Lahore Garrison University 22
Problem: 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 23
Lahore Garrison University 24
Problem: 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 25
Player 
 There are (roughly) 3 types a polymorphism: 
 Ad hoc Polymorphism 
 Parametric Polymorphism 
 Subtype Polymorphism 
Square 
landedOn 
RegularSquare 
landedOn 
GoSquare 
landedOn 
OtherSquare 
landedOn 
Lahore Garrison University 26
Lahore Garrison University 27
 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. 
Lahore Garrison University 28
Lahore Garrison University 29
 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. 
Lahore Garrison University 30
Lahore Garrison University 31
 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. 
Lahore Garrison University 32
 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. 
Lahore Garrison University 33
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 Lahore GarArissons Uingivners iaty responsibility so that coh3e4 sion remains high.
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. 
Lahore Garrison University 35
 http://en.wikipedia.org/wiki/GRASP_%28object-oriented_ 
design%29 
 http://www.slideshare.net/snmgian/grasp-principles 
 http://www.slideshare.net/eduardo_diederichsen/d 
esign-talk-grasp-patterns?related=1 
 http://www.slideshare.net/eduardo_diederichsen/d 
esign-talk-grasp-patterns?related=1 
Lahore Garrison University 36
Any Question 
Lahore Garrison University 37
Lahore Garrison University 38

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

UML Diagrams
UML DiagramsUML Diagrams
UML Diagrams
 
CS8592 Object Oriented Analysis & Design - UNIT III
CS8592 Object Oriented Analysis & Design - UNIT III CS8592 Object Oriented Analysis & Design - UNIT III
CS8592 Object Oriented Analysis & Design - UNIT III
 
GRASP Principles
GRASP PrinciplesGRASP Principles
GRASP Principles
 
Class diagrams
Class diagramsClass diagrams
Class diagrams
 
Introduction to UML
Introduction to UMLIntroduction to UML
Introduction to UML
 
Domain Modeling
Domain ModelingDomain Modeling
Domain Modeling
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Design patterns ppt
Design patterns pptDesign patterns ppt
Design patterns ppt
 
CS8592-OOAD Lecture Notes Unit-2
CS8592-OOAD Lecture Notes Unit-2CS8592-OOAD Lecture Notes Unit-2
CS8592-OOAD Lecture Notes Unit-2
 
Software design
Software designSoftware design
Software design
 
Introduction to Rational Rose
Introduction to Rational RoseIntroduction to Rational Rose
Introduction to Rational Rose
 
Use Case Modeling
Use Case ModelingUse Case Modeling
Use Case Modeling
 
State Machine Diagram
State Machine DiagramState Machine Diagram
State Machine Diagram
 
Software project planning
Software project planningSoftware project planning
Software project planning
 
Activity diagram
Activity diagramActivity diagram
Activity diagram
 
Component and Deployment Diagram - Brief Overview
Component and Deployment Diagram - Brief OverviewComponent and Deployment Diagram - Brief Overview
Component and Deployment Diagram - Brief Overview
 
Lecture7 use case modeling
Lecture7 use case modelingLecture7 use case modeling
Lecture7 use case modeling
 
Component level design
Component   level designComponent   level design
Component level design
 
Use case Diagram and Sequence Diagram
Use case Diagram and Sequence DiagramUse case Diagram and Sequence Diagram
Use case Diagram and Sequence Diagram
 
Object Oriented Analysis and Design
Object Oriented Analysis and DesignObject Oriented Analysis and Design
Object Oriented Analysis and Design
 

Andere mochten auch

Andere mochten auch (20)

GRASP Principles
GRASP PrinciplesGRASP Principles
GRASP Principles
 
Grasp principles
Grasp principlesGrasp principles
Grasp principles
 
09 grasp
09 grasp09 grasp
09 grasp
 
14 grasp-1
14 grasp-114 grasp-1
14 grasp-1
 
BIS 08a - Application Development - II Version 2
BIS 08a - Application Development - II Version 2BIS 08a - Application Development - II Version 2
BIS 08a - Application Development - II Version 2
 
Chapter03
Chapter03Chapter03
Chapter03
 
Chapter04
Chapter04Chapter04
Chapter04
 
8. operation contracts
8. operation contracts8. operation contracts
8. operation contracts
 
OOA&D Lecture1
OOA&D Lecture1OOA&D Lecture1
OOA&D Lecture1
 
Refactoring to SOLID Code
Refactoring to SOLID CodeRefactoring to SOLID Code
Refactoring to SOLID Code
 
OOA&D Lecture 2 uml notations
OOA&D Lecture 2 uml notations OOA&D Lecture 2 uml notations
OOA&D Lecture 2 uml notations
 
Lecture 4
Lecture 4Lecture 4
Lecture 4
 
Silva assessment
Silva assessmentSilva assessment
Silva assessment
 
Performance based project jessica allen 2
Performance based project jessica allen 2Performance based project jessica allen 2
Performance based project jessica allen 2
 
Whitney Backwards Assessment April 2008
Whitney Backwards Assessment April 2008Whitney Backwards Assessment April 2008
Whitney Backwards Assessment April 2008
 
Chapter02
Chapter02Chapter02
Chapter02
 
The six facets of understanding
The six facets of understandingThe six facets of understanding
The six facets of understanding
 
Craig Larman - Scaling Lean & Agile Development
Craig Larman - Scaling Lean & Agile Development Craig Larman - Scaling Lean & Agile Development
Craig Larman - Scaling Lean & Agile Development
 
The LEARN and Backwards Design Model
The LEARN and Backwards Design ModelThe LEARN and Backwards Design Model
The LEARN and Backwards Design Model
 
Unit 4 designing classes
Unit 4  designing classesUnit 4  designing classes
Unit 4 designing classes
 

Ähnlich wie Grasp

Introduction to UML
Introduction to UMLIntroduction to UML
Introduction to UMLyndaravind
 
Object oriented software engineering
Object oriented software engineeringObject oriented software engineering
Object oriented software engineeringVarsha Ajith
 
CS8592 Object Oriented Analysis & Design - UNIT IV
CS8592 Object Oriented Analysis & Design - UNIT IV CS8592 Object Oriented Analysis & Design - UNIT IV
CS8592 Object Oriented Analysis & Design - UNIT IV pkaviya
 
SE18_Lec 06_Object Oriented Analysis and Design
SE18_Lec 06_Object Oriented Analysis and DesignSE18_Lec 06_Object Oriented Analysis and Design
SE18_Lec 06_Object Oriented Analysis and DesignAmr E. Mohamed
 
SE_Lec 06_Object Oriented Analysis and Design
SE_Lec 06_Object Oriented Analysis and DesignSE_Lec 06_Object Oriented Analysis and Design
SE_Lec 06_Object Oriented Analysis and DesignAmr E. Mohamed
 
Object Interconnections
Object InterconnectionsObject Interconnections
Object Interconnectionsadil raja
 
An Empirical Study on How Developers Reason about Module Cohesion
An Empirical Study on How Developers Reason about Module CohesionAn Empirical Study on How Developers Reason about Module Cohesion
An Empirical Study on How Developers Reason about Module CohesionBruno C. da Silva
 
Object Oriented Design
Object Oriented DesignObject Oriented Design
Object Oriented DesignAravinth NSP
 
M03_1_Structur alDiagrams.ppt
M03_1_Structur                         alDiagrams.pptM03_1_Structur                         alDiagrams.ppt
M03_1_Structur alDiagrams.pptnesarahmad37
 
CSE333 project initial spec: Learning agents
CSE333 project initial spec: Learning agentsCSE333 project initial spec: Learning agents
CSE333 project initial spec: Learning agentsbutest
 
CSE333 project initial spec: Learning agents
CSE333 project initial spec: Learning agentsCSE333 project initial spec: Learning agents
CSE333 project initial spec: Learning agentsbutest
 
Ooad 2marks
Ooad 2marksOoad 2marks
Ooad 2marksAsh Wini
 
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPT
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPTCS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPT
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPTleela rani
 
Patterns of Assigning Responsibilities
Patterns of Assigning ResponsibilitiesPatterns of Assigning Responsibilities
Patterns of Assigning Responsibilitiesguest2a92cd9
 
M03 1 Structuraldiagrams
M03 1 StructuraldiagramsM03 1 Structuraldiagrams
M03 1 StructuraldiagramsDang Tuan
 

Ähnlich wie Grasp (20)

Introduction to UML
Introduction to UMLIntroduction to UML
Introduction to UML
 
Object oriented software engineering
Object oriented software engineeringObject oriented software engineering
Object oriented software engineering
 
CS8592 Object Oriented Analysis & Design - UNIT IV
CS8592 Object Oriented Analysis & Design - UNIT IV CS8592 Object Oriented Analysis & Design - UNIT IV
CS8592 Object Oriented Analysis & Design - UNIT IV
 
SE18_Lec 06_Object Oriented Analysis and Design
SE18_Lec 06_Object Oriented Analysis and DesignSE18_Lec 06_Object Oriented Analysis and Design
SE18_Lec 06_Object Oriented Analysis and Design
 
Mvc grasp
Mvc graspMvc grasp
Mvc grasp
 
SE_Lec 06_Object Oriented Analysis and Design
SE_Lec 06_Object Oriented Analysis and DesignSE_Lec 06_Object Oriented Analysis and Design
SE_Lec 06_Object Oriented Analysis and Design
 
Object Interconnections
Object InterconnectionsObject Interconnections
Object Interconnections
 
An Empirical Study on How Developers Reason about Module Cohesion
An Empirical Study on How Developers Reason about Module CohesionAn Empirical Study on How Developers Reason about Module Cohesion
An Empirical Study on How Developers Reason about Module Cohesion
 
Object Oriented Design
Object Oriented DesignObject Oriented Design
Object Oriented Design
 
M03_1_Structur alDiagrams.ppt
M03_1_Structur                         alDiagrams.pptM03_1_Structur                         alDiagrams.ppt
M03_1_Structur alDiagrams.ppt
 
CSE333 project initial spec: Learning agents
CSE333 project initial spec: Learning agentsCSE333 project initial spec: Learning agents
CSE333 project initial spec: Learning agents
 
CSE333 project initial spec: Learning agents
CSE333 project initial spec: Learning agentsCSE333 project initial spec: Learning agents
CSE333 project initial spec: Learning agents
 
Framing the Problem
Framing the ProblemFraming the Problem
Framing the Problem
 
Ooad 2marks
Ooad 2marksOoad 2marks
Ooad 2marks
 
TEST PPT
TEST PPTTEST PPT
TEST PPT
 
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPT
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPTCS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPT
CS8592-OOAD-UNIT II-STATIC UML DIAGRAMS PPT
 
Patterns of Assigning Responsibilities
Patterns of Assigning ResponsibilitiesPatterns of Assigning Responsibilities
Patterns of Assigning Responsibilities
 
CS8592-OOAD Lecture Notes Unit-4
CS8592-OOAD Lecture Notes Unit-4CS8592-OOAD Lecture Notes Unit-4
CS8592-OOAD Lecture Notes Unit-4
 
Advance oops concepts
Advance oops conceptsAdvance oops concepts
Advance oops concepts
 
M03 1 Structuraldiagrams
M03 1 StructuraldiagramsM03 1 Structuraldiagrams
M03 1 Structuraldiagrams
 

Kürzlich hochgeladen

Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 

Kürzlich hochgeladen (20)

Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 

Grasp

  • 1. Submitted To: Submitted by: Fizza Durrani 11073 7th Semester UET(A) October 15, 2014 Lahore Garrison University 1
  • 2. “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 2
  • 3. It stands for:  General  Responsibilities  Assignment  Software  Patterns (Principles) Lahore Garrison University 3
  • 4. Responsibility 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 4
  • 5.  “doing” responsibilities  Doing something itself, such as creation an object or doing a calculation.  Initiating action in other objects  Controlling and coordinating activities in other objects.  “knowing” responsibilities  Knowing about encapsulated data.  Knowing about related objects.  Knowing about things it can derive or calculate. Lahore Garrison University 5
  • 7.  Informational Expert  Creator  Low Coupling  High Cohesion  Controller  Polymorphism  Pure Fabrication  Indirection  Controlled Variation Lahore Garrison University 7
  • 9. Problem: 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 9
  • 10. A B C D DO GetDataX() GetDataY() GetDataZ() return Z return Y return X Lahore Garrison University 10
  • 11. A B C D DO DoAction() DoAction(X) DoAction(Y) Lahore Garrison University 11
  • 13. Problem: 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 13
  • 14. • The goal is to define creator-object, which will be related to all created objects. 64 Board Square Square Board create create Lahore Garrison University 14
  • 16. Problem: 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 16
  • 17.  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 17
  • 19. Problem: 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 19
  • 20.  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 20
  • 21. A A ?? ?? DoA() DoB() DoC() DoA() DoB() DoC() Lahore Garrison University 21
  • 23. Problem: 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 23
  • 25. Problem: 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 25
  • 26. Player  There are (roughly) 3 types a polymorphism:  Ad hoc Polymorphism  Parametric Polymorphism  Subtype Polymorphism Square landedOn RegularSquare landedOn GoSquare landedOn OtherSquare landedOn Lahore Garrison University 26
  • 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. Lahore Garrison University 28
  • 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. Lahore Garrison University 30
  • 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. Lahore Garrison University 32
  • 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. Lahore Garrison University 33
  • 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 Lahore GarArissons Uingivners iaty responsibility so that coh3e4 sion remains high.
  • 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. Lahore Garrison University 35
  • 36.  http://en.wikipedia.org/wiki/GRASP_%28object-oriented_ design%29  http://www.slideshare.net/snmgian/grasp-principles  http://www.slideshare.net/eduardo_diederichsen/d esign-talk-grasp-patterns?related=1  http://www.slideshare.net/eduardo_diederichsen/d esign-talk-grasp-patterns?related=1 Lahore Garrison University 36
  • 37. Any Question Lahore Garrison University 37