Dynamiska modellen Tid Objektorienterad modellering programmering och analys OOMPA 1999 Föreläsning 6 Innehåll Unified Modelling Language - den dynamiska modellen Interaktionsdiagram sekvensdiagram samarbetsdiagram Tillståndsdiagram Sekvensiering, synkronisering Består av tillståndsdiagram (state diagrams) som beskriver objektens inre tillstånd, och sekvensdiagram (sequence diagrams) samarbetsdiagram (collaboration diagrams) aktivitetsdiagram (activity diagrams) För att ta fram dessa diagram utgår man från specifika exempel. Dessa beskrivs först verbalt i scenarior Små exempel Analysexempel: Ett billarm Björn Eiderbäck 1999-1 - Björn Eiderbäck 1999-2 -
Inre tillstånd Varje objekt befinner sig i varje ögonblick i ett visst tillstånd (state). Objektets tillstånd bestämmer hur objektet reagerar på indata och yttre händelser (events). Inre tillstånd, forts Knappen kan befinna sig i tre olika tillstånd, som kan namnges: Down Save Save Save Save Save Exempel: Knapp i ett grafiskt användargränssnitt. Save Save Save Save Save Grafiskt kan tillstånden ritas som ovaler, och övergångarna (transitions) som pilar. När markören flyttas in över knappen markeras ramen. När musens vänsterknapp trycks ned inverteras färgerna och operationen utförs. När knappen släpps upp återställs färgerna. När markören flyttas bort återgår ramen till normal tjocklek. Down Klasstillhörigheten avgör vilka tillstånd som objektet kan befinna sig i. Varje objekt befinner sig i exakt ett av tillstånden. Olika instanser av samma klass kan befinna sig i olika tillstånd vid samma tidpunkt. Björn Eiderbäck 1999-3 - Björn Eiderbäck 1999-4 -
Inre tillstånd, forts De händelser som gör att objektets tillstånd ändras kan också namnges, och placeras ut i diagrammet: enter press(n) Inre tillstånd, forts Knappen reagerar inte på händelsen när den befinner sig i tillståndet Down. Sluttillståndet blir i detta fall. Komplettera med en övergång till: enter Down press(n) Händelserna kan vara associerade med data (argument). T ex är n knappens nummer (1, 2 eller 3). Tillståndsdiagrammet ska visa alla tillåtna tillstånd och övergångar. Down Men vad händer om markören flyttas ut innan knappen släpps upp? Down Down Down Save Save Save Save Save Save Save Save Save Save Björn Eiderbäck 1999-5 - Björn Eiderbäck 1999-6 -
Villkorliga övergångar Antag att knappen kan kopplas till en meny. Musens högerknapp visar menyn, vänsterknappen väljer ett standardalternativ: Menu Menu Edit Edit Edit Edit Edit Undo Cut Copy Paste Undo Cut Copy Paste Objektets beteende Objektet kan reagera på en händelse med en handling (action). Handlingar är knutna till tillståndsövergångar. Händelser momentana handlingar momentana Handlingar kan alltså inte ha någon utsträckning i tiden. /invert, unhighlight Menu do/ show menu enter/highlight press(n)[n=3] /invert Down Menu press(n)[n=3] enter villkor (guard) press(n)[n=1] /invert, unhighlight /unhighlight /invert press(n)[n=1] Down /invert Aktiviteter (activities) är knutna till tillstånd. De pågår så länge objektet befinner sig i tillståndet. Tar tid. Skrivs efter do/ i tillståndet. Björn Eiderbäck 1999-7 - Björn Eiderbäck 1999-8 -
Ingångs/utgångshandlingar För att slippa repetera samma handling vid flera övergångar kan de knytas till tillståndets ingång eller utgång. Tillståndsdiagram: notation Start Start State name Övergång event(arguments)[condition] / action State name De kallas då ingångshandlingar (entry actions) respektive utgångshandlingar (exit actions). variable: Type = initialvalue entry / action do / activity exit / action event / action(arguments) Tillstånd Slut Slut OBS! De är (som alla handlingar) momentana. entry/unhighlight Down entry/invert exit/invert Menu entry/invert exit/invert do/ show menu enter press(n)[n=1] press(n)[n=3] entry/highlight Björn Eiderbäck 1999-9 - Björn Eiderbäck 1999-10 -
Idle Fler exempel keypress shutdown Running finished Underordnade diagram För att slippa repetera likadana övergångar från många till ett tillstånd: A E A B D B D after(2 seconds)/send c.isalive ovillkorliga övergångar C C noise Idle Searching Engaging E kallas supertillstånd. Alla tillstånd inom E har övergången från E till D. targetat(p) [isthreat]/ t.addtarget(p) Objekten befinner sig egentligen aldrig i själva supertillståndet, utan i ett av de subtillstånden A, B eller C. Tracking contact Engaging Övergången från D till E går egentligen till A, eftersom A är markerad som starttillstånd i E. Starttillstånd (initial state) Sluttillstånd (final state) Här dör objektet Björn Eiderbäck 1999-11 - Björn Eiderbäck 1999-12 -
Underordnade diagram, forts Exempel: Nummermottagare i en telefonväxel: Fler exempel shutdown Idle off-hook Busy do/ collect digits tohot(desiredtemp) Idle tocold(desiredtemp) attemp Heating on-hook Cooling attemp Activating ready/turnon() tohot(desiredtemp) Idle tocold(desiredtemp) Busy DialTone off-hook on-hook key(n) Dialing /add n to key(n) number /set number to n [number complete] maintain Idle Maintenance cardinserted cancel Validating Selecting [not continue] [continue] Processing Printing Conversation Connecting do/ connect entry/readcard exit/ejectcard Björn Eiderbäck 1999-13 - Björn Eiderbäck 1999-14 -
Varifrån kommer händelser? Händelser upptäcks eller genereras oftast i andra objekt. enter Button Button save Document invert, highlight, unhighlight enter,, press(n), Down press(n) Window Det nedre diagrammet kallas händelseföde (event flow, men är inte en dek av UML. Det kan ändå vara bra att på liknande sätt identifiera komponenternas "kommunikationsvägar" på liknande sätt Björn Eiderbäck 1999-15 - Vad är handlingar och aktiviteter? Handlingar kan vara: Operationer i klassdiagrammet som inte tar någon tid. Meddelanden om nya händelser (send). Aktiveteter är: Operationer i klassdiagrammet som tar tid. Editing Down enter/highlight save press(n) /send invert to window, send save to document Ofta är send... to och destinationen underförstådda. Button Document Saving do/ write file Björn Eiderbäck 1999-16 -
Exempel: Flaskfyllning Exempel: telefon (igen) Uppringning Ej fylld Fyller fyll(n) [innehåll + n >= kapacitet] Full avbrott kapsyl på fyll(n) [innehåll + n < kapacitet] Fel Försluten Deltillståndet dialing Björn Eiderbäck 1999-17 - Björn Eiderbäck 1999-18 -
Man kan definiera egna händelser i tillstånden Exempel: lösenord Exempel: Automatlåda Växel välj B Neutral Back välj N välj N välj F Framåt stopp Ett växla upp växla ner Två växla upp växla ner Tre Omgivande tillstånd ärvs av deltillstånd så om N väljs i något tillstånd i Framåt övergår Växeln i neutralt läge Händelse från kanten av ett tillstånd ärvs av alla deltillstånd så oberoende av framåtväxel ger stopp en övergång till Ett. Björn Eiderbäck 1999-19 - Björn Eiderbäck 1999-20 -
Parallella undertillstånd Hela tillståndet övergår inte till "passed" förrän alla undertillstånd är klara. Parallellism Parallellism finns i sammansatta objekt (aggregat). Delarna växlar tillstånd självständigt. Undo Edit + Cut = Copy Paste Edit Undo Cut Copy Paste MenuButton Menu Button Parallellism kan också finnas inom samma objekt, t ex en godisautomat: /return coin coin inserted Idle ReturningChange Dispensing do/ dispense item Björn Eiderbäck 1999-21 - Björn Eiderbäck 1999-22 -
Sekvensdiagram, forts Sekvensdiagram, forts Sekvensdiagram finns också på följande form. Villkor kan skrivas i kanten För fler detaljer se Fowler kapitel 6. Björn Eiderbäck 1999-23 - Björn Eiderbäck 1999-24 -
Sekvensdiagram, forts Man kan också ange om ett meddelande är synkront eller asynkront. Samarbetsdiagram : Order Entry Window object 1 object 2 object 3 : Order synchronous call asynchronous call Macallan line : Order Line Macallan stock : Stock Item : Delivery Item : Reorder Item Meddelanden, sekvensnumrering nästa sida. Björn Eiderbäck 1999-25 - Björn Eiderbäck 1999-26 -
...samarbetsdiagram (forts) Samarbetsdiagram: exempel : Order Entry Window 1:prepare() : Order 2*:prepare() Macallan line : Order Line 3:check() 4:[check()==true]remove() 5:needToReorder() Macallan stock : Stock Item 4:[check()==true]new 6::new : Delivery Item : Reorder Item Björn Eiderbäck 1999-27 - Björn Eiderbäck 1999-28 -
Sekvensdiagram Dynamisk modell - metodik Tid A B stimulus stimulus C stimulus D Identifiera användningsfall Gör ett eller flera scenarior. Identifiera händelser. stimulus Rita ett händelseflöde. stimulus stimulus Skapa ett händelseförlopp för varje scenario. Identifiera tillstånden i händelseförloppen. Skapa sekvensdiagram. A, B, C och D objekt som kommunicerar via stimuli/meddelanden Tiden ökar neråt Björn Eiderbäck 1999-29 - Björn Eiderbäck 1999-30 -
Exempel: telefonsamtal Scenario uppringande part (U) lyfter luren rington börjar u slår 6 rington slutar u slår 2 u slår 7 u slår 7 uppringda telefonen (M) ringer uppringningston hörs hos U M svarar M slutar ringa uppringningston upphör hos U telefonerna är anslutna M lägger på telefonerna är inte anslutna U lägger på telefonsamtal forts Sekvensdiagram U lyfter luren M svarar telefonerna anslutna M lägger på U öppna linjen rington på slå(6) rington av slå(2) slå(7) slå(7) uppringningston på ton av bryt anslutningen Telfonlinje telefon ring ringning sluta bryt anslutningen M U lägger på Björn Eiderbäck 1999-31 - Björn Eiderbäck 1999-32 -
Konstruktion av dynamisk modell siren lysdiod detektor mottagare Billarm - objektmodell Receiver Transmitter Detector Larmet aktiveras av en signal från sändaren. Bilen låses och lysdioden börjar blinka. Nästa signal deaktiverar larmet. Bilen låses upp och lysdioden släcks. När larmet är aktiverat kommer en signal från detektorn att sätta igång sirenen. Lysdioden övergår till fast sken. Sirenen ska tystna efter 3 sekunder. Larmet ska dock fortfarande vara aktiverat, och lysdioden ska fortsätta lysa med fast sken. Man ska kunna deaktivera larmet även när sirenen tjuter. lås sändare Siren LED Lock Alarm Björn Eiderbäck 1999-33 - Björn Eiderbäck 1999-34 -
Billarm - scenario Billarm - händelsflöde Mottagaren tar emot signal från sändaren. Dörrarna låses, lysdioden börjar blinka. Receiver transmission Transmitter Mottagaren tar emot signal från sändaren. Dörrarna låses upp, dioden släcks. transmission Mottagaren tar emot signal från sändaren. Dörrarna låses, lysdioden börjar blinka. Detektorn känner av vibrationer. Sirenen börjar tjuta. Dioden går över till fast sken. Sirenen slutar tjuta. Mottagaren tar emot signal från sändaren. Dörrarna låses upp, dioden släcks. Detector vibration Siren on, off flash, steady, out Alarm Mottagaren tar emot signal från sändaren. Dörrarna låses, lysdioden börjar blinka. Detektorn känner av vibrationer. Sirenen börjar tjuta. Dioden går över till fast sken. Mottagaren tar emot signal från sändaren. Sirenen slutar tjuta, dörrarna låses upp, dioden släcks. LED Lock lock, unlock Björn Eiderbäck 1999-35 - Björn Eiderbäck 1999-36 -
Billarm - händelseförlopp receiver detector alarm lock siren LED transmission lock flash Billarm - larmtillstånd receiver detector alarm lock siren LED transmission lock flash transmission unlock out transmission unlock out transmission lock flash transmission lock flash vibration on steady vibration on steady off Sounding off transmission unlock out transmission unlock out transmission lock flash vibration on steady transmission unlock off out transmission lock flash vibration on steady Sounding transmission unlock off out Björn Eiderbäck 1999-37 - Björn Eiderbäck 1999-38 -
Billarm - diodens tillstånd receiver detector alarm lock siren LED transmission lock flash Flashing transmission unlock out Out Billarm - tillståndsdiagram entry/unlock, out exit/lock, flash transmission transmission trans- mission Alarm Sounding entry/on, steady exit/off do/ wait 3s transmission lock flash Flashing vibration on steady vibration off Steady Out LED transmission unlock out out Out transmission lock flash flash Steady do/ light out vibration on steady steady transmission unlock off out Flashing do/ flash Björn Eiderbäck 1999-39 - Björn Eiderbäck 1999-40 -