Como eu represento ações aninhadas em um diagrama de atividades UML?

15

Esta questão é muito semelhante a um , mas a resposta não corresponde às minhas necessidades. Ele é focado em uma ferramenta UML específica (Papyrus), enquanto minha pergunta é mais geral sobre a UML.

Eu gostaria de representar uma ação aninhada em um diagrama de atividades , mas não sei qual é a maneira comum de fazer isso. A ideia é que existe uma ação do mesmo escopo que as outras ações, mas mais complexa em sua execução. Eu gostaria de mostrar mais detalhes sobre sua execução enquanto ainda é capaz de mostrar essa ação no mesmo nível que os outros.

No exemplo abaixo, que é um diagrama de atividades que mostra algum tipo de atividade " voltar para casa ", as ações aninhadas estão na ação Pet the cat . Note que há outro erro potencial neste diagrama, veja a errata no final da questão.

Euuseionóestruturado,masnãotenhocertezaseéocaminhocorreto,daíapergunta.Emumgráficodeestado,oequivalenteseriaumestadocomposto,masnãoconsigoencontrarnadasobreumaaçãocomposta.Noquedizrespeitoaonóestruturado,depoisdeleralgunsdocumentossobreele,euaindanãoentendicomoeledeveriaserusado,entãoeupossoestartotalmenteerradocomestediagrama.

Eutambémseiqueexisteapossibilidadedesereferiraoutrasub-atividadecomosímbolotridente,comonaimagemabaixo,masquenãoatendeàsminhasnecessidades,poiseugostariadetodaainformaçãonomesmodiagramaPossoimprimi-losemperdadeinformação):

Então,qualéamaneirapadrãoderepresentaressaaçãoaninhada?Porpadrão,querodizerUMLválida,comumentevistae,sepossível,factívelnamaioriadasferramentasdedesigndaUML.

Erratanãorelacionada:Outracoisaestáerradaemmeusdiagramas,assetasquechegamàmesmaação(Scratchbehindtheears)devemirparaumnódemesclagemantesdeentrarnaação.Vejaoscomentáriosabaixo,incluindo esta citação de JOT .

    
por Tim 19.09.2016 / 13:36
fonte

1 resposta

23

Ambos são "padrão". A primeira imagem conforme as especificações da 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.

A segunda foto é

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.

A principal diferença entre os dois casos é a reutilização. Embora em primeiro lugar você tenha alguma complexidade em um único lugar (seu Pet the cat ), o segundo é quando você (re) usa uma determinada ação em vários lugares. No entanto, costumo usar a variante de invocação, mesmo que seja apenas para um único uso. Aqui eu adiciono um diagrama composto (que no EA é aberto no dbl-click) para mostrar detalhes da ação correspondente. O fluxo principal mostra apenas a visão geral e, se os detalhes forem necessários, eles estarão a apenas um clique de distância.

Agora, criar um diagrama composto no EA é (novamente) diferente. Você precisa criar um AD no nível do pacote e, em seguida, arrastar isso para o elemento de invocação. Agora, quando você clica nele, o diagrama incorporado será aberto.

    
por 19.09.2016 / 13:57
fonte

Tags