¿Cómo represento las acciones anidadas en un diagrama de actividad UML?

15

Esta pregunta es muy similar a esto uno , pero la respuesta no coincide con mis necesidades. Se centra en una herramienta UML específica (Papyrus), mientras que mi pregunta es más general sobre UML.

Me gustaría representar una acción anidada en un diagrama de actividad , pero no sé cuál es la forma más común de hacerlo. La idea es que existe una acción del mismo alcance que las otras acciones, pero más compleja en su ejecución. Me gustaría mostrar más detalles sobre su ejecución y, al mismo tiempo, poder mostrar esta acción al mismo nivel que los demás.

En el siguiente ejemplo, que es un diagrama de actividad que muestra algún tipo de actividad " back home ", las acciones anidadas están en la acción Pet the cat . Tenga en cuenta que hay otro error potencial en este diagrama, consulte la errata al final de la pregunta.

Heusadoelnodoestructurado,peronoestoysegurodequesealaformacorrecta,deahílapregunta.Enungráficodeestado,elequivalenteseríaunestadocompuesto,perosimplementenopuedoencontrarnadaacercadeunaaccióncompuesta.Enloquerespectaalnodoestructurado,despuésdeleeralgunosdocumentossobreél,todavíanoentiendocómosedebeutilizar,porloquepodríaestartotalmenteequivocadoconestediagrama.

Tambiénséqueexistelaposibilidaddereferirmeaotrasubactividadconelsímbolodetridente,comoenlaimagendeabajo,peronoseajustaamisnecesidadesyaquemegustaríatenertodalainformaciónenelmismodiagrama(asíquePuedoimprimirlosinningunapérdidadeinformación):

Entonces,¿cuáleslaformaestándarderepresentarunaacciónanidada?Porestándar,merefieroaUMLválido,vistocomúnmentey,siesposible,factibleenlamayoríadelasherramientasdediseñoUML.

Erratanorelacionada:Otracosaestámalenmisdiagramas,lasflechasquevienenalamismaacción(Scratchbehindtheears)debeniraunnododefusiónantesdeingresaralaacción.Vealoscomentariosacontinuación,incluidos esta cita de JOT .

    
pregunta Tim 19.09.2016 - 13:36
fuente

1 respuesta

23

Ambos son "estándar". La primera imagen según las especificaciones de UML es

  

Nodos de actividad estructurada

     

Un StructuredActivityNode es una acción que también es un ActivityGroup (vea la subcláusula 15.6) y cuyo comportamiento está especificado por los ActivityNodes y ActivityEdges que contiene. A diferencia de otros tipos de ActivityGroup, un StructuredActivityNode posee los ActivityNodes y ActivityEdges que contiene, por lo que un nodo o borde solo puede estar contenido directamente en un StructuredActivityNode. Sin embargo, StructuredActivityNodes puede estar anidado (como StructuredActivityNode, como Action, también es un ActivityNode), por lo que un borde o nodo puede estar contenido indirectamente en un número de StructuredActivityNodes anidados.

     

Grupos de actividad

     

Los ActivityGoups son construcciones de agrupación para ActivityNodes y ActivityEdges. Los nodos y los bordes pueden pertenecer a más de un grupo. Esta subcláusula describe dos tipos concretos de ActivityGroups, ActivityPartitions y InterruptibleActivityRegions. StructuredActivityNodes es un tercer tipo de ActivityGroup, pero también son acciones y se analizan en la subcláusula 16.11 de la cláusula 16 en acciones.

La segunda imagen es

  

Acciones de invocación

     

Una InvocationAction es una Acción que resulta, directa o indirectamente, en la invocación de un Comportamiento (ver subcláusula   13.2). InvocationActions incluye CallActions para llamar a Operaciones o Comportamientos y para iniciar Comportamientos que se hayan creado previamente. Los tipos adicionales de InvocationActions permiten el envío dirigido de señales y otros objetos y la capacidad de transmitir señales a los receptores disponibles.

La principal diferencia entre ambos casos es la reutilización. Mientras que en primer lugar solo tiene algo de complejidad en un solo lugar (su Pet the cat ), el segundo es cuando (re) utiliza una acción determinada en múltiples lugares. Sin embargo, tiendo a usar la variante de invocación incluso si es solo para un solo uso. Aquí agrego un diagrama compuesto (que en EA se abre en dbl-click) para mostrar los detalles de la acción correspondiente. El flujo principal solo muestra la descripción general y, si se necesitan detalles, están a solo un clic de distancia.

Ahora, crear un diagrama compuesto en EA es (nuevamente) diferente. Debe crear un AD en el nivel del paquete y luego arrastrarlo al elemento de invocación. Ahora, cuando haga doble clic en eso, se abrirá el diagrama incrustado.

    
respondido por el Thomas Kilian 19.09.2016 - 13:57
fuente

Lea otras preguntas en las etiquetas