Modulo 13 Diagrammi degli stati Stato degli oggetti Descrive una macchina a stati specifica i vari stati che un oggetto può assumere durante la sua vita in risposta agli eventi uno stato è una condizione o situazione di un oggetto in cui esso soddisfa certe condizioni, esegue certe attività/azioni, o aspetta qualche evento Lo stato è definito dall'insieme dei valori degli attributi e dei link posseduti da un oggetto in un certo istante Ci interessa lo stato astratto esempio: motore acceso/spento (non ci interessa il numero di giri/min.) può corrispondere a diverse - anche infinite - combinazioni di valori degli attributi Lo stato influenza il comportamento L'oggetto reagisce in modo qualitativamente diverso agli eventi esterni, in funzione dello stato in cui si trova. Esempio: risultato pop dipende dallo stato della pila (vuota o no) Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 2 1
Concetti fondamentali Uno stato perdura nel tempo finché un evento non fa cambiare stato all oggetto (es. un versamento fa passare un conto corrente da saldo negativo a saldo positivo) Eventi: stimolo esterno un evento è la specificazione di un accadimento, che è possibile posizionare nel tempo, e fa da trigger per una transizione di stato Sono raggruppabili in classi di eventi Una transizione è una relazione tra due stati indicante che un oggetto nel primo stato eseguirà certe action e passerà nel secondo quando accadrà uno specifico evento Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 3 Notazione UML Stato iniziale Stato Stato composito Stato finale Transizione Evento/Azione Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 4 2
Una semplice rappresentazione Stato A Attività A Evento [Guardia]/ Azione Stato B Attività B Attività: il processo (o i processi) che l oggetto svolge quando è in un certo stato. Un attività può prendere un tempo più o meno lungo e può essere interrotta da un evento (Event). Evento: ciò che potenzialmente scatena una transizione. Guardia: una condizione logica che può essere vera o falsa. Azione: il processo (o i processi) che accompagna una transizione. Attività, Guardia ed Azione sono comunque elementi opzionali Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 5 Individuazione degli stati Per ciascun oggetto occorre identificare tutti gli stati in cui può trovarsi Euristiche: Trascurare gli attributi ininfluenti Alcuni attributi non modificano in modo qualitativo il comportamento di un oggetto, ma al più i valori degli eventi che l'oggetto produce. Individuare le condizioni limite Trovare tutti i confini e i limiti dello stato Definire un corretto livello di astrazione Per un sistema di prenotazione la partenza di un aereo è un evento, ma per il software di controllo dell'aereo sono centinaia di eventi distinti. Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 6 3
Un esempio: un libro di una bilioteca stato iniziale acquisizione libro( dati libro, autori, editore ) evento transizione di stato stato acquisito prestito( data ) in prestito restituzione( data restituzione ) scadenza termini cancellazione libro( ISDN ) stato finale restituzione( data restituzione ) sollecito in ritardo cancellazione libro( ISDN ) Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 7 Un esempio: la chiamata telefonica Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 8 4
Parti di uno stato Uno stato è composto da più parti Name: una stringa che lo distingue dagli altri stati; uno stato può essere anonimo Entry / Exit action: azioni eseguite quando si entra e/o si esce dallo stato Internal transition: transizione che sono gestite senza causare un cambiamento di stato Substates: struttura innestata di stati, comprendente sotto-state disgiunti (sequenzialmente attivi) o concorrenti (concorrentemente attivi) Deferred events: una lista di eventi che non sono gestiti in quello state ma posposti ed accodati per essere gestiti da altri oggetti in un altro stato una transizione ha 5 parti Source state name Event trigger entry action Guard condition Action Target State uno state può contenere attvità exit action activity internal transition Tracking entry / setmode(on) exit / setmode(off) newtarget / tracker.acquire ( ) do / followtarget selftest / defer Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 9 deferred event Guardia Sono funzioni booleane sui valori degli oggetti. Sono valide in un intervallo di tempo Sono utili come guardie delle transizioni di stato (non basta l'evento, deve essere verificata la condizione). Evento Guardia Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 10 5
Stati innestati I diagrammi piatti diventano ingestibili per problemi reali. Diagrammi strutturati la strutturazione favorisce la descrizione sintetica di sistemi complessi L'attività corrispondente ad uno stato può essere espansa in un diagramma a stati di più basso livello, dove ogni stato rappresenta una fase dell'attività. Aggregazione (stati concorrenti) Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 11 Esempio Uno stato strutturato equivale ad una composizione OR degli stati: l'oggetto si trova, all'interno di uno stato più generale, in un qualunque sotto-stato. I sottostati ereditano le transizioni dei loro superstati (a meno di overriding) Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 12 6
Esempio Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 13 Elementi del diagramma initial state final state composite state nested state state sendfax Idle Transmitting error / print error ringing event hangup Receiving Connected headerok Processing checksumok Cleaning up entry/ pickup exit/ disconnect action transition Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 14 7
Sotto-stati sequenziali composite state sequential substate Receiving Connected headerok Processing Cleaning up checksumok entry/ pickup exit/ disconnect Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 15 Sotto-stati concorrenti Più stati si susseguono in parallelo entro l oggetto che li racchiude. Se un sotto-stato raggiunge lo stato finale prima dell altro, il controllo aspetta per lo stato finale dell altro Quando avviene una transizione in uno stato con sottostati concorrenti, il flusso di controllo subisce un fork per ciascun sottostato concorrente; alla fine esso si ricompone in un unico flusso con uno join composite state Idle fork maintain Maintenance Testing join Testing Self devices diagnosis Concurrent substate Commanding Waiting [continue] Command keypress [not continue] Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 16 8
Esempio Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 17 Esempio: ORDINE Un oggetto ORDINE che deve: 1. controllare la disponibilità di tutte le voci presenti in un certo ordine di acquisto; 2. nel caso in cui tutte le voci sono disponibili deve inviarle al cliente che le ha ordinate. 3. nel caso in cui alcune voci non sono presenti in magazzino in quantità sufficiente deve ritardare l invio fino a quando anche tali voci non siano reperite. Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 18 9
Esempio: ORDINE start /get first item [Not all items checked] /get next item Checking do/check item [All items checked && all items available] Dispatching do/initiate delivery [All items checked && some itemsnot in stock] Item Received [all items available] delivered cancelled cancelled Item Received [some not in the stock] Waiting cancelled Cancelled Delivered Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 19 Oggetti compositi Il diagramma di stato di un oggetto complesso è l'aggregazione dei diagrammi di ciascun componente. L'aggregazione è la "and-relationship": lo stato complessivo (aggregato) è dato dall unione degli stati dei vari diagrammi. Accendino Serbatoio Fornello Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 20 10
Oggetti compositi: esempio Accendino Serbatoio Fornello Vuoto Fornello Chiuso carica [gas=0] apri Chiudi Serbatoio Pieno [gas>0] Aperto scintilla Acceso Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 21 Oggetti composti Gli stati dei componenti possono interagire (la guardia che regola le transizioni di un oggetto dipende dallo stato di un altro oggetto). Vuoto Fornello Chiuso carica [gas=0] apri Chiudi Pieno scintilla Aperto [Serbatoio.stato == Pieno] Acceso Serbatoio [gas>0] Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 22 11
Sommario I diagrammi degli stati descrivono come evolve lo stato di un oggetto Lo stato di un oggetto è formato: Dai valori dei suoi attributi e relazioni Dallo stato degli oggetti componenti Lo stato cambia a seguito di eventi Luigi Troiano - Tecnologie di Produzione del Software: Modulo 13 23 12