Josh Bloch Charlie Garrod - Carnegie Mellon School of...

45
1 15-214 School of Computer Science Principles of So3ware Construc9on: Objects, Design, and Concurrency Designing (sub-) systems A formal design process, part 2 Josh Bloch Charlie Garrod

Transcript of Josh Bloch Charlie Garrod - Carnegie Mellon School of...

Page 1: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

1 15-214

SchoolofComputerScience

PrinciplesofSo3wareConstruc9on: Objects,Design,andConcurrencyDesigning(sub-)systemsAformaldesignprocess,part2JoshBloch CharlieGarrod

Page 2: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

2 15-214

Administrivia

•  MidtermexamThursday–  ReviewsessionWednesday,September28th,7-9pm,HHB103

•  Homework4–  Threeparts,partAdueOct6th–  Designreviewmee9ngsnextweek

•  Collabora9onpolicy…

Page 3: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

3 15-214

KeyconceptsfromlastThursday…

Page 4: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

4 15-214

Sequenceandcommunica9ondiagrams

Page 5: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

5 15-214

Designprinciples

•  Lowcoupling•  Lowrepresenta9onalgap•  Highcohesion

Page 6: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

6 15-214

Buildingadomainmodelforalibrarysystem

Apubliclibrarytypicallystoresacollec9onofbooks,movies,orotherlibraryitemsavailabletobeborrowedbypeoplelivinginacommunity.Eachlibrarymembertypicallyhasalibraryaccountandalibrarycardwiththeaccount’sIDnumber,whichshecanusetoiden9fyherselftothelibrary.Amember’slibraryaccountrecordswhichitemsthememberhasborrowedandtheduedateforeachborroweditem.Eachtypeofitemhasadefaultrentalperiod,whichdeterminestheitem’sduedatewhentheitemisborrowed.Ifamemberreturnsanitema3ertheitem’sduedate,thememberowesalatefeespecificforthatitem,anamountofmoneyrecordedinthemember’slibraryaccount.

Page 7: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

7 15-214

Onedomainmodelforthelibrarysystem

Page 8: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

8 15-214

Notesonthelibrarydomainmodel

•  Allconceptsareaccessibletoanon-programmer•  TheUMLissomewhatinformal

–  Rela9onshipsareo3endescribedwithwords•  Real-world"is-a"rela9onshipsareappropriateforadomainmodel•  Real-wordabstrac9onsareappropriateforadomainmodel•  Itera9onisimportant

–  Thisexampleisafirstdra3.Someterms(e.g.Itemvs.LibraryItem,Accountvs.LibraryAccount)wouldlikelyberevisedinarealdesign.

•  Aggregatetypesareusuallymodeledasclasses•  Primi9vetypes(numbers,strings)areusuallymodeledasadributes

Page 9: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

9 15-214

BuildadomainmodelforMonopoly

Page 10: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

10 15-214

BuildadomainmodelforMonopoly

Monopolyisagameinwhicheachplayerhasapiecethatmovesaroundagameboard,withthepiece’schangeinloca9ondeterminedbyrollingapairofdice.Thegameboardconsistsofasetofproper9es(ini9allyownedbyabank)thatmaybepurchasedbytheplayers.Whenapiecelandsonapropertythatisnotowned,theplayermayusemoneytobuythepropertyfromthebankforthatproperty’sprice.Ifaplayerlandsonapropertyshealreadyowns,shemaybuildhousesandhotelsontheproperty;eachhouseandhotelcostssomepricespecificfortheproperty.Whenaplayer’spiecelandsonapropertyownedbyanotherplayer,theownercollectsmoney(rent)fromtheplayerwhosepiecelandedontheproperty;therentdependsonthenumberofhousesandhotelsbuiltontheproperty.Thegameisplayedun9lonlyoneremainingplayerhasmoneyandproperty,withalltheotherplayersbeingbankrupt.

Page 11: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

11 15-214

Ar9factsofthisdesignprocess

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

•  Definesystembehaviors–  Systemsequencediagram–  Systembehavioralcontracts

•  Assignobjectresponsibili9es,defineinterac9ons–  Objectinterac9ondiagrams

•  Model/diagramapoten9alsolu9on–  Objectmodel

Understandingtheproblem

Definingasolu9on

Page 12: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

12 15-214

Ar9factsofthisdesignprocess

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

•  Definesystembehaviors–  Systemsequencediagram–  Systembehavioralcontracts

•  Assignobjectresponsibili9es,defineinterac9ons–  Objectinterac9ondiagrams

•  Model/diagramapoten9alsolu9on–  Objectmodel

Today

Page 13: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

13 15-214

Understandingsystembehaviorwithsequencediagrams

•  Asystemsequencediagramisamodelthatshows,foronescenarioofuse,thesequenceofeventsthatoccuronthesystem’sboundary

•  Designgoal:Iden9fyanddefinetheinterfaceofthesystem–  Twocomponents:Auserandtheoverallsystem

Page 14: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

14 15-214

Understandingsystembehaviorwithsequencediagrams

•  Asystemsequencediagramisamodelthatshows,foronescenarioofuse,thesequenceofeventsthatoccuronthesystem’sboundary

•  Designgoal:Iden9fyanddefinetheinterfaceofthesystem–  Twocomponents:Auserandtheoverallsystem

•  Input:Domaindescrip9onandoneusecase•  Output:Asequencediagramofsystem-levelopera9ons

–  Includeonlydomain-levelconceptsandopera9ons

Page 15: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

15 15-214

Onesequencediagramforthelibrarysystem

Usecasescenario:Alibrarymembershouldbeabletouseherlibrarycardtologinatalibrarysystemkioskandborrowabook.A3erconfirmingthatthememberhasnounpaidlatefees,thelibrarysystemshoulddeterminethebook’sduedatebyaddingitsloanperiodtothecurrentday,andrecordthebookanditsduedateasaborrowediteminthemember’slibraryaccount.

Page 16: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

16 15-214

Onesequencediagramforthelibrarysystem

Usecasescenario:Alibrarymembershouldbeabletouseherlibrarycardtologinatalibrarysystemkioskandborrowabook.A3erconfirmingthatthememberhasnounpaidlatefees,thelibrarysystemshoulddeterminethebook’sduedatebyaddingitsloanperiodtothecurrentday,andrecordthebookanditsduedateasaborrowediteminthemember’slibraryaccount.

Page 17: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

17 15-214

BuildonesystemsequencediagramforMonopoly

Usecasescenario:Whenaplayerlandsonanunownedpropertyandhasenoughmoneytobuytheproperty,sheshouldbeabletobuythepropertyfortheproperty’sprice.Thepropertyshouldnolongerbepurchasablefromthebankbyotherplayers,andmoneyshouldbemovedfromtheplayertothebank.

Page 18: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

18 15-214

Formalizesystembehaviorwithbehavioralcontracts

•  Asystembehavioralcontractdescribesthepre-condi9onsandpost-condi9onsforsomeopera9oniden9fiedinthesystemsequencediagrams–  System-leveltextualspecifica9ons,likeso3warespecifica9ons

Page 19: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

19 15-214

Asystembehavioralcontractforthelibrarysystem

Opera9on: borrow(item)Pre-condi9ons: Librarymemberhasalreadyloggedintothesystem.

Itemisnotcurrentlyborrowedbyanothermember.Post-condi9ons: Logged-inmember'saccountrecordsthenewly-borrowed

item,orthememberiswarnedshehasanoutstandinglatefee. Thenewly-borroweditemcontainsafutureduedate, computedastheitem'srentalperiodplusthecurrentdate.

Page 20: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

20 15-214

Dis9nguishingdomainvs.implementa9onconcepts

Page 21: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

21 15-214

Dis9nguishingdomainvs.implementa9onconcepts

•  Domain-levelconcepts:–  Almostanythingwithareal-worldanalogue

•  Implementa9on-levelconcepts:–  Implementa9on-likemethodnames–  Programmingtypes–  Visibilitymodifiers–  Helpermethodsorclasses–  Ar9factsofdesignpaderns

Page 22: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

22 15-214

Summary:Understandingtheproblemdomain

•  Knowyourtoolstobuilddomain-levelrepresenta9ons–  Domainmodels–  Systemsequencediagrams–  Systembehavioralcontracts

•  Befastand(some9mes)loose–  Elideobvious(?)details–  Iterate,iterate,iterate,…

•  Getfeedbackfromdomainexperts–  Useonlydomain-levelconcepts

Page 23: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

23 15-214

Drawadomainmodelforcryptarithmsolving

Page 24: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

24 15-214

Ar9factsofourdesignprocess

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

•  Definesystembehaviors–  Systemsequencediagram–  Systembehavioralcontracts

•  Assignobjectresponsibili9es,defineinterac9ons–  Objectinterac9ondiagrams

•  Model/diagramapoten9alsolu9on–  Objectmodel

Understandingtheproblem

Definingasolu9on

Page 25: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

25 15-214

Object-orientedprogramming

•  Programmingbasedonstructuresthatcontainbothdataandmethods

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

Page 26: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

26 15-214

Responsibilityinobject-orientedprogramming

•  Data:–  Privateorotherwiseencapsulateddata–  Dataincloselyrelatedobjects

•  Methods:–  Privateorotherwiseencapsulatedopera9ons–  Objectcrea9on,ofitselforotherobjects–  Ini9a9ngac9onsinotherobjects–  Coordina9ngac9vi9esamongobjects

Page 27: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

27 15-214

Usinginterac9ondiagramstoassignobjectresponsibility

•  Foragivensystem-levelopera9on,createanobjectinterac9ondiagramattheimplementa6on-levelofabstrac9on–  Implementa9on-levelconcepts:

•  Implementa9on-likemethodnames•  Programmingtypes•  Helpermethodsorclasses•  Ar9factsofdesignpaderns

Page 28: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

28 15-214

Exampleinterac9ondiagram#1

Usecasescenario:Alibrarymembershouldbeabletouseherlibrarycardtologinatalibrarysystemkioskand…

Page 29: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

29 15-214

Exampleinterac9ondiagram#2

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

Page 30: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

30 15-214

Interac9ondiagramshelpevaluatedesignalterna9ves

Createtwopossibleinterac9ondiagrams:1.  Solvingacryptarithm,assumingthatthecryptarithmclasshas

responsibilityforsolvingitself2.  Solvingacryptarithm,assumingthatthemainmethod(oradelegated

methodorclass)hasresponsibilityforsolvingthecryptarithm

Page 31: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

31 15-214

Heuris9csforresponsibilityassignment

•  Controllerheuris9c•  Informa9onexpertheuris9c•  Creatorheuris9c

Goals

Heuristics Patterns

Principles

Page 32: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

32 15-214

Thecontrollerheuris9c

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

•  Designprocess:Extractinterfacefromsystemsequencediagrams–  Keyprinciples:Lowrepresenta9onalgapandhighcohesion

Page 33: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

33 15-214

Informa9onexpertheuris9c

•  Assignresponsibilitytotheclassthathastheinforma9onneededtofulfilltheresponsibility–  Ini9aliza9on,transforma9on,andviewsofprivatedata–  Crea9onofcloselyrelatedorderivedobjects

Page 34: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

34 15-214

Responsibilityinobject-orientedprogramming

•  Data:–  Privateorotherwiseencapsulateddata–  Dataincloselyrelatedobjects

•  Methods:–  Privateorotherwiseencapsulatedopera9ons–  Objectcrea9on,ofitselforotherobjects–  Ini9a9ngac9onsinotherobjects–  Coordina9ngac9vi9esamongobjects

Page 35: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

35 15-214

Informa9onexpertheuris9c

•  Assignresponsibilitytotheclassthathastheinforma9onneededtofulfilltheresponsibility–  Ini9aliza9on,transforma9on,andviewsofprivatedata–  Crea9onofcloselyrelatedorderivedobjects

•  Designprocess:Assignmentfromdomainmodel–  Keyprinciples:Lowrepresenta9onalgapandlowcoupling

Page 36: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

36 15-214

Usetheinforma9onexpertheuris9c

•  InHomework3,whatobjectshouldhavetheresponsibilitytosolveacryptarithm?

•  Whatistherelevantinforma9on?

Page 37: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

37 15-214

Usetheinforma9onexpertheuris9c

•  InHomework3,whatobjectshouldhavetheresponsibilitytosolveacryptarithm?

•  Whatistherelevantinforma9on?–  Whoknowsthe#ofdigits(e.g.base10)inthecryptarithm?–  Whoknowstheledersofthecryptarithm?–  Whocanevaluatethecryptarithmexpressionstocheckforequality?

Page 38: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

38 15-214

Anotherdesignprinciple:Minimizeconceptualweight

•  Labeltheconceptsforaproposedobject–  Relatedtorepresenta9onalgapandcohesion

Page 39: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

39 15-214

Creatorheuris9c:WhocreatesanobjectFoo?

•  Assignresponsibilityofcrea9nganobjectFootoaclassthat:–  Hasthedatanecessaryforini9alizinginstancesofFoo–  Contains,aggregates,orrecordsinstancesofFoo–  CloselyusesormanipulatesinstancesofFoo

•  Designprocess:Extractfromdomainmodel,interac9ondiagrams–  Keyprinciples:Lowcouplingandlowrepresenta9onalgap

Page 40: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

40 15-214

Usethecreatorheuris9c

•  InHomework3,whatobjectshouldhavetheresponsibilityforcrea9ngthepermuta9ongenerator?

Page 41: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

41 15-214

Object-levelar9factsofthisdesignprocess

•  Objectinterac9ondiagramsaddmethodstoobjects–  Caninferaddi9onaldataresponsibili9es–  Caninferaddi9onaldatatypesandarchitecturalpaderns

•  Objectmodelaggregatesimportantdesigndecisions–  Isanimplementa9onguide

Page 42: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

42 15-214

Crea9nganobjectmodel

•  Extractdata,methodnames,andtypesfrominterac9ondiagrams–  Includeimplementa9ondetailssuchasvisibili9es

Page 43: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

43 15-214

Page 44: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

44 15-214

Createanobjectmodelforyourcryptarithmsolver

Page 45: Josh Bloch Charlie Garrod - Carnegie Mellon School of ...charlie/courses/15-214/2016-fall/slides/09... · Josh Bloch Charlie Garrod 15-214 2 Administrivia • Midterm exam Thursday

45 15-214

Summary:

•  Object-levelinterac9ondiagramsandobjectmodelsystema9callyguidethedesignprocess–  Convertdomainmodel,systemsequencediagram,andcontractsto

object-levelresponsibili9es

•  Useheuris9cstoguide,butnotdefine,designdecisions•  Iterate,iterate,iterate…