I diagrammi di attività e stato - A.A. 2010-2011 Laboratorio di Ingegneria del Software Prof. Paolo Ciancarini Dott. Sara Zuppiroli
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
I diagrammi di attività e stato Laboratorio di Ingegneria del Software Prof. Paolo Ciancarini Dott. Sara Zuppiroli A.A. 2010-2011 Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 1 / 35
Cosa sono e a cosa servono I diagrammi di attività (activity diagram) e stato (state machine diagram) sono diagrammi che descrivono un processo. Il diagramma di attività modella un processo. Organizza più entità in un insieme di azioni secondo un determinato flusso. Il diagramma di stato identifica le variazioni di stato al verificarsi di alcune condizioni legate ad una o più entità. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 2 / 35
Attività vs. Stato In UML 1.x, i due diagrammi delle attività sono un particolare diagramma di stato. In UML 2 definisce e separa la semantica: I diagrammi di attività si basano sulle reti di Petri I diagrammi di stato sulla ricerca di Harel. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 3 / 35
Il diagramma di attività Modella un’attività relativa ad un qualsiasi elemento di modellazione, ad esempio: I classi I casi d’uso I interfacce I componenti I interfacce I operazioni di classe Si usano ad esempio per: I modellare il flusso di un caso d’uso (analisi) I modellare il funzionamento di un’operazione (progettazione) I modellare un algoritmo (progettazione) Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 4 / 35
The notations for activity nodes are illustrated below. There are three kinds of nodes: action Attività: ingredienti control node. See these classes for more information. Action node Object node Control nodes Figure Nodi12.50 - Activityspecificano azione: node notation unità atomiche, non interrompibili e istantanee di comportamento. Examples Nodi di inizio e di fine: sono nodi speciali che indicano This figure illustrates the following kinds of activity node: action nodes (e.g., Receive Orde l’inizioande control (Invoice), la fine del(the nodes flusso. initial node before Receive Order, the decision node after node and Join Nodi node around oggetto: sono Shipoggetti Order, merge node before Close importanti particolarmente Order, and activity usatifinal a come input e output di azioni. Nodi controllo: descrivono il flusso dell’attività. [order rejected] Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 5 / 35
Transizioni e token Per capire la semantica dei diagrammi di attività, bisogna immaginare delle entità, dette token, che viaggiano lungo il diagramma. Il flusso dei token definisce il flusso dell’attività. I token possono rimanere fermi in un nodo azione/oggetto in attesa che si avveri una condizione su una freccia, oppure una precondizione o postcondizione su un nodo. Il movimento di un token è atomico. Un nodo azione viene eseguito quando sono presenti token su tutti gli archi in entrata, e tutte le precondizioni sono soddisfatte. Al termine di un’azione, sono generati control token su tutti gli archi in uscita. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 6 / 35
«localPostcondition», respectively. Precondizioni e postcondizioni «localPrecondition» constraint name «localPostcondition» constraint Figureespresse Si tratta di condizioni, 12.29 - Local pre- andmodo, in qualunque postconditions che devono essere soddisfatte per far iniziare o terminare l’azione (permettere a unExamples token di entrare o uscire). Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 7 / 35
Nodi iniziali e finali Realizza progetto Supera scritto Il disco nero marca l’inizio dell’attività (genera token). Quando un token raggiunge un disco nero bordato (nodo finale), l’attività ha termine. Possono comparire in qualunque numero all’interno di un’attività (ogni nodo iniziale fa partire un flusso di esecuzione, il primo nodo finale raggiunto ferma tutti i flussi). Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 8 / 35
Nodi decisione [x0] Action3 I nodi decisione: specificano percorsi alternativi, hanno un solo input e vari output sotto una condizione mutualmente esculsiva. I nodi fusione: hanno vari input e un solo output, sul quale vengono indirizzati tutti i token in ingresso. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 9 / 35
Nodi fork/join Action1 Action2 I nodi fork hanno un ingresso e varie uscite: i token in ingresso sono duplicati su tutte le uscite. I nodi join hanno vari ingressi e una sola uscita: quando sono presenti token su tutti gli ingressi, viene prodotto almeno un token in uscita. I nodi fork dividono un’esecuzione in più flussi concorrenti, i nodi join sincronizzano e riuniscono i flussi. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 10 / 35
Nodi finali di flusso Action1 Action2 Action3 Quando raggiunti da un token, causano la terminazione solo del flusso che li ha toccati. Il raggiungimento di un nodo finale di attività causa comunque la terminazione di tutti i flussi. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 11 / 35
Esercizio n.1 Descrivere con un diagramma delle attività il comportamento di uno studente che vuole superare l’esame di laboratorio di ingegneria del software. Individuare le attività, gli oggetti, i nodi di decisione, e le biforcazioni. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 12 / 35
Nodi oggetto Crea progetto Progetto Sostieni scritto Studia I token in uscita da questi nodi sono object token, e sono diversi dai control token prodotti dai nodi azione: rappresentano veri e propri oggetti. Gli archi in entrata e uscita dai nodi oggetto sono object flow anziché control flow, e ci sono regole che limitano il loro uso. Per esempio, gli archi che entrano ed escono dai nodi decisione e fusione devono essere o tutti object o tutti control. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 13 / 35
Stato degli oggetti Progetto Crea progetto [valutato] Progetto Consegna progetto [finito] Spesso risulta conveniente aggiungere lo stato di un oggetto per mostrarne l’evoluzione durante l’attività. Gli stati devono essere coerenti con la macchina a stati associata all’oggetto. Questo è l’anello di congiunzione tra diagrammi di attività e stato. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 14 / 35
Pin progetto Crea progetto Consegna progetto Si agganciano ai nodi azione per definire un input oppure un output di quell’azione. Questa notazione è equivalente a quella di un nodo oggetto tra i due nodi azione. I pin aiutano a mostrare i parametri e valori di ritorno di un’azione. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 15 / 35
Segnali ed eventi (1) Manda segnale Accetta evento Accetta evento temporale Ci sono alcuni nodi azione specializzati che gestiscono l’invio e la ricezione di segnali. L’invio di segnali è asincrono e non blocca l’attività. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 16 / 35
Segnali ed eventi (2) Segui lezioni Studia Sostieni scritto Inizio corso Data scritto Ricevi specifiche Ricevi valutazione Crea progetto Notifica consegna I nodi ricezione sono attivi quando hanno token su tutti gli archi in entrata (se ne hanno) oppure durante l’intera vita dell’attività (se non ne hanno); generano token alla ricezione. La ricezione di eventi temporali funziona nello stesso modo, i token sono generati in base ad un’espressione temporale. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 17 / 35
Attività: esempio Issue 8208 - add explanatory paragraph Figure 12.37shows another example activity for a process to resolve a trouble ticket. Trouble Ticket [problem statement rectified] [cannot reproduce [recorded] problem] Record Reproduce Correct Problem Problem Problem [not recorded] [known [can problem reproduce [duplication and solution] problem] of another problem] Communicate ID Problem Verify Results and Resolution Resolution [else] Audit and Record [problem not solved] Figure 12.37 - Workflow example Un’attività è costituita da un flusso di azioni che ne sono i Below is an example of using class notation to show the class features of an activity. Associations and state machines can mattoni. also beSi può rappresentare graficamente con un rettangolo shown. arrotondato, come le azioni stesse (in effetti, un’azione può «activity» invocare un’altraFill Order attività). costSoFar : USD timeToComplete : Integer Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 18 / 35
Attività: parametri e valori di ritorno Rejected Computers Produce Assemble Test Production Printed-Circuit Computers Computers Materials Boards Accepted Printed- Computers Assembled Circuit Computers Boards Figure 12.55 - Example of activity parameters.nodes Parametri e valori In the example below, di materials production ritorno, se esistono, are streaming in to feed thesi rappresentano ongoing come At printed circuit board fabrication. end of the activity, computers are quality checked. Computers that do not pass the test are exceptions. See Parameter nodi oggetto semantics of streamingsul and bordo dell’attività. exception parameters. {stream} Rejected Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A.Computers 2010-2011 19 / 35
Partizioni (swimlanes) Studente Docente Progetto Crea progetto Progetto [finito] Valuta progetto Progetto Supera scritto Progetto [valutato] Suddividono il flusso dell’attività, ma non ne modificano il significato. La suddivisione può essere orizzontale, verticale o multidimensionale. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 20 / 35
an instance of the Order Processor class, situated in Seattle, but not necessarily the same instance for both behaviors. Even though the Make Payment is contained within the Seattle/Accounting Clerk swim cell, its performer and location are Partizioni (2) not specified by the containing partition, because it has an overriding partition. «attribute» performingLocation:Location Seattle Reno Order Processor «class» Receive Fill Ship Close Order Order Order Order [order accepted] Accounting Clerk «external» Send Accept «class» (Customer) Invoice Make Payment Payment Invoice Figure 12.61 - Activity partition using multidimensional swimlane example Le partizioni sono generalmente suddivise secondo uno 359 UML Superstructure Specification, v2.1 di questi criteri: classificatori le cui istanze eseguono le varie parti istanze che eseguono le varie parti ruoli/parti del sistema che eseguono le varie parti attributi o valori relativi alle varie parti Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 21 / 35
Esercizio n.2 Descrivere con un diagramma delle attività il processo di sviluppo del software a cascata e iterativo, nelle sue fasi principali. Individuare le attività, gli oggetti, i nodi di decisione, e le biforcazioni. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 22 / 35
Regioni interrompibili (1) Si usano per specificare una reazione che può avvenire in qualunque momento e comporta l’interruzione dell’attività. Esempi: eccezioni, interrupt, segnali, situazioni di errore dall’esterno. La notazione impiegata è quella di un’attività con i bordi tratteggiati. Uno o più archi di interrupt (a zigzag) partono da nodi interni e puntano verso nodi esterni. L’interrupt è generato quando un arco di interrupt è attraversato da un token: tutti gli altri token e comportamenti nella regione sono terminati. La ricezione di eventi all’interno della regione funziona solo se ci sono token al suo interno. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 23 / 35
The first figure below illustrates that when an order cancellation request is made—only while receiving shipping) orders—the Cancel Order behavior is invoked. Regioni interrompibili (2) Cancel Order Order cancel request [order rejected] Receive Fill Ship Close Order Order Order Order [order accepted] Send Make Accept Invoice Payment Payment Invoice Figure 12.100 - InterruptibleActivityRegion example L’ordine Rationale è cancellato solo se un token si trova all’interno della regione al momento della ricezione del segnale. Interruptible regions are introduced to support more flexible non-local termination of flow. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 24 / 35
Macchine a stati Qualunque classificatore può essere associato a una macchina a stati che descrive il funzionamento delle sue istanze; si tratta del contesto della macchina a stati. Uno stato è una condizione o situazione nella vita di un oggetto in cui esso soddisfa una condizione, esegue un’attività o aspetta un evento. Un evento è la specifica di un’occorrenza che ha una collocazione nel tempo e nello spazio. Una transizione è il passaggio da uno stato a un altro in risposta ad un evento. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 25 / 35
Notazione Uno stato si rappresenta con un rettangolo arrotondato, ma al contrario di un’azione dei diagrammi di attività è solitamente rappresentato con aggettivi e nomi piuttosto che verbi. Le transizioni da uno stato ad un altro avvengono nel momento in cui si verifica un evento. Lo stato iniziale e quello finale si rappresentano come nei diagrammi di attività. I nodi decisione (decidono lo stato di destinazione in base a una guardia) e i nodi fork/join, che permettono al sistema di trovarsi in vari stati ortogonali (paralleli) allo stesso tempo. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 26 / 35
Transizioni Le transizioni in una macchina a stati di comportamento hanno la seguente sintassi: event1, event2, ... [guard] / behavior, ma nessuna delle tre parti è obbligatoria. Significa che la transizione avviene come risposta a uno degli eventi (quando la guardia è vera), e al momento della transizione il contesto esegue un comportamento. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 27 / 35
Esempio: Examples m.s. di comportamento Dialing Start digit(n) Partial Dial [number.isValid()] entry/ start dial tone entry/number.append(n) exit/ stop dial tone digit(n) Figure 15.33 - Composite state with two states In una m.s. di comportamento, gli stati possono contenere azioni intraprese all’entrata (entry), all’interno (do) e HiddenComposite all’uscita (exit) dello stato. entry / start dial tone ’Dialing’ exit è uno stato composito che contiene altri stati. / stop dial tone Lab. di Ingegneria Figure del Software State 15.34 - Composite () I diagrammi with hidden di attività indicator decomposition e stato icon A.A. 2010-2011 28 / 35
Esercizio n.3 Descrivere con un diagramma di stato della classe libro di una biblioteca. Individuare gli stati, le transizioni e gli eventi. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 29 / 35
Esercizio n.4 Descrivere con un diagramma di stato della classe libretto. Individuare gli stati, le transizioni e gli eventi. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 30 / 35
Stati compositi CompositeState HiddenComposite entry / start dial tone State1 State2 exit / stop dial tone Figure 15.34 - Composite State with hid Permettono di suddividere la complessità del modello: dall’esterno si vede un macro-stato, al cui interno vi sono altri stati. Si può anche creare uno stato che fa riferimento ad un’altro diagramma di macchina a stati (submachine state). Si può usare un’icona per rappresentare uno stato composito il cui comportamento interno non è mostrato. Transizioni in uscita dal bordo dello stato composito e legate ad un evento sono ereditate da tutti gli stati all’interno. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 31 / 35
Transizioni di completamento Si tratta di transizioni che non hanno un evento associato (ma possono avere una guardia). Nel caso di uno stato semplice, una transizione di completamento è eseguita al termine dell’attività di quello stato (fine azioni do). Nel caso di uno stato composito o submachine state una transizione di completamento è eseguita quando si giunge in uno stato finale oppure un exit point. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 32 / 35
Figure 15.41 is an example statemachine diagram for the state machine for simple telephone object. In addition to the initial state, the state machine has an entry point called activeEntry, and in addition to the final state, it has an exit point Stati compositi ed entry/exit points (1) called aborted. activeEntry Active Time-out do/ play message dial digit(n) after (15 sec.) [incomplete] after (15 sec.) DialTone dial digit(n) Dialing do/ play dial tone lift dial digit(n)[invalid] receiver dial digit(n)[valid] /get dial tone /connect Invalid do/ play message Connecting Idle busy Pinned connected Busy callee do/ play busy callee hangs up tone caller answers hangs up /disconnect Ringing Talking callee answers do/ play ringing /enable speech tone abort terminate aborted Notare entry ed exit points (cerchi e cerchi con croce). Possono Figure 15.41 - State machine diagram representing a state machine essere posti sulla cornice del diagramma, se visibile. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 33 / 35
Issue 8415 - replace ‘sub state machine’ with ‘submachine state’ Entry/exit points (2) The diagram in Figure 15.36 shows a fragment from a state machine diagram in which a submachine state (the FailureSubmachine) is referenced. The actual sub state machine is defined in some enclosing or imported name space. HandleFailure: FailureSubmachine error1/ sub1 error3/ subEnd /fixed1 Figure 15.36 - Submachine State L’evento error3 fa partire l’esecuzione dallo stato iniziale In the above example, the transition triggered by event “error1” will terminate on entry point “sub1” of the FailureSubmachine state machine. The “error3” transition implies taking of the default transition of the FailureSubmachine. della submachine o stato composito. The transition emanating from the “subEnd” exit point of the submachine will execute the “fixed1” behavior in addition to what is executed within the HandleFailure state machine. This transition must have been triggered within the L’evento error1 fa partire l’esecuzione dall’entry point sub1. HandleFailure state machine. Finally, the transition emanating from the edge of the submachine state is taken as a result of the completion event generated when the FailureSubmachine reaches its final state. Se l’esecuzione termina nell’exit point subEnd si esegue la Note that the same notation would apply to composite states with the exception that there would be no reference to a state machine in the state name. transizione di completamento che genera il comportamento fixed1. Se l’esecuzione termina nello stato finale si segue la transizione di completamento sulla destra. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 34 / 35
Conclusioni I diagrammi di attività descrivono un flusso di azioni che realizzano un certo comportamento specifico. L’enfasi non è sullo scambio di messaggi ma sui blocchi di comportamento. I diagrammi di macchina a stati si concentrano su un solo classificatore di contesto e modellano il suo stato interno in relazione al suo comportamento o alle operazioni che possono eseguite sulle sue istanze. Come tutti i diagrammi UML, possono essere usati sia a livello di analisi che di progettazione. Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 35 / 35
Puoi anche leggere