February 200491.3913 Ron McFadyen1 From the Merriam-Webster’s online dictionary (www.m-w.com): Main Entry: an·thro·po·mor·phism Pronunciation: -"fi-z&m.

Slides:



Advertisements
Similar presentations
Software Engineering 1 Object-oriented Analysis and Design Applying UML and Patterns An Introduction to Object-oriented Analysis and Design and Iterative.
Advertisements

Object-Oriented Analysis and Design
Object Design Examples with GRASP
Oct 3, R. McFadyen1 From the Merriam-Webster’s online dictionary ( Main Entry: an·thro·po·mor·phism Pronunciation: -"fi-z&m Function:
Oct 2, Ron McFadyen1 From the Merriam-Webster’s online dictionary ( Main Entry: an·thro·po·mor·phism Pronunciation: -"fi-z&m Function:
March R McFadyen1 Architecture Architecture involves the set of significant decisions about the organization of a software system, decisions.
March Ron McFadyen1 Ch 17: Use Case Realizations with GRASP Patterns Assigning responsibilities to objects to achieve user goals Section 17.4.
Feb R. McFadyen1 From the Merriam-Webster’s online dictionary ( Main Entry: an·thro·po·mor·phism Pronunciation: -"fi-z&m Function:
Oct Ron McFadyen1 Ch 17: Use Case Realizations with GRASP Patterns P. 248: “The assignment of responsibilities and design of collaborations.
Fall 2009ACS-3913 Ron McFadyen1 idea was first put forth by Christopher Alexander (1977) in his work on architectural design principles a pattern is a.
Feb Ron McFadyen1 Use Case Realizations with GRASP Patterns “The assignment of responsibilities and design of collaborations are very important.
Low Coupling High Cohesion
Object-Oriented Analysis and Design
GRASP : Designing Objects with Responsibilities
Fall 2009ACS-3913 Ron McFadyen1 From the Merriam-Webster’s online dictionary ( Main Entry: an·thro·po·mor·phism Date: 1753 an interpretation.
March R McFadyen1 Figure 30.2 Layers in NextGen They only have three layers in this architecture Each layer is shown as a UML Package No separate.
Feb 4, Ron McFadyen1 founded on principles of good OO design idea was first put forth by Christopher Alexander (1977) in their work concerning.
GRASP Design Patterns: Designing Objects with Responsibilities
GRASP Pattern Zhen Jiang West Chester University
GRASP Principles. How to Design Objects The hard step: moving from analysis to design How to do it? –Design principles (Larman: “patterns”) – an attempt.
GRASP Patterns Presented By Dr. Shazzad Hosain. Patterns A pattern describes a problem and solution, and given a name. Examples are Singleton, Adapter,
Chapter 18 Object Design Examples with GRASP. Objectives Design use case realizations –A use-case realization describes how a particular use case is realized.
GRASP PATTERNS Information Expert (Expert) Creator Controller © Lethbridge/Laganière 2001 Chapter 6: Using design patterns1.
Chapter 17. GRASP General Responsibility Assignment Software Patterns (Principles) OOD: after identifying requirements, create domain model, define responsiblities.
1 Chapter 17 GRASP Design Patterns: Designing Objects with Responsibilities.
BTS430 Systems Analysis and Design using UML Domain Model Part 1—Finding Conceptual Classes.
Architecture GRASP Realization of use cases in interaction diagrams Design class diagram Design ( how )
1 Ch 18. Object Design Examples With Grasp Objectives Design use case realizations. Apply GRASP to assign responsibilities to classes. Apply UML to illustrate.
Chapter 7: Object Design Examples with GRASP. Objective Design use case realizations. Apply GRASP to assign responsibilities to classes. Apply UML to.
BTS430 Systems Analysis and Design using UML Design Patterns.
Sept Ron McFadyen1 UML & Design Patterns Course outlineoutline /3 Advanced Systems Design.
GRASP: Designing Objects With Responsibilities Chapter 17 Applying UML and Patterns -Craig Larman.
GRASP: Designing Objects With Responsibilities
Object Design Examples with GRASP (Ch. 18)
Object-Oriented Analysis and Design Mar 11, 2008.
17. GRASP—Designing Objects with Responsibilities III CSE5324 Lecture Quiz 17 due at 5 PM Thursday, 8 October 2015.
SOEN 343 Software Design Section H Fall 2006 Dr Greg Butler
Chapter 17 GRASP: Designing Objects with Responsibilities. 1CS6359 Fall 2011 John Cole.
Design Patterns. Patterns “Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution.
Copyright © Craig Larman All Rights Reserved Responsibility-Driven Design with the GRASP Patterns.
Object-Oriented Design Part 2
GRASP: Designing Objects with Responsibilities
IntellAgile Copyright © 2002 Craig Larman. All rights reserved. Object Design and Use- Case Realizations with GRASP Patterns.
Object-Oriented Analysis and Design Mar 9, 2008.
OO Methodology Elaboration Iteration 2 - Design Patterns -
Fall 2009ACS-3913 Ron McFadyen1 Use Case Realizations with GRASP Patterns “The assignment of responsibilities and design of collaborations are very important.
OO Design Roshan Chitrakar. Analysis to Design Do the RIGHT thing Do the RIGHT thing Requirement Analysis Requirement Analysis Domain Modeling with addition.
SOEN 343 Software Design Section H Fall 2006 Dr Greg Butler
Copyright © Craig Larman All Rights Reserved COMP-350 Object-Oriented Analysis and Design GRASP: Designing Objects with Responsibilities Reference:
GRASP: Designing Objects With Responsibilities
References: Applying UML and patterns Craig Larman
OO Methodology Elaboration Phase Iteration 1- Part 3.
Design. 2 The Need for Software Blueprints Knowing an object-oriented language and having access to a library is necessary but not sufficient in order.
Oct 3, Ron McFadyen1 GRASP Patterns 1.Expert 2.Creator 3.Controller 4.Low Coupling 5.High Cohesion.
OO Methodology Elaboration Phase Iteration 1- Part 2.
TK2023 Object-Oriented Software Engineering CHAPTER 13d GRASP Patterns: High Cohesion.
Ch 17: Use Case Realizations with GRASP Patterns
TK2023 Object-Oriented Software Engineering
Object Design Examples with GRASP
GRASP – Designing Objects with Responsibilities
TK2023 Object-Oriented Software Engineering
Chapter 12: Collaboration Diagram - PART2
Conception OBJET GRASP Patterns
DESIGN MODEL: USE-CASE REALIZATIONS WITH GRASP PATTERNS
TK2023 Object-Oriented Software Engineering
Presentation on GRASP Patterns Submitted by
Apply Expert, Creator, Controller, Low Coupling, High Cohesion
GRASP : Designing Objects with Responsibilities
GRASP Design Patterns: Designing Objects with Responsibilities
Design Model: Creating Design Class Diagrams
Presentation transcript:

February Ron McFadyen1 From the Merriam-Webster’s online dictionary ( Main Entry: an·thro·po·mor·phism Pronunciation: -"fi-z&m Function: noun Date: 1753 : an interpretation of what is not human or personal in terms of human or personal characteristics : HUMANIZATIONHUMANIZATION Anthropomorphism

February Ron McFadyen2 Anthropomorphism Anthropomorphism: Object-oriented programming works like human organizations. Each object will communicate with another one by sending messages. So the software objects work by just sending those messages.

February Ron McFadyen3 Responsibility-Driven Design (RDD) Detailed object design is usually done from the point of view of: –Objects have responsibilities –Objects collaborate –Similar to how we conceive of people In RDD we do object design such that we will ask questions such as: –What are the responsibilities of this object? –Who does it collaborate with?

February Ron McFadyen4 Figure 3.1 on page 31 - Architectural Layers

February Ron McFadyen5 Sample Problem 1 What object should receive this message? How should objects interact to fulfill the request? How do we justify out decision?

February Ron McFadyen6 Sample Problem 2 How should the objects interact in order for changes in the data to be reflected in the two displays? Graphic Display List Display Data User How do we justify our decision?

February Ron McFadyen7 idea was first put forth by Christopher Alexander (1977) in his work on architectural design principles a pattern is a named problem/solution pair that can be applied in new contexts advice from previous designers to help designers in new situations rules of thumb - not new ideas There are many books on the subject; examples: Design Patterns - Erich Gamma et al Java Design Patterns: a tutorial - James Cooper Design Patterns Java Workbook - Steven John Metsker Data Access Patterns - Clifton Nock Patterns of Enterprise Application Architecture – Martin Fowler Patterns

February Ron McFadyen8 Guiding principles to help us assign responsibilities GRASP: –General Responsibility Assignment Software Patterns –Very very fundamental, simple, basic principles of object design. GRASP Patterns Fundamental Principles of Object Design

February Ron McFadyen9 GRASP Patterns Expert Creator Controller Low Coupling High Cohesion

February Ron McFadyen10 Expert Assign a responsibility to the object that has the information necessary to fulfill it. –“That which has the information, does the work.” –Not a sophisticated idea - rather, it is common sense –E.g., What software object calculates grand total? What information is needed to do this? What object or objects has the majority of this information.

February Ron McFadyen11 Expert Example. In the NextGEN POS application, it is necessary to know the grand total of a sale. Where should that responsibility be placed? {We will be assigning a few responsibilities in this example} Expert suggests that we should look for a class that has the information needed to determine the grand total. If our design is just beginning, we look at the Domain Model and bring the pertinent conceptual classes into the class model Pages

February Ron McFadyen12 What information is needed to determine the grand total? It is necessary to know all the SalesLineItem instances of a sale and to sum their subtotals. A Sale instance is aware of these … Sale is the Expert choice for having the responsibility of knowing the grand total.

February Ron McFadyen13 Expert leads us to place the method getTotal() in Sale

February Ron McFadyen14 A line item knows its quantity and the associated Product, so it is the expert … SalesLineItem should determine the line item subtotal

February Ron McFadyen15 Only the Product Specification knows the price; so Product Specification needs a method...

February Ron McFadyen16 Creator What object should have the responsibility to create an X? –Ignores special-case patterns such as Factory. Choose an object C, such that: –C contains or aggregates X –C closely uses X –C records instances of X objects –C closely uses X objects –C has the initializing data for X

February Ron McFadyen17 Example: Who should be responsible for creating a SalesLineItem? Since Sale “contains” SalesLineItems, Creator suggests Sale as the candidate for this responsiblity

February Ron McFadyen18 :Register :SalesLineItem makeLineItem(qty) create(qty) :Sale We assign the responsibility of creating a SalesLineItem to Sale – Sale will have a method makeLineItem

February Ron McFadyen19 What object in the domain (or application layer) receives requests for work from the UI layer? Controller

February Ron McFadyen20 Basic Principle: Interface objects should not have responsibility for handling system events Assign responsibility to a Controller, an object in the application/domain layer. Choose or invent an object in the application layer for this. Controller: a non-user interface object responsible for receiving or handling a system event. In the Process Sale Use Case, there are several system events: makeNewSale, enterItem, endSale, makePayment

February Ron McFadyen21 makeNewSale enterItem endSale makePayment Part of Figure 9.1 System Operations

February Ron McFadyen22 In general there are two candidates: –An object whose name reflects the use case. e.g. ProcessSaleHandler –An object whose name reflects the overall server, business, or large-scale entity. A kind of “façade” object e.g. Register, Store, Cashier Choose or invent an object in the application layer for this.

February Ron McFadyen23 F Register, Store, Cashier F Register is chosen in the text

February Ron McFadyen24 Figure Allocating System Operations Register has been chosen to handle all system operations Ch 20 shows the code for this If Use Case handlers were chosen

February Ron McFadyen25 public void endSale ( ) { sale.becomeComplete(); } public void enterItem ( String id, int quantity ) { ProductSpecification spec = catalog.getSpecification( id ); sale.makeLineItem( spec, quantity ); } public void makeNewSale ( ) { sale = new Sale(); } public void makePayment (Money cashTendered ) { sale.makePayment( cashTendered ); } System event handling in Register The Controller doesn’t do much … delegates work to other objects … it receives the request & coordinates fulfillment We examine the code just to get an idea of its organization

February Ron McFadyen26 The Controller pattern promotes reuse UI code is not intertwined with system event code UI can be replaced Multiple UIs could be utilized When a legal sequence of operations must occur, state information must be kept … a Controller object is an excellent choice for this information

February Ron McFadyen27 F Every business system should have a controller F A controller is class whose job it is to coordinate the system events F The controller sees to it the messages are sent to the correct objects in the model – it delegates F The reason to have a controller is to separate the business model from the visual logic called a view F This is often called a MVC (Model View Controller) separation

February Ron McFadyen28 F Advantage - is that the changes to the model do not affect the GUI (view) logic F Advantage - is that the changes to the GUI (view) do not affect the model logic – could have multiple GUIs – GUI is replaceable F It provides a buffer between the visual (view) and the business logic (model)

February Ron McFadyen29 Figure desirable coupling of interface layer to domain layer

February Ron McFadyen30 Low Coupling High Cohesion We use the same example, “creating a payment”, for both of these patterns. Both patterns happen to suggest the same collaboration

February Ron McFadyen31 Low Coupling When we need to assign a responsibility to a class, we should do so such that coupling remains low. Coupling: a measure of how strongly one element is connected to, has knowledge of, or relies on other elements. Low coupling: not dependent on too many other elements High coupling results in –classes that are harder to understand in isolation –changes to related classes force local changes –classes that are harder to reuse

February Ron McFadyen32 Low Coupling Example Assume we need to create a Payment instance … what class should do this?

February Ron McFadyen33 Creator pattern suggests Register Figure 16.9 Register creates Payment (Collaboration diagram)

February Ron McFadyen34 An alternative design is given in Figure Which of the two designs, figures 16.9 and 16.10, supports lower coupling?

February Ron McFadyen35 High Cohesion How do we assign responsibilities so that cohesion remains high? Cohesion: a measure of how strongly related and focused the responsibilities of an element are. –Cohesion is a measure of how single purpose the attributes and behavior within a class are –It is better that attributes and behavior in classes be related. A class with highly related responsibilities and which does not do excessive amounts of work has high cohesion

February Ron McFadyen36 High Cohesion Rule of Thumb (ROT): A class with high cohesion has a relatively small number of methods, with highly related functionality, and does not do too much work … it collaborates with others to get work done. Low cohesion results in classes that –are hard to comprehend –hard to reuse – hard to maintain – delicate - constantly affected by change

February Ron McFadyen37 High Cohesion Example Assume we need to create a Payment instance … what class should do this?

February Ron McFadyen38 First solution given in Figure (note this Sequence Diagram represents the same logic as the Collaboration diagram in Figure 16.9)

February Ron McFadyen39 Figure gives a second solution (note this Sequence Diagram represents the same logic as the Collaboration diagram in Figure 16.10) Which solution supports higher cohesion for Register?

February Ron McFadyen40 Note, when considering which class to assign the responsibility of creating a payment, the text arrives at the same solution when applying both principles