16. Models for Program Design | CS 5150 Software Engineering
-
Upload
khangminh22 -
Category
Documents
-
view
4 -
download
0
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()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.
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>>