Sparx Systems Forum

Enterprise Architect => Uml Process => Topic started by: micdev42 on October 21, 2008, 09:05:45 pm

Title: relationship between component versions
Post by: micdev42 on October 21, 2008, 09:05:45 pm
Hi.
What's the best way to model the relationship between a generic component and specific versions of that component?
Let’s look at Microsoft Team Foundation Server (TFS) as an example:
The ‘generic’ component would be: TFS
Specific versions would be: TFS 2005, TFS 2008 and TFS 2010.

On some diagrams I would just like to show the generic TFS component, to indicate for example that TFS integrates with Microsoft Project Server. On others I would be interested in the particular versions to show that TFS 2008 integrates with Project Server Pro 2007.
How would I define the component structure to create meaningful relationships between them? In particular, would TFS 2005, TFS 2008 etc. be children of [generic] TFS?
Or am I looking at this from the wrong angle?
Thanks
Michael
Title: Re: relationship between component versions
Post by: Paolo F Cantoni on October 24, 2008, 11:58:43 am
Quote
Hi.
What's the best way to model the relationship between a generic component and specific versions of that component?
Let’s look at Microsoft Team Foundation Server (TFS) as an example:
The ‘generic’ component would be: TFS
Specific versions would be: TFS 2005, TFS 2008 and TFS 2010.

On some diagrams I would just like to show the generic TFS component, to indicate for example that TFS integrates with Microsoft Project Server. On others I would be interested in the particular versions to show that TFS 2008 integrates with Project Server Pro 2007.
How would I define the component structure to create meaningful relationships between them? In particular, would TFS 2005, TFS 2008 etc. be children of [generic] TFS?
Or am I looking at this from the wrong angle?
Thanks
Michael
Hi Michael,

No I think you're looking at it from the right angle...  

What I've done in similar circumstances (and feedback is welcome) is to introduce the notion of «implicit» relationships.

Firstly, you create a Generalization between the specific and the general.  Then you decide whether the relationship between your other vertexes is to the general or the specific.  Whichever one you choose, you create a similar relationship to the other one and stereotype the second relationship: «implicit».  I've created a shape script that changes the form of the «implicit» relationship so it's clear.

So the outcome of this is that the model "says": I have a direct relationship at one level and an implicit relationship (due to generalization) with the other level.

The neat thing about this solution is that if you drag the non-directly related items onto the same diagram, you get the «implicit» relationship visible to alert you that there is such a second-order relationship between the two vertexes!

Does that help?

BTW: you can create DB queries to automagically create implicit relationships for you in the background.  I still have to create some automation to automatically suppress the «implicit» relationship when the basic vertexes (and, presumably, relationships) are visible...

Paolo


Title: Re: relationship between component versions
Post by: micdev42 on October 28, 2008, 01:53:13 am
Paulo,
Thanks, Yes, that does help.
I'm not convinced about the <<implicit>> link though: now you need to keep two relationships in sync. instead of the single generalisation relationship. I can see your motivation for it though.
I use the <<generic>> stereotype on the general component so that's normally good enough to act as a visual cue that there are specific versions of the component elsewhere. I suppose I could use <<abstract>> rather than inventing the <<generic>> stereotype.
Either way, thanks for the ideas.
Title: Re: relationship between component versions
Post by: Paolo F Cantoni on October 28, 2008, 01:27:36 pm
Quote
I'm not convinced about the <<implicit>> link though: now you need to keep two relationships in sync. instead of the single generalization relationship. I can see your motivation for it though.
Yes, it requires automation to do it... It would be really neat if EA supported the notion.  Perhaps we could discuss the concept and then present Sparx with a consolidated user view.

I'm going to be investigating this on my own behalf anyway.

Paolo
Title: Re: relationship between component versions
Post by: «Midnight» on October 28, 2008, 09:28:23 pm
Perhaps you could keep me in the loop on this as well. I think the manual process is a bit fragile at best.
Title: Re: relationship between component versions
Post by: Paolo F Cantoni on October 28, 2008, 10:36:37 pm
Should I start a new topic?

Paolo
Title: Re: relationship between component versions
Post by: «Midnight» on October 29, 2008, 11:03:43 am
IMHO yes. This would focus the discussion on the 'inner' issue that's shown up here.

And perhaps leave a link at the bottom of this thread...
Title: Re: relationship between component versions
Post by: Paolo F Cantoni on October 29, 2008, 12:30:55 pm
Quote
IMHO yes. This would focus the discussion on the 'inner' issue that's shown up here.

And perhaps leave a link at the bottom of this thread...
OK,  I'll have a think and try to generate a new topic in a few days.

Paolo