Monday, November 2, 2015

Group And Stack Your Diagram Elements With Sirius 3.1


Want to group diagram elements into vertical or horizontal stacks? Since Sirius 3.1, it is possible.

With Sirius 3.0, it was already possible to create compartments, but we had introduced it as an "experimental" feature since some behaviors were not supported yet. Now compartments are fully operational and a new tutorial is available.

Consider this diagram that represents persons and their parental relationships.


On this diagram, if you focus on Elias, you can directly see his parents (Paul and Isa) and his children (Bryan, Clara, Dave and Fiona). And, as you understand the semantic of the father and mother relationships, you can easily guess who is his sister (Léa), and who are his grandchildren (John, Mary, Sophia, Emma, Fred and Alain).

These relationships (siblings and grandchildren) could also be graphically represented with a derived link. 



But if you use edges to represent all the differents kinds of relationships, what you may finally get is a real spaghetti nightmare! 



To avoid overhelming the users with too many edges, Sirius 3 allows you to create containers with stacked compartments where you can group sub-nodes. You can also use compartments to better distinguish different kinds of sub-elements, like the UML notation where a Class displays attributes and operations in dedicated compartments.

Each compartment can be "fixed" (it is created only once within the container) or "dynamic" (its number within the container depends on the model).

To easily visualize all the different kinds of Elias' relations, rather than using edges, we can use a container with fixed compartments for both parents, siblings and children, and a dynamic compartment for the grandchildren that groups grandchildren by their parents.


This new diagram doesn't replace the first diagram with edges. It is just complementary, providing a more synthetical representation.

To get this new diagram, Sirius 3 has introduced two new options for children representation: "Horizontal Stack" and "Vertical Stack". These options define how sub-containers will be organized. 


Note that the Sirius editor disables these options if the container contains sub-nodes (only sub-containers can be used for a stack).

Note also that Sirius manages only one level of compartments. However, it is still possible to create several levels, but this remains an experimental feature.

To read more about these compartments, I have written a Compartments Tutorial that explains, step-by-step, how to create the example that illustrates this post.