UML-Light (Note: UML-Light T133, ver. 2004) Finn Overgaard Hansen, IHA



Relaterede dokumenter
UML til kravspecificering

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

SPU UML note. Systematisk Program- Udvikling med UML. Finn Overgaard Hansen

SPU UML note. Systematisk Program- Udvikling med UML. Finn Overgaard Hansen

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

SOFTDRINKAUTOMATSTYRING

SOFTWARE DOKUMENTATION

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Struktureret system udvikling Minimodul 1: Introduktion, UML og use cases

Software Dokumentation

Introduktion til OO* og UML

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Lektion 3. Grundlæggende programmering i VR

Svendeprøve Projekt Tyveri alarm

Software Design (SWD) Spørgsmål 1

Skriftlig eksamen i Datalogi

Vejledning til udviklingsprocessen for projekt 2

Secure O matic. Gruppe 5 2. SEMESTERPROJEKT. Udgave. Accepttest-specifikation

Hvem er vi? Kursus Introduktion. Kursuslærerne. Agenda for i dag

Projekt E1PRJ1 Emne: Strukturering Softdrink-Automat Gruppe: 6 Dato: 20. marts 2006 Medlemmer: Benjamin Sørensen, Jacob Nielsen, Klaus Eriksen,

Andreas Nordbek & Kristoffer Skude Jensen. DMX Styring Side 1 af 15

Ugeseddel 4 1. marts - 8. marts

Velkommen til. Kravspecifikation i Softwareudvikling Workshop hos Brüel & Kjær. 14. september 2012,

Videregående Programmering for Diplom-E Noter

Efter installation af GEM Drive Studio software fra Delta s CD-rom, skal hoved skærmbilledet se således ud: (koden til administrator adgang er: admin)

Abstrakte datatyper C#-version

Arkitekturdokument for Cruise Control

Objektorienteret design med arv og polymorfi:

Lær Python - Dag 4, modul 2 Objektorienteret programmering

Kursuskatalog 2012 TwinCAT Basic og Extended

Lilleby Kommunebibliotek

Struktureret system udvikling Minimodul 2: UML og use cases

Software Design (SWD) Spørgsmål 1

Indholdsfortegnelse for kapitel 3

Cost-effektivt Design Med UML 16. oktober 2006

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen

Programmering i C Intro og grundlæggende C 5. marts 2007

Grundlæggende OOA - OOD

Umbrello UML Modeller-håndbogen

Projekt rapport. for. Zigbee kommunikation

Klasser og objekter. (Afsnit i manualen)

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Version marts 2017 Torben Gregersen Vejledning til gennemførelse af semesterprojekt 1

Skriftlig eksamen i Datalogi

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Forelæsning Uge 1 Torsdag

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Eksempel: et ordresystem note 5 Lagdeling s. 1

Kursuskatalog 2013 TwinCAT Basic og Extended

Model og metode til programudvikling. Om undertegnede... Struktureret Systemudvikling. Dagens menu... Tankevækkende erfaringer med systemudvikling...

Fag: Projekt E1PRJ1 Emne: Kravspecifikation Softdrink-Automat Gruppe: 6 Dato: 10. april 2003 Medlemmer: Benjamin Sørensen, Joanna Christensen, Jacob

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

Arduino Programmering

Synopsis. Hardi Bootlader m. Java ME

Model og Metode til Programudvikling. Jens Dalsgaard Nielsen

Objektorientering. Programkvalitet

Forelæsning Uge 2 Torsdag

Løsningsforslag til Camp Let. Case Beskrivelse: Camp Let

Introduktion. Grundlæggende programmering Lektion 1

Forelæsning Uge 1 Torsdag

EasyRun En løbers bedste ven

Alle dip 1 7 sættes til On for at opnå stand-alone operation fra PC.

Lær Python - Dag 4, modul 1 Objektorienteret programmering

Version september 2019 Samuel Thrysøe Vejledning til gennemførelse af semesterprojekt 1

30 Objekt-orienteret Programmering i Andre Sprog.

Undervisningsplan. Side 1 af 9. Termin Rybners Tekniske Gymnasium. Uddannelse. Fag og niveau. Informationsteknologi B

Curriculum Vitae. Uddannelse: 2001 Civilingeniør fra Danmaks tekniske universitet, fagprofil: styring og regulering.

CURRICULUM VITAE. Personlige oplysninger. Michael Alrøe. Uddannelse. Kurser og efteruddannelse. Michael Alrøe. Navn Fødselsår 1964 LinkedIn

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Microcontroller, Arduino

Kravspecifikation For. Gruppen

Automatisk Vandingssystem

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

Mircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)

DM507 Algoritmer og datastrukturer

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Datatekniker med programmering som speciale

Automatisk Vandingssystem

Dr.Lavoisier BRUGERVEJLEDNING ILT - OVERVÅGNING VER. 1.03

WEM1 Projekt. Bluetooth-Remote. Anders Bilde (06740) Kim Thomsen (06768) Peter Bertelsen (05210)

educasoft - en professionel samarbejdspartner med speciale i uddannelse!

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6

2. Metode. 2.1 Interessentanalyse Interessenterne i projektet er vist i nedenstående figur: Aftalekalenderprojektet. Indledning

Lektion 2. Grundlæggende programmering i VR

Lavet af Danni jensen og David Olsen

Programmering i C. Lektion september 2009

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, klasse dm032-1a

Software Design (SWD) Spørgsmål 1

Objektorienteret Programmering

Objects First with Java A Practical Introduction Using BlueJ

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Assignment #5 Toolbox Contract

2a. Conceptual Modeling Methods

Forelæsning Uge 2 Torsdag

DM507 Algoritmer og datastrukturer

Automatisk Vandingssystem

Forelæsning Uge 2 Torsdag

Viditronic NDVR Quick Guide. Ver. 2.0

Transkript:

UML-Light (Note: UML-Light T33, ver. 2004) Finn Overgaard Hansen, IHA Programmering PRG + Semesterprojekter PRJ+PRJ2 Version: 20--2004 Indhold Første del: Introduktion til UML-Light og UML Klasser og objekter Klassediagrammer Tilstandsdiagrammer Sekvensdiagrammer Anden del: Sammenhæng mellem UML-Light og kode Gennemgang af eksempler Slide 2 af 5

Introduktion til UML UML (Unified Modeling Language) er en OMG standard defineret i 997 Seneste version er UML.4 UML 2.0 er på vej. OMG (Object Management Group) er en sammenslutning af ca. 800 firmaer (www.omg.org) UML beskriver en standardnotation for objektorienteret udvikling UML beskriver ikke en udviklingsproces eller udviklingsmetode Slide 3 af 5 UML-Light, -++ og UML UML UML-Light++ UML-Light Slide 4 af 5

Oversigt over de tre første semestre Objektbaseret Programmering Objektorienteret Programmering Objektorienteret analyse & design PRG I-PRG2 I-PRG3 Semesterprojekt PRJ UML-Light Semesterprojekt I-PRJ2 UML-Light++ Semesterprojekt I-PRJ3 OOA+OOD UML Slide 5 af 5 Objektbaseret og Objektorienteret udvikling Objektbaseret udvikling (UML-Light) Baserer sig på Information Hiding og indkapslingsprincippet Anvender klasser og objekter ved modelleringen Kan implementeres i et ikke objektorienteret programmeringssprog 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 ved kodningen som f.eks. C++, Java eller C# Slide 6 af 5

UML-Light diagramtyper De vigtigste UML-Ligth diagrammer er: Klassediagrammer (Class Diagrams) Sekvensdiagrammer (Sequence Diagrams) Tilstandsdiagrammer (State Charts) Derforuden medtager UML-Light også: Deploymentdiagrammer (Deployment Diagrams) kan vise et systems hardwarekomponenter Aktivitetsdiagrammer (Activity Diagrams) anvendes til detaljeret design af en operation Slide 7 af 5 Specifikation og implementering af et modul For et SW modul Blackbox view Specifikation Header Fil (.h) i C og C++ Whitebox view Implementering Kode fil (.c) i C og (.cpp) C++ Figur Slide 8 af 5

Indkapslingsprincippet Information Hiding David Parnas 972. Eksempler på indkapsling Slide 9 af 5 Notation for en klasse () Navn (navneord ental) KlasseA attributa attributa2 operationa() operationa2() operationa3() operationa4() Klassens attributter (data) Klassens operationer (funktioner, procedurer) Figur 2 Slide 0 af 5

Notation for en klasse (2) Med tilføjelse af synlighed (visibility) KlasseB private public -attributb -attributb2 -operationb4() +operationb() +operationb2() +operationb3() Figur 3 Slide af 5 Et eksempel på en klasse Klasse To Bil objekter Bil -hastighed -gear -omdrejningstal -motorstørrelse +start() +stop() +udkoble() +skiftgear() +kør() +brems() Figur 4 Slide 2 af 5

UML Notation for objekter Klasse Objekter Bil -hastighed -gear -omdrejningstal -motorstørrelse +start() +stop() +udkoble() +skiftgear() +kør() +brems() veteranbil:bil jaguar:bil Typen Instanserne Figur 5 Slide 3 af 5 Klasse og C++ kode UML Bil -hastighed -gear -omdrejningstal -motorstørrelse +start() +stop() +udkoble() +skiftgear() +kør() +brems() Specifikation Bil.h class 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 4 af 5 void Bil::start() { // kode for start // operation } // etc. Bil.cpp Implementering

Komplet specifikation af en klasse Datatype for attributter -attributc: datatype KlasseC +operationc(param: type, param2: type): returtype Parameternavn Parametertype Operationens returtype Figur 6 Slide 5 af 5 Notation for en note Dette er en UML note - her kan man skrive kommentarer til et diagram eller f.eks. til en klasse KlasseB -attributb2 -attributb Noten her forklarer noget om KlasseB +operationb() +operationb2() +operationb3() Figur 8,9 Slide 6 af 5

Notation for klassediagram Stereotype <<Utility>> Hovedprogram main() Associationer KlasseA attributa attributa2 operationa() operationa2() KlasseB attributb operationb() operationb2() operationb3() associations navn Multiplicitet KlasseC operationc() Figur 0 Slide 7 af 5 Associtationsbegrebet Bil -hastighed -gear -omdrejningstal -motorstørrelse +start() +stop() +udkoble() +skiftgear() +kør() +brems() styrer Motor Tillader at objekter af disse klasser kommunikerer jaguar:bil v8:motor start start Slide 8 af 5

Notations for sekvensdiagram :Hov edprogram objekta:klassea objektb:klasseb objektc:klassec main() operationa() operationb() operationc() objekter OperationB2() operationa2() OperationB3() Meddelelse (kald af en operation) Aktiveringsblok Figur Slide 9 af 5 Notation for tilstandsdiagram Start tilstand Hændelse hændelse 4 Tilstand_0 Tilstand Tilstandsovergang hændelse / aktion Tilstand_ hændelse 2 [betingelse] / aktion 2 Aktion hændelse 3 Slut tilstand Figur 2 Slide 20 af 5

Notation for aktivitetsdiagram () Aktivitesdiagram Viser sekvenser og en udvælgelse (if-else) aktivitet Betingelse [logical expression == true] [logical expression == false] Aktivitet aktivitet 2 aktivitet 3 Valg aktivitet 4 Figur 3 Slide 2 af 5 Notation for aktivitetsdiagram (2) Aktivitetsdiagram for en iteration (for eller while løkke) Initier løkkevariabel [løkke betingelse == true] udfør løkke aktivitet Optæl løkkevariabel [løkke betingelse == false] aktivitet 2 Figur 4 Slide 22 af 5

Notation for deploymentdiagram Stereotype «node type» UML Node «kommunikationstype» «node type» UML Node 2 Figur 5 Slide 23 af 5 Deploymentdiagram eksempel «micro controller» H8 «RS232» «device» User KeyPad RS232 Connector UART Folie keypad Keypad Controller Figur 6 Slide 24 af 5

UML-Light oversigtsdiagram Deploymentdiagram «processor» Node «kommunikation» «Hardware» Node HW Blokdiagram classa classb State A Tilstandsdiagram HW R HW S Klassediagram classc opx() :classa :classb :classc opx() Sekvensdiagram Figur 8 State B Aktivitetsdiagram Slide 25 af 5 :HW R y x HW T Tilstandsdiagram :HW T z Sekvensdiagram State T State T2 De fire primære UML diagramtyper Kravspecifikation med Use Cases OO analyse Arkitektur design Mekanistisk design Detaljeret design Translation Use Case diagrammer UML-Light++ Klassediagrammer Sekvensdiagrammer Tilstandsdiagrammer Kodefiler f.eks. C++/Java eller C UML baseret model af systemet Slide 26 af 5

Anden del: Sammenhæng mellem UML-Light og kode + Gennemgang af eksempler Sammenhæng mellem klassediagram og kode <<Utility>> Hovedprogram main() KlasseA attributa attributa2 operationa() operationa2() Hovedprogram.cpp KlasseA.h KlasseA.cpp associations navn KlasseB.h KlasseB.cpp KlasseB attributb operationb() operationb2() operationb3() KlasseC operationc() KlasseC.h KlasseC.cpp Figur 9 Hovedprogram.cpp: KlasseA.cpp: KlasseB.cpp: KlasseC.cpp: #include KlasseA.h #include KlasseA.h #include KlasseB.h #include KlasseB.h #include KlasseC.h #include KlasseC.h Slide 28 af 5

Envejs - association KlasseA +operationa() KlasseB +operationb() class KlasseA { public: KlasseA(KlasseB* pb); // Constructor void operationa(); private: KlasseB* pklasseb; // implementerer associationen } Association implementeret vha. en pointer Figur 20 Slide 29 af 5 Implementering af envejs association KlasseA::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 og initialiseres, 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 // operationb() i det KlasseB objekt vi har oprettet objektafklassea.operationa(); return (0); } Slide 30 af 5

Tovejs - association KlasseA KlasseB KlasseA defineres som før. class KlasseB { public: KlasseB(); // Constructor initassociation(klassea* pa); private: KlasseA* pklassea; // implementerer associationen } Figur 2 Slide 3 af 5 Implementering af tovejs association KlasseA 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ørst KlasseA objektafklassea(&objektafklasseb); objektafklassea.operationa(); objektafklasseb.operationb2(); return (0); } Slide 32 af 5

Eksempel Et simpel minutur UML-Light MinutUr Start 7:23 Stop Reset Minutur der viser minutter og sekunder. Reset knappen nulstiller uret, hvis uret er stoppet. Start knappen starter uret, der optæller tiden og viser denne i minutter og sekunder. Stop knappen stopper uret. Figur 22 Slide 33 af 5 Klassediagram for minutur «utility» Hovedprogram styrer Ur vises på Display benytter poller poller Timer KnapPanel Slide 34 af 5

Tilstandsdiagram for klassen Ur Hændelser: reset start stop timeout knaptryk reset/ nulstil() Stoppet /nulstil() start/ timerobj.start(000) stop/ timerobj.stop() Startet Figur 24 timeout/ timerobj.start(000), taelop(), displayobj.vis(min,sec) Slide 35 af 5 Sekvensdiagram start scenario :Hovedprogram :KnapPanel urobj:ur timerobj:timer checkfortast() true /nulstil() Stoppet laestast() start start() start(000) start/ timerobj.start(000) Startet Figur 25 Slide 36 af 5

Sekvensdiagram timeout scenario :Hovedprogram :KnapPanel urobj:ur timerobj:timer displayobj:display checkfortimeout() true timeout() start(000) taelop() vis(min,sec) Slide 37 af 5 Sekvensdiagram for minutur :Hovedprogram :KnapPanel urobj:ur timerobj:timer displayobj:display checkfortast() laestast() start() start(000) checkfortimeout() timeout() start(000) taelop() vis(min,sec) Figur 25 Slide 38 af 5

<<utility>> Hovedprogram main(): int poller poller Klassediagram for minutur styrer Ur -minutter: int -sekunder: int +start(): void +stop(): void +reset(): void +timeout(): void -nulstil(): void -taelop(): void vises på Display +vis(min: int, sec: int):void KnapPanel +checkfortast(): Boolean +laestast(): int beny tter Timer +checkfortimeout(): Boolean +start(tid: int): void +stop(): void Figur 23 Slide 39 af 5 CASE værktøjer Case værktøj :classa :classb :classc State A ClassA ClassB Views State B ClassC Design Dokumentation ClassA ClassB Model Database ClassC Figur 26 Slide 40 af 5

Kravspecifikation vha. Use Cases. Indledning 2. Generel beskrivelse 3. Funktionelle krav 4. Ekstern grænseflade 5. Krav til ydelse 6. Kvalitetsfaktorer 7. Design krav 8. Andre krav 9. Del-levering Use Case Aktør-kontekst diagram Use Case 2 System/ Produkt Use Case diagram... Use Case n Figur 30 Slide 4 af 5 Eksempel 2. - Logikanalysator Adresse A E 0 0 Data X X Tilstand Visning AE00 C3 jmp AE0 0 05 AE02 FE FE FE05 A inc a FE06 B inc b FE07 C3 jmp FE08 00 00 FE09 B B B00 C9 ret 0035 00 nop Konfigurer Start/Stop Figur 37 Slide 42 af 5

Deploymentdiagram for logikanalysator «PC» Logik Analysator «µprocessor POD» «µprocessor» Processor under test Se klassediagram over softwarestrukturen på næste slide Figur 38 Slide 43 af 5 Aktør-kontekstdiagram Udvikler Logik Analysator Microprocessor Probe Super bruger Figur 30 Slide 44 af 5

Use Case diagram for logikanalysator Udvikler foretag logikanalyse Microprocessor Probe indstil triggerbetingelse <<extend>> <<extend>> udfør måling <<extend>> analyser måledata foretag selvtest Super bruger konfigurer probe Figur 40 Slide 45 af 5 Klassediagram for logikanalysator SW Display viser data fra KontrolPanel styrer visning på opsætter en Konfigurering SampletDataLager styrer LogikAnalysator får opsætning fra gemmer data i Klassediagram uden attributter og associationer styrer Sampler <<Hardware>> MikroprocessorProbe Figur 4 Slide 46 af 5

Tilstandsdiagram for klassen LogikAnalysator konfigureringstaster / konfigurering.tast() Konfigurering konfigurer/ blink() start / sampler.start() stop / sampler.stop() Måling konfigurer / blink() måling udført / visdata() start / samper.start() display taster / display.tast() Visning af data Figur 42 Slide 47 af 5 Sekvensdiagram start scenario Figur 43 Slide 48 af 5

Sekvensdiagram måling udført scenario Figur 43 Slide 49 af 5 Klassediagram for logikanalysator styrer visning på <<Boundary>> Display aktuelvisning visdata() pilop() pilned() viser data fra <<Boundary>> KontrolPane l indlæstaster() styrer opsætter en LogikAnalysator Konfigurering triggeradresse triggerdata henttriggeradresse() henttriggerdata() pilop() pilned() pilhøjre() pilvenstre() SampletDataLager addresse og data info indsaetdata(adresse,data) hentdata() Klassediagram med attributter og associationer start() stop() konfigurer() målingudført() pilop() pilned() pilhøjre() pilvenstre() styrer Sampler triggeradresse triggerdata start() stop() nyedata() får opsætning fra gemmer data i <<Boundary>> MikroprocessorProbe Figur 44 Slide 50 af 5 enable()

Opsummering UML-Light er den delmængde af UML, der kan anvendes til Objektbaseret udvikling UML-Light kan anvendes til design/strukturering af såvel Software- som Hardwaredelen af et projekt UML-Light modellerne af softwaren kan implementeres i f.eks. C++, C eller assembler UML-Light tages i brug på. semester UML-Light++ anvendes på 2. semester ifm. objektorienteret udvikling i C++ Den fulde UML introduceres på 3. semester sammen med en analyse- og designmetode Slide 5 af 5