Wish to hear your advice on your practice of using Junction in Archi too.
I can feel with Junction can make the view illustration cleaner and nice of looking, however, when I compare as attached two view, one with Junction and the other without Junction, I think it's giving different during post analysis.
Putting "Provide Personal Assistant to Customer" requirement as sample, after having these 2 views, below two relationship is created:
- Realization relation (Provide Personal Assstance to Customer - Imporve Insurance Portfolio and Claimes Managements: (This is direct (without Junction) connection)
- Realization relation (Provide Personal Assistance to Customer - Junction): (This is connect via Junction)
Does it mean that using Junction leads to losing the direct relationship visibility?
I think it would be possible to give Junction a name but that will be also difficult, since unless the Junction's name covers both source and desination it's unclear, and also Junction normally is multi-to-one, so the naming is not good way.
Believe it could be possible, from another aspect, to create certain script to traverse nodes (e.g. set depth = 2 if encouter a Junction type), but that makes the game complex as well.
I have several views that having Junctions already, and now feel it may be not a good practice to use that since we need to having easier way to show same level's relationship, but losing Junction's advantage is also the hesitation.
Any of your good practice to balance on these situations?
Thanks and regards,
There's no good solution for that.
Junctions have always had such practical issues which are mainly due to implementation constraints in tools. From a logical point of view, a junction should be nothing more than a kind of visual comment on multiple relationships from the same source to the same target, but this has become an element per se which sits in between several relationship "fragments", leading to all kind of analysis issues or complexity.
My approach is to try to avoid them for anything else than triggering relationships, but you sometime really need them. If you rely on them, then you have to code your own logic in jArchi if you need to extract information.
I do have some ideas for jArchi that would make it possible to work on "derived" relationships (including relationships derived through junction), but nothing for the near future.
Thanks JB, it's clear from your evaluation and I think it's really need balance when considering to use Junction.
Really nice that possible jArchi in the future will work with "derived", but even we have that, I don't think it changes the "game", as that's not the native level 1 relation and still pop up mixing complexity of analysis.
So, for now, I'll try to prevent using Junction for the modeling, just keep minimize usage if really need the clean view for presentation purpose.