En las Especificaciones de UML en la página 476 hay el siguiente diagrama:

enter image description here

Si no me equivoco, no debería ser posible agregar ActivityPartion s (que son una especialización de ActivityGroup s, como StructuredActivityNode s) a StructuredActivityNode, ¿Derecha? Según el diagrama, la única relación entre StructuredActivityNode sy ActivityGroup es una relación de generalización / especialización. Debería haber una relación de composición también si fuera posible Partition s en StructuredActivityNode s.

¿Me equivoco? Lo pregunto porque es posible en algunas herramientas (VisualParadigm, por ejemplo) pero no es posible en otras herramientas.

3
ramy 4 feb. 2019 a las 17:10

2 respuestas

La mejor respuesta

Red Beard tiene razón al afirmar que StructuredActivityNodes pueden contener ActivityNodes y que ActivityPartitions no ActivityNodes . Aquí está el diagrama que muestra el último punto: Metamodelo UML ActivityGroups

De esto se deduce que StructuredActivityNodes no puede contener ActivityPartitions.

Sin embargo, nada en la especificación nos impide hacer referencia a los ActivityNodes dentro de un StructuredActivityNode de una partición diferente, que el StructuredActivityNode en sí.

Esto podría llevar a la imposibilidad de mostrar la partición gráficamente. La especificación define una notación textual para esto: simplemente coloque el nombre de la partición entre paréntesis sobre el nombre del nodo. Desafortunadamente, muchas herramientas no admiten esta notación.

Para que sea posible mostrarlo gráficamente, el StructuredActivityNode necesitaría ser referenciado por más de una partición. Esto está permitido según el diagrama anterior. Por supuesto, la pregunta es entonces, cuál sería la semántica.

En realidad, no hay una semántica definida. La especificación define solo la semántica para las particiones que contienen InvocationActions. Luego, la partición especifica el destino de la invocación. Tener dos objetivos no tendría sentido, por lo tanto, no debería permitirse en este caso (aunque falta una restricción a este efecto). Pero todas las demás acciones pueden abarcar varias particiones.

Por tanto este es un diagrama perfectamente válido, que alcanza la meta:

StructuredActivityNode in two partitions

PD: En la herramienta utilizada fue posible crear el modelo correcto. Sin embargo, se necesitaron algunos ajustes hasta que el diagrama se veía así.

2
Axel Scheithauer 14 feb. 2019 a las 10:31

Como se especifica en el diagrama, StructuredActivityNode solo puede poseer ActivityNode, ActivityEdge, Variable, InputPin y OutputPin. Si echa un vistazo a la figura 15.65 página 406 de la especificación UML 2.5.1, verá que ActivityPartition no hereda ninguno de estos conceptos (ActivityPartition hereda de ActivityGroup que hereda de NamedElement).

Por lo tanto, StructuredActivityNode no debería ser propietario de ActivityPartition (s).

0
Red Beard 4 feb. 2019 a las 14:47