16. Models for Program Design | CS 5150 Software Engineering

32
Cornell University Compu1ng and Informa1on Science CS 5150 So(ware Engineering 16. Models for Program Design William Y. Arms

Transcript of 16. Models for Program Design | CS 5150 Software Engineering

CornellUniversity Compu1ngandInforma1onScience

CS5150So(wareEngineering16.ModelsforProgramDesign

WilliamY.Arms

ProgramDesign

Thetaskofprogramdesignistorepresenttheso(warearchitectureinaformthatcanbeimplementedasoneormoreexecutableprograms. Givenasystemarchitecture,theprogramdesignspecifies: • programs,components,packages,classes,classhierarchies,etc. • interfaces,protocols(wherenotpartofthesystemarchitecture) • algorithms,datastructures,securitymechanisms,operaPonal

procedures Iftheprogramdesignisdoneproperly,allsignificantdesigndecisionsshouldbemadebeforeimplementaPon.ImplementaPonshouldfocusontheactualcoding.

UMLModels

UMLmodels(diagramsandspecifica1ons)canbeusedforalmostallaspectsofprogramdesign. • Diagramsgiveageneraloverviewofthedesign,showingtheprincipal

elementsandhowtheyrelatetoeachother. • Specifica1onsprovidesdetailsabouteachelementofthedesign. The

specificaPonshouldhavesufficientdetailthattheycanbeusedtowritecodefrom.

Inheavyweightso(waredevelopmentprocesses,theenPrespecificaPoniscompletedbeforecodingbegins. Inlightweightso(waredevelopmentprocesses,anoutlinespecificaPonismadebeforecoding,butthedetailsarecompletedaspartofthecodingprocess,usinglanguagebasedtoolssuchasJavadocs.

UMLModels

Modelsusedmainlyforrequirements • Usecasediagramshowsasetofusecasesandactors,andtheir

relaPonships. Modelsusedmainlyforsystemsarchitecture •ComponentdiagramshowstheorganizaPonanddependenciesamong

asetofcomponents. •DeploymentdiagramshowstheconfiguraPonofprocessingnodesand

thecomponentsthatliveonthem. Modelsusedmainlyforprogramdesign •Classdiagramshowsasetofclasses,interfaces,andcollaboraPons

withtheirrelaPonships.•Objectdiagramorsequencediagramshowasetofobjectsandtheir

relaPonships.

ClassDiagram

Window origin size open() close() move() display()

name

a&ributes[local,instance,andclass(sta5c)variables]

methods

responsibili5es[op5onaltext]

AclassisadescripPonofasetofobjectsthatsharethesameaZributes,methods,relaPonships,andsemanPcs.

Noteonterminology.ThiscourseusesthetermmethodsfortheoperaPonsthataclasssupports.UMLusesthelessfamiliartermoperaPonsforthispurpose.

The"Hello,World!"Applet

importjava.awt.Graphics; classHelloWorldextendsjava.applet.Applet{ publicvoidpaint(Graphicsg){ g.drawString("Hello,World!",10,20); } }

Examplefrom:BRJ

TheHelloWorldClass

HelloWorld

paint()

class

name

methods

TheHelloWorldClass

HelloWorld

paint()g.drawString("HelloWorld",10,20)

class

name

methods

op5onalannota5on

NotaPon:RelaPonships

Ageneraliza1onisarelaPonshipiswhichobjectsofthespecializedelement(child)aresubsPtutableforobjectsofthegeneralizedelement(parent).

child parent

Arealiza1onisasemanPcrelaPonshipbetweenclassifiers,whereinoneclassifierspecifiesacontractthatanotherclassifierguaranteestocarryout.

AdependencyisasemanPcrelaPonshipbetweentwothingsinwhichachangetoonemayeffectthesemanPcsoftheother.

TheHelloWorldClass

Applet

HelloWorld

paint()Graphics

generaliza5on

dependency

NotethattheAppletandGraphicsclassesareshownelided,i.e.,justthenameisshown,nottheaZributesoroperaPons.

NotaPon:AssociaPon

0..1* employeremployee

Anassocia1onisastructuralrelaPonshipthatdescribesasetoflinks,alinkbeingaconnecPonamongobjects.

AssociaPon

ParkingLot

ParkingSpace

locaPon is_available()

1

1...*

RaPonalRose:ATypicalClassDiagram

SpecificaPonFields

DecidingwhichClassestoUse

Givenareal-lifesystem,howdoyoudecidewhatclassestouse? Step1.IdenPfyasetofcandidateclassesthatrepresentthesystemdesign. •Whattermsdotheusersandimplementersusetodescribethesystem?

Thesetermsarecandidatesforclasses. •Iseachcandidateclasscrisplydefined? •Foreachclass,whatisitssetofresponsibiliPes?AretheresponsibiliPes

evenlybalancedamongtheclasses? •WhataZributesandmethodsdoeseachclassneedtocarryoutits

responsibiliPes?

DecidingwhichClassestoUse

Step2.Modifythesetofclasses Goals: • Improvetheclarityofthedesign Ifthepurposeofeachclassisclear,witheasilyunderstoodmethods

andrelaPonships,developersarelikelytowritesimplecode,whichfuturemaintainerscanunderstandandmodify.

• Increasecoherencewithinclasses,andlowercouplingbetweenclasses. Aimforhighcohesionwithinclassesandweakcouplingbetweenthem.

ApplicaPonClassesandSoluPonClasses

Agooddesigniso(enacombinaPonofapplicaPonclassesandsoluPonclasses. • Applica1onclassesrepresentapplicaPonconcepts. NounidenPficaPonisaneffecPvetechniquetogeneratecandidate

applicaPonclasses. • Solu1onclassesrepresentsystemconcepts,e.g.,userinterface

objects,databases,etc.

NounIdenPficaPon:aLibraryExample

Thelibrarycontainsbooksandjournals.Itmayhaveseveralcopiesofa

givenbook.Someofthebooksarereservedforshort-termloansonly.All

othersmaybeborrowedbyanylibrarymemberforthreeweeks.

Membersofthelibrarycannormallyborrowuptosixitemsata5me,but

membersofstaffmayborrowupto12itemsatone5me.Onlymembers

ofstaffmayborrowjournals.

Thesystemmustkeeptrackofwhenbooksandjournalsareborrowed

andreturned,andenforcetherules.

NounIdenPficaPon:aLibraryExample

Thelibrarycontainsbooksandjournals.Itmayhaveseveralcopiesofa

givenbook.Someofthebooksarereservedforshort-termloansonly.All

othersmaybeborrowedbyanylibrarymemberforthreeweeks.

Membersofthelibrarycannormallyborrowuptosixitemsata5me,but

membersofstaffmayborrowupto12itemsatone5me.Onlymembers

ofstaffmayborrowjournals.

Thesystemmustkeeptrackofwhenbooksandjournalsareborrowed

andreturned,andenforcetherules.

CandidateClasses

Noun Comments Candidate Library thenameofthesystem no Book yes Journal yes Copy yes ShortTermLoan event no(?) LibraryMember yes Week measure no MemberOfLibrary repeatofLibraryMember no Item bookorjournal yes(?) Time abstractterm no MemberOfStaff yes System generalterm no Rule generalterm no

RelaPonsbetweenClasses

Book isan Item Journal isan Item Copy isacopyofa Book LibraryMember Item MemberOfStaff isa LibraryMember

IsItemneeded?

Methods

LibraryMember borrows Copy LibraryMember returns Copy MemberOfStaff borrows Journal MemberOfStaff returns Journal

Itemnotneededyet.

APossibleClassDiagram

MemberOfStaff

BookJournalisacopyof1..*1

LibraryMember

1

0..*0..12

1

onloanonloan

Copy

FromCandidateClassestoCompletedDesign

Methodsusedtomovetofinaldesign Reuse:WhereverpossibleuseexisPngcomponents,orclasslibraries.Theymayneedextensions.

Restructuring:Changethedesigntoimproveunderstandability,maintainability,etc.Techniquesincludemergingsimilarclasses,splijngcomplexclasses,etc.

OpPmizaPon:EnsurethatthesystemmeetsanPcipatedperformancerequirements,e.g.,bychangedalgorithmsorrestructuring.

ComplePon:Fillallgaps,specifyinterfaces,etc. DesignisiteraPve AstheprocessmovesfrompreliminarydesigntospecificaPon,implementaPon,andtesPngitiscommontofindweaknessesintheprogramdesign.BepreparedtomakemajormodificaPons.

ModelingDynamicAspectsofSystems

Interac1ondiagram:showssetofobjectsandtheirrelaPonshipsincludingmessagesthatmaybedispatchedamongthem. •Sequencediagrams:Pmeorderingofmessages

InteracPon:InformalBouncingBallDiagrams

Example:execuPonofanHTTPgetcommand,e.g.,hZp://www.cs.cornell.edu/

ClientServers

domainnameservice

TCPconnecPon

HTTPget

UMLNotaPonforClassesandObjects

Classes Objects

AnyClass aZribute1 aZribute2 method1() method2()

AnyClass

or

anObject:AnyClass

:AnyClass

anObject

Thenamesofobjectsareunderlined.

or

or

NotaPon:InteracPon

display

Aninterac1onisabehaviorthatcomprisesasetofmessagesexchangedamongasetofobjectswithinaparPcularcontexttoaccomplishaspecificpurpose.

AcPonsonObjects

call

return

send

createobject

destroyobject

returnCopy(c)

okToBorrow() local

status

noPfyReturn(b) asynchronoussignal

<<create>>

<<destroy>>stereotypes

SequenceDiagram:BorrowCopyofaBook

BookBorrower

libMem:LibraryMember

theCopy:Copy

theBook:Book

borrow(theCopy)okToBorrow

borrowborrow

Inasequencediagram,5merunsdownwards

SequenceDiagram:ChangeinCornellProgram

Cornellian

:MEngStudent

1:getName()

sequencenumbersaddedtomessages

:PhDStudent

1.1:name

2:<<create>>PhDStudent(name)

3:<<destroy>>

SequenceDiagram:PainPngMechanism

:Thread :Toolkit :ComponentPeer target:HelloWorld

runrun callbackLoop

handleExpose

paint