UML-Light (Slides PDF format) - Ingeniørhøjskolen i Århus

staff.iha.dk

UML-Light (Slides PDF format) - Ingeniørhøjskolen i Århus

Introduktion til UMLUML (Unified Modeling Language) er en OMGstandard defineret i 1997– Seneste version er UML 1.4 – UML 2.0 er på vej.• OMG (Object Management Group) er ensammenslutning af ca. 800 firmaer (www.omg.org)• UML beskriver en standardnotation forobjektorienteret udvikling• UML beskriver ikke en udviklingsproces ellerudviklingsmetodeSlide 3 af 51© Ingeniørhøjskolen i ÅrhusUML-Light, -++ og UMLUMLUML-Light++UML-LightSlide 4 af 51© Ingeniørhøjskolen i Århus


Oversigt over de tre første semestreObjektbaseretProgrammeringObjektorienteretProgrammeringObjektorienteretanalyse & designPRG1I-PRG2I-PRG3SemesterprojektPRJ1UML-LightSemesterprojektI-PRJ2UML-Light++SemesterprojektI-PRJ3OOA+OODUMLSlide 5 af 51© Ingeniørhøjskolen i ÅrhusObjektbaseret og Objektorienteret udvikling• Objektbaseret udvikling (UML-Light)– Baserer sig på Information Hiding ogindkapslingsprincippet– Anvender klasser og objekter ved modelleringen– Kan implementeres i et ikke objektorienteretprogrammeringssprog som f.eks. C og assembler• Objektorienteret udvikling (UML-Light++,UML)– Tilføjer begreber som generalisering/specialisering(nedarvning) og polymorfi (virtuelle operationer i C++)– Anvender Use Case teknikken ved kravspecifikation– Kræver et objektorienteret programmeringssprog vedkodningen som f.eks. C++, Java eller C#Slide 6 af 51© Ingeniørhøjskolen i Århus


IndkapslingsprincippetInformation Hiding – David Parnas – 1972.Eksempler på indkapslingSlide 9 af 51© Ingeniørhøjskolen i ÅrhusNotation for en klasse (1)Navn (navneord ental)KlasseAattributA1attributA2operationA1()operationA2()operationA3()operationA4()Klassens attributter(data)Klassens operationer(funktioner, procedurer)Figur 2Slide 10 af 51© Ingeniørhøjskolen i Århus


UML Notation for objekterKlasseObjekterBil-hastighed-gear-omdrejningstal-motorstørrelse+start()+stop()+udkoble()+skiftGear()+kør()+brems()veteranbil:Biljaguar:BilTypenInstanserneFigur 5Slide 13 af 51© Ingeniørhøjskolen i ÅrhusKlasse og C++ kodeUMLBil-hastighed-gear-omdrejningstal-motorstørrelse+start()+stop()+udkoble()+skiftGear()+kør()+brems()SpecifikationBil.hclass Bil{public:void start();void stop();void udkoble();void skiftGear();void koer();void brems();private:long hastighed;unsigned char gear;float omdrejningstal;int motorstoerrelse;}Slide 14 af 51void Bil::start(){// kode for start// operation}// etc.Bil.cppImplementering© Ingeniørhøjskolen i Århus


Komplet specifikation af en klasseDatatype for attributter-attributC1: datatypeKlasseC+operationC1(param1: type1, param2: type1): returtypeParameternavnParametertypeOperationensreturtypeFigur 6Slide 15 af 51© Ingeniørhøjskolen i ÅrhusNotation for en noteDette er en UMLnote - her kanman skrive kommentarertil et diagram eller f.eks. tilen klasseKlasseB-attributB2-attributB1Noten her forklarernoget om KlasseB+operationB1()+operationB2()+operationB3()Figur 8,9Slide 16 af 51© Ingeniørhøjskolen i Århus


Notation for klassediagramStereotypeHovedprogrammain()AssociationerKlasseA1 1 attributA1attributA2operationA1()operationA2()1KlasseBattributB1operationB1()operationB2()operationB3()associations navn11Multiplicitet1 KlasseCoperationC1()Figur 10Slide 17 af 51© Ingeniørhøjskolen i ÅrhusAssocitationsbegrebetBil-hastighed-gear-omdrejningstal-motorstørrelse+start()+stop()+udkoble()+skiftGear()+kør()+brems()styrer1 1MotorTillader at objekter afdisse klasser kommunikererjaguar:Bilv8:MotorstartstartSlide 18 af 51© Ingeniørhøjskolen i Århus


Notation for aktivitetsdiagram (1)AktivitesdiagramViser sekvenser og enudvælgelse (if-else)aktivitet 1Betingelse[logical expression == true][logical expression == false]Aktivitetaktivitet 2aktivitet 3Valgaktivitet 4Figur 13Slide 21 af 51© Ingeniørhøjskolen i ÅrhusNotation for aktivitetsdiagram (2)Aktivitetsdiagramfor en iteration(for eller while løkke)Initier løkkevariabel[løkke betingelse == true]udfør løkkeaktivitet 1Optæl løkkevariabel[løkke betingelse == false]aktivitet 2Figur 14Slide 22 af 51© Ingeniørhøjskolen i Århus


Notation for deploymentdiagramStereotype«node type»UMLNode 1«kommunikationstype»«node type»UMLNode 2Figur 15Slide 23 af 51© Ingeniørhøjskolen i ÅrhusDeploymentdiagram eksempel«microcontroller»H8«RS232»«device»UserKeyPadRS232ConnectorUARTFoliekeypadKeypadControllerFigur 16Slide 24 af 51© Ingeniørhøjskolen i Århus


UML-Light oversigtsdiagramDeploymentdiagram«processor»Node«kommunikation»«Hardware»NodeHW BlokdiagramclassAclassBState ATilstandsdiagramHW RHW SKlassediagramclassCopX():classA :classB :classCopX()SekvensdiagramFigur 18State BAktivitetsdiagramSlide 25 af 51:HW RyxHW TTilstandsdiagram:HW TzSekvensdiagramState T1State T2© Ingeniørhøjskolen i ÅrhusDe fire primære UML diagramtyperKravspecifikationmed Use CasesOOanalyseArkitekturdesignMekanistiskdesignDetaljeretdesignTranslationUse CasediagrammerUML-Light++KlassediagrammerSekvensdiagrammerTilstandsdiagrammerKodefilerf.eks.C++/Javaeller CUML baseret model af systemetSlide 26 af 51© Ingeniørhøjskolen i Århus


Envejs 1-1 associationKlasseA+operationA1()1 1KlasseB+operationB1()class KlasseA{public:KlasseA(KlasseB* pB); // Constructorvoid operationA1();private:KlasseB* pKlasseB; // implementerer associationen}Association implementeret vha. en pointerFigur 20Slide 29 af 51© Ingeniørhøjskolen i ÅrhusImplementering af envejs associationKlasseA::KlasseA(KlasseB* pB) // constructor operationer{pKlasseB= pB;// her indsættes den øvrige initaliseringskode// for klassens øvrige attributter}Som et eksempel på hvordan objekter af KlasseA og KlasseB oprettes oginitialiseres, vises her et simpelt main program.int main(){KlasseB objektAfKlasseB;KlasseA objektAfKlasseA(&objektAfKlasseB);// nu har vi dannet forbindelsen således at én af// operationerne i KlasseA objektet kan kalde// operationB1() i det KlasseB objekt vi har oprettetobjektAfKlasseA.operationA1();return (0);}Slide 30 af 51© Ingeniørhøjskolen i Århus


Tovejs 1-1 associationKlasseA1 1KlasseBKlasseA defineres som før.class KlasseB{public:KlasseB(); // ConstructorinitAssociation(KlasseA* pA);private:KlasseA* pKlasseA; // implementerer associationen}Figur 21Slide 31 af 51© Ingeniørhøjskolen i ÅrhusImplementering af tovejs associationKlasseA constructoren kommer til at se ud påfølgende måde:KlasseA::KlasseA(KlasseB* pB){pKlasseB= pB;pKlasseB->initAssociation(this);}int main(){KlasseB objektAfKlasseB; // NB! Skal oprettes førstKlasseA objektAfKlasseA(&objektAfKlasseB);objektAfKlasseA.operationA1();objektAfKlasseB.operationB2();return (0);}Slide 32 af 51© Ingeniørhøjskolen i Århus


Eksempel 1 – Et simpel minuturUML-Light MinutUrStart17:23StopResetMinutur der viser minutter og sekunder.Reset knappen nulstiller uret, hvis uret er stoppet.Start knappen starter uret, der optæller tiden ogviser denne i minutter og sekunder.Stop knappen stopper uret.Figur 22Slide 33 af 51© Ingeniørhøjskolen i ÅrhusKlassediagram for minutur«utility»HovedprogramstyrerUrvises påDisplaybenytterpollerpollerTimerKnapPanelSlide 34 af 51© Ingeniørhøjskolen i Århus


Tilstandsdiagram for klassen UrHændelser:resetstartstoptimeoutknaptrykreset/nulstil()Stoppet/nulstil()start/timerObj.start(1000)stop/timerObj.stop()StartetFigur 24timeout/timerObj.Start(1000),taelOp(),displayObj.vis(min,sec)Slide 35 af 51© Ingeniørhøjskolen i ÅrhusSekvensdiagram – start scenario:Hovedprogram :KnapPanel urObj:Ur timerObj:TimercheckForTast()true/nulstil()StoppetlaesTast()startstart()start(1000)start/timerObj.start(1000)StartetFigur 25Slide 36 af 51© Ingeniørhøjskolen i Århus


Sekvensdiagram – timeout scenario:Hovedprogram :KnapPanel urObj:Ur timerObj:TimerdisplayObj:DisplaycheckForTimeout()truetimeout()start(1000)taelOp()vis(min,sec)Slide 37 af 51© Ingeniørhøjskolen i ÅrhusSekvensdiagram for minutur:Hovedprogram :KnapPanel urObj:Ur timerObj:Timer displayObj:DisplaycheckForTast()laesTast()start()start(1000)checkForTimeout()timeout()start(1000)taelOp()vis(min,sec)Figur 25Slide 38 af 51© Ingeniørhøjskolen i Århus


Hovedprogrammain(): intpoller11pollerKlassediagram for minutur1styrer1Ur-minutter: int-sekunder: int+start(): void+stop(): void+reset(): void+timeout(): void-nulstil(): void-taelOp(): void1vises på1Display+vis(min: int, sec: int):void1KnapPanel+checkForTast(): Boolean+laesTast(): int111beny tterTimer+checkForTimeout(): Boolean+start(tid: int): void+stop(): voidFigur 23Slide 39 af 51© Ingeniørhøjskolen i ÅrhusCASE værktøjerCase værktøj:classA :classB :classC State AClassAClassBViewsState BClassCDesignDokumentationClassAClassBModelDatabaseClassCFigur 26Slide 40 af 51© Ingeniørhøjskolen i Århus


Kravspecifikation vha. Use Cases1. Indledning2. Generel beskrivelse3. Funktionelle krav4. Ekstern grænseflade5. Krav til ydelse6. Kvalitetsfaktorer7. Design krav8. Andre krav9. Del-leveringUseCase 1Aktør-kontekst diagramUseCase 2System/ProduktUse Case diagram...UseCase nFigur 30Slide 41 af 51© Ingeniørhøjskolen i ÅrhusEksempel 2. - LogikanalysatorAdresseA E 0 0DataX XTilstandVisningAE00 C3 jmpAE01 01 05AE02 FE FEFE05 A1 inc aFE06 B1 inc bFE07 C3 jmpFE08 00 00FE09 B1 B1B100 C9 ret0035 00 nopKonfigurerStart/StopFigur 37Slide 42 af 51© Ingeniørhøjskolen i Århus


Deploymentdiagram for logikanalysator«PC»LogikAnalysator«µProcessor POD»«µProcessor»Processorunder testSe klassediagram oversoftwarestrukturenpå næste slideFigur 38Slide 43 af 51© Ingeniørhøjskolen i ÅrhusAktør-kontekstdiagramUdviklerLogikAnalysatorMicroprocessorProbeSuperbrugerFigur 30Slide 44 af 51© Ingeniørhøjskolen i Århus


Use Case diagram for logikanalysatorUdviklerforetag logikanalyseMicroprocessorProbeindstil triggerbetingelseudførmålinganalysermåledataforetagselvtestSuperbrugerkonfigurerprobeFigur 40Slide 45 af 51© Ingeniørhøjskolen i ÅrhusKlassediagram for logikanalysator SWDisplay1 1 viser data fraKontrolPanelstyrer visning påopsætter en1 KonfigureringSampletDataLager1111styrer1LogikAnalysator11får opsætning fragemmer data iKlassediagramudenattributter ogassociationerstyrer1Sampler11MikroprocessorProbe1Figur 41Slide 46 af 51© Ingeniørhøjskolen i Århus


Tilstandsdiagram for klassen LogikAnalysatorkonfigureringstaster/konfigurering.tast()Konfigureringkonfigurer/blink()start /sampler.start()stop /sampler.stop()Målingkonfigurer /blink()måling udført /visData()start /samper.start()displaytaster /display.tast()Visning af dataFigur 42Slide 47 af 51© Ingeniørhøjskolen i ÅrhusSekvensdiagram – start scenarioFigur 43Slide 48 af 51© Ingeniørhøjskolen i Århus


Sekvensdiagram – måling udført scenarioFigur 43Slide 49 af 51© Ingeniørhøjskolen i ÅrhusKlassediagram for logikanalysatorsty rer v isning på1DisplayaktuelVisningvisData()pilOp()pilNed()1viser data fraKontrolPane lindlæsTaster()1styrer1opsætter en1 1LogikAnalysator1 KonfigureringtriggerAdressetriggerDatahentTriggerAdresse()hentTriggerData()pilOp()pilNed()pilHøjre()pilVenstre()1SampletDataLageraddresse og data infoindsaetData(adresse,data)hentData()Klassediagrammedattributter ogassociationerstart()stop()konfigurer()målingUdført()pilOp()pilNed()pilHøjre()pilVenstre()1styrerSamplertriggerAdresse1triggerDatastart()stop()nyeData()f år opsætning f ra11 1gemmer data i1MikroprocessorProbeFigur 44Slide 50 af 51enable()© Ingeniørhøjskolen i Århus


Opsummering• UML-Light er den delmængde af UML, der kananvendes til Objektbaseret udvikling• UML-Light kan anvendes til design/strukturering afsåvel Software- som Hardwaredelen af et projekt• UML-Light modellerne af softwaren kanimplementeres i f.eks. C++, C eller assembler• UML-Light tages i brug på 1. semester• UML-Light++ anvendes på 2. semester ifm.objektorienteret udvikling i C++• Den fulde UML introduceres på 3. semester sammenmed en analyse- og designmetodeSlide 51 af 51© Ingeniørhøjskolen i Århus

More magazines by this user
Similar magazines