Sunteți pe pagina 1din 38

Facultatea de Automatică şi Calculatoare

Departament Automatică şi Ingineria Sistemelor

Sisteme în timp real


Semestrul 2, 2018-2019

Curs 3

March 7, 2019
Descrierea comportamentului – modelul de interacțiuni
- diagrame de secvențe -

Sisteme în Timp Real 7 martie 2019 104


Model de interacțiuni

• model de interacțiuni = o perspectiva asupra sistemului care pune in evidenta


comportamentul sistemului ca întreg (așa cum este văzut acesta de către utilizatorii
externi)
• utilizează:

• diagrame de secvențe (sequence diagrams)


• diagrame de activități (activity diagrams)
• diagrama de interacțiune (interaction overview diagrams)
• diagrame de stare (state machines diagrams)

Model de interacțiuni:
⚫ sistemul este văzut ca un black box, funcționalitățile sale fiind

exprimate din perspectiva utilizatorului


⚫ va captura cerințele sistemului, fără a aborda o soluție de

implementare

Sisteme în Timp Real 7 martie 2019 105


Model de interacțiuni

⚫ Exemplu 1
⚫ M.W. Richardson, Designing a Home Alarm using UML

⚫ Exemplu 2
⚫ Controlul unui satelit pe orbită – diagrama de secvențe

Sisteme în Timp Real 7 martie 2019 106


Diagrame de interactiune – UML 2.5.1

Tipurile de diagrame definite in UML 2.0

Diagrame de Diagrame de
structura comportament
(structure) (behaviour)

Diagrama Diagrama de Diagrama de Diagrama de Diagrama cazurilor Diagrama de


de clase componente implementare activitati de utilizare stare (state
(class) (component) (deployment) (activity) (use case) machine)

Diagrama de
interactiuni
Diagrama de Diagrama de structura (interaction)
obiecte compusa (composite
(object) structure)

Diagrama de
pachete (package)
Diagrama de Diagrama de Diagrama de Diagrama
secvente comunicatie interactivitate de timp
(sequence) (communication) (interaction (timing)
overview)

Sisteme în Timp Real 7 martie 2019 107


SysML 1.5 (May 2017) - diagrame

OMG Systems Modeling Language Version 1.5, OMG Document


Number: formal/2017-05-01, Release date: May 2017,
https://www.omg.org/spec/SysML/1.5/

Sisteme în Timp Real 7 martie 2019 108


Model de interacțiuni

⚫ mesaj - mecanismul prin care obiectele colaborează (interacționează) intre ele pentru a
realiza comportamentul dorit al sistemului (specificat prin intermediul scenariilor
bazate pe cazuri de utilizare)
⚫ de multe ori, un mesaj poate fi implementat ca o simpla activitate
⚫ e.g un obiect apelează o metodă din alt obiect
⚫ după executarea activității, controlul este returnat apelantului, împreună cu o
valoare return

mesaj

seteazaViteza(valoare)
:ComputerBord :SistemControlViteza

Sisteme în Timp Real 7 martie 2019 109


Diagrame de secvențe
⚫ modelează comportamentul sistemului, exprimat prin intermediul cazurilor de utilizare,
descriind modul în care grupuri de “obiecte” interacționează între ele pentru a îndeplini
un task
⚫ arata secvențele de mesaje – interacțiuni – între instanțe
⚫ fiecare diagrama dezvolta doar un set posibil de mesaje – scenariu – nu tratează toate
mesajele posibile în sistem
⚫ se citesc de la stânga la dreapta si de sus in jos
⚫ pun in evidenta desfășurarea evenimentelor în timp

Scenariu 1: Scenariu 2:
Log on to system. Log on to system.
Approve log on. Approve log on.
Enter subject in search. Enter subject in search.
Get course list. Invalid subject.
Display course list. Re-enter subject.
Select courses. Get course list.
Confirm availability. Display course list.
Displaty final schedule. Select courses.
Confirm availability.
Display final schedule.
Sisteme în Timp Real 7 martie 2019 110
Diagrame de secvențe - elemente

⚫ diagrama de secvențe descrie un model de interacțiune intre obiecte, aranjate in ordine


cronologica
⚫ prezinta obiectele care participa la interacțiune prin ”linii de viața” - lifelines - si
mesajele pe care acestea le trimit intre ele

O interacțiune descrie Obiect1:Clasa1


:Tip Actor Nume:Tip Actor
o comunicație intre
liniile de viață, fiind bazata
pe schimbul de mesaje instanta
de mesaj
(metode ale claselor in Java) executie sicron

• liniile de viață descriu operator


participanții la comportamentul interactiune mesaj sicron

sistemului
valoare
linie de
• mesajele modelează viata
interacțiunile dintre participanți mesaj
asincron
distrugerea obiectului
la finalizarea interactiunii

Sisteme în Timp Real 7 martie 2019 111


Diagrame de secvente - elemente:

⚫ o linie de viata
⚫ reprezinta un partener de

comunicatie intr-o
interactiune
⚫ descrie numele, tipul si ciclul

de viata al elementului
respectiv :Tip Actor
Obiect1:Clasa1
Nume:Tip Actor

⚫ un partener de comunicatie instanta


mesaj
reprezentat de o linie de viata este de
executie sicron
un rol
⚫ diagrama arata cu cine este

conectat (cu cine poate operator


comunica) rolul respectiv interactiune mesaj sicron

⚫ toate liniile de viata se termina la


sfarsitul interactiunii linie de
valoare

viata

mesaj
asincron
distrugerea obiectului
la finalizarea interactiunii

Sisteme în Timp Real 7 martie 2019 112


Diagrame de secvențe - elemente:
⚫ mesajele pot fi sincrone sau asincrone si pot invoca o operație, pot transporta un
semnal, sau pot crea un obiect
⚫ notație: o săgeata îndreptată de la linia de viață a transmițătorului către linia de

viață a receptorului

Mesaje sincrone:
⚫ săgeata plina Obiect1:Clasa1
:Tip Actor Nume:Tip Actor
⚫ transmițătorul așteaptă pana când

receptorul procesează mesajul


⚫ mesajul returnat la transmițător
instanta
de mesaj
este reprezentat cu săgeata punctata executie sicron

operator
Mesaje asincrone: interactiune mesaj sicron

⚫ săgeată deschisa

⚫ transmițătorul nu așteaptă răspunsul valoare

receptorului, ci își linie de


viata

poate continua activitatea mesaj


asincron
distrugerea obiectului
la finalizarea interactiunii

Sisteme în Timp Real 7 martie 2019 113


Diagrame de secvențe - elemente
Obiect1:Clasa1
:Tip Actor Nume:Tip Actor
⚫ frame de interacțiune

− definesc o expresie pentru instanta


de mesaj
fragmente de interacțiune executie sicron

operator
interactiune mesaj sicron

valoare
linie de
Operatorii de interacțiune viata

⚫ definesc modul in care conținutul mesaj

descrie comportamentul, de exemplu asincron


distrugerea obiectului
la finalizarea interactiunii
⚫ Alt: fiecare secțiune reprezintă o
alternativa
⚫ Ref: referință la alt caz de utilizare
⚫ Loop: specifica o secvență de
comportament care se repeta

Sisteme în Timp Real 7 martie 2019 114


Diagrame de secvențe – operatori de interacțiune

⚫ alt: fiecare secțiune reprezintă o alternativa


⚫ e.g alt[x != 0]

:Client :OficiuBancar

alt
[x!=0] openAccount()

else
closeAccount()

enterPIN()

pin()

Sisteme în Timp Real 7 martie 2019 115


Diagrame de secvențe – operatori de interacțiune (exemplu)

Sisteme în Timp Real 7 martie 2019 116


Diagrame de secvențe – operatori de interacțiune

⚫ ref: reutilizează o diagrama de secvențe deja existenta, pentru a evita duplicarea

:Client :CoffeeMachine
:Client :CoffeeMachine

theMessage("Insert Coins")

Coin()

ref
InsertCoins
OK()

Coffee()

CupofCoffee()

Ref
ReturnCoins

Seq MakeCoffee Seq InsertCoins


Sisteme în Timp Real 7 martie 2019 117
Diagrame de secvențe – marca de timp
ENV :Object_1 :Object_2 :Object_3

Marca de timp cu
Message_0() functii de utilitate
Message_1()
Marca simpla {< 2ms} { if t<20ms utility(t) = 10}
de timp {if (t>=20ms and t<= 50ms) utility(t) = 5 }
Message_2() {if (t>50ms) utility(t) = 0}

Message_3()

partition lines are used to divide up scenarios into chunks and add annotations
Message_4()

a Message_5()
Message_6()

Marca b Message_7()
eveniment c
d
d'
{d' – d < 35 ms}

Marca simpla
de timp

Sisteme în Timp Real 7 martie 2019 118


Diagrama de secvențe

Sisteme în Timp Real 7 martie 2019 119


Diagrama de secvente

Sisteme în Timp Real 7 martie 2019 120


Diagrame de secvențe – relația cu diagrama de cazuri de utilizare

⚫ Exemplu 1: Home Alarm

home alarm

occupation simulation

«Extends»

detect intrusions

sound alarm intruder

arming and disarming

homeowner
code entry

changing code

Sisteme în Timp Real 7 martie 2019 121


Exemplu - HomeAlarm

⚫ use case: Detect Intrusion in alarm

Will detect two types of intrusion:

1. The door will allow a temporised delay for entering


into the house and disarming the alarm.

2. A movement detection will action the alarm immediately.

⚫ use case: Occupation Simulation in alarm

When the alarm is armed, the house lights can be


switched on and off to simulate presence.

One upstairs and one downstairs light, will be


switched on/off independently when ever the alarm is active.

The timing of switching on and off the lights is to be defined

Sisteme în Timp Real 7 martie 2019 122


Exemplu - HomeAlarm

⚫ use case: Arming and Disarming in alarm

The home alarm can be armed and disarmed via a simple remote control that has two keys
"arm" and "disarm"

The alarm can also be armed and disarmed by using a simple keypad installed in the house. Once
armed the homeowner has 5 seconds to exit the house. When entering the house, the homeowner
has 5 seconds to disarm the code.

To arm : press 4 keys to enter code


press key on

To disarm : press 4 keys to enter code


press key off

When armed the red led will be on.

⚫ use case: Sound Alarm in alarm

When an instrusion has been detected the siren will be activated.

Sisteme în Timp Real 7 martie 2019 123


Exemplu - HomeAlarm

⚫ use case: Code Entry in alarm

The keypad has ten keys numbered 0 through 9.


A code is any four digits.
By default the code is 1234

If at any time a mistake is made, the Off key can be pressed


to restart entering the code.

⚫ use case: Changing Code in alarm

To change the code, the homeowner must do the following :

key on
enter old code
key on
enter new code
key on

If the code is successfully changed the green led will flash four times.

Sisteme în Timp Real 7 martie 2019 124


:homeowner :HomeAlarm
Obiecte

Exemplu - HomeAlarm Mesaje

Proprietarul armeaza alarma


key(1)
prin introducerea codului si apoi
⚫ diagrama de apasa tasta ON
secvente key(2) Dupa ce s-a apasat o tasta,
asociata cazului key(3)
proprietarul are la dispozitie
< 5 sec > 5 secunde pentru a introduce
de utilizare codul si a apasa tasta ON

Arming and Daca s-a introdus corect


codul, dupa un delay
key(4)

Disarming – (EXIT_TIME), alarma va fi


keyOn()
armata
scenariu Dupa ce s-a introdus
codul, tasta ON va fi
armarea
< 3 sec>
mentinuta apasata
alarmei timp de 3 secunde

Led-ul se va aprinde si redLedOn()


stinge pana la expirarea < EXIT_TIME >
intervalului EXIT_TIME redLedOff()

In acest timp, vor fi ignorate


atat deschiderea usilor, cat redLedOn() Led-ul se va aprinde cu o
si orice miscare din casa frecventa de 2Hz
redLedOff()

redLedOn()
Sistemul de alarma este pornit
si va detecta deschiderea
usilor si orice miscare din
camera

Timp

Sisteme în Timp Real 7 martie 2019 125


:homeowner :HomeAlarm

Exemplu - HomeAlarm
The homeowner can change the code keyOff()
to do so he/she must first press the on key.
This must be done at least 5 seconds after
diagrama de secvente
keyOn()
⚫ any numeric key has been pressed. ( unless

asociata cazului de utilizare


the off key is first pressed to exit from the
code entry mode ).

Changing Code – scenariu The homeowner must now enter the correct
code followed by the on key. key(1)
schimbarea codului
key(2)

key(3)

key(4) < 10 sec >

keyOn()

If the code is correct, then the homeowner key(n)


must enter a new four digit code again
followed by the on key. key(n)

key(n)

key(n)

keyOn()

If the code is successfully changed, then the


green led will be flashed four times.

greenLedOff()
< 500mS >
greenLedOn()

Sisteme în Timp Real 7 martie 2019 126


:intruder :HomeAlarm

Exemplu - HomeAlarm
Initially the alarm is armed

⚫ diagrama de The intruder opens a door. A delay is


secvente started for entry time.
During this time, the red LED is flashed
detectDoorOpen()

asociata cazului indicating that the alarm is arming


redLedOff()
de utilizare redLedOn()
Detect
< ENTRY_TIME >
redLedOff()
LED's will flash at a rate of 2Hz
Intrusions – redLedOn()
scenariu sirenOn()
detectarea
deschiderii usii < ALARM_TIME >

After a certain delay, the siren is switched


off to stop annoying neighbours. During another
delay any movement / doors opening will be
ignored.

After the SILENCE_TIME delay, the system sirenOff()


will again react to any movement or any doors
opening
< SILENCE_TIME >

Sisteme în Timp Real 7 martie 2019 127


Exemplu - HomeAlarm
:intruder :HomeAlarm

Initially the alarm is armed

⚫ diagrama de secvente
asociata cazului de The intruder enters into a room
Immediately the siren is activated detectMovement()
utilizare Detect
Intrusions – scenariu sirenOn()
detectarea unei
miscari < ALARM_TIME >

After a certain delay, the siren is switched sirenOff()


off to stop annoying neighbours. During another
delay any movement / doors opening will be
ignored. < SILENCE_TIME >

After the SILENCE_TIME delay, the system


will again react to any movement or any doors
opening

Sisteme în Timp Real 7 martie 2019 128


Exemplu 2 - Controlul unui satelit pe orbită
– diagrama de secvențe

Sisteme în Timp Real 7 martie 2019 129


Diagrama de secvențe pentru controlul unui satelit pe orbită

• in orbital mechanics a transfer orbit is an intermediate elliptical orbit that is used to


move a satellite or other object from one circular, or largely circular orbit to another
• there are several types of transfer orbits, which vary in their energy efficiency and speed
of transfer, for example
– Hohmann transfer orbit, an elliptical orbit used to transfer a spacecraft between two
circular orbits of different altitudes in the same plane

• Execute Hohmann Transfer, Main Success Scenario – este o diagrama de


secvențe care descrie un scenariu asociat cazului de utilizare Execute Hohmann
Transfer, scenariu definit in modelul sistemului
– acest scenariu descrie ce se întâmplă atunci când satelitul primește o comandă de
transfer validă

Sisteme în Timp Real 7 martie 2019 130


Diagrama de secvențe
pentru controlul unui
satelit pe orbită

Sisteme în Timp Real 7 martie 2019 131


Diagrama de secvențe pentru controlul unui satelit pe orbită

• element de model din diagrama de secvențe – lifelines: reprezintă


– un participant in interacțiune, adică
– o singura instanță care participa într-o interacțiune prin schimb de mesaje cu alte
linii de viață
• o linie de viață care apare într-o interacțiune corespunde proprietăților unei părți a
blocului care deține interacțiunea (adică sistemul ca întreg, un subsistem, sau o simpla
componenta)
– arata doar ordinea apariției evenimentelor

Sisteme în Timp Real 7 martie 2019 132


Diagrama de secvențe pentru controlul unui satelit pe orbită

• element de model din diagrama de secvențe – lifelines


• notația: un dreptunghi cu o linie punctata
– linia punctata reprezintă linia de viață a proprietății părții, in funcție de participarea
in interacțiunea respectiva (nu pe toata durata existentei sistemului)
– dreptunghiul identifica proprietatea părții pe care o reprezintă linia de viață
<part property name> [<selector expression>] : <type>
– type: este un bloc sau un actor definit undeva in model (de obicei este un bloc, dar
daca diagrama de secvențe prezinta interacțiuni la nivel de domain level, adică intre
sistem si actorii din mediu, atunci pot exista lifelines care corespund unor actori)
– selector expression: este opțională, se refera la o instanță particulara definita de linia
de viață respectiva

Sisteme în Timp Real 7 martie 2019 133


Diagrama de secvențe pentru controlul unui satelit pe orbită

• elemente de model din diagrama de secvențe – mesaje


– reprezintă o comunicație intre doua lifelines, lifeline si receiving lifeline
– OBS: in SysML, a message between two lifelines could represent a call to an
operation, for example, even if no data are passed in with that message; it is possible
that data (or objects generally) are passed between lifelines (by displaying
arguments in the name string for a message)

Sisteme în Timp Real 7 martie 2019 134


Diagrama de secvențe pentru controlul unui satelit pe orbită

• apariții de evenimente (message occurrence) pe lifelines


– eveniment de tip message send
– eveniment de tip message receive
– eveniment de tip creare lifeline
– eveniment de tip distrugere lifeline
– eveniment de tip start execuție comportament
– eveniment de tip terminare execuție comportament

Sisteme în Timp Real 7 martie 2019 135


Diagrama de secvențe pentru controlul unui satelit pe orbită

• Lifelines - evenimente de tip message send / message receive


• every time you create a message from one lifeline to another (or from one lifeline back to
itself ), you are modeling both a message send occurrence and a message receive
occurrence
• measureAltitude message is an asynchronous message

Sisteme în Timp Real 7 martie 2019 136


Diagrama de secvențe pentru controlul unui satelit pe orbită
• elemente de model din diagrama de secvențe – tipuri de mesaje
– mesaj asincron: reprezintă comunicația dintre o sending lifeline si o receiving lifeline, la care
sender-ul își continua imediat execuția după ce transmite mesajul
• sender-ul nu așteaptă ca receiver-ul sa termine de executat comportamentul cerut in
mesaj; de asemenea, nu așteaptă ca receiver-ul sa trimită un reply când finalizează execuția
acestui comportament
<message name> ( <input argument list> )
• numele mesajului trebuie sa fie același cu
numele cu care se recepționează in
receiving lifeline; o “reception” este un fel
de caracteristica comportamentala a unui
bloc, care este întotdeauna invocata in
mod asincron
• e.g. mesajele transmise intre obiecte, care
corespund metodelor claselor Java
implicate in comunicația intre obiectele
sender si receiver

Sisteme în Timp Real 7 martie 2019 137


Diagrama de secvențe pentru controlul unui satelit pe orbită

• elemente de model din diagrama de secvențe – tipuri de mesaje


– mesaj asincron: reprezintă comunicația dintre o sending lifeline si o receiving lifeline, la care
sender-ul își continua imediat execuția după ce transmite mesajul
– blocul fc trimite un mesaj asincron denumit measureAltitude catre blocul mans; când
primește acest mesaj (sau la un anumit moment după) blocul mans începe să execute
comportamentul asociat recepționării mesajului measureAltitude;
– linia fc nu așteaptă să se finalizeze execuția
acestui comportament, ci își continuă execuția
proprie imediat după transmiterea mesajului
measureAltitude si transmite un alt mesaj
checkSensorStatus
– OBS: daca measureAltitude ar fi fost un
mesaj sincron, linia fc ar fi așteptat ca pe linia
mans să se termine execuția
comportamentului measureAltitude si să
trimită reply înapoi către linia fc înainte ca
fc să-si continue execuția proprie si să
trimită mesajul checkSensorStatus

Sisteme în Timp Real 7 martie 2019 138


Diagrama de secvențe pentru controlul unui satelit pe orbită

• elemente de model din diagrama de secvențe – tipuri de mesaje


– mesaj sincron: reprezintă comunicația dintre o sending lifeline si o receiving lifeline, la care
sender-ul așteaptă ca receiver-ul sa termine de executat comportamentul invocat si sa
transmită înapoi un mesaj reply, după care sender-ul își poate continua propria execuție
<message name> ( <input argument list> )
• numele mesajului trebuie sa fie același cu numele unei operații (operation) deținute de
receiving lifeline
• e.g.: doua mesaje sincrone care reprezintă doua
apeluri distincte ale operației (in Java sunt metode
ale clasei) fireThrusters, care este deținută de
Propulsion Subsystem
• fc trimite primul mesaj sincron
fireThrusters către ps; la primirea acestui
mesaj (sau la un moment nedeterminat ulterior)
ps va începe execuția comportamentului asociat
operației fireThrusters
• fc lifeline trebuie sa aștepte sa se termine de
executat acest comportament (si sa aștepte si
mesajul de reply de la ps, care marchează
finalizarea comportamentului) înainte ca fc sa-si
poată continua execuția si sa trimită al doilea
mesaj fireThrusters la un moment ulterior
• block
Sisteme în Timp Real 7 martie 2019 139
Diagrama de secvențe pentru controlul unui satelit pe orbită

• elemente de model din diagrama de secvențe – tipuri de mesaje


– mesaj de răspuns (reply message): reprezintă o comunicație care marchează finalul unui
comportament invocat in mod sincron; este transmis întotdeauna de către linia de viață care a
executat comportamentul la linia de viață care a invocate acest comportament (via un mesaj
sincron transmis anterior in interacțiune)
<assignment target> = <message name> (<output argument list>) : <value specification>

– numele mesajului reply trebuie sa coincidă cu numele mesajului sincron corespunzător (care
este si numele operației care a fost invocate de către mesajul sincron)
• OBS: este opțională specificarea mesajului reply (cu linia
punctate si săgeată deschisă; înțelesul este implicit)
• block

Synchronous messages in an interaction


Synchronous messages with implicit reply messages
Sisteme în Timp Real 7 martie 2019 140

S-ar putea să vă placă și