I diagrammi di attività e stato

Pagina creata da Enrico Pellegrino
 
CONTINUA A LEGGERE
I diagrammi di attività e stato

                                      Angelo Di Iorio
                              (dal materiale di Gian Piero Favini)

                                      A.A. 2010-2011

 Ingegneria del Software ()            I diagrammi di attività e stato   A.A. 2010-2011   1 / 53

Tassonomia dei diagrammi UML 2

 Ingegneria del Software ()            I diagrammi di attività e stato   A.A. 2010-2011   2 / 53
Cosa sono e a cosa servono

     I diagrammi di attività (activity diagram) e stato (state
     machine diagram) sono diagrammi che descrivono
     comportamento.
     Il diagramma di attività modella un comportamento (che
     riguarda una o più entità) come un insieme di azioni
     organizzate secondo un flusso.
     Il diagramma di stato modella il comportamento
     (generalmente di una sola entità) come variazioni del suo
     stato interno.

  Ingegneria del Software ()         I diagrammi di attività e stato        A.A. 2010-2011   3 / 53

Un passo indietro: Interazione vs. Macchina
a stati
     Interazione: un insieme di oggetti che si scambiano
     messaggi per raggiungere un dato obiettivo
                                           1: saluta

                               : Person                          : Person

                                           2: rispondi

     Macchina a stati: descrive la sequenza di stati in cui si
     trova un oggetto durante il suo ciclo di vita e in risposta a
     eventi

  Ingegneria del Software ()         I diagrammi di attività e stato        A.A. 2010-2011   4 / 53
Macchine a stati in UML
     Qualunque classificatore UML può essere associato a una
     macchina a stati che descrive il funzionamento delle sue
     istanze.
     Uno stato è una condizione o situazione nella vita di un
     oggetto in cui esso:
          �   soddisfa una condizione,
          �   esegue un’attività o
          �   aspetta un evento

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

     La macchina a stati riceve occorrenze di eventi che
     vengono salvati su una coda ed estratti uno alla volta.
     La semantica di questi eventi è di tipo run-to-completion:
     l’occorrenza di un evento viene estratta solo dopo che la
     macchina a stati ha finito di processare quella precedente.
     Se ci sono più transizioni eseguibili in un dato momento (es.
     2 transizioni dallo stesso stato con lo stesso evento e due
     condizioni diverse, entrambe vere), solo una viene eseguita.

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

Transizioni

     Ogni transizione, oltre allo stato origine e destinazione, può
     specificare:
          �   Event: un ‘trigger’ che attiva il passaggio di stato
          �   Guard: una condizione che, se vera, permette il passaggio
              di stato
          �   Action: un’azione che risulta dal combio di stato
     Sintassi: event[guard]/action
     La transizione avviene come risposta a uno degli eventi
     (quando la guardia è vera), e al momento della transizione il
     contesto esegue l’azione specificata
     Sono tutti opzionali

  Ingegneria del Software ()   I diagrammi di attività e stato   A.A. 2010-2011   8 / 53
Un esempio completo (1)

  Ingegneria del Software ()   I diagrammi di attività e stato    A.A. 2010-2011    9 / 53

Un esempio completo (2)

  Ingegneria del Software ()   I diagrammi di attività e stato   A.A. 2010-2011    10 / 53
(pseudo)stati iniziali e finali

     Gli esempi precedenti mostrano due pseudo-stati, per
     avviare e bloccare la macchina a stati:
          �   Il disco nero marca l’inizio dell’esecuzione. Non è uno stato
              vero e proprio ma un marcatore che punta allo stato da cui
              partire.
          �   Il disco nero bordato (nodo finale), indica che l’esecuzione è
              terminata.
     Possono comparire in qualunque numero all’interno di un
     diagramma (o di uno stato composito, che vedremo in
     seguito).

  Ingegneria del Software ()    I diagrammi di attività e stato   A.A. 2010-2011   11 / 53

Azioni interne
     Uno stato può reagire ad eventi (e verificare condizioni)
     anche senza una transizione ad uno stato diverso
     Le internal activities sono mostrate nel secondo slot e
     seguono la stessa sintassi delle transizioni
     Simile ad una self-transition
     Esempio: riempimento di un campo di testo in un form

  Ingegneria del Software ()    I diagrammi di attività e stato   A.A. 2010-2011   12 / 53
Entry, Exit, Do

     All’interno di uno stato si possono usare alcune azioni
     speciali, indicate tramite keyword:
          �   entry: eseguita quando l’oggetto entra nello stato
          �   exit: eseguita quando l’oggetto esce dallo stato
          �   do (do-activity): eseguita mentre l’oggetto è nello stato
     Una self-transition attiva sempre le entry ed exit, le internal
     activities invece no
     Una do-activity non è ‘istantanea’ ma può durare per un
     intervallo di tempo ed essere interrotta (da altri eventi)

  Ingegneria del Software ()    I diagrammi di attività e stato   A.A. 2010-2011   13 / 53

do-activity: esempio

     Modelliamo la ricerca di nuovo hardware da installare su un
     sistema operativo.

  Ingegneria del Software ()    I diagrammi di attività e stato   A.A. 2010-2011   14 / 53
Figure 15.33 - Composite state with two states

Stati compositi

                                   CompositeState                                   HiddenComposite

                                                                                  entry / start dial tone
                          State1                    State2
                                                                                  exit / stop dial tone

                                                                            Figure 15.34 - Composite State with hidden deco

     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.

  Ingegneria del Software ()                    I diagrammi di attività e stato                  A.A. 2010-2011   15 / 53

Stati compositi: esempio

                                                                            UML Superstructure Specification, v2.1

  Ingegneria del Software ()                    I diagrammi di attività e stato                  A.A. 2010-2011   16 / 53
Stati compositi e transizioni
     Si possono definire transizioni da uno stato interno verso
     stati esterni
     Transizioni in uscita dal bordo dello stato composito e legate
     ad un evento sono ereditate da tutti gli stati all’interno.

  Ingegneria del Software ()   I diagrammi di attività e stato   A.A. 2010-2011   17 / 53

History pseudostate
     Un history pseudostate indica il più recente stato interno
     attivo di uno stato composito
     Utile per ripristinare stati precedenti
     Esempio: alla ri-accensione di una radio/CD si seleziona
     radio o CD in base alla scelta attiva allo spegnimento

  Ingegneria del Software ()   I diagrammi di attività e stato   A.A. 2010-2011   18 / 53
Stati compositi e concorrenza
     Gli stati compositi sono utili per modellare la concorrenza.
     Si divide lo stato composito in (sotto-)diagrammi ortogonali
     eseguiti in mutua esclusione
     Il diagramma sarebbe molto meno chiaro senza questo
     approccio (bisogna considerare tutte le possibilità)
     Esempio: una radiosveglia che o mostra l’orario o fa
     ascoltare musica

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

Stati compositi e sincronizzazione
     Gli stati compositi sono inoltre utili per modellare la
     sincronizzazione. Si divide lo stato composito in
     (sotto-)diagrammi e si usano gli operatori di fork e join (che
     vedremo tra poco)
     Esempio: le attività e prove che uno studente deve
     superare per concludere un corso

  Ingegneria del Software ()   I diagrammi di attività e stato   A.A. 2010-2011   20 / 53
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.

  Ingegneria del Software ()                   I diagrammi di attività e stato                               A.A. 2010-2011           21 / 53

                               Examples

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

Completamento ed entry/exit points
                               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
     dello stato composito.    FailureSubmachine.

                               The transition emanating from the “subEnd” exit point of the submachine will execute the “fixed1” behavior in addition
     L’evento error1 fa partire l’esecuzione dall’entry point sub1.
                               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

     Se l’esecuzione termina nell’exit point subEnd si esegue la
                               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
     transizione di completamento che genera il comportamento
                               machine in the state name.

     fixed1.
     Se l’esecuzione termina nello stato finale si segue la
     transizione sulla destra.
  Ingegneria del Software ()                   I diagrammi di attività e stato                               A.A. 2010-2011           22 / 53

                               UML Superstructure Specification, v2.1                                                                                583
Entry/exit points (2)
                            Inizializzazione

                                                              connesso                             ok
                                            Connessione                       Autenticazione
                            entry                                                                         tuttoOK

                                                   errore                                 nonRiconosciuto

                                      erroreConnessione                       nonAutenticato

                  Esempio

                                                           Inizializzazione                            Funzionante
                                    entry                                                tuttoOK

                                                       erroreConnessione          nonAutenticato

                               dopo(60 secondi)

     Forniscono un modo per entrare ed uscire dalle macchine a
     stati in diversi punti (simili a entry/exit points interni)
     Si possono usare in combinazione con i nodi iniziali e finali.
  Ingegneria del Software ()                           I diagrammi di attività e stato                               A.A. 2010-2011   23 / 53

    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
Un esempio completo
    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

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

    Figure 15.41 - State machine diagram representing a state machine
Comportamento vs. Protocollo

     Una macchina a stati può essere o del comportamento o di
     protocollo (la distinzione è sottile).
     Una macchina a stati del comportamento specifica un
     comportamento del contesto che va modellato: il modo in
     cui reagisce agli eventi.
     Una macchina a stati di protocollo specifica quali operazioni
     possono essere eseguite sul contesto in ogni momento, e
     può essere associata ad oggetti senza comportamento e
     perfino non istanziabili (es. interfacce).
     Un classificatore può avere al massimo una m.s. di
     comportamento e un qualunque numero di m.s. di
     protocollo.

  Ingegneria del Software ()                   I diagrammi di attività e stato                    A.A. 2010-2011   25 / 53

Esempio: m.s. di comportamento
     Examples

             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
     Finora       abbiamo visto soprattutto questo tipo di diagramma,
       exit / stop dial tone

     che è il più comune
     Figure 15.34 - Composite State with hidden decomposition indicator icon

  Ingegneria del Software ()                   I diagrammi di attività e stato                    A.A. 2010-2011   26 / 53
machines can always be found by having one protocol state machine, with sub state machines in concurrent regions

                   Notation
                   The notation for protocol state machine is very similar to the one of behavioral state machines. The keyword {proto
Esempio: m.s. di protocollo
                   placed close to the name of the state machine differentiates graphically protocol state machine diagrams.

                     D oor {protocol}

                                                 [doorW ay -> isE m pty] C lose/
                                        opened                                     closed
                           create/

                                                         open/                        lock/

                                                                               locked
                                                                                              unlock/

                   Figure 15.12 - Protocol state machine

     In una m.s.         di protocollo, gli eventi nelle transizioni sono
             15.3.7 ProtocolTransition (from ProtocolStateMachines)

     generalmente
             Generalizations  operazioni del classificatore di contesto (in
     questo caso          Door)
                    • “Transition  (from BehaviorStateMachines)” on page 594

     Il diagramma
             Descriptionmostra le operazioni legali in ogni momento

     del suoAoperation.
                 ciclo     di vita.
                  protocol transition (transition as specialized in the ProtocolStateMachines package) specifies a legal transition for
                          Transitions of protocol state machines have the following information: a pre condition (guard), on trigger,

     L’ordinetoa post
                  è
                  the particolarmente                  importante
                      condition. Every protocol transition is associated to zero or one operation (referred BehavioralFeature) that bel
                      context classifier of the protocol state machine.

  Ingegneria del Software ()                 I diagrammi di attività e stato                            A.A. 2010-2011   27 / 53
                   UML Superstructure Specification, v2.1

m.s. di protocollo: DBConnector

  Ingegneria del Software ()                 I diagrammi di attività e stato                            A.A. 2010-2011   28 / 53
Il diagramma di attività
       Modella un’attività relativa ad un qualsiasi oggetto, ad
       esempio:
            �   classi
            �   casi d’uso
            �   interfacce
            �   componenti
            �   interfacce
            �   operazioni di classe
       Alcuni usi dei diagrammi di attività:
            �   modellare il flusso di un caso d’uso (analisi)
            �   modellare il funzionamento di un’operazione di classe
                (progettazione)
            �   modellare un algoritmo (progettazione)

    Ingegneria del Software ()            I diagrammi di attività e stato                   A.A. 2010-2011   29 / 53

    Notation
Attività:     ingredienti
  The notations for activity nodes are illustrated below. There are three kinds of nodes: action node, ob
    control node. See these classes for more information.

        Action node              Object node                                Control nodes

       Nodi
    Figure       - Activity specificano
              azione:
           12.50            node notation       unità di comportamento.
       Nodi oggetto: specificano oggetti usati come input e output
    Examples
       di azioni.
    This figure illustrates the following kinds of activity node: action nodes (e.g., Receive Order, Fill Or
       Nodi and
    (Invoice), controllo:
                    control nodesspecificano       il before
                                   (the initial node  flussoReceive
                                                              dell’attività.
                                                                    Order, the decision node after Receive O
    node and Join node around Ship Order, merge node before Close Order, and activity final after Close

                            [order
    Ingegneria del Software ()            I diagrammi di attività e stato                   A.A. 2010-2011   30 / 53
                            rejected]
FigureExamples  of actions
                                        12.29 - Local   pre-are
                                                             andillustrated below. These perform behaviors called Send Payment a
                                                                   postconditions

                                 Examples
                                                Send                 Accept
Nodi azione                      Examples of actions are illustrated
                                          Payment            Payment below. These perform behaviors called Send Payme

                                        Figure 12.30 - Examples of actions

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

                                 Figure 12.30 - Examples of actions
                                          FOR every Employee
                                          calculate salary
                                 Below is an example
                                          print check of an action expressed in an application-dependent action langua
                                          ENDFOR

                                        Figure 12.31 - Example of action with tool-dependent action language
                                       FOR every Employee
     Un’azione può invocare     Package
                              calculate    un’attività,
                                            CompleteActivitiesun comportamento o
                                          salary
     un’operazione. print       Thecheck
                              ENDFOR
                                     example below illustrates local pre- and postconditions for the action of a drink-dispe
                                considered “local” because a drink-dispensing machine is constrained to operate under thes
     Come gli altri elementi    action.di
                         Figureto12.31
                                         ForUML,
                                              a machine anche
                                         - Example     of action
                                                                       le azioni
                                                         technician scenario,            accettano
                                                                                the situation
                                                                    with tool-dependent
                                                                                              would be different. Here, a machin
                                                                                             action  language
                                   open up   the machine,   and therefore  no money need be    inserted to dispense the drink, nor
     livelli di dettaglio e linguaggi              differenti.
                                a situation, the global  pre- and postconditions would be all that is required. (Global condit
                         Package      CompleteActivities
                                specification,  in the next subsection.) For example, a global precondition for a Dispense Dr
     Al contrario dei messaggi                neithediagrammi
                                is selected that                            di interazione,
                                                      vending machine dispenses.”      The postcondition,lethen, would be “The v
                         The example
                                drink thatbelow   illustratesIn local
                                                                 other pre- and   postconditions    for the action  of a drink-d
     azioni non costringono             il modellatore a definire tutte le
                                            was selected.”             words, there  is no global requirement
                         considered “local” because a drink-dispensing machine is constrained to operate under
                                                                                                               for money   and cor

     entità in gioco. action.326  For a machine technician scenario, the situation would be different. Here, UML            a macS
                         to open up the machine, and therefore no money need be inserted to dispense the drink,
     Le transizioni (frecce)
                         a situation,tra    azioni
                                       the global    pre-possono            avere
                                                           and postconditions      would unabe allguardia.
                                                                                                   that is required. (Global co
                                 specification, in the next subsection.) For example, a global precondition for a Dispens
  Ingegneria del Software ()             I diagrammi di attività e stato             A.A. 2010-2011   31 / 53
                                 is selected that the vending machine dispenses.” The postcondition, then, would be “T
                                 drink that was selected.” In other words, there is no global requirement for money and

                                 326                                                                                          UM
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.

  Ingegneria del Software ()              I diagrammi di attività e stato                A.A. 2010-2011     32 / 53
Local pre- and postconditions are shown as notes attache
                               «localPostcondition», respectively.
Precondizioni e postcondizioni
                                  «localPrecondition»
                                   constraint

                                          name

                                    «localPostcondition»
                                     constraint

Si tratta di condizioni,
                  Figureespresse  in qualunque
                         12.29 - Local  pre- andmodo,  che devono
                                                postconditions
essere soddisfatte per far iniziare o terminare l’azione
(permettere a unExamples
                   token di entrare o uscire).
  Ingegneria del Software ()           I diagrammi di attività e stato                    A.A. 2010-2011   33 / 53

                               Examples of actions are illustrated below. These perform

Nodi iniziali e finali
                                     Send                                 Accept
                                    Payment                              Payment
                           Realizza progetto                             Supera scritto
                               Figure 12.30 - Examples of actions

                               Below is an example of an action expressed in an applica
     Il disco nero marca l’inizio dell’attività (genera token).
     Quando un token raggiunge un disco nero bordato (nodo
     finale), l’attività ha
                         FORtermine.
                                every Employee
     Possono comparire   calculate  salary numero all’interno di
                              in qualunque
                         print check
     un’attività (ogni nodo     iniziale fa partire un flusso di
     esecuzione, il primoENDFORnodo finale raggiunto ferma tutti i
     flussi).
                    Figure 12.31 - Example of action with tool-dependent ac
  Ingegneria del Software ()           I diagrammi di attività e stato                    A.A. 2010-2011   34 / 53

                               Package CompleteActivities
Nodi decisione e fusione

                                [x0]
                                                       Action3

     I nodi decisione hanno un input e vari output mutuamente
     esclusivi: copiano i token in entrata su uno degli output.
     I nodi fusione hanno vari input e un solo output, sul quale
     vengono indirizzati tutti i token in ingresso.

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

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.

  Ingegneria del Software ()    I diagrammi di attività e stato   A.A. 2010-2011   36 / 53
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.
  Ingegneria del Software ()   I diagrammi di attività e stato   A.A. 2010-2011   37 / 53

Un esempio completo

  Ingegneria del Software ()   I diagrammi di attività e stato   A.A. 2010-2011   38 / 53
Nodi oggetto
                               Crea progetto                 Progetto

                                                                                         Sostieni scritto

                                                Studia

      Servono per modellare gli oggetti in input e output delle
      azioni
      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
      (es: gli archi che entrano ed escono dai nodi decisione e
      fusione devono essere o tutti object o tutti control)
  Ingegneria del Software ()                   I diagrammi di attività e stato                    A.A. 2010-2011   39 / 53

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.

  Ingegneria del Software ()                   I diagrammi di attività e stato                    A.A. 2010-2011   40 / 53
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.
  Ingegneria del Software ()              I diagrammi di attività e stato              A.A. 2010-2011   41 / 53

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

  Ingegneria del Software ()              I diagrammi di attività e stato              A.A. 2010-2011   42 / 53
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.
        Ingegneria del Software ()                          I diagrammi di attività e stato                             A.A. 2010-2011       43 / 53

Issue     8208 - add explanatory paragraph
 Attività: esempio
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]

  Un’attività è costituita da un flusso di azioni che ne sono i
Figure 12.37 - Workflow example

  mattoni.
Below           In effetti
      is an example           un’azione
                    of using class               può
                                   notation to show the invocare        un’altra
                                                         class features of an activity. attività.
                                                                                        Associations and state machines can
also be shown.
        Ingegneria del Software ()                          I diagrammi di attività e stato                             A.A. 2010-2011       44 / 53

              «activity»
              Fill Order
Attività: esempio (2)

    Ingegneria del Software ()                 I diagrammi di attività e stato               A.A. 2010-2011   45 / 53

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 the
                                                                                  printed circuit board fabrication.
 end of the activity, computers are quality checked. Computers that do not pass the test are exceptions. See Parameter for
nodi    oggetto
 semantics  of streamingsul
                          and bordo      dell’attività.
                              exception parameters.

       {stream}                                                                                  Rejected
    Ingegneria del Software ()                 I diagrammi di attività e stato               A.A.Computers
                                                                                                  2010-2011   46 / 53
                                Produce               Assemble                     Test
         Production
                             Printed-Circuit          Computers                  Computers
          Materials
                                 Boards
Partizioni (swimlanes)

                                               Studente                                                             Docente

                                                                                       Progetto
                                       Crea progetto                                   Progetto
                                                                                        [finito]                    Valuta progetto

                                                                                       Progetto
                                       Supera scritto                                  Progetto
                                                                                       [valutato]

                                   (Order                      (Order                      (Order
                                 Department)                 Department)                 Department)                         (Order
                                                             Fill Order                   Ship Order                       Department)
                                  Receive
     Suddividono il flusso [order
                                     dell’attività, ma non ne modificano
                                   Order
                           accepted]
                                                                Close Order
                                                                            il
     significato.
     La suddivisione
                  Department)può(Customer)
                  (Accounting
                                     essere orizzontale,
                                              (Accounting
                                              Department)
                                                          verticale o
                                                                 «external»

                  Send Invoice       Make
     multidimensionale. Payment
                                                Accept
                                               Payment

                                                     Invoice

  Ingegneria del Software ()                                      I diagrammi di attività e stato                             A.A. 2010-2011   47 / 53
           Figure 12.60 - Activity partition using annotation example

           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

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 di 359
       UML Superstructure Specification, v2.1

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
  Ingegneria del Software ()                                      I diagrammi di attività e stato                             A.A. 2010-2011   48 / 53
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.

  Ingegneria del Software ()                     I diagrammi di attività e stato            A.A. 2010-2011   49 / 53

Examples
The first figure below illustrates that when an order cancellation request is made—only while receiving, filling, o

Regioni interrompibili (2)
shipping) orders—the Cancel Order behavior is invoked.

                                                                                   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.
  Ingegneria del Software ()                     I diagrammi di attività e stato            A.A. 2010-2011   50 / 53
Changes from previous UML
Interruptible regions in activity modeling are new to UML 2.0.
Attività vs. Stato

     In UML 1.x, i due diagrammi sono in pratica la stessa cosa,
     ma usata in due modi diversi (i diagrammi di attività sono
     diagrammi di stato in cui gli stati sono azioni).
     UML 2 (qui utilizzato) ridefinisce e separa la semantica dei
     due diagrammi: quelli di attività si basano sulle reti di Petri,
     quelli di stato sulla ricerca di Harel.
     Dal punto di vista del modellatore, in UML 1.x entrambi i
     diagrammi sono diagrammi di stato privi di alcune
     funzionalità introdotte con UML 2.

  Ingegneria del Software ()   I diagrammi di attività e stato   A.A. 2010-2011   51 / 53

Attività vs. Stato (2)
     Uno stato al contrario di un’azione dei diagrammi di attività
     è solitamente rappresentato con aggettivi e nomi piuttosto
     che verbi.
     Nei diagrammi di stato non si usano token; le transizioni
     sono effettuate quando avviene l’evento corrispondente.
     Lo stato iniziale e quello finale si rappresentano allo stesso
     modo in entrambi i diagrammi (cerchio nero e cerchio
     bordato).
     Altri elementi di notazione in comune con i diagrammi di
     attività sono 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.

  Ingegneria del Software ()   I diagrammi di attività e stato   A.A. 2010-2011   52 / 53
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.

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

                       I diagrammi di interazione

                                  Angelo Di Iorio
                 (dal materiale di Gian Piero Favini e Sara Zuppiroli)

                                 A.A. 2010-2011

  Ingegneria del Software ()       I diagrammi di interazione        A.A. 2010-2011    1 / 47
Tassonomia dei diagrammi UML 2

  Structure diagrams show the static structure of the objects in a system. That is, they depict those elements in a
  specification that are irrespective of time. The elements in a structure diagram represent the meaningful concepts of an
  application, and may include abstract, real-world and implementation concepts. For example, a structure diagram for an
  airline reservation system might include classifiers that represent seat assignment algorithms, tickets, and a credit
  authorization
 Ingegneria   delservice.
                  SoftwareStructure
                             ()     diagrams do notI show the details
                                                     diagrammi        of dynamic behavior, which are illustrated
                                                                di interazione                                   by behavioral
                                                                                                           A.A. 2010-2011        2 / 47
  diagrams. However, they may show relationships to the behaviors of the classifiers exhibited in the structure diagrams.

  Behavior diagrams show the dynamic behavior of the objects in a system, including their methods, collaborations,
  activities, and state histories. The dynamic behavior of a system can be described as a series of changes to the system over
  time. Behavior diagrams can be further classified into several other kinds as illustrated in Figure A.5.

Cosa sono e a cosa servono
  Please note that this taxonomy provides a logical organization for the various major kinds of diagrams. However, it does
  not preclude mixing different kinds of diagram types, as one might do when one combines structural and behavioral
  elements (e.g., showing a state machine nested inside an internal structure). Consequently, the boundaries between the
  various kinds of diagram types are not strictly enforced.

  The constructs contained in each of the thirteen UML diagrams is described in the Superstructure chapters as indicated
    Sono diagrammi di comportamento che modellano le
  below.

    interazioni
      • Activity Diagram - tra   varie
                           “Activities”       entità
                                        on page 307        di un sistema.
      • Class Diagram - “Classes” on page 21
    Visualizzano
      • Communication Diagramlo      scambio
                                 - “Interactions”         di messaggi tra entità nel tempo.
                                                  on page 477
      • Component Diagram - “Components” on page 147
    Il• loro
        Compositescopo         è mostrare
                   Structure Diagram                   come
                                      - “Composite Structures”      un
                                                               on page 167 certo comportamento
      • Deployment diagram - “Deployments” on page 201
    viene realizzato dalla collaborazione delle entità in gioco.
    La parola chiave è realizzare: questi diagrammi mostrano
    la realizzazione di un comportamento offerto.
    In altri termini: il comportamento del sistema da una
    prospettiva interna
    Come gli altri diagrammi, possono avere diversi livelli di
    astrazione.

 Ingegneria del Software ()                       I diagrammi di interazione                              A.A. 2010-2011         3 / 47
Come procedere

Un diagramma di interazione necessita di due cose:
    Un comportamento da realizzare tratto da un classificatore
    (classificatore di contesto), ad esempio...
          �   un caso d’uso
          �   un’operazione di classe
     Una serie di elementi che realizzano il comportamento, ad
     esempio...
          �   attori
          �   istanze di classe
Questi ingredienti provengono da diagrammi creati
precedentemente.

  Ingegneria del Software ()      I diagrammi di interazione   A.A. 2010-2011   4 / 47

I diagrammi
Ci sono 4 tipi di diagrammi di interazione, noi ci concentreremo
sui primi 2.
     Diagramma di sequenza: adatto a mostrare la sequenza
     temporale degli avvenimenti per ogni entità nel diagramma.
     Diagramma di comunicazione: adatto a mostrare le
     relazioni strutturali e i collegamenti tra le entità e i messaggi
     che vi transitano.

     Diagramma di interazione generale: adatto a mostrare la
     costruzione di interazioni complesse a partire da interazioni
     più semplici.
     Diagramma di temporizzazione: adatto a mostrare
     l’evoluzione dell’interazione in tempo reale.

  Ingegneria del Software ()      I diagrammi di interazione   A.A. 2010-2011   5 / 47
Elementi dei diagrammi d’interazione

Nei diagrammi di interazione generalmente non compaiono
direttamente classificatori come le classi: al loro posto ci sono
     Istanze di classificatori (oggetti, istanze di attori, etc.)
     Linee di vita (lifeline) di classificatori (esprimono ruoli, non
     specifici oggetti)
La differenza tra istanze e linee di vita è sottile, ma in generale è
preferibile usare le linee di vita.

Questi diagrammi includono anche (anzi, ne sono gli elementi
principali) i messaggi, ossia i segnali che si scambiano le
istanze di classificatori e/o le linee di vita

  Ingegneria del Software ()    I diagrammi di interazione   A.A. 2010-2011   6 / 47

Istanze vs. linee di vita

     Un’istanza:
          �   rappresenta uno specifico oggetto, e solo quello
     Una linea di vita:
          �   è più generale
          �   rappresenta un’istanza arbitraria di un classificatore
          �   fornisce modi per specificare come quest’istanza viene
              scelta
          �   esprime il ruolo giocato da un’istanza senza preoccuparsi
              della sua identità

  Ingegneria del Software ()    I diagrammi di interazione   A.A. 2010-2011   7 / 47
Istanze e linee di vita in UML

                               Jim : Person               buyer : Person

     Entrambe usano la notazione del loro classificatore, ma le
     linee di vita non sono sottolineate.
     La notazione completa per una linea di vita è:
                         nome [selettore] : tipo
     Il selettore è un’espressione booleana opzionale che
     permette di scegliere un particolare rappresentante del
     classificatore, ad es. [id=”1234”].
     Senza selettore la linea di vita rappresenta un’arbitraria
     istanza.
  Ingegneria del Software ()            I diagrammi di interazione         A.A. 2010-2011   8 / 47

I diagrammi di sequenza
     Evidenziano l’ordine temporale delle invocazioni dei metodi
     Una linea verticale tratteggiata indica una sequenza
     temporale.
     Gli eventi hanno luogo nel loro ordine sulla linea; le
     distanze sono irrilevanti.
     Più linee di vita interagiscono per realizzare il
     comportamento offerto, scambiandosi messaggi

                                              buyer : Person

  Ingegneria del Software ()            I diagrammi di interazione         A.A. 2010-2011   9 / 47
Messaggi

     Rappresentano comunicazioni tra linee di vita: segnali,
     chiamate di operazioni, creazione e distruzione di oggetti.
     Sette tipi definiti:
          �   chiamata sincrona
          �   chiamata asincrona
          �   ritorno da chiamata
          �   creazione
          �   distruzione
          �   messaggio trovato
          �   messaggio perso

  Ingegneria del Software ()                   I diagrammi di interazione               A.A. 2010-2011   10 / 47

Tipi di messaggi: chiamata (1)
                                           lifeline1                        lifeline2

                                                         message(param)
                               Asincrono

                                                         message2(p1,p2)
                               Sincrono

                                                         Ritorno

     Comunicazione sincrona vs. comunicazione asincrona.
     I rettangoli di attivazione (indicano un focus di controllo)
     sono opzionali.
  Ingegneria del Software ()                   I diagrammi di interazione               A.A. 2010-2011   11 / 47
Tipi di messaggi: chiamata (2)

     I messaggi sincroni fanno bloccare chi li manda fino al
     messaggio di ritorno del destinatario.
     Nei messaggi asincroni il mittente non si aspetta un
     messaggio di ritorno e prosegue immediatamente.
     I messaggi di ritorno sono opzionali e in generale inclusi
     solo quando non ostacolano la leggibilità del diagramma
     oppure per segnalare valori di ritorno.
     La distinzione tra messaggi sincroni e asincroni in genere
     emerge in fase di progettazione.
     In fase di analisi, conviene indicare tutti i messaggi come
     sincroni (è il caso più vincolante).

  Ingegneria del Software ()   I diagrammi di interazione   A.A. 2010-2011   12 / 47

Sintassi messaggi

     In fase di analisi generalmente basta includere il nome del
     messaggio.
     Se si desidera maggiore dettaglio, si include una lista di
     parametri tra parentesi.
     Si possono anche usare guardie per verificare condizioni
     Si possono indicare i parametri formali, quelli attuali, o
     entrambi (in quest’ordine: getArea(shape=g)).

  Ingegneria del Software ()   I diagrammi di interazione   A.A. 2010-2011   13 / 47
Attivazioni annidate (1)
                                a:A                                b:B

     Le linee di vita possono mandare messaggi a se stesse.
     Si tratta di un caso frequente (es. invocazione di operazioni
     private).
  Ingegneria del Software ()          I diagrammi di interazione           A.A. 2010-2011   14 / 47

Attivazioni annidate (2)
                      sd overlap

                               cc:C                                 aa:A

                                             oper1()

                                           callback()

          Figure 14.15 - Overlapping execution occurrences
Le attivazioni possono generare altre attivazioni sulla linea di
vita chiamante (es. callback).
              14.3.11 Gate (from Fragments)

              GeneralizationsI diagrammi di interazione
  Ingegneria del Software ()                                               A.A. 2010-2011   15 / 47
Esempio completo: ATM machine

  Ingegneria del Software ()         I diagrammi di interazione         A.A. 2010-2011   16 / 47

Tipi di messaggi: creazione/distruzione (1)
                               a:A

                                                        b:B

  Ingegneria del Software ()         I diagrammi di interazione         A.A. 2010-2011   17 / 47
Tipi di messaggi: creazione/distruzione (2)

     Nel messaggio di creazione lo stereotipo può essere
     seguito dal nome di un’operazione e relativi parametri
     (costruttore).
     Questo si rende necessario nel caso si lavori con linguaggi
     di programmazione senza costruttori espliciti.
     Differenti linguaggi di programmazione OO gestiscono la
     distruzione in modi diversi (esplicita, garbage collector).
     In fase di analisi, basta immaginare che dopo la distruzione,
     l’oggetto non è più accessibile

  Ingegneria del Software ()        I diagrammi di interazione         A.A. 2010-2011   18 / 47

Tipi di messaggi: trovati/persi (1)

                                  a:A                            b:B

                       foundMsg
                                        sendData

                                        sendData

                                                sendData

  Ingegneria del Software ()        I diagrammi di interazione         A.A. 2010-2011   19 / 47
Tipi di messaggi: trovati/persi (2)

     Raramente usati in fase di analisi.
     I messaggi trovati indicano situazioni in cui il mittente è
     sconosciuto al momento della ricezione, proviene
     dall’esterno del diagramma o i dettagli della provenienza
     non interessano.
     I messaggi persi permettono di visualizzare il
     comportamento nel caso un messaggio non giunga a
     destinazione (situazione di errore).

  Ingegneria del Software ()   I diagrammi di interazione   A.A. 2010-2011   20 / 47

Stati (1)

     Uno stato è definito come una condizione o situazione
     durante la vita di un oggetto in cui esso soddisfa una
     condizione, esegue un’attività o aspetta un evento.
     Ogni oggetto in UML può avere una macchina a stati
     associata che ne descrive gli stati possibili.
     I diagrammi di stato (state machine diagram) sono i più
     adatti a rappresentare gli stati e loro transizioni, ma può
     essere conveniente mostrare alcuni cambiamenti di stato
     nei diagrammi di sequenza.
     Generalmente, ci si limita agli stati principali all’oggetto,
     mettendo in risalto i messaggi che provocano un
     cambiamento di stato.

  Ingegneria del Software ()   I diagrammi di interazione   A.A. 2010-2011   21 / 47
Stati (2)
                                                            : Lamp

                               : User

                                                               Off

                                   switch()
                                                               On

     In UML, gli stati si rappresentano con rettangoli arrotondati.
     I cambiamenti di stato sono generalmente la conseguenza
     di uno o più messaggi.
  Ingegneria del Software ()             I diagrammi di interazione   A.A. 2010-2011   22 / 47

Realizzare i casi d’uso

     Le primitive introdotte fin qui permettono di rappresentare
     sequenze di eventi senza ramificazioni; tuttavia, per
     realizzare i casi d’uso è necessario poter descrivere
     sequenze più complesse.
     Le sequenze degli eventi in un caso d’uso contengono
     parole chiave come if, then, else, for e while.
     I diagrammi di sequenza permettono di tradurre questi
     costrutti ed inserirli nel diagramma.
     Si ricorre ai frammenti combinati.

  Ingegneria del Software ()             I diagrammi di interazione   A.A. 2010-2011   23 / 47
Frammenti combinati (1)

     Un frammento combinato è una sottoarea di un diagramma
     di sequenza che racchiude una parte dell’interazione e le
     modalità della sua esecuzione.
     Gli elementi di un frammento combinato sono:
          �   un operatore, che specifica come il frammento viene
              eseguito
          �   uno o più operandi, sottoaree del diagramma di sequenza
              che possono essere eseguite
          �   zero o più condizioni di guardia, espressioni che
              determinano quali operandi sono eseguiti.

  Ingegneria del Software ()    I diagrammi di interazione   A.A. 2010-2011   24 / 47

Frammenti combinati (2)
     La sintassi UML per un frammento combinato è la
     seguente:
          �   un rettangolo con il nome dell’operatore in alto a sinistra
              racchiuso nel simbolo di diagramma (rettangolo con angolo
              ‘tagliato’)
          �   gli operandi seguono come strisce orizzontali in sequenza,
              separati da linee tratteggiate
          �   la guardia, se presente, compare dopo l’operatore oppure
              nella parte alta di un operando tra parentesi quadre
     Il rettangolo del frammento combinato si estende
     orizzontalmente per includere le linee di vita interessate
     dall’interazione.
     La guardia può includere qualunque tipo di condizione
     booleana, incluso OCL.

  Ingegneria del Software ()    I diagrammi di interazione   A.A. 2010-2011   25 / 47
Frammenti combinati: esempio
                                 buyer                   seller            lawyer

                                             pay

                                           giveItem

                               alt

                                     [buyerSatisfied]
                                           handshake

                                     [buyerNotSatisfied]

                                         sue(seller)

  Ingegneria del Software ()                  I diagrammi di interazione            A.A. 2010-2011   26 / 47

Operatori

     L’operatore determina la semantica dell’esecuzione del
     frammento.
     UML specifica parecchi tipi di operatori, ma solo alcuni
     sono usati frequentemente (quelli che corrispondono alle
     primitive di controllo del flusso definite dai linguaggi di
     programmazione).
     I più usati:
          �   opt corrisponde a if/then
          �   alt corrisponde a case/select
          �   loop corrisponde a for/while
          �   break corrisponde a break

  Ingegneria del Software ()                  I diagrammi di interazione            A.A. 2010-2011   27 / 47
Operatori: opt e alt

     opt accetta solo un operando, che viene eseguito se e solo
     se la guardia è valutata true.
     alt accetta un qualunque numero di operandi e ne esegue
     al più uno.
          �   esamina la lista a partire dal primo operando, valuta le
              guardie ed esegue solo il primo operando la cui guardia è
              vera
          �   l’operando opzionale [else] è eseguito se nessuna delle
              guardie è vera
          �   le condizioni di guardia devono essere mutualmente
              esclusive; al massimo una può essere vera nello stesso
              istante, altrimenti il modello non è corretto

  Ingegneria del Software ()    I diagrammi di interazione   A.A. 2010-2011   28 / 47

Esempio opt

L’operatore opt può anche essere omesso per questioni di
leggibilità

  Ingegneria del Software ()    I diagrammi di interazione   A.A. 2010-2011   29 / 47
Operatori: loop

     Un solo operando, sintassi speciale:
                      loop min,max [condizione]
     Esegue l’operando min volte, e poi al massimo altre (max -
     min) volte mentre la condizione è vera.
     Si possono omettere min e max.
     La condizione è molto flessibile (può essere espressa in
     linguaggio naturale), e permette di ciclare su un insieme di
     oggetti (es. condizione [forEach oggetto in
     lista]).

  Ingegneria del Software ()   I diagrammi di interazione   A.A. 2010-2011   30 / 47

Esempio loop

  Ingegneria del Software ()   I diagrammi di interazione   A.A. 2010-2011   31 / 47
Operatori: break
     Operando singolo, si usa per terminare l’esecuzione del
     frammento di interazione corrente (spesso si tratta di un
     operatore loop).
     Se break ha una condizione di guardia ed è vera, viene
     eseguito l’operando ma non il resto dell’interazione dopo il
     frammento break.
     Se la condizione di guardia esiste ed è falsa, non viene
     eseguito l’operando e si continua normalmente.
     Se non c’è una guardia, la scelta tra continuare e saltare è
     non-deterministica.
     Il frammento break deve essere globale rispetto a quello
     che interrompe: nella notazione UML, lo interseca ma si
     trova ad un livello di nesting superiore.

  Ingegneria del Software ()                I diagrammi di interazione            A.A. 2010-2011   32 / 47

Esempio: loop e break
                                        buyer               seller       lawyer

                               loop 10,10           pay

                                                giveItem

                        break [buyerNotSatisfied]

                                               sue(seller)

Vengono completate al massimo 10 transazioni, se si passa a
vie legali le transazioni finiscono.
  Ingegneria del Software ()                I diagrammi di interazione            A.A. 2010-2011   33 / 47
Altri operatori
     Per rendere i diagrammi di sequenza modulari:
          �   ref: l’operando contiene il nome di un’altra interazione che
              viene eseguita qui.
     Altri molto meno usati:
          �   par: gli operandi sono eseguiti in parallelo, senza vincoli
              sull’ordinamento dei messaggi appartenenti a operandi
              diversi.
          �   critical: sezione critica, l’operando è eseguito in maniera
              atomica e senza interruzioni dalle linee di vita interessate,
              anche se all’interno di par o altri frammenti.
          �   neg: l’operando rappresenta un’interazione che non deve
              accadere.
          �   assert: l’operando rappresenta l’unica interazione
              ammissibile in quel momento.

  Ingegneria del Software ()                    I diagrammi di interazione                            A.A. 2010-2011   34 / 47

Usare ref
                sd authentication                                            : User                : ATM

                      : User                        : ATM
                                                                         ref
                                    insertPIN
                                                                                  authentication

                alt
                                            allowUser
                                                                       opt
                                                                                      withdraw
                                      yes

                                       no

     A destra, l’interazione di sinistra inclusa in un’altra
     interazione. Si tratta del modo più semplice di usare ref.
     sd vuol dire ’sequence diagram’, ma vale per tutti i
     diagrammi di interazione.
  Ingegneria del Software ()                    I diagrammi di interazione                            A.A. 2010-2011   35 / 47
Gate

     Si tratta di un qualunque punto sulla cornice esterna del
     diagramma, che può essere la fonte o la destinazione di
     una freccia.
     Usati per modellare la comunicazione delle linee di vita del
     diagramma con l’esterno.
     I gate possono avere un nome e comparire qualunque
     numero di volte nello stesso diagramma o in diagrammi
     diversi.
     Possono essere usati in combinazione con ref, forniscono
     l’interfaccia di collegamento tra l’interazione chiamante e
     quella chiamata (il frammento combinato può avere gli
     stessi gate a cui agganciare messaggi).

  Ingegneria del Software ()                I diagrammi di interazione         A.A. 2010-2011   36 / 47

Gate: esempio
                                     sd example

                                             a:A

                                                               b:B
                                in

                               out

Vengono definiti due gate, in e out.
  Ingegneria del Software ()                I diagrammi di interazione         A.A. 2010-2011   37 / 47
Diagrammi di comunicazione

     Chiamati diagrammi di collaborazione in UML 1.x.
     In UML 1.x erano semanticamente equivalenti ai diagrammi
     di sequenza, in UML 2 non sono altrettanto espressivi.
     Si tratta comunque di diagrammi utili a visualizzare i canali
     di comunicazione tra le entità.
     Sono simili ai diagrammi degli oggetti, ma i link tra gli
     oggetti trasportano messaggi come nei diagrammi di
     sequenza.

 Ingegneria del Software ()         I diagrammi di interazione              A.A. 2010-2011   38 / 47

Sequenza vs. comunicazione
  sd sequence

          a:A                 b:B
                                               sd communication
                                                                  1: msg1

                      msg1                           a:A                        b:B
                                                                  2: msg2

                      msg2

     Questi diagrammi sono equivalenti.
     I messaggi e le loro frecce seguono le stesse regole nei
     diagrammi di comunicazione.

 Ingegneria del Software ()         I diagrammi di interazione              A.A. 2010-2011   39 / 47
Numerazione messaggi
       sd sequence

             a:A               b:B          c:C        sd communication
                                                                          1: msg1

                     msg1                                      a:A                   b:B
                                     msg2

                                                        2: msg3                       1.1: msg2

                      msg3
                                                                          c:C

     Nei diagrammi di comunicazione è necessario numerare i
     messaggi.
     Poiché msg2 si trova nel focus di controllo di msg1 (viene
     generato come parte dell’esecuzione di msg1), il suo
     numero di sequenza è quello di msg1 seguito da ’.’ e un
     numero di sottosequenza.
  Ingegneria del Software ()                I diagrammi di interazione              A.A. 2010-2011   40 / 47

Ancora sulla numerazione

     Il numero di sequenza ha tanti componenti quanti sono i
     livelli di profondità delle attivazioni: es. 2.5.1.10 .
     I numeri di sequenza possono velocemente diventare
     complessi e danneggiare la leggibilità del diagramma.
     Per questo motivo, da un lato si cerca di limitare la
     complessità dei diagrammi di comunicazione...
     ... e dall’altro è consentito raggruppare vari messaggi
     correlati in uno solo per ridurne il numero (specialmente in
     fase di analisi).

  Ingegneria del Software ()                I diagrammi di interazione              A.A. 2010-2011   41 / 47
Ramificazione

     Si può rappresentare una condizione if/then nei diagrammi
     di comunicazione.
     Il numero di sequenza è seguito da una guardia tra
     parentesi quadre, ad esempio
             1.2.1 [!error]: msg(param1,param2)
     Il messaggio è inviato solo se la guardia è vera.
     Questo costrutto può complicare il diagramma molto in
     fretta, e dovrebbe essere usato solo in casi semplici.

  Ingegneria del Software ()   I diagrammi di interazione   A.A. 2010-2011   42 / 47

Iterazione (1)

     L’operatore di iterazione nei diagrammi di comunicazione è
     *. Per esempio
      1.2.1 * [for i=1 to n]: msg(param1,param2)
     Si può sostituire * con *|| che significa invio parallelo dei
     messaggi.
     La guardia può essere scritta in qualunque linguaggio o
     pseudocodice, compresa la notazione [loop min, max
     [condizione]] dei diagrammi di sequenza.
     Come mandare lo stesso messaggio ad una collezione di
     istanze con l’iterazione?
     Due modi: con indici o con molteplicità.

  Ingegneria del Software ()   I diagrammi di interazione   A.A. 2010-2011   43 / 47
Iterazione (2)
                    1 * [for i=1 to n]: sendMessageTo(i)

                               a:A                                         a:A

                                                                               1 *: message()
                                  1.1: message()

                                                                           *
                               [i] : B
                                                                           b:B

     Nel primo caso [i] è una sola istanza, rappresentata tramite
     un indice.
     Nel secondo caso a è collegato a molti b, e l’operatore *
     manda il messaggio a tutti.
  Ingegneria del Software ()                  I diagrammi di interazione                   A.A. 2010-2011   44 / 47

Esempio completo: ATM Machine (Pin Error)

  Ingegneria del Software ()                  I diagrammi di interazione                   A.A. 2010-2011   45 / 47
Conclusioni sui diagrammi di interazione

     Si usano i diagrammi di interazione per mostrare come
     varie entità collaborino nel fornire un comportamento
     desiderato, ad esempio un caso d’uso.
     Possono essere usati sia in fase di analisi che in fase di
     progettazione.
     Aiutano a scoprire e correggere inconsistenze nel
     comportamento desiderato (ad esempio una specifica
     scorretta del caso d’uso).
     Spesso è utile modellare una situazione semplificata con un
     diagramma di comunicazione, per poi passare a uno di
     sequenza per i dettagli.

  Ingegneria del Software ()   I diagrammi di interazione   A.A. 2010-2011   46 / 47

E per concludere il modulo UML

     Analizziamo un esempio completo di analisi e progettazione
     object-oriented basato su UML
     Diversi diagrammi usati per modellare diverse viste
     consistenti
     L’esempio è disponibile su Web e liberamente utilizzabile
     per usi didattici:

  http://www.math-cs.gordon.edu/courses/cs211/AddressBookExample/

     Lo stesso sito include anche un esempio più complesso:

          http://www.math-cs.gordon.edu/courses/cs211/ATMExample/

  Ingegneria del Software ()   I diagrammi di interazione   A.A. 2010-2011   47 / 47
Puoi anche leggere