Come si rappresentano le azioni annidate in un diagramma di attività UML?

15

Questa domanda è molto simile a questo uno , ma la risposta non corrisponde alle mie esigenze. Si concentra su uno specifico strumento UML (Papyrus) mentre la mia domanda è più generale su UML.

Vorrei rappresentare un'azione nidificata in un diagramma di attività , ma non so quale sia il modo comune per farlo. L'idea è che ci sia un'azione dello stesso scopo rispetto alle altre azioni, ma più complessa nella sua esecuzione. Vorrei mostrare più dettagli sulla sua esecuzione pur essendo in grado di mostrare questa azione allo stesso livello degli altri.

Nell'esempio seguente, che è un diagramma di attività che mostra una sorta di attività " back home ", le azioni nidificate si trovano nell'azione Pet the cat . Tieni presente che c'è un altro potenziale errore in questo diagramma, vedi l'errata alla fine della domanda.

Housatoilnodostrutturato,manonsonosicurochesiailmodocorretto,daquiladomanda.Inundiagrammadistatol'equivalentesarebbeunostatocomposito,manonriescoatrovarenullasuun'azionecomposita.Perquantoriguardailnodostrutturato,dopoaverlettoalcunidocumentisudiessononriescoancoraacapirecomedovrebbeessereusato,quindipotreisbagliarecompletamenteconquestodiagramma.

Soanchecheesistelapossibilitàdifareriferimentoadun'altrasotto-attivitàconilsimbolotridente,comenell'immaginequisotto,manoncorrispondeallemieesigenzepoichévorreichel'interainformazionesullostessodiagramma(cosìPossostamparlosenzaalcunaperditadiinformazioni):

Quindiqualèilmodostandardperrappresentareun'azionediquestotipo?Perstandard,intendoUMLvalido,comunementevistoe,sepossibile,eseguibilesugranpartedeglistrumentidiprogettazioneUML.

Erratanoncorrelata:Un'altracosaèsbagliataneimieidiagrammi,lefreccechearrivanoallastessaazione(Scratchbehindtheears)dovrebberopassareaunnododiunioneprimadientrarenell'azione.Vediicommentisotto,incluso questo preventivo di JOT .

    
posta Tim 19.09.2016 - 13:36
fonte

1 risposta

23

Entrambi sono "standard". La prima immagine secondo le specifiche UML è

Structured Activity Nodes

A StructuredActivityNode is an Action that is also an ActivityGroup (see sub clause 15.6) and whose behavior is specified by the ActivityNodes and ActivityEdges it so contains. Unlike other kinds of ActivityGroup, a StructuredActivityNode owns the ActivityNodes and ActivityEdges it contains, and so a node or edge can only be directly contained in one StructuredActivityNode. StructuredActivityNodes may be nested (as a StructuredActivityNode, as an Action, is also an ActivityNode), however, so an edge or node may be indirectly contained in a number of nested StructuredActivityNodes.

Activity Groups

ActivityGoups are a grouping constructs for ActivityNodes and ActivityEdges. Nodes and edges can belong to more than one group. This sub clause describes two concrete kinds of ActivityGroups, ActivityPartitions and InterruptibleActivityRegions. StructuredActivityNodes are a third kind of ActivityGroup, but they are also Actions and are discussed in sub clause 16.11 of Clause 16 on Actions.

La seconda immagine è

Invocation Actions

An InvocationAction is an Action that results, directly or indirectly, in the invocation of a Behavior (see sub clause 13.2). InvocationActions include the CallActions for calling Operations or Behaviors and for starting Behaviors that have been previously instantiated. Additional kinds of InvocationActions allow for the targeted sending of signals and other objects and the ability for broadcasting signals to available receivers.

La principale differenza tra entrambi i casi è il riutilizzo. Mentre in primo luogo hai solo un po 'di complessità in un singolo posto (il tuo Pet the cat ) il secondo è quando (ri) usi una determinata azione in più punti. Tuttavia, tendo ad usare la variante di invocazione anche se è solo per un singolo uso. Qui aggiungo un diagramma composito (che in EA si apre su dbl-click) per mostrare i dettagli dell'azione corrispondente. Il flusso principale mostra solo la panoramica e se i dettagli sono necessari, sono solo un doppio clic di distanza.

Ora, creare un diagramma composito in EA è (di nuovo) diverso. È necessario creare un annuncio a livello di pacchetto e quindi trascinarlo nell'elemento di chiamata. Ora, quando fai doppio clic su di esso, si aprirà il diagramma incorporato.

    
risposta data 19.09.2016 - 13:57
fonte

Leggi altre domande sui tag