Book a Demo

Author Topic: Sybsystem interface: how to show it?  (Read 5951 times)

tanja

  • EA User
  • **
  • Posts: 71
  • Karma: +0/-0
    • View Profile
Sybsystem interface: how to show it?
« on: August 03, 2005, 04:43:24 am »
Hello,
I have subsystems for which I define interfaces. I would like to show on a package/class diagram interface dependencies among subsystems with lollipops, as I would do among classes. However, the subsystem can just show its contents (since it is a package icon), in my case intefaces. However, I found no way to make the subsystem in EA5 show the lollipops on their edges (not within the package icon) and to draw dependencies.
Could somebody help?
Thanx in advance.

sargasso

  • EA Practitioner
  • ***
  • Posts: 1406
  • Karma: +1/-2
  • 10 COMFROM 30; 20 HALT; 30 ONSUB(50,90,10)
    • View Profile
Re: Sybsystem interface: how to show it?
« Reply #1 on: August 04, 2005, 08:01:30 pm »
Hi tanja,
I had a good think about this and did some web research before responding.
The main reason for the research was I dont have a copy of UML 1.5 (or earlier) any more.

What I have found is that:
a) in UML 2 they encourage the use of component, not package, as the subsystem element.  The prior use of stereotyped packages seems to have "dissappeared".  Even the rake adornment cant be found.
b) there is some indication that these prior packages were instance elements, i.e. they are objects not classifiers.
c) components are classifiers, therefore they can be adorned with ports and interface lollipops.

hth
bruce
"It is not so expressed, but what of that?
'Twere good you do so much for charity."

Oh I forgot, we aren't doing him are we.

tanja

  • EA User
  • **
  • Posts: 71
  • Karma: +0/-0
    • View Profile
Re: Sybsystem interface: how to show it?
« Reply #2 on: August 05, 2005, 12:13:56 am »
Thanx, sargasso,

I've also searched a little bit on the web, and came to the similar conclusion.

1) Now, I need to transform all the packages (subsystems) into components (subsystems). Is there a quick way to do that in EA5 (similar to what one can do with links)?

2) Could you, or somebody else, suggest how to distinguish between build-time artefacts (subsystems) and runtime artefacts (components) - where and how to define components that realise subsystems?

3) As a side note, I have been using UML 2.0 profile in EA5 all the time, but the components are still shown as classifiers with the "2 boxes" super-imposed to the classifier box - while in UML 2.0 the component icon should be just a classifier with small component icon adornment within the classifier box (hope this explanation was clear).

Many thanx in advance.

thomaskilian

  • Guest
Re: Sybsystem interface: how to show it?
« Reply #3 on: August 05, 2005, 03:00:57 am »
Quote
1) Now, I need to transform all the packages (subsystems) into components (subsystems). Is there a quick way to do that in EA5 (similar to what one can do with links)?

Probably this can be done by a model transformation (right click package/Transform Seleceted Elements). You have to write an appropriate transformation.

sargasso

  • EA Practitioner
  • ***
  • Posts: 1406
  • Karma: +1/-2
  • 10 COMFROM 30; 20 HALT; 30 ONSUB(50,90,10)
    • View Profile
Re: Sybsystem interface: how to show it?
« Reply #4 on: August 07, 2005, 03:42:31 pm »
re 3) Check Tools|Options -> Objects.  In the right hand column there is a "Use 1.5 components" option.  Is it checked?

re 2) I wish...  one day I'll write a book and this will be in the first chapter.

bruce
"It is not so expressed, but what of that?
'Twere good you do so much for charity."

Oh I forgot, we aren't doing him are we.

tanja

  • EA User
  • **
  • Posts: 71
  • Karma: +0/-0
    • View Profile
Re: Sybsystem interface: how to show it?
« Reply #5 on: August 08, 2005, 12:46:22 am »
Many thanks to all your hints.
1) I've found that I can change the type of e.g., class/interface (a classifier) and of a link, but not of a package, although it is also a UML classifier (if I'm not wrong). This happens in the properties window, and is quite cool. (Feature request: select several elements and change any of their common properties in bulk).
2) I've actually found the 1.5 component trick - somewhat hidden...
3) For components and subsystems, I agree, everybody is somewhat on ones own.

I would have (at this point in time) some more questions, as I'm about to start heavily using EA (after Rose and XDE):
1) Is it possible to select several links on a diagram (but not all, with the menu item 'Select elements of type) - it would be handy to be able to do ctrl-click for links as one can do for classes/interfaces/packages/components.
2) If I enable the 'generalisation link as tree' option in local options, I found no way to change the style of a single generalisation (or I simply didn't read well the manual)?
3) I found it strange when drawing aggregation from composite to component, to have the diamond on the side of component, while it should be on the side of composite. In options, I have checked "Association default source->target", but this doesn't seem to apply to aggregation... Is it possible to have aggregation links behave the same as associations?
4) How can I choose to show an interface as a stereotyped class box or as a lollipop? I've already created a number of interfaces from package->add element->interface, and these appear as stereotyped class boxes, and I would like to show some of them as lollipops. On the other hand, if I use the toolbox, then I really get the lollipop (but still don't know how to render it as a stereotyped class box on a diagram).
5) Finally, I would like to have some of these interfaces be the interfaces offered by some components (from the Toolbox, that would be Expose interface and/or Assembly, but I would like to use those that I've already created as interfaces).
Well, any help will be highly appreciated, since I'm still learning this big/small beast of EA.
Thanx in advance,
Tanja

thomaskilian

  • Guest
Re: Sybsystem interface: how to show it?
« Reply #6 on: August 08, 2005, 03:50:23 am »
1) not really :-/
2) as far as I remember it's all or nothing...
3) has been discussed here in broad. Try to search for it...
4) oops (sitting at my Mac). There is an option but I don't remember where exactly.
5) no idea

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8110
  • Karma: +119/-20
    • View Profile
Re: Sybsystem interface: how to show it?
« Reply #7 on: August 08, 2005, 03:26:35 pm »
1) No.
2) Right click on a generalization link and select "Tree Style" to toggle for that connector.  The option specifies the default when creating new connectors.
3) As Thomas said.
4) Right click on an interface and select "Advanced Settings" | "Use Circle Notation".
5) Not sure.

Simon

sargasso

  • EA Practitioner
  • ***
  • Posts: 1406
  • Karma: +1/-2
  • 10 COMFROM 30; 20 HALT; 30 ONSUB(50,90,10)
    • View Profile
Re: Sybsystem interface: how to show it?
« Reply #8 on: August 08, 2005, 05:20:26 pm »
5) See chapter 1267 of my upcoming book...  ;D

An interface on a component is not the same as an interface in a class model.  (Thanks OMG!)

An interface in a class model is a contract, is abstract, is indirectly implemented, is etc etc.  The only thing you can do with a class interface is have some class(es) implement it.

An interface on a component is (can be/should be) "executable", it exists, it does things, it can be a class, a facade, or many other things.  It can be thought of as a specific socket, like a USB socket or a serial port socket, and like these it can have some electro-candy behind it that does something before it gives data in or out  (like a serial board or a USB board between said sockets and the mother board.

To continue the analogy, both the above interfaces pass  the same data just along different cable types, component interfaces can be implemented in sort of a similar manner, different shaped adapters accessing/providing the same internal behavior.  However, this means that component level interfaces are specific and non-additive whereas class interfaces are (can be considered to be) additive in the sense that a class that implements two interfaces must implement all "contractual conditions" of both.  In other words a component interface "exposes" a (sub)set of internal behavior of the component as decided by the whim of the architect/designer/coder, a class interface defines everything that the implementing class must expose.

That was the good news.

IMO, the current UML definition of component interfacing is immature.  Previously, this forum has had a view expressed that component models depicting interfaces, ports and assemblies really only work at the conceptual level.  (Don't know who would have said that...  ::) )  

That's the bad news.

But wait, there's more!  EA actually lets you use real things on component models.  IOW you can I think achieve what you want using EA component models, just stay away from the assembly connector.

hth
bruce

p.s. A package is not a classifier.   It doesn't comply with the definition.  It does have some characteristics of a classifier, but not all - eg it is not extensible.
"It is not so expressed, but what of that?
'Twere good you do so much for charity."

Oh I forgot, we aren't doing him are we.

tanja

  • EA User
  • **
  • Posts: 71
  • Karma: +0/-0
    • View Profile
Re: Sybsystem interface: how to show it?
« Reply #9 on: August 08, 2005, 11:22:17 pm »
Thomas, Simon, Thanx for your answers!

And you, Bruce, I'm impatient to read chapter 1268 of your book 8)

Why should I stay away from the assembly connector?

I found how to have one or more components provide an (existing) interface (context menu on component -> Add embedded element -> Add provided interface).

I've just tried to drag an existing class and (class) interface into a component in the model browser, but I see it only there, not on the diagram - how to show the other classifiers, like classes, enums etc. (or any contents of the component other than provided/required interface or port) on the component diagram? These classifiers are meant to provide the implementation of the component.

Reg's,
Tanja

sargasso

  • EA Practitioner
  • ***
  • Posts: 1406
  • Karma: +1/-2
  • 10 COMFROM 30; 20 HALT; 30 ONSUB(50,90,10)
    • View Profile
Re: Sybsystem interface: how to show it?
« Reply #10 on: August 09, 2005, 12:15:17 am »
The assembly connector is (IMO IMO IMO) at best a conceptual level construct of the "something is happening here but you dont know what it is do you Mr Jones". (attrib R Zimmerman) ilk.
IMO it is a placeholder for a later detailed description of the interconnection between two components.  Thus for your use  in your current problem it wont add value.  That's all.


Now re: "I've just tried to drag an...."  yep, that's chapter 1268 "Why doesn't my computer read my mind and interpret mouse actions exactly the way I am thinking at that specific moment"

Unfortunately a component is, for want of a better "construct" a container element as well as a structural classifier.  Drag-n-drop some things on a (pure/real/natural/simple) classifier (like a class element) and you get what is called an adornment (yep let's use the same term for two different things yet again - sometimes I think OMG are a bunch of lawyers)

Now if you drag-n-drop some things on a pure container element you get nesting.  Try this,
1) create a package somewhere safe.
2) create a package diagram inside it
3) using the project browser (not the diagram) create two packages called "sub-package" and "subsub-package"
4) drag sub-package into the diagram
5) make it big
6) drag subsub-package into the diagram within the sub-package element
7) now drag subsub-package onto a blank area of the diagram
voila! a nesting connector appears!
not voila! subsub-package has not moved in the project browser
8 ) in the project browser under sub-package create a new package "another-subsub-package"
tralaheyho! this appears as an icon inside sub-package on the diagram
9) drag another-subsub-package onto a free area of the diagram
oog! no relationship between sub-package and another-subsub-package appears.

What does all this mean? DIIK!

But to get back to components, which as I say are both classifiers and containers and which are therefore justifiably schizoid. What should they do when you drop an existing element on them.  Yet again, DIIK, but if can hazard a guess, it wont be the thing you are thinking of at the time.

hth, but I doubt it.  
Now, I think I'll toddle off for today, I'm sure I hear the sound of the nectar of Tay a'calling.

bruce
"It is not so expressed, but what of that?
'Twere good you do so much for charity."

Oh I forgot, we aren't doing him are we.