It has been a long week and this is a big subject.
I am not sure what examples were inconsistent or self-inconsistent.
But to provide some context, I am exploring how Sparx EA implements relationships in 4 UML, ArchiMate, XML, and data models. This exploration is taking place as I am considering switching a UML based custom MDG to an ArchiMate based MDG with some additions to handle things ArchiMate cannot do - e.g., anything that involves the use of data attributes. The main reason for doing this is that ArchiMate does many of the things we want to add to the custom MDG and it is easier to do it with a selection of out-of-the-box Sparx EA ArchiMate functionality than writing our own UML based MDG. As part of this process I reviewed section 5.6 of the ArchiMate specification,
https://pubs.opengroup.org/architecture/archimate3-doc/ch-Relationships-and-Relationship-Connectors.html#sec-Summary-of-Relationships, which indicates that relationships in ArchiMate are directional.
I am making a number of assumptions:
1. Sparx EA has an under the hood a meta model which is not full UML but something very similar the root of UML, see section 7.2 Root of the UML 2.5.1 specification.
2. Sparx Systems has implemented, under the hood, an
MDG of sorts to support full UML modelling.
3. This UML
MDG of sorts introduces directionality, irrespective of whether UML is directional or not, this includes the meaning forwards and backwards of connector properties Paolo referred to.
4. This UML
MDG of sorts is the foundation for any other native MDG - i.e., Sparx EA translates everything to UML, for example it translates ArchiMate to MDG. This is a critical point.
In short, Sparx EA uses a very layered approach to supporting any modelling languages other than UMl.
Now, lets look at some examples.
In UML
| Start | End | Connector | Meaning forwards/backwards |
| A | B | Dependency | A depends on B/B is dependent on A |
A B C | D | Realization | A, B & C realize D/D is realised by A, B & D |
A B C | D | Composition | A, B & C are composed into D/D is composed of A, B & D |
A B
| C | Generalisation/Specialisation | A & B specialised C/C is specialised by A & B |
A B C D | F | Association | A, B, C & D are associated to F/F is associated to A, B, C & D |
Hopefully none of of that is too controversial.
Now ArchiMate does not have the concept of a Dependency, instead it has 4 dependency relationships: serving, access, influence & association, all of which are implemented in Sparx EA as dependencies - i.e., using a UML dependency as the underlying type - and they are all directional -e.g A access B/B is accessed by A, A is the source and B the target. The facts that an ArchiMate association is a dependency presents a challenge, perhaps not unsurmountable, but not having the concept of a dependency is a more complicate challenge to address, as we will have to translate all dependencies to one of those types if we chose to switch the MDG to ArchiMate.
The dynamic relationships and flow, in particular, are more interesting. Flow is also implemented with a UML dependency as the underlying type. But it is what I called in my original post a reversed dependency - e.g., if A flows into B, in ArchiMate I put A as the start and B as the target, the meaning forward is B depends on A - so far no problem with this.
What it is becoming clear as I write this, is that switching the MDG from UML to ArchiMate is likely to require a new MDG not just an iteration of the current MDG as I had hoped.