• Registrati
Benvenuto su codeinvaders.net la community italiana dedicata agli sviluppatori!
Puoi partecipare alle discussioni anche attraverso facebook, twitter e google+.
JS Day
  • google plus
  • facebook
  • twitter
Codeinvaders.net, domande e risposte per sviluppatori!
Partecipa a questa community rispettando tutti i suoi membri che, per il puro piacere di condividere, forniscono risposte e suggerimenti.
Classifica migliori utenti del mese 02/2017
  1. 4240 Punti

  2. 3980 Punti

  3. 3480 Punti

  4. Luca Rainone

    2400 Punti

I premi del mese
Posizione 1: Buono Amazon da 10 euro
Posizione 2: Sconto 40% su un libro O'Reilly

Quale rappresentazione alternativa per un self message in un sequence diagram

Con un sequence diagram si rappresentano le relazioni tra oggetti (o meglio elementi) di un sistema. Tra i vari tipi di messaggi supportati esistono i cosiddetti self messages ovvero dei messaggi che l'oggetto invia a se stesso.
Partendo dalla definizione di sequence diagram suona piuttosto male rappresentare la sequenza di messaggi interni in questo tipo di diagramma, secondo voi un diagramma State Machine e' la soluzione migliore per la rappresentazione di questo tipo di messaggi?

quesito posto 5 Marzo 2013 in software da giorgio.natili (2,660 punti)
   

1 Risposta

0 voti

Non sono sicuro di avere ben compreso l'intento, ma posso dire che nel sequence diagram si ha che ogni attore può inviare un messaggio ad un altro attore. E' perfettamente coerente quindi che un'attore possa inviare a se stesso. Il punto è che il messaggio potrebbe essere nient'atro che un metodo private sincrono interno ad una classe attore. Nello state diagram più che uno scambio di messaggi abbiamo un cambiamento di stato, non avremo altro che un cappio nel grafo nell'indicare che uno stato è referente a se stesso, e nel voler identificare molti messaggi saremmo costretti a replicare i vertici a meno di voler vedere qualcosa di simile ad una collisione in un acceleratore di particelle. :)

risposta inviata 6 Marzo 2013 da anonimo
Il punto e' proprio il cappio...

Il Sequence mi esprime una serie di messaggi, quando iniziamo ad avere 3 messaggi autoreferenziati su una lifeline il diagramma secondo me inizia ad avere bisogno di un ulteriore diagramma di supporto che dettagli i cambi di stato e/o comunque che la sequenza di messaggi interni venga estratta dal diagramma principale.

Come operi tu in queste circostanze?
mmm, io la vedo così: ad ogni messaggio autoreferenziante la lifeline semplicemente si "allunga verticalmente", non si dovrebbe trasporre in un altro diagramma semplicemente perché potenzialmente gli altri attori potrebbero essere coinvolti anche dopo il cambio di stato, ma se consideriamo per la variazione di stato il design pattern "state" appunto, l'attore dovrebbe essere la classe concreta e quindi ogni stato è in effetti un attore da riportare separatamente sul sequence diagram. A questo punto un diagramma a parte solo per gli attori di stato potrebbe essere plausibile e quest'ultimo non avrebbe messaggi ricorsivi.
ma i tre messaggi autoreferenziati sono uno di seguito all'altro? perché se è così allora potresti semplicemente comprimerli a uno solo mettendo direttamente lo stato finale (ed eventualemente fare un altro diagramma a mo' di "lente di ingrandimento" per esplicare cosa succede meglio in quel punto).

Se invece non sono sequenziali, allora non vedo il problema: il diagramma  di sequenza deve dare una chiara idea della successione dei vari eventi, per cui, se quello rimane il suo scopo, è il più adatto per definizione.
Ma se il diagramma si sequenza riporta su una lifeline troppe chiamate auto referenziate secondo me e' necessario estrapolare quelle info in un altro tipo di diagramma e creare un collegamento fra diagrammi... sbaglio?
dipende dallo scopo e dalla coplessità del tuo diagrammma, secondo me.  Dividere il flusso potrebbe non riuscire a rendere chiari tutti i passaggi. Forse se posti un esempio possiamo provare a cercare una soluzione

Ne discutevo in aula durante un corso, in un sequence diagram del loro model ho visto 3 chiamate autorefernziali in sequenza sulla stessa lifeline e mi e' venuto in mente che quella forse era una rappresentazione di un cambio di stato. Mi hanno confermato che la mia impressione era corretta e mi chiedevo come uscirne... i 3 messaggi infatti includevano n sotto passaggi descritti nella documentazione del tool.

Puoi partecipare alle discussioni anche attraverso facebook e twitter.
...