• Non ci sono risultati.

I diagrammi di attività e stato

N/A
N/A
Protected

Academic year: 2021

Condividi "I diagrammi di attività e stato"

Copied!
35
0
0

Testo completo

(1)

I diagrammi di attività e stato

Laboratorio di Ingegneria del Software Prof. Paolo Ciancarini

Dott. Sara Zuppiroli

A.A. 2010-2011

(2)

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à.

(3)

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.

(4)

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)

(5)

Attività: ingredienti

Notation

The notations for activity nodes are illustrated below. There are three kinds of nodes: action node, object node, and control node. See these classes for more information.

Examples

This figure illustrates the following kinds of activity node: action nodes (e.g., Receive Order, Fill Order), object nodes (Invoice), and control nodes (the initial node before Receive Order, the decision node after Receive Order, and the fork node and Join node around Ship Order, merge node before Close Order, and activity final after Close Order).

Rationale

Activity nodes are introduced to provide a general class for nodes connected by activity edges.

Changes from previous UML

ActivityNode replaces the use of StateVertex and its children for activity modeling in UML 1.5.

Figure 12.50 - Activity node notation

Figure 12.51 - Activity node example (where the arrowed lines are only the non-activity node symbols)

Action node Object node Control nodes

Receive Fill

Order Ship

Order Order

Close Order

Send

Invoice Make

Payment Accept

Payment [order

accepted]

[order rejected]

Invoice

Nodi azione: specificano unità atomiche, non interrompibili e istantanee di comportamento.

Nodi di inizio e di fine: sono nodi speciali che indicano l’inizio e la fine del flusso.

Nodi oggetto: sono oggetti particolarmente importanti usati come input e output di azioni.

Nodi controllo: descrivono il flusso dell’attività.

Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 5 / 35

(6)

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.

(7)

Precondizioni e postcondizioni

Package CompleteActivities

Local pre- and postconditions are shown as notes attached to the invocation with the keywords «localPrecondition» and

«localPostcondition», respectively.

Examples

Examples of actions are illustrated below. These perform behaviors called Send Payment and Accept Payment.

Below is an example of an action expressed in an application-dependent action language:

Package CompleteActivities

The example below illustrates local pre- and postconditions for the action of a drink-dispensing machine. This is

considered “local” because a drink-dispensing machine is constrained to operate under these conditions for this particular action. For a machine technician scenario, the situation would be different. Here, a machine technician would have a key to open up the machine, and therefore no money need be inserted to dispense the drink, nor change need be given. In such a situation, the global pre- and postconditions would be all that is required. (Global conditions are described in Activity specification, in the next subsection.) For example, a global precondition for a Dispense Drink activity could be “A drink is selected that the vending machine dispenses.” The postcondition, then, would be “The vending machine dispensed the drink that was selected.” In other words, there is no global requirement for money and correct change.

Figure 12.29 - Local pre- and postconditions

Figure 12.30 - Examples of actions

Figure 12.31 - Example of action with tool-dependent action language

«localPrecondition»

constraint

name

«localPostcondition»

constraint

Accept Payment Send

Payment

FOR every Employee calculate salary

print check ENDFOR

Si tratta di condizioni, espresse in qualunque modo, che devono essere soddisfatte per far iniziare o terminare l’azione

(permettere a un token di entrare o uscire).

Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 7 / 35

(8)

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).

(9)

Nodi decisione

Action1 Action2

[x<0]

[x=0]

[x>0]

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.

(10)

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.

(11)

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.

(12)

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.

(13)

Nodi oggetto

Sostieni scritto

Crea progetto Progetto

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.

(14)

Stato degli oggetti

Crea progetto

Progetto

Consegna progetto Progetto

[finito]

[valutato]

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.

(15)

Pin

Crea progetto

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.

(16)

Segnali ed eventi (1)

Accetta evento temporale Manda segnale Accetta evento

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à.

(17)

Segnali ed eventi (2)

Notifica consegna Crea progetto

Ricevi valutazione

Data scritto

Sostieni scritto Studia

Inizio corso

Segui lezioni

Ricevi specifiche

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.

(18)

Attività: esempio

Issue 8208 - add explanatory paragraph

Figure 12.37shows another example activity for a process to resolve a trouble ticket.

Below is an example of using class notation to show the class features of an activity. Associations and state machines can also be shown.

Rationale

Activities are introduced to flow models that coordinate other behaviors, including other flow models. It supports class features to model control and monitoring of executing processes, and relating them to other objects (for example, in an organization model).

Figure 12.37 - Workflow example

Figure 12.38 - Activity class with attributes and operations

Record Reproduce

Problem

Correct Problem Problem

Audit and Record Verify

Resolution

Communicate Results [else]

[recorded]

Trouble Ticket

ID Problem Resolutionand

[cannot reproduce problem]

[problem not solved]

[canreproduce

problem] [duplication of another problem]

[known problem and solution]

[not recorded]

[problem statement rectified]

«activity»

Fill Order costSoFar : USD

timeToComplete : Integer

suspend () resume ()

Un’attività è costituita da un flusso di azioni che ne sono i

mattoni. Si può rappresentare graficamente con un rettangolo arrotondato, come le azioni stesse (in effetti, un’azione può invocare un’altra attività).

Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 18 / 35

(19)

Attività: parametri e valori di ritorno

In the example below, production materials are streaming in to feed the ongoing printed circuit board fabrication. At the end of the activity, computers are quality checked. Computers that do not pass the test are exceptions. See Parameter for semantics of streaming and exception parameters.

Rationale

Activity parameter nodes are introduced to model parameters of activities in a way that integrates easily with the rest of the flow model.

Changes from previous UML

ActivityParameterNode is new in UML 2.0.

12.3.10 ActivityPartition (from IntermediateActivities)

An activity partition is a kind of activity group for identifying actions that have some characteristic in common.

Figure 12.55 - Example of activity parameters.nodes

Figure 12.56 - Example of activity parameter nodes for streaming and exceptions

Produce Printed-Circuit

Boards

Printed- Circuit Boards Production

Materials

Assemble Computers

Assembled Computers

Test Computers

Accepted Computers

Rejected Computers

{stream}

Produce Printed-Circuit

Boards

Printed- Circuit Boards Production

Materials

Assemble Computers

Assembled Computers

Test Computers

Accepted Computers

Rejected Computers

Parametri e valori di ritorno, se esistono, si rappresentano come nodi oggetto sul bordo dell’attività.

Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 19 / 35

(20)

Partizioni (swimlanes)

Progetto

Progetto Valuta progetto Docente

Supera scritto Crea progetto

Studente

Valuta progetto Progetto

Valuta progetto

Progetto [finito]

[valutato]

Suddividono il flusso dell’attività, ma non ne modificano il significato.

La suddivisione può essere orizzontale, verticale o multidimensionale.

(21)

Partizioni (2)

UML Superstructure Specification, v2.1 359

The example below depicts multidimensional swim lanes. The Receive Order and Fill Order behaviors are performed by 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 not specified by the containing partition, because it has an overriding partition.

Figure 12.60 - Activity partition using annotation example

Figure 12.61 - Activity partition using multidimensional swimlane example (Accounting

Department) (Accounting

Department) (Order

Department)

(Order Department)

(Order

Department) (Order

Department) [order

accepted]

Invoice

«external»

Receive Order

Fill Order Ship Order

Close Order

Send Invoice Make

Payment Accept

Payment (Customer)

Order ProcessorAccounting Clerk

Receive Fill

Order Ship

Order Order

Send

Invoice Accept

Payment

Invoice

Close Order

Make Payment [order

accepted]

Seattle Reno

«attribute» performingLocation:Location

«external»

(Customer)

«class»«class»

Le partizioni sono generalmente suddivise secondo uno 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

(22)

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.

(23)

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.

(24)

Regioni interrompibili (2)

Examples

The first figure below illustrates that when an order cancellation request is made—only while receiving, filling, or shipping) orders—the Cancel Order behavior is invoked.

Rationale

Interruptible regions are introduced to support more flexible non-local termination of flow.

Changes from previous UML

Interruptible regions in activity modeling are new to UML 2.0.

12.3.34 JoinNode (from CompleteActivities, IntermediateActivities)

A join node is a control node that synchronizes multiple flows.

Generalizations

“ControlNode (from BasicActivities)” on page 371 Description

A join node has multiple incoming edges and one outgoing edge.

Issue 8509 - capitalize ‘boolean’ and add package header

Package CompleteActivities

Join nodes have a Boolean value specification using the names of the incoming edges to specify the conditions under which the join will emit a token.

Figure 12.100 - InterruptibleActivityRegion example

Receive Fill

Order Ship

Order

Order Close

Order

Send

Invoice Make

Payment Accept

Payment [order

accepted]

[order rejected]

Invoice

Cancel Order Order

cancel request

L’ordine è cancellato solo se un token si trova all’interno della regione al momento della ricezione del segnale.

Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 24 / 35

(25)

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.

(26)

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.

(27)

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.

(28)

Esempio: m.s. di comportamento

Examples

Figure 15.33 - Composite state with two states

Figure 15.34 - Composite State with hidden decomposition indicator icon Start

entry/ start dial tone

Partial Dial

entry/number.append(n) digit(n)

digit(n)

[number.isValid()]

Dialing

exit/ stop dial tone

entry / start dial tone exit / stop dial tone

HiddenComposite entry / start dial tone exit / stop dial tone

HiddenComposite

In una m.s. di comportamento, gli stati possono contenere azioni intraprese all’entrata (entry), all’interno (do) e

all’uscita (exit) dello stato.

’Dialing’ è uno stato composito che contiene altri stati.

Lab. di Ingegneria del Software () I diagrammi di attività e stato A.A. 2010-2011 28 / 35

(29)

Esercizio n.3

Descrivere con un diagramma di stato della classe libro di una biblioteca. Individuare gli stati, le transizioni e gli eventi.

(30)

Esercizio n.4

Descrivere con un diagramma di stato della classe libretto.

Individuare gli stati, le transizioni e gli eventi.

(31)

Stati compositi

CompositeState

State2 State1

Examples

Figure 15.33 - Composite state with two states

Figure 15.34 - Composite State with hidden decomposition indicator icon

Start

entry/ start dial tone

Partial Dial

entry/number.append(n) digit(n)

digit(n)

[number.isValid()] Dialing

exit/ stop dial tone

entry / start dial tone exit / stop dial tone

HiddenComposite entry / start dial tone exit / stop dial tone

HiddenComposite

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

(32)

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.

(33)

Stati compositi ed entry/exit points (1)

Examples

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 called aborted.

Figure 15.41 - State machine diagram representing a state machine DialTone

Dialing

Talking

Ringing Busy

dial digit(n)

connected

callee answers Idle

busy lift

receiver

caller hangs up

callee hangs up Active

dial digit(n)

/get dial tone

do/ play busy tone

do/ play ringing tone

/enable speech /disconnect

do/ play dial tone

Pinned

callee answers

Connecting

dial digit(n)[valid]

Time-out do/ play message

dial digit(n)[invalid]

/connect Invalid

do/ play message

[incomplete]

after (15 sec.)

after (15 sec.) activeEntry

aborted

abort terminate

Notare entry ed exit points (cerchi e cerchi con croce). Possono 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

(34)

Entry/exit points (2)

Examples

Issue 8415 - replace ‘sub state machine’ with ‘submachine state’

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.

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.

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

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.

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.

Figure 15.36 - Submachine State HandleFailure:

sub1

subEnd error1/

error3/

/fixed1 FailureSubmachine

L’evento error3 fa partire l’esecuzione dallo stato iniziale della submachine o stato composito.

L’evento error1 fa partire l’esecuzione dall’entry point sub1.

Se l’esecuzione termina nell’exit point subEnd si esegue la transizione di completamento che genera il comportamento fixed1.

Se l’esecuzione termina nello stato finale si segue la transizione di completamento sulla destra.

(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.

Riferimenti

Documenti correlati

La città romana si estendeva dall’altura del Castello verso il Rio Plancia, con un’ulteriore articolazione costituita dal porto, nella zona del Grau Vell, una delle maggiori fonti

La biodiversità del batterioplancton nelle acque profonde è stata studiata in maggiore dettaglio utilizzando la tecnica del pirosequenziamento (sequenziamento

 Selects only the vertexes for which the specified condition is satisfied and returns a new graph with only the subset of selected

The present study aimed at investigating the self- reported prevalence of AR and NAR in the general popu- lation aged 20–84 years in Italy and to compare the risk factor

This figure illustrates the following kinds of activity node: action nodes (e.g., Receive Order, Fill Order), object nodes (Invoice), and control nodes (the initial node before

Come è emerso dalle ricerche com- piute in questi ultimi anni, il mal del- l’esca della vite non è da considerarsi una malattia complessa, ma piuttosto un complesso di malattie;

Nabokov sceglie di rappresentare la pagina esterna delle ali perché il disegno delle macchie è molto più variabile dell’azzurro della pagina interna tra le diverse specie.. Ma sono

Della stessa collana Fotovoltaico in Architettura (2007) LuciaCeccherini Nelli, EULEB EUropean high quality Low Energy Buildings (2007) Marco Sala e Lucia Ceccherini