Principles of Software Construction: Objects, Design, and...

25
1 17-214 Principles of Software Construction: Objects, Design, and Concurrency Part 2: Designing (sub-)systems A formal design process: Responsibility assignment Charlie Garrod Chris Timperley

Transcript of Principles of Software Construction: Objects, Design, and...

1 17-214

PrinciplesofSoftwareConstruction: Objects,Design,andConcurrencyPart2:Designing(sub-)systemsAformaldesignprocess:ResponsibilityassignmentCharlieGarrodChrisTimperley

2 17-214

Administrivia

•  Requiredreadingduetoday–  UMLandPatternsChapters14,15,and16

•  MidtermexamThursday–  Examreviewsession:Wednesday7-9pm,MMA14

•  Homework4–  Threeparts,partAduenextThursday,October3rd–  Designreviewmeetingsnextweek

https://commons.wikimedia.org/wiki/File:1_carcassonne_aerial_2016.jpg

3 17-214

KeyconceptsfromlastThursday

4 17-214

Sequencediagramstovisualizedynamicbehavior

5 17-214

Anobject-orienteddesignprocess

•  Model/diagramtheproblem,defineobjects–  Domainmodel(a.k.a.conceptualmodel)

•  Definesystembehaviors–  Systemsequencediagram–  Systembehavioralcontracts

•  Assignobjectresponsibilities,defineinteractions–  Objectinteractiondiagrams

•  Model/diagramapotentialsolution–  Objectmodel

LastThursday:Understandingtheproblem

Today:Definingasolution

6 17-214

Object-orientedprogramming

•  Programmingbasedonstructuresthatcontainbothdataandmethods

publicclassBicycle{privateintspeed;privatefinalWheelfrontWheel,rearWheel;privatefinalSeatseat;…publicBicycle(…){…}publicvoidaccelerate(){speed++;}publicintspeed(){returnspeed;}}

7 17-214

Responsibilityinobject-orientedprogramming

•  Data:–  Privateorotherwiseencapsulateddata–  Dataincloselyrelatedobjects

•  Methods:–  Privateorotherwiseencapsulatedoperations–  Objectcreation,ofitselforotherobjects–  Initiatingactionsinotherobjects–  Coordinatingactivitiesamongobjects

8 17-214

Usinginteractiondiagramstoassignobjectresponsibility

•  Foragivensystem-leveloperation,createanobjectinteractiondiagramattheimplementation-levelofabstraction–  Implementation-levelconcepts:

•  Implementation-likemethodnames•  Programmingtypes•  Helpermethodsorclasses•  Artifactsofdesignpatterns

9 17-214

Exampleinteractiondiagram#1

Usecasescenario:Alibrarymembershouldbeabletouseherlibrarycardtologinatalibrarysystemkioskand…

10 17-214

Exampleinteractiondiagram#2

Usecasescenario:…andborrowabook.Afterconfirmingthatthememberhasnounpaidlatefees,thelibrarysystemshoulddeterminethebook’sduedatebyaddingitsloanperiodtothecurrentday,andrecordthebookanditsduedateasaborrowediteminthemember’slibraryaccount.

11 17-214

Interactiondiagramshelpevaluatedesignalternatives

•  Explicitlyconsiderdesignalternatives•  Foreach,sketchtheinteractionsimpliedbythedesignchoice

–  Interactionscorrespondtothecomponents'APIs

12 17-214

Interactiondiagramshelpevaluatedesignalternatives

•  Explicitlyconsiderdesignalternatives•  Foreach,sketchtheinteractionsimpliedbythedesignchoice

–  Interactionscorrespondtothecomponents'APIs

•  Supposewerequirepuzzlesolvers(notjustsolutionverifiers)inHomework3.Whichobjectshouldhavetheresponsibilitytosolveasudokupuzzle?–  Theclassrepresentingthesudokupuzzle?–  Anotherclass?

Sketchaninteractiondiagramforeachalternative,forsolvingasudokupuzzleinstance.

13 17-214

Heuristicsforresponsibilityassignment

•  Controllerheuristic•  Informationexpertheuristic•  Creatorheuristic

Goals

Heuristics Patterns

Principles

14 17-214

Thecontrollerheuristic

•  Assignresponsibilityforallsystem-levelbehaviorstoasinglesystem-levelobjectthatcoordinatesanddelegatesworktootherobjects–  Alsoconsiderspecificsub-controllersforcomplexuse-casescenarios

•  Designprocess:Extractinterfacefromsystemsequencediagrams–  Keyprinciples:Lowrepresentationalgapandhighcohesion

15 17-214

Informationexpertheuristic

•  Assignresponsibilitytotheclassthathastheinformationneededtofulfilltheresponsibility–  Initialization,transformation,andviewsofprivatedata–  Creationofcloselyrelatedorderivedobjects

16 17-214

Responsibilityinobject-orientedprogramming

•  Data:–  Privateorotherwiseencapsulateddata–  Dataincloselyrelatedobjects

•  Methods:–  Privateorotherwiseencapsulatedoperations–  Objectcreation,ofitselforotherobjects–  Initiatingactionsinotherobjects–  Coordinatingactivitiesamongobjects

17 17-214

Informationexpertheuristic

•  Assignresponsibilitytotheclassthathastheinformationneededtofulfilltheresponsibility–  Initialization,transformation,andviewsofprivatedata–  Creationofcloselyrelatedorderivedobjects

•  Designprocess:Assignmentfromdomainmodel–  Keyprinciples:Lowrepresentationalgapandlowcoupling

18 17-214

Creatorheuristic:WhocreatesanobjectFoo?

•  AssignresponsibilityofcreatinganobjectFootoaclassthat:–  HasthedatanecessaryforinitializinginstancesofFoo–  Contains,aggregates,orrecordsinstancesofFoo–  CloselyusesormanipulatesinstancesofFoo

•  Designprocess:Extractfromdomainmodel,interactiondiagrams–  Keyprinciples:Lowcouplingandlowrepresentationalgap

19 17-214

Usethecreatorheuristic

•  InHomework3,whatobjectshouldhavetheresponsibilityforcreatingasudokuboard,parsingfromafile?

20 17-214

Thereexistmanyheuristics

•  Minimizemutability•  Minimizeconceptualweight•  Favorcomposition/delegationoverinheritance•  Useindirectiontoreducecoupling•  …

21 17-214

Object-levelartifactsofthisdesignprocess

•  Objectinteractiondiagramsaddmethodstoobjects–  Caninferadditionaldataresponsibilities–  Caninferadditionaldatatypesandarchitecturalpatterns

•  Objectmodelaggregatesimportantdesigndecisions–  Isanimplementationguide

22 17-214

Creatinganobjectmodel

•  Extractdata,methodnames,andtypesfrominteractiondiagrams–  Includeimplementationdetailssuchasvisibilities

23 17-214

24 17-214

Createanobjectmodelforsudokuwithpuzzlesolvers?

25 17-214

Summary:

•  Object-levelinteractiondiagramsandobjectmodelsystematicallyguidethedesignprocess–  Convertdomainmodel,systemsequencediagram,andcontractsto

object-levelresponsibilities

•  Useheuristicstoguide,butnotdefine,designdecisions•  Iterate,iterate,iterate…