Diagramma delle attività in UML

Diagramma delle attività in UML

UML (Unified Modeling Language) è un linguaggio grafico che consente di specificare e documentare sistemi software, tramite un approccio orientato agli oggetti.

UML nasce dall’integrazione di tre diverse notazioni proposte negli anni ’80 e nei  primi anni ’90 da Booch, Jacobson e Rumbaugh, ed è stato sviluppato dai tre autori sopra citati in collaborazione e con il contributo di decine di ricercatori e analisti. UML è attualmente mantenuto e sviluppato dal consorzio OMG (Object Management Group), che ne ha fatto un suo standard.

UML comprende vari tipi di notazioni e di diagrammi, per specificare i diversi aspetti di un sistema software. Per la specifica di processi, UML propone l’utilizzo dei diagrammi delle attività (activity diagrams). I diagrammi delle attività sono essenzialmente dei grafi nei quali i nodi rappresentano le attività del processo e gli archi specificano l’ordine in cui i task devono essere eseguiti.

La figura finale mostra di fatto la specifica del processo Prenotazione viaggi tramite diagramma delle attività UML.

Attività e azioni

Le attività possono essere di due tipi: atomiche o non atomiche. Le attività atomiche, chiamate azioni in UML, descrivono operazioni elementari, concettualmente non decomponibili in azioni più semplici. Esse sono graficamente rappresentate da una losanga, ed hanno un’etichetta associata che indica l’azione da svolgere.

Le attività vere e proprie rappresentano invece azioni composte, costituite  da  altre attività o azioni. La loro struttura viene dettagliata separatamente, tramite un ulteriore diagramma delle attività, più di dettaglio. Le attività sono utili quando il processo è complesso, e non è possibile o non è conveniente rappresentarlo nel dettaglio in un unico diagramma (il concetto di attività in UML è analogo al concetto di supertask in WIDE). Le attività vengono graficamente specificate con lo stesso simbolo usato per la definizione delle azioni. Nel seguito useremo il termine attività per indicare sia attività che azioni.

Per specificare processi con strutture complesse, UML propone l’uso di costrutti che hanno funzioni simili a quelle dei connettori in WIDE workflow model.

Diramazioni condizionali

In un diagramma delle attività è possibile specificare diramazioni del processo  che devono essere seguite solo se sono verificate determinate condizioni. L’esecuzione condizionale è specificata graficamente da un rombo che ha una transizione in ingresso e due o più transizioni in uscita (come la fork condizionale in WIDE); alle transizioni in uscita sono associate delle condizioni, che devono essere in mutua esclusione (questa limitazione  non  è  invece  presente  in  WIDE). Le condizioni associate alle transizioni vengono valutate all’attivazione della transizione in ingresso, e viene quindi attivata la diramazione in uscita alla quale è associata una condizione vera, che deve esistere ed essere unica.

Fork e Join

L’esecuzione parallela di attività e la sincronizzazione fra attività, sono  specificate tramite le barre di sincronizzazione (synchronization bar). Le barre di sincronizzazione possono essere di due tipi: fork e join, e la loro semantica è del tutto analoga a quella della fork e del join totale in WIDE. La barra di tipo fork ha un arco in ingresso e due o più archi in uscita: non appena si attiva la transizione in ingresso, la fork attiva tutte le transizioni in uscita, in parallelo. La barra di tipo join ha due o più transizioni in ingresso e una in uscita: quando tutte le transizioni in ingresso sono state attivate, la barra di tipo join attiva la transizione in uscita.

Corsie

In un diagramma delle attività è possibile specificare, per ogni attività, qual è l’entità (ad esempio, il dipartimento o l’organizzazione) responsabile della sua esecuzione. Le responsabilità sono specificate partizionando le attività di un diagramma in gruppi, e associando un responsabile ad ogni partizione.

Graficamente, la partizione del grafo viene rappresentata tramite corsie (swimlanes), generalmente delimitate da segmenti paralleli, anche se talvolta la complessità del grafo rende necessario l’utilizzo di linee curve. Le attività del processo Prenotazione viaggi, nella figura corrispettiva, sono partizionate in due gruppi: quelle eseguite dall’agenzia di viaggi e quelle invece di responsabilità dell’ufficio amministrazione.

Flusso dei dati

Un altro aspetto importante nella specifica del processo è la descrizione dei dati manipolati dalle attività. UML consente di specificare, all’interno di un diagramma delle attività, a quali oggetti le attività accedono in lettura e/o in scrittura. Inoltre è possibile specificare lo stato in cui si dovrebbe trovare un oggetto al termine di una attività. Graficamente, gli oggetti sono rappresentati da rettangoli, collegati alle attività da frecce tratteggiate. Gli accessi in lettura sono rappresentati da frecce orientate dall’oggetto all’attività, mentre gli accessi in scrittura sono rappresentati da frecce orientate dall’attività all’oggetto. Per semplificare la presentazione, nella figura seguente si è solamente rappresentato il flusso dei dati (oggetto P di tipo Prenotazione) relativi alla prenotazione dall’attività Conferma viaggio all’attività Richiesta pagamento.

Come si può notare, i diagrammi delle attività sono concettualmente simili al modello di processo di WIDE (e degli altri sistemi di workflow). La differenza fondamentale tra i due è che UML è un linguaggio che ha lo scopo di supportare di supportare l’analista nella modellazione di un processo e nell’interazione con il cliente, mentre WIDE è un linguaggio completo che consente di specificare compiutamente un workflow, che viene poi interpretato da un apposito componente (il motore del workflow).

I diagrammi delle attività non forniscono costrutti necessari per la specifica di una serie aspetti di un processo che sono invece necessari per la sua implementazione, quali le caratteristiche transazionali, la specifica delle situazioni eccezionali e vincoli di priorità e temporali. I diagrammi delle attività sono infatti spesso utilizzati per la specifica ad alto livello di un processo, e più in generale per la specifica degli aspetti dinamici di un sistema software, anche grazie alla loro integrazione con gli altri  diagrammi  e formalismi UML. Nel complesso, UML fornisce un insieme di notazioni semi-formali  che consentono l’analisi e la specifica dei diversi aspetti di un sistema software, e che sono sufficientemente semplici ed intuitive da semplificare l’interazione con il cliente durante la fase di analisi di un sistema. Tali specifiche dovranno poi essere completate con aspetti di dettaglio e tradotte in un linguaggio formale (ad esempio il linguaggio WIDE nel caso dei processi), adatto ad essere interpretato o compilato da un sistema informatico.

Notazione degli activity diagrams e descrizione del processo Prenotazione Viaggi
Notazione degli activity diagrams e descrizione del processo Prenotazione Viaggi

 

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *