automazione industriale 5 - il linguaggio descrittivo uml · settembre - dicembre 2 2010...
TRANSCRIPT
Università degli Studidi Modena e Reggio Emilia
AutomationRobotics and
SystemCONTROL
Automazione Industriale5 - Il linguaggio descrittivo UML
Cesare Fantuzzi ([email protected])
Ingegneria MeccatronicaIngegneria della Gestione Industriale
AA 2010/2011
Università degli Studidi Modena e Reggio Emilia
AutomationRobotics and
SystemCONTROL
UNIFIED MODELINGLANGUAGE
Nota: il materiale didattico è adattato dal materiale sviluppato in collaborazione con Marcello Bonfè ([email protected]), dell’Università di Ferrara.
2Settembre - Dicembre 2010
Automazione Industriale - 5. UML
Analisi e Progettazione
� Analisi : studio di cosa deve fare il sistema e come esso è composto (dal punto di vista “logico”)
� Progettazione : studio di come implementare il sistema (dal punto di vista “tecnico”)
� Nel ciclo di ciclo di sviluppo e con l’approccio OO, la distinzione tra le due attività può essere sottile: analizzare i distinzione tra le due attività può essere sottile: analizzare i requisiti funzionali significa anche identificare possibili oggetti e classi concettuali (base della progettazione dettagliata)
� Il punto cruciale è definire dei metodi adeguati per la descrizione delle specifiche risultanti sia dall’analisi che dalla progettazione (relazioni tra classi, interazioni, struttura del sistema, comportamento, ecc.)
Settembre - Dicembre 2010
Automazione Industriale - 5. UML 3
Importanza dei metodi descrittivi
� I metodi di Ingegneria del Software hanno l'obiettivo di fornire al progettista strumenti indipendenti dai linguaggi di programmazione per strutturare l’applicativo.
� Questi strumenti devono permettere di fare fronte alla complessità dei problemi, utilizzando solo i concetti
Settembre - Dicembre 2010
complessità dei problemi, utilizzando solo i concetti caratteristici dell’approccio progettuale, piuttosto che i costrutti del linguaggio usato per l’implementazione.
� Tali strumenti sono i linguaggi descrittivi (di specifica) con i quali ottenere le Descrizioni concettuali (Modelli) per l’analisi e la progettazione.
4Automazione Industriale - 5. UML
Perché è necessario un modello grafico?
� Per comprendere al meglio le specifiche di progetto.� Per comprendere al meglio ed il prima possibile
eventuali criticità.� Per evitare errori ed omissioni nella analisi dei requisiti
del committente.� Per facilitare le comunicazioni fra il team di progetto.
Settembre - Dicembre 2010
� Per facilitare le comunicazioni fra il team di progetto.� Per sviluppare un piano di test e validazione.� Per documentare il progetto.
5Automazione Industriale - 5. UML
Caratteristiche di un linguaggio di specifica
� Un linguaggio di specifica deve essere:– Intuitivo, semplice da usare e da comprendere...– ... ma Formale e non ambiguo (sintassi e semantica ben
definite)– Indipendente dal linguaggio target...
Settembre - Dicembre 2010
– ... ma adattabile al contesto applicativo– Standardizzato (e realmente usato!)– Supportato da strumenti software (CASE) efficienti e
facilmente usabili.
6Automazione Industriale - 5. UML
Un linguaggio per la progettazione OO: UML
� Tra gli anni 70’ e 90’ sono state proposti molti metodi dianalisi e progettazione (Booch, Object Modeling o OMT Schaler/Mellor, etc.), e linguaggi di specifica.
� Le numerose similitudini tra questi linguaggi hanno fatto nascere l’esigenza di una standardizzazione .
Settembre - Dicembre 2010
nascere l’esigenza di una standardizzazione .� Standard: Unified Modeling Language pubb.da OMG
(Object Management Group).
http://www.uml.org/
7Automazione Industriale - 5. UML
Primo… cosa è UML?
� La specifica OMG definisce UML come:
“The Unified Modeling Language (UML) is a graphical language for visualizing, specifying, constructing, and documenting the artifacts of a software-intensive system. documenting the artifacts of a software-intensive system. The UML offers a standard way to write a system's blueprints, including conceptual things such as business processes and system functions as well as concrete things such as programming language statements, database schemas, and reusable software components."
Settembre - Dicembre 2010
Automazione Industriale - 5. UML 8
Che cosa NON è UML
� Lo UML non è un linguaggio di programmazione visuale.
� UML non è un processo di sviluppo .– Non fornisce direttive su come fare evolvere un progetto
software.
Settembre - Dicembre 2010
9
software.
Automazione Industriale - 5. UML
UML (Unified ModelingLanguage)
� Linguaggio interamente visuale (basato su una sintassi grafica).
� I diagrammi UML consentono di catturare le specifiche di progetto da “diversi punti di vista”:– Requisiti funzionali => Requirement Capture.
Settembre - Dicembre 2010
10
– Requisiti funzionali => Requirement Capture.– Classificazione e relazioni tra gli oggetti => Object
structure.– Comportamento degli oggetti => Object behaviour
Automazione Industriale - 5. UML
I diagrammi dello UML
� Descrizione requisiti: (1) Use Case Diagrams� Struttura statica dell’applicativo: (2) Class diag.� Comportamento dinamico (individuale): (3) Statechart
diag.� Comportamento di interazione: (4)Collaboration, (5)
Settembre - Dicembre 2010
12
� Comportamento di interazione: (4)Collaboration, (5) Sequence and (6) Activity diag.
� Architettura implementativa: (7) Component and (8) Deployment diag.
Automazione Industriale - 5. UML
Università degli Studidi Modena e Reggio Emilia
AutomationRobotics and
SystemCONTROL
USE CASE DIAGRAMS
Un caso d’uso (USE CASE) rappresenta una funzionalità completa così come viene percepita da un attore che interagisce con il sistema.
Settembre - Dicembre 2010
13Automazione Industriale - 5. UML
Cattura dei requisiti: Use Case diagrams
� Definisce un comportamento coerente senza rivelare la struttura interna del sistema.
� Il comportamento viene definito attraverso la descrizione di un “caso d’uso ” del sistema.
� Il caso d’uso e’ attivato da un “utente del sistema ” o “Attore ”.
Settembre - Dicembre 2010
15
“Attore ”.� L’utente e’ una qualunque entità che interagisce con il
sistema che si vuole progettare.� Gli Use Case Diagrams sono quindi il punto di partenza
del processo di sviluppo (Requirements analysis )
Automazione Industriale - 5. UML
Un esempio: cella robotizzata.
Il robot deve prelevare materiale dalla cella di stoccaggio del materiale grezzo e collocarlo nella cella di lavorazione. I sistemi di controllo remoto (sistema gestionale o
Settembre - Dicembre 2010
17
(sistema gestionale o controllore locale) inviano il comando di start e rimangono in attesa della fine del ciclo di lavoro (stop ). L’utente può richiedere l’esecuzione di un ciclo di lavoro.
Automazione Industriale - 5. UML
Elementi del diagramma: Generalizzazione/Specializzazione
Settembre - Dicembre 2010
18Automazione Industriale - 5. UML
Relazioni tra i Casi d’Uso
� Generalizzazione/Specializzazione : questa relazione è analoga a quella fra una classe base e una derivata, cioè il caso d’uso “specializzato” dovrebbe “ereditare” le caratteristiche di quello base ed eventualmente ridefinirne alcune.
� Inclusione (Include) : è una relazione del tipo
Settembre - Dicembre 2010
20
� Inclusione (Include) : è una relazione del tipo client/server fra casi d’uso, cioè una funzionalità comune viene “sfruttata” per realizzare altri casi d’uso.– E’ equivalente alla chiamata di una procedura.
Automazione Industriale - 5. UML
Relazioni tra i Casi d’Uso (cont.)
� Graficamente, la generalizzazione è raffigurata da una freccia continua con punta triangolare, l’inclusione con una freccia tratteggiata e la notazione testuale <<include>>:
Settembre - Dicembre 2010 21Automazione Industriale -5. UML
Scomposizione gerarchica dei “casi d’uso”
� Gli Use Case Diagrams prevedono sempre un sistema e gli attori esterni, perciò si possono considerare anche “diagrammi di contesto ” (Context Diagrams)
� Tuttavia, può essere utile già a livello di definizione dei requisiti, identificare una scomposizione del sistema
Settembre - Dicembre 2010
22
requisiti, identificare una scomposizione del sistemaglobale in sotto-sistemi distinti, descrivendo per ognuno di essi una vista dei Casi d’Uso.
� Ovviamente, ogni sotto-sistema avrà la sua “bounding box” e interagirà con degli attori che possono essere gli stessi del diagramma di contesto globale più gli altri sotto-sistemi
Automazione Industriale - 5. UML
Un esempio: un sistema Azienda
Azionista
Sistemaazienda
Acquirente
Distribuiscidividendi
Acquistamerci
Settembre - Dicembre 2010
23
Azionista
StatoFornitore
merci
Paga tasse
Acquista materieprime
Automazione Industriale - 5. UML
Un esempio: un sistema Azienda (cont.)
Sistema produzione
Sistemavendite
Acquirente
Settembre - Dicembre 2010
25
produzione
Sistemaamministrazione
Automazione Industriale - 5. UML
Come descrivere i “casi d’uso”?
� I casi d’uso definiscono una vista statica delle specifiche.� Il comportamento del caso d’uso (vista dinamica) è definito
con descrizioni testuali o con altri diagrammi UML (es. Sequence Diagrams, State Diagrams, etc.)
� Possiamo collegare agli Use Case Diag le info:– documenti “informali” scambiati con il cliente.
Settembre - Dicembre 2010
26
– documenti “informali” scambiati con il cliente.– i requisiti non funzionali a quelli funzionali (es. vincoli
sulle prestazioni, elenco messaggi ed eventi scambiati con l’utente).
– descrizioni più dettagliate (es. con Sequence Diagrams) di scenari base (funzionamento normale) e alternativi (funzionamento anomalo), da usare per i test di validazione.
Automazione Industriale - 5. UML
Flusso delle attività (esempio)
Caso d’uso: “Afferra pezzo grezzo”� Precondizione: Il braccio deve essere collocato sul pezzo.� Flusso di attività (passi):
1. Apri pinza2. Scendi sul pezzo3. Chiudi pinza
Settembre - Dicembre 2010
27
3. Chiudi pinza4. Sali in posizione di volo
� Postcondizione: Braccio collocato sul pezzo, pezzo afferrato.
Automazione Industriale - 5. UML
Descrizione del Flusso delle attività
� Il flusso delle attività viene descritto da una sequenza di passi che debbono essere eseguiti per implementare la funzionalità.
� (Opzionale):– Le precondizioni, cioè quale è la condizione del sistema
prima che sia eseguito il caso d’uso.
Settembre - Dicembre 2010
28
prima che sia eseguito il caso d’uso.– Le postcondizioni, cioè le condizioni del sistema dopo che è
eseguito il caso d’uso.
Automazione Industriale - 5. UML
Il ruolo dei “casi d’uso” nellacattura delle specifiche
� L’analisi delle descrizioni testuali associate ai Casi d’Uso permette di identificare gli elementi concettuali candidati a diventare oggetti, classi, relazioni ed operazioni da implementare
� Linee guida per l’analisi dei Casi d’Uso:– identificare i Casi d’Uso evidenziando i verbi “attivi” riferiti
Settembre - Dicembre 2010
29
– identificare i Casi d’Uso evidenziando i verbi “attivi” riferiti al sistema nei documenti di specifica del committente
– identificare per ogni Caso d’Uso gli attori e le possibili sequenze di eventi
– identificare oggetti e classi evidenziando i nomi nella descrizione testuale di ogni Caso d’Uso (NB: un oggetto può partecipare a più Casi d’Uso)
Automazione Industriale - 5. UML
Università degli Studidi Modena e Reggio Emilia
AutomationRobotics and
SystemCONTROL
CLASS DIAGRAMSIl Diagramma delle Classi descrive la struttura statica del sistema.
Settembre - Dicembre 2010
30Automazione Industriale - 5. UML
Definizione di classe
� Aristotele: Tutti gli esseri viventi (oggetti) sebbene unici, appartengono a determinati insiemi (classi) caratterizzati dal possedere– Le stesse caratteristiche e – Lo stesso comportamento
Settembre - Dicembre 2010
31
– Lo stesso comportamento
� Tutti gli oggetti sono “istanze” di classi.� La classe è una entità che consente di descrivere
formalmente proprietà e comportamento di una categoria di oggetti simili.
Automazione Industriale - 5. UML
Relazione tra oggetti e classi
� La relazione tra Classe e Oggetto è analoga a quella tra Tipo e Variabile
Settembre - Dicembre 2010
32Automazione Industriale - 5. UML
Elementi fondamentali di un oggetto.
� Un oggetto possiede– Uno stato– Un comportamento– Una identità
� La struttura e il comportamento di oggetti simili sono
Settembre - Dicembre 2010
33
� La struttura e il comportamento di oggetti simili sono definiti nella loro classe comune; i termini di istanza e oggetto sono intercambiabili [Grady Booch]
Automazione Industriale - 5. UML
Classe e oggetto
Class Name Object Name : Class
Attribute type = 'Value'
Nome della classe
Attributi (dati)
Metodo (operazione)
Settembre - Dicembre 2010
35
attribute:Type =initialValue
operation(arg list):return type
Attribute type = 'Value'Attribute type = 'Value'Attribute type = 'Value'
Attribute type = 'Value'
Classe Oggetto
Automazione Industriale - 5. UML
Attributi
� Gli attributi sono specificati da espressioni testuali nella forma:
Visibilità Nome : DataType [Molteplicità] = Valore iniziale
dove Visibilità può essere indicata con il nome o con un simbolo standard:+ public
Settembre - Dicembre 2010
36
+ public# protected– private~ package (v. seguito per la definizione di Package)
� La molteplicità è un concetto simile a quello della dimensione di un array. Può essere determinata in modo univoco, con un numero, o parzialmente determinato, con intervalli (es. 0..5) o espressioni contenenti * (es. 1..*)
Automazione Industriale - 5. UML
Operazioni di una Classe
� Le operazioni sono specificate da espression testuali nella forma:
Visibilità Nome ( Lista Parametri ) : Tipo Risultatodove per Visibilità valgono le regole esposte in precedenza� Un parametro in Lista Parametri può a sua volta essere
nella forma:
Settembre - Dicembre 2010
37
nella forma:Tipo Nome : DataType = Valore inizialedove Tipo può essere in, out, o inout (NB: si noti l’analogia
con IEC 61131-3
Automazione Industriale - 5. UML
Interfacce
� Gli attributi e le operazioni pubbliche costituiscono le interfacce tra una classe e il resto del sistema.
Settembre - Dicembre 2010
38Automazione Industriale - 5. UML
Interazioni tra le classi
� Associazione , ricollegabile ad una relazione run-time fra i relativi oggetti istanza ; a loro volta qualificata come:– semplice– di aggregazione
Settembre - Dicembre 2010
39
– di aggregazione– di composizione
Un’associazione può essere ulteriormente dettagliata con etichette testuali, direzionalità e molteplicità (ad entrambi i capi della linea).
� Generalizzazione , che specificano legami tra classi base e classi derivate.
Automazione Industriale - 5. UML
Interazioni fra classi
� Associazione semplice : gli oggetti di due classi legate da tale relazione comunicano tra loro (scambio di messaggi, richieste di operazioni).
� Il numero di oggetti di ciascun tipo che possono essere coinvolti dipende dalla molteplicità (es. 0..1, 1, 0..*, 1..*, etc…)
Settembre - Dicembre 2010
40Automazione Industriale - 5. UML
Interazioni fra classi
� Associazione di Aggregazione : una classe “contiene” l’altra. Se viene istanziata l’una, occorrono anche un certo numero di istanze dell’altra (dipendente dalla molteplicità dell’aggregazione).
1
Settembre - Dicembre 2010
41
1
1
Automazione Industriale - 5. UML
Interazioni fra classi
� Associazione di Composizione (o Aggregazione Forte): una una classe “contiene” l’altra ed è responsabile della creazione delle istanze di quest’ultima, le quali non sono condivisibili.
1
1
Settembre - Dicembre 2010
42
1
1
1
1
1
1
1
Automazione Industriale - 5. UML
Generalizzazione
� Generalizzazione : una classe più generica è la base per specializzarne il comportamento, definendo una classe derivata che ne eredita le caratteristiche, estendendole o ridefinendole.
Settembre - Dicembre 2010
43Automazione Industriale - 5. UML
Descrizione di una macchina
� Nel campo della automazione spesso il concetto di classe coincide con il concetto di oggetto (è difficile istanziare un oggetto hardware…)
� Il diagramma delle classi descrive la struttura staticadella macchina, la sua suddivisione in moduli e come
Settembre - Dicembre 2010
44
della macchina, la sua suddivisione in moduli e come questi moduli comunicano fra di loro.
Automazione Industriale - 5. UML
Un esempio: Tetra Pak filling machine
High High FlexFlex
High Flex
High Flex
MainMainEl. Cab.El. Cab.
Asep.& Fill.Asep.& Fill.
High Speed
High Speed
Settembre - Dicembre 2010
45
High High SpeedSpeedFamilyFamily
High High SpeedSpeedFamilyFamilyHigh FlexHigh Flex
FlexFlex
ASUASU--mm Forming Forming UnitUnit
FFUFFU
Chemicals
Chemicals
High High SpeedSpeedPortionPortion
High High SpeedSpeedPortionPortion
Automazione Industriale - 5. UML
<<Machine supervisor>>Filling Machine
<<Specialized Module>>High Speed Family finalfolder unit
<<Specialized Module>>High Speed Family forming unit
<<Module>>Forming Unit
<<Module>>Chemical Unit
<<Specialized Module>>Flexible forming unit
<<Specialized Module>>High speed portion flexible unit
<<Physical unit>>Main Electrical Cabin
<<Module>>Automatic SplicingUnit
Settembre - Dicembre 2010
46
<<Specialized Module>>High speed portion final folderunit
<<Specialized Module>>High speed aseptic unit
<<Specialized Module>>Flexible aseptic unit
<<Module>>Aseptic unit
<<Module>>Final Folder Unit
<<Specialized Module>>Flexible final folder unit
Automazione Industriale - 5. UML
Altri concetti…
� Interface : un’interfaccia è una particolare tipologia di classe che contiene solo dichiarazioni (non definizioni) di operazioni pubbliche (non ha stato né comportamento).
� Package : è un generico “contenitore” per un gruppo di elementi (di qualsiasi tipo) del modello correlati tra loro.
Settembre - Dicembre 2010
47
elementi (di qualsiasi tipo) del modello correlati tra loro.� Classi attive : sono classi le cui istanze devono avere a
run-time il proprio spazio di esecuzione separato (processo o thread).
Automazione Industriale - 5. UML
Interface
� E’ definita come una serie di operazioni che caratterizzano il comportamento dell’elemento.
� Specifica in sostanza quali “servizi standard” possono essere richiesti ad una classe senza specificare la struttura interna (astrazione)
� Una classe compatibile con una data interfaccia si dice che la realizza . Realizzazione
Settembre - Dicembre 2010
48
che la realizza . Realizzazione
Automazione Industriale - 5. UML
Package
� Il package è un elemento di organizzazione del modello
� Ogni elemento del modello deve appartenere ad uno ed un solo package (se non specificato è quello “default”)
� Un package ne può contenere altri, oppure avere relazioni del tipo “dipende da” con altri package: ad esempio, una classe di un package utilizza una classe di
Settembre - Dicembre 2010
49
esempio, una classe di un package utilizza una classe di un altro package
� Il package viene utilizzato per definire una unità omogenea (ad esempio un modulo macchina ben definito).
Automazione Industriale - 5. UML
Package (cont.)
UserInterface
SDIWindow MDIWindow
Scrollbar
ClientArea Monitoring
TempSensor
Sensor
ProximitySensor
Window
Settembre - Dicembre 2010
50
MotorControl
ContinuousMotor
Motor
StepperMotor
DeviceIO
Register
DualPortedRAM
ADConverter
SimpleDevice
UART
*
Automazione Industriale - 5. UML
Estensione del linguaggio: stereotipi
� Al fine di permettere l’adattamento del linguaggio ai concetti di un particolare contesto applicativo, UML ammette un meccanismo di estensione basato sulla definizione di nuove meta-classi, derivate da quelle standard, chiamate stereotipi.
� Gli stereotipi permettono l’estensione del vocabolariodi UML attraverso l’introduzione di nuovi simboli.
Settembre - Dicembre 2010
51
� Gli stereotipi permettono l’estensione del vocabolariodi UML attraverso l’introduzione di nuovi simboli.
� Ad uno stereotipo possono essere associati:– proprietà aggiuntive, chiamate “Tagged Values”– regole di utilizzo , identificate da vincoli formali
espressi nel linguaggio testuale OCL (Object Constraint Language).
Automazione Industriale - 5. UML
Utilizzo degli stereotipi
� Un insieme di stereotipi relativi ad un determinato contesto applicativo viene chiamato profilo
� Alcuni esempi di profili di dominio pubblico, sviluppati da esperti di Ingegneria del Software, sono quelli per Business Modeling, Web Modeling e per sistemi Real-Time (v. seguito)
� Nonostante la definizione di uno stereotipo si possa
Settembre - Dicembre 2010
54
� Nonostante la definizione di uno stereotipo si possa applicare a qualsiasi concetto di UML, la pratica più comune è quella di definire stereotipi della meta-classe classe
� Uno stereotipo di classe si può identificare precedendo il nome della classe con <<Nome Stereotipo>> o con un’icona (user-defined).
Automazione Industriale - 5. UML
Descrizione del comportamento in UML
� Che cosa si intende per Comportamento ?� Il comportamento è l’evoluzione nel tempo del sistema o di
una sua parte (oggetto o insieme di oggetti):– in risposta ad eventi (stimoli) esterni (al sistema o
all’oggetto) o generati internamente– visibile all’esterno oppure non visibile all’esterno
Settembre - Dicembre 2010
56
– visibile all’esterno oppure non visibile all’esterno� A cosa si può associare la descrizione di un
comportamento?– ad un Caso d’Uso– ad un Sistema o un Sotto-sistema– ad una Classe– ad un insieme di oggetti
Automazione Industriale - 5. UML
Come descrivere il comportamento con UML?
� Diagrammi di interazione : se il comportamento da descrivere è quello di un insieme di elementi che collaborano.
� Diagrammi di stato o di attività : se il comportamento da descrivere è quello individuale di un elemento del
Settembre - Dicembre 2010
57
descrivere è quello individuale di un elemento del modello
Automazione Industriale - 5. UML
Concetti comuni nei diagrammi d’interazione
� Interazione : un insieme di comunicazioni scambiate tra un gruppo di istanze , qualsiasi sia la modalità di comunicazione:– invocazione di operazioni– attivazione di segnali
Settembre - Dicembre 2010
58
– creazione e distruzione di altre istanze� è sempre possibile stabilire un ordine temporale
(eventualmente parziale) tra le comunicazioni
Automazione Industriale - 5. UML
Tipologia delle comunicazioni
� In ogni comunicazione c’è sempre un Mittente (sender ) e un Destinatario (receiver )
� Le comunicazioni possono distinguersi in:– Sincrone : il mittente attende che il destinatario abbia
“processato” la comunicazione (es. esecuzione
Settembre - Dicembre 2010
59
“processato” la comunicazione (es. esecuzione dell’operazione richiesta) per proseguire la propria attività
– Asincrone : il mittente prosegue la propria attività dopo aver “spedito” la comunicazione
� Ovviamente, le comunicazioni asincrone presuppongono che le istanze coinvolte siano relative a classi attive
Automazione Industriale - 5. UML
Terminologia
� Chiamata (Call): specifica dell’attivazione di una comunicazione sincrona.
� Operazione: servizio fornito dal destinatario che permette al mittente di effettuare la comunicazione sincrona
Settembre - Dicembre 2010
60
sincrona� Segnale: specifica dell’attivazione di una comunicazione
asincrona� Evento: verificarsi ad un dato istante di tempo di una
occorrenza rilevante per il destinatario (sia una chiamata di operazione o l’attivazione di un segnale)
Automazione Industriale - 5. UML
Università degli Studidi Modena e Reggio Emilia
AutomationRobotics and
SystemCONTROL
DIAGRAMMI D’INTERAZIONE: SEQUENCE E COLLABORATION DIAGRAM.
Definiscono viste dinamiche del modello
Settembre - Dicembre 2010
61Automazione Industriale - 5. UML
Diagrammi d’interazione: Sequence eCollaboration Diagrams
� Collaboration Diagrams : descrivono l’interazione tra oggetti mediante stimoli (segnali) indicando un numero d’ordine che si riferisce alla sequenza temporale.
� Sequence Diagrams : stessi concetti, ma ad ogni oggetto è assegnata una linea temporale (“lifeline”) che
Settembre - Dicembre 2010
62
oggetto è assegnata una linea temporale (“lifeline”) che scorre dall’alto verso il basso.
Automazione Industriale - 5. UML
Collaboration Diagram
Oggetti
Settembre - Dicembre 2010
64
Link Messaggio
Automazione Industriale - 5. UML
Messaggi/Stimoli
� Un Messaggio (o Stimolo) rappresenta l’entità costitutiva di un interazione fra oggetti ed è specificato da:– un mittente– un destinatario– un contenuto informativo
Settembre - Dicembre 2010
65
– un contenuto informativo� Il contenuto informativo può essere:
– Una chiamata di un’operazione (function call )– L’attivazione di un segnale (flag variable ).– La creazione o distruzione di un istanza– Descritto informalmente con una nota testuale (in
fase di analisi)
Automazione Industriale - 5. UML
Notazioni per i messaggi
� In UML standard, l’aspetto della freccia associata ad un messaggio può essere► per messaggi sincroni , o semplici (il sender attende il
termine dell’operazione invocata).> per messaggi asincroni (il sender non attende il
termine dell’operazione invocata).
Settembre - Dicembre 2010
66
termine dell’operazione invocata).� Altri simboli possono essere adottati dai tools grafici per
indicare, ad esempio, messaggi con acknowledge, messaggi con timeout, messaggi periodici, etc.
Automazione Industriale - 5. UML
Oggetti “attivi”
� Si noti che il concetto di Messaggio in UML estende quello “primario” di invocazione metodi dei linguaggi di programmazione OO
� La possibilità di associare ad uno Stimolo l’attivazione di un “segnale” (evento) e di aver comunicazioni “asincrone”, rende i Collaboration Diagrams idonei a descrivere anche le interazioni in sistemi Real-Time e multi-tasking.
Settembre - Dicembre 2010
67
le interazioni in sistemi Real-Time e multi-tasking.� Infatti, i Collaboration Diagrams prevedono una notazione
specifica (bordo più spesso) per Oggetti Attivi , cioè oggetti che hanno un proprio “spazio di esecuzione” (processo o thread).
Automazione Industriale - 5. UML
Note sui Collaboration Diagram
� Sostanzialmente, i Collaboration Diagrams “estendono” l’aspetto di un Object Diagram con specifiche “dinamiche ” (i messaggi).
� Tuttavia, la reale sequenza degli eventi non è immediatamente comprensibile.
� In caso di modifiche o perfezionamento (tipico in un processo di sviluppo iterativo) può essere difficile
Settembre - Dicembre 2010
68
� In caso di modifiche o perfezionamento (tipico in un processo di sviluppo iterativo) può essere difficile mantenere coerente la numerazione dei messaggi.
� Soluzione: diagrammi che evidenziano la “linea temporale”: sequence diagram .
Automazione Industriale - 5. UML
Sequence diagram
Oggetti
Settembre - Dicembre 2010
70
“Send” stimolo
“Return” stimolo“Focus of control”
dell’oggetto
Automazione Industriale - 5. UML
Notazione dei Sequence Diagrams
� Attivazione (Focus of control): indica quando un’istanza è “attiva”, cioè sta eseguendo un’operazione, direttamente o indirettamente (in attesa del risultato da un’altra istanza).– rappresentato graficamente con un rettangolo allungato
sulla lifeline dell’istanza� Ritorno : termine dell’esecuzione di un’operazione (per
comunicazioni sincrone), rappresentata con una freccia
Settembre - Dicembre 2010
71
comunicazioni sincrone), rappresentata con una freccia tratteggiata
� Precondizioni : condizioni booleane racchiusa da parentesi quadre che precedono il nome del messaggio, devono essere verificate per l’effettivo invio della comunicazione
� Biforcazioni condizionali : allo stesso istante si possono generare messaggi diversi, alternativi, con precondizioni diverse
Automazione Industriale - 5. UML
Ordinamento temporale degli eventi
� Per ogni messaggio si identificano due eventi temporali, invio e ricezione , identificati con la notazione Nome msg.sendTime e Nome msg.receiveTime
� Formalmente, tali eventi sono solo parzialmente ordinati , poichè si assume che gli oggetti in un Sequence Diagram siano potenzialmente concorrenti(lifeline non allineate temporalmente)
Settembre - Dicembre 2010
72
(lifeline non allineate temporalmente)� Le regole di ordinamento parziale sono:1. eventi sulla stessa lifeline (send o receive) sono
totalmente ordinati2. Nome msg.sendTime precede sempre Nome
msg.receiveTime3. l’ordine di tutti gli altri eventi non `e determinato
Automazione Industriale - 5. UML
Specifiche Real-Time e Sequence Diagrams
� In un sistema Real-Time e multitasking, le comunicazioni fra oggetti sono in larga misura asincrone (oggetti “attivi”).
� In tali casi, le regole di ordinamento parziale descritte in precedenza possono non essere sufficienti per le
Settembre - Dicembre 2010
73
precedenza possono non essere sufficienti per le specifiche di analisi e di progetto.
� I Sequence Diagrams possono essere arricchiti con vincoli temporali più dettagliati.
Automazione Industriale - 5. UML
Utilizzo dei Sequence Diagrams
� Un Sequence Diagram rappresenta un possibile scenario (in genere non tutti quelli possibili)
� Pertanto può essere utilizzato per:– la descrizione di un Caso d’Uso : in questo caso, le
istanze presenti saranno gli attori e il sistema da progettare (requisiti temporali)
Settembre - Dicembre 2010
74
progettare (requisiti temporali)– la descrizione di una dinamica interna al sistema ,
corrispondente ad una sequenza osservabile in fase di debug (template per test di verifica )
� D’altra parte, un Caso d’Uso è realizzato attraverso una collaborazione di oggetti del sistema– il Sequence Diagram del Caso d’Uso può essere
esteso per ottenere un Sequence Diagram di progetto
Automazione Industriale - 5. UML
Diagrammi UML orientati allo stato
� State Diagrams : derivati dalla notazione degli Statecharts di Harel, estensione dei diagrammi di stato tradizionali.
� Activity Diagrams : descrizione “ibrida” tra diagrammi di stato e flow-chart tradizionali, può descrivere anche
Settembre - Dicembre 2010
75
stato e flow-chart tradizionali, può descrivere anche specifiche “collaborative” (attività di più oggetti sullo stesso diagramma)
Automazione Industriale - 5. UML
UML State Diagrams
� Nel meta-modello UML, ad alcuni elementi (Classi, Casi d’Uso, etc.) può essere associata una Macchina a Stati(State Machine o Finite State Machine, FSM), che ne specifica in modo completo il comportamento
� Formalmente, la Macchina a Stati è costituita da:– un insieme S, finito ed enumerabile, di stati
Settembre - Dicembre 2010
76
– un insieme S, finito ed enumerabile, di stati– un insieme T di transizioni , ognuna delle quali
collega un elemento di S (sorgente) con un altro elemento di S (destinazione)
– un insieme E di eventi rilevabili dalla Macchina a Stati
– un insieme A di azioni eseguibili dalla Macchina a Stati
Automazione Industriale - 5. UML
Definizioni
� Uno stato è una condizione fondamentale nell’esistenza di un entità che persiste per un periodo di tempo significativo ed è distinguibile da ogni altra condizione.
� Una condizione esistenziale si dice distinguibile da ogni altra se differisce:– Negli eventi (stimoli) che possono essere accettati
Settembre - Dicembre 2010
77
– Negli eventi (stimoli) che possono essere accettati– Nelle transizioni che possono modificare tale
condizione, attivandone un’altra– Nelle azioni che vengono eseguite
� Una transizione è la risposta ad uno stimolo di interesse (rilevabile nello stato attuale) che causa un cambiamento nello stato
Automazione Industriale - 5. UML
Esempi
� Un interruttore può essere {ACCESO, SPENTO}� Un ascensore può essere {FERMO CON PORTE
CHIUSE, FERMO CON PORTE APERTE, IN SALITA, IN DISCESA}
� Un dispositivo di misura può essere {SPENTO, IN CALIBRAZIONE, MISURA CORRETTAMENTE,
Settembre - Dicembre 2010
78
CALIBRAZIONE, MISURA CORRETTAMENTE, MISURA ERRONEAMENTE}– NOTA: un oggetto software per la comunicazione con
il dispositivo avrà verosimilmente un attributo che memorizza il valore misurato, ma un insieme di stati {0, 0.01, 0.02, ... 10 V} non è disgiunto in valori significativamente distinguibili (dal punto di vista comportamentale)
Automazione Industriale - 5. UML
Diagramma di stato per l’ascensore
Stati
Stato iniziale (default)
Settembre - Dicembre 2010
79
Transizioni
Automazione Industriale - 5. UML
Diagramma di stato con azioni e attivita’
Settembre - Dicembre 2010
80
Attivita’
Azioni
Automazione Industriale - 5. UML
Definizioni: azioni e attività
� Una azione è una specifica di un comportamento (operazione, assegnamento a variabili, etc.) non interrompibile e di durata temporale limitata (al limite infinitesima).
� Una attività è una specifica di comportamento di durata significativa , interrompibile in reazione ad eventi esterni.
� L’esecuzione di un’azione, che è da considerarsi
Settembre - Dicembre 2010
81
� L’esecuzione di un’azione, che è da considerarsi istantanea , può essere associata a:– una transizione– l’istante di attivazione di uno stato– l’istante di disattivazione di uno stato
� L’esecuzione di un’attività è associata ad uno stato (eseguita fintanto che lo stato è attivo)
Automazione Industriale - 5. UML
Limitazione dei diagrammi di stato tradizionali (SFC)
� (1) Scalabilita’: alcuni stati debbono essere raggiunti da tutti gli altri stati.
State1 State2
Settembre - Dicembre 2010
82
State1 State2
State3 State4
State5
Automazione Industriale - 5. UML
Statechart: Gerarchia di stati (OR-States).
Superstate
State1 State2
State5
Settembre - Dicembre 2010
83
State3 State4
Automazione Industriale - 5. UML
Macrostati per la gestione delleeccezioni
Settembre - Dicembre 2010
84
Supertati, Macrostati
Automazione Industriale - 5. UML
Limitazione dei diagrammi di stato tradizionali (SFC)
� (2) Distinguibilita’: in alcuni casi, uno stato non può essere decomposto in una singola sotto-sequenza
� Esempio: un dispositivo può essere:{SPENTO, ACCESO}, ma quando ACCESO può essere
sia {IN ATTESA, OPERATIVO, BLOCCATO} che {CON DISPLAY ACCESO, CON DISPLAY SPENTO}
Settembre - Dicembre 2010
85
DISPLAY ACCESO, CON DISPLAY SPENTO}
Automazione Industriale - 5. UML
Statechart: Gerarchia di staticoncorrenti (AND -States).Superstate1
State1State3
SuperstateA SuperstateB
Settembre - Dicembre 2010
86
State2
State4
State5
Automazione Industriale - 5. UML
Evoluzione dei diagrammi di stato: Statecharts
� Formalizzato da David Harel nel 1987, il linguaggio degli Statecharts ha le caratteristiche per descrivere Macchine a Stati molto complesse in una forma graficamente compatta:– Gerarchia di stati innestati (OR-states)– Concorrenza fra stati (AND-states)– Transizioni inter-livello (no limitazioni legate
Settembre - Dicembre 2010
87
– Transizioni inter-livello (no limitazioni legate all’innestamento)
– Macro-stati con memoria– Punti di sincronizzazione fra sotto-stati concorrenti– Punti di scelta fra transizioni
� Sfruttato per gli editor di diversi tools di simulazione (es. Matlab/Stateflow)
� Adottato pienamente dallo standard UML
Automazione Industriale - 5. UML
Sintassi dello Statechart
� Pseudostati iniziale e finale
Settembre - Dicembre 2010
88Automazione Industriale - 5. UML
Sintassi dello Statechart
� Azioni e attività
Settembre - Dicembre 2010
89Automazione Industriale - 5. UML
Sintassi dello Statechart
� Transizioniguard: espressione booleana di
“guardia”
Settembre - Dicembre 2010
90
trigger: evento scatenante la transizione
effect: azione effettuata in corrispondenza della
transizione
Automazione Industriale - 5. UML
Sintassi dello Statechart
� Self-transition
Settembre - Dicembre 2010
91Automazione Industriale - 5. UML
Differenza fra “internaltransition” e “self transition”
StateX
entry / Action1exit / Action2eventYY / Action3
eventZZ / Action3
Settembre - Dicembre 2010
92
� Se si verifica eventYY, esegue Action3 (“Internal Transition”)
� Se si verifica eventZZ, esegue Action2, poi Action3, poi Action1 (esce e rientra in StateX, “Self Transition”)
Automazione Industriale - 5. UML
Espressioni testuali negli stati
� Azioni all’attivazione : entry / Azioni� Azioni alla disattivazione : exit / Azioni� Attività durevoli : do / Attività� Reazioni : Evento(Parametri) [Condizione] / Azioni
Settembre - Dicembre 2010
93
Evento(Parametri) [Condizione] / Azioniservono per reagire a certi eventi senza cambiare di stato (chiamate anche Internal Transitions)
Automazione Industriale - 5. UML
Espressioni testuali su transizioni
� In generale, ad una transizione si può associare un’espressione del tipo:
Evento(Parametri) [Condizione] ^ Eventi gen / Azioni
dove:– Evento è lo stimolo che “scatena” (trigger) la transizione
Settembre - Dicembre 2010
94
– Evento è lo stimolo che “scatena” (trigger) la transizione– Condizione è un espressione booleana (guard), che deve
essere vera all’istante dell’evento “trigger”, altrimenti la transizione non viene effettuata
– Eventi gen sono eventi “generati” dalla Macchina a Stati, verso altri oggetti o verso regioni concorrenti della stessa Macchina a Stati
– Azioni sono, come detto, operazioni o semplici assegnamenti da compiere all’atto dell’esecuzione della transizione
Automazione Industriale - 5. UML
Terminologia per gli eventi
� Call Event : chiamata esplicita di un’operazione (v. comunicazione sincrona)
� Signal Event : attivazione di un segnale (v. comunicazione asincrona)
� Time Event : termine di un determinato periodo di tempo, iniziato a partire da un altro evento o
Settembre - Dicembre 2010
95
tempo, iniziato a partire da un altro evento o dall’ingresso in uno stato (notazione: tm(Valore durata))
� Change Event : passaggio da falso a vero di una espressione booleana
Automazione Industriale - 5. UML
Sommario: Sintassi base degli Statecharts
Settembre - Dicembre 2010
96Automazione Industriale - 5. UML
Sintassi estesa degli Statechars: pseudostati
� History , indicato con una H cerchiata, all’interno di un macro-stato: la transizione che ha tale pseudostato come destinazione sarà “rediretta” verso l’ultimo stato attivo prima della disattivazione del macro-stato (se indicato con H* la memoria arriva fino al più basso livello della gerarchia).
� Choice , indicato con una C cerchiata, per transizioni composte e condizionate: il tratto che entra deve avere solo il “trigger”, i tratti uscenti delle “guard” mutuamente
Settembre - Dicembre 2010
97
il “trigger”, i tratti uscenti delle “guard” mutuamente esclusive
� Fork/Join , per specificare quali sotto-stati concorrenti di un AND-state attivare/disattivare
� Synch , per definire un punto d’incontro fra sotto-sequenze di stati concorrenti
Automazione Industriale - 5. UML
Esempio con History
Superstate
State1 State2State5
Settembre - Dicembre 2010
98
State3 State4State6H
Automazione Industriale - 5. UML
Esempio con ChoiceSuperstate
State1State2
[Cond2]
Settembre - Dicembre 2010
99
State3
C
State4
ev1
[Cond1]
[Cond3]
Automazione Industriale - 5. UML