2011-08-16 9 views
35

Qual è la differenza pratica tra l'utilizzo di diagrammi di diagramma di flusso e diagrammi di attività UML? Ho qualche idea, ma forse mi manca un elefante nella stanza?Diagrammi del diagramma di flusso rispetto ai diagrammi di attività UML

diagramma di flusso:

  1. ampiamente usato;
  2. Facilmente comprensibile dai non programmatori;
  3. Vecchio?

diagramma UML:

  1. standardizzato;
  2. Supporta la concorrenza;
  3. Sintassi meno nota, ma comunque abbastanza semplice.

Per il mio caso di documentazione ad hoc di un particolare blocco di logica dell'applicazione, ho deciso di andare con i diagrammi del diagramma di flusso. Più persone in compagnia saranno in grado di capirle.

risposta

16

Potrebbe sembrare una preferenza, ma se abbiamo un linguaggio standardizzato per descrivere i sistemi software, perché usiamo qualcos'altro? Ciò può portare a una cattiva abitudine di un uso eccessivo dei diagrammi di flusso. I diagrammi delle attività sono davvero semplici. Ma se decidi di descrivere un aspetto più complicato del sistema o di provare a cambiare la parte che stai descrivendo, potresti dover passare comunque. Quindi basta usare UML e prevenire la confusione in futuro.

14

Come si nota, i diagrammi di attività intrinsecamente possono includere simultaneità e tempistiche. Se guardi il numero this example caricato da Wikipedia (che inserirò se SO supportato solo in formato SVG) puoi osservare la sezione con due pesanti barre orizzontali e due attività parallele di "idea presente" e "idea di registrazione". Viene letto come "avviare queste attività in parallelo e continuare solo quando entrambe sono complete". I diagrammi di flusso non possono esprimere questo all'interno della notazione.

In pratica, l'utilizzo di diagrammi di attività consente di riflettere chiaramente sui processi concorrenti. Penso che scoprirai che chiunque possa leggere un diagramma di flusso si adatterà rapidamente.

+1

Grazie, Charlie, ho anche menzionato quel punto nel post originale. Nel mio caso, la logica è single-threaded, quindi sia il diagramma di flusso che il diagramma di attività si adattano. –

1

È possibile generare codice sorgente da UML e viceversa; da qui la caratteristica "standardizzata" di cui hai parlato.

+0

Credo che questo si applichi di più ai diagrammi delle classi. Devo ancora trovare un generatore roundtrip decente, che sia in grado di ricostruire il diagramma quando il codice è cambiato. –

+0

@Vladimir Sinenko: se riesci a generare codice che implementa la logica dei modelli di attività, non provare a cercare il roundtriping, basta cambiare il modello dell'attività, eviterai molti problemi –

1

UML in sé è utilizzato per condividere la vostra comprensione. Condividi la comprensione in modo standardizzato. Poiché il tuo caso è ad hoc e l'uso principale di un diagramma UML è quello di fornire uno schizzo informale, qui puoi utilizzare il diagramma di attività. Ma così può scorrere i diagrammi in quanto non ci sono parellismi coinvolti qui. Ho sempre trovato il seguente argomento per essere utile. L'artefice che sto producendo andrà a beneficio di chi? E posso esprimere il flusso in modo auto esplicativo usando un diagramma di flusso. E se sì, allora dovresti andare avanti e usare il diagramma di flusso. Ma se i diagrammi delle classi, la sequenza ecc sono in formato UML, sarebbe logico avere i diagrammi delle attività in UML anche per motivi di coerenza (l'argomento qui sarebbe, se le persone possono capire la classe, la semantica UML della sequenza, quindi non l'attività diagrammi.).

9

Secondo il sito Agile Modeling:

In molti modi UML diagrammi di attività sono l'equivalente orientata agli oggetti dei diagrammi di flusso e diagrammi di flusso dati (dfds) dallo sviluppo strutturato.

Da IBM:

Tuttavia, i diagrammi di flusso non comprendono e stati, e diagrammi di flusso per le operazioni non possono ricevere gli eventi.

Probabilmente questo è il motivo per cui i diagrammi di flusso sono più facili da comprendere perché i diagrammi di attività hanno la nozione di sviluppo e concorrenza orientata agli oggetti.