Objektorienterad Realtidsprogrammering 2000 Föreläsning 9-10 Analysera beteende - Mer om att beskriva tillstånd och beteende med interaktionsdiagram - tillståndsdiagram tillståndsövergångar, villkor, parallella maskiner, inre maskiner, fork och join, signaler, history, arv mellan maskiner - scenarier och tidsdiagram Design - Vad är design? - Objektinteraktion, trådar och händelser
Beteende Viktigt är att beskriva ett systems struktur med hjälp av bla klassdiagram En annan viktig del av systemkonstruktionen är att beskriva dom ingående objektens beteende Ett vanligt och relativt kraftfullt sätt att beskriva beteende för ett objekt i form av att beskriva dess tillstånd och reaktioner på händelser är att använda tillståndsdiagram
Tillståndsdiagram Ett objekts olika tillstånd och sätt att ändra tillstånd kan beskrivas med ett tillståndsdiagram keyPress Idle Running shutDown finished
Tillståndsdiagram: grundläggande syntax Start Övergång event(arguments)[condition] / action State name variable: Type = initialvalue entry / action do / activity exit / action event / action(arguments) State name Tillstånd Slut
Tillståndsdiagram: övergångar ovillkorliga övergångar after(2 seconds)/send c.isAlive noise Idle Searching Engaging targetAt(p) [isThreat]/ t.addTarget(p) Tracking Engaging contact
… händelser, parametrar och signaler Ett tillståndsdiagram kan reagera på händelser och reagera genom att utföra operationer vid övergångarna mellan dom olika tillstånden Övergångarna kan också vara villkorade och olika grenar kan väljas beroende av villkor D s 136
… olika deltillstånd och symboler D s 139
... D s 143
… grenar (med val) och föreningspunkter D s 144
... D s 147
... D s 148
… nästlade tillstånd D s 150
... Heating shutDown Idle toCold(desiredTemp) toHot(desiredTemp) atTemp Heating atTemp Cooling Activating ready/turnOn() toHot(desiredTemp) Active toCold(desiredTemp)
... Active cardInserted Idle cancel Validating maintain [continue] Maintenance Selecting Processing [not continue] Printing entry/readCard exit/ejectCard
… parallella tillstånd i en maskin D s 151
… fork, join och propagerade tillstånd D s 153
...signaler och propagerade tillstånd D s 154
… synkronisering D s 156
… delmaskiner D s 158
… arv mellan tillståndsmaskiner
Exempel: pacemaker (4.3.5) En pacemaker är ett system i vilket dom flesta ingående objekten med fördel använder sig av tillståndsmaskiner för att beskriva sitt beteende
D s 161 (problemformulering)
… klassdiagram D s 163
… lässwitch D s 164
… coil driver D s 165
… communication gnome D s 166
… chamber model D s 167
… atrial model D s 168
… ventricular model D s 169
Dynamisk modellering två exempel Som exempel på hur scenarier, objektmodeller, sekvensdiagram och tillståndsdiagram kan se ut i en mer sammanhållen beskrivning tittar vi på två exempel först metodiken, appendix 2 s 1 sen ett exempel telefonsamtal med scenario och sekvensdiagram, appendix 2 s 2-3 och slutligen ett billarm med ”kravspec”, objektmodell, scenario, händelseflödesdiagram, sekvensdiagram samt tillståndsdiagram, appendix 2 s 4-11
Design Vad är design? Vad säger några i väldig förenkling: Enligt RUP I design formar vi systemet så att det lever upp till alla krav. Fysisk modell. Specifik för viss implementation. Enligt OCTOPUS Målet är att systematiskt ta analysmodellen och skapa en beskrivning av hur systemet skall fungera på en abstraktionsnivå närmast över ett programmeringsspråk. Vi skapar en explicit modell och beskriver hur objekt interagerar med varandra. Enligt Douglass Definierar lösningar som optimerar applikationen och tar hänsyn till speciella krav och mål i projektet samtidigt som den inte bryter mot analysens beskrivningar. Design handlar alltid om optimering
Objekt Ett objektdiagram består av klasser, instanser och associationer Awad 6-3, s 98
Objektinteraktion Server-klient-modeller Objektinteraktion Trådar objektinteraktion är riktad och punkt-till-punkt den som frågar kallas för klient och den som genomför kallas server Objektinteraktion Vi tittar på systemet och ser hur olika objekt samarbetar Speciellt tittar vi på hur objekt reagerar på dom i analysen definierade händelserna och därmed följande kontrollflöde i vilket andra objekt indirekt reagerar Detta "flöde" brukar kallas objektinteraktion Trådar om en given objektinteraktion helt kan genomlöpas av en enda tråd talar vi om objektinteraktionstråd
…notation (OCTOPUS) Interaktionsgraf med intern delay med två trådar Awad 6-4, s 100 med intern delay Awad 6-5, s 101 med två trådar Awad 6-6, s 102
… kommunikation med tillståndsdiagram Vi kan integrera tillståndsdiagram i objektinteraktionsgrafen Awad 6-7, s 104 Nyckelordet statechart används för att indikera kommunikation med tillståndsdiagram Läsning respektive skrivning indikeras med hjälp av R respektive W
… händelsetrådar Följande figur Awad 6-8, s 106 Illustrerar hur en händelse från en "originator" till en "controller" leder till ett händelseflöde Objekt i omgivningen placeras underst Om interaktion med originatorn skall ske så måste denna också (parallellt) placeras nederst då den initiala händelsen bara är "triggande" utan association
… icke kvalificerade händelsetrådar Börja med interaktionsmodell där vi antar momentan behandling, s.k. icke kvalificerad interaktionsmodell Bra att börja med denna idealiserade modell och först senare införa asynkrona meddelanden, returmeddelanden och mer användning av interna väntepunkter osv
… konstruktion av händelsetrådar Vi bygger händelsetrådar till ett visst delsystem genom att gå igenom dom händelser vi identifierat i analysen och utför följande sju steg 1 Välj en ännu icke behandlad händelse 2 Identifiera ett objekt som påverkas av händelsen 3 Designa och "bokför" efterföljande interaktion 4 Slå ihop den nya interaktionstråden med tidigare 5 Repetera steg 3 så länge nya involverade objekt kan hittas 6 Repetera från steg 1 tills alla händelser genomgångna 7 Iterera och balansera användningen av objekt och tillståndsdiagram
... Följande bilder illustrerar förloppet Awad s 110-111 Se också beskrivningen och förklaringarna på dessa sidor
Tidsdiagram I elektronikindustrin har tidsdiagram använts länge vid design av elektronisk tillståndsmaskiner Ett tidsdiagram är ett diagram med tiden längs den horisontella axeln och objektens tillstånd längs den vertikala D s 171-175, 178