Book a Demo

Author Topic: Showing Realized Interfaces - broken  (Read 15503 times)

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8626
  • Karma: +259/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Showing Realized Interfaces - broken
« on: October 27, 2015, 11:45:11 am »
When you add a Provided or Required Interface, to a component, EA nests the interface as a child of the component and then attaches the interface to the component on the diagram.  Once it's attached, you can attach (Dependency) arcs to the interface to connect the interfaces to its reflection at the other end.

However, if you create an {Abstract} Interface and then create a Realization Arc to the component, you are able to [X] Show Realized Interfaces on the component.  However, unlike the description shown in "Show Realized Interfaces of Class" section of the Help file, you CANNOT connect arcs to the realized interface.  You can't even select it.  That's probably because there is NO child element created.

However, since Roy has it in the help file, then it must be worked at some stage in the past.
(Oh, and I checked, it doesn't work for Classes - as shown in the help file - either...)

Reported,
Paolo
« Last Edit: October 27, 2015, 11:45:33 am by PaoloFCantoni »
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

Uffe

  • EA Practitioner
  • ***
  • Posts: 1859
  • Karma: +133/-14
  • Flutes: 1; Clarinets: 1; Saxes: 5 and counting
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #1 on: October 27, 2015, 07:29:54 pm »
Hey Paolo,


I think all you're going to get from that is a correction in the help file.

I've never seen it work that way, the "shown" interfaces (whose names are in italics, not regular font as the help file image claims -- further proof that the help file is wrong) have always1 been unselectable ghosts.

It's a pretty useless feature IMO. In order for it to be useful, the connectors to/from the "shown" interfaces (the ones from Class1 in the help file image) would also need to be drawn in the same ghostly manner, but they're not.


/Uffe

[size=9]1 For "always", please read "since version 7.0".[/size]
My theories are always correct, just apply them to the right reality.

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8626
  • Karma: +259/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #2 on: October 28, 2015, 06:52:44 pm »
Well, at least:

Concistency, konsistency, consistensy! TMUffe - after Paolo

That would be better than a "kick in the head".
Paolo
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

RoyC

  • EA Administrator
  • EA Practitioner
  • *****
  • Posts: 1297
  • Karma: +21/-4
  • Read The Help!
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #3 on: November 11, 2015, 05:09:26 pm »
I have been poking around this for a while, and to be honest I can do everything that the Help file shows and suggests (even though a lot of what I have done is a quite convoluted way of expressing the relationship between something that provides an interface and something that uses that interface - the most direct method seems to be using an Assembly connector).

Without checking what options are set anywhere, I can create Dependency and Realization connectors between Classes/Components, Interface elements and the various forms of node representing the interfaces. And I can't see the ghosts either.

I even ran it all past Neil, who started counting all the ways you can connect everything up (at least 5).

The Interface node labels are in italics; that is true. Not sure where the 'normal' text came from.
Best Regards, Roy

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8626
  • Karma: +259/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #4 on: November 11, 2015, 06:27:54 pm »
Quote
I have been poking around this for a while, and to be honest I can do everything that the Help file shows and suggests (even though a lot of what I have done is a quite convoluted way of expressing the relationship between something that provides an interface and something that uses that interface - the most direct method seems to be using an Assembly connector).

Without checking what options are set anywhere, I can create Dependency and Realization connectors between Classes/Components, Interface elements and the various forms of node representing the interfaces. And I can't see the ghosts either.

I even ran it all past Neil, who started counting all the ways you can connect everything up (at least 5).

The Interface node labels are in italics; that is true. Not sure where the 'normal' text came from.
OK, Roy,

Can you provide  blow-by-blow process to create the diagram in the help?

Even one of the Sparxians (fielding my bug report agreed he couldn't make it work either. So we need to find the "secret sauce" to make it work for us.

Paolo
« Last Edit: November 11, 2015, 06:28:52 pm by PaoloFCantoni »
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

KP

  • EA Administrator
  • EA Expert
  • *****
  • Posts: 2919
  • Karma: +55/-3
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #5 on: November 12, 2015, 08:57:25 am »
We're talking about this help page. The page is attempting to describe the right-click>Features & Properties>Show Realized Interfaces command, which shows what are effectively just decorations on the class. However, the picture on that page is showing something entirely different: ProvidedInterface elements added to the class using the "Expose Interface" command from the diagram toolbox. If you want to make connections to "lollipop" decorations, you should use ProvidedInterface elements.

[What was confusing me and Roy yesterday was that we are able to attach connectors to the decorations created by the Show Realized Interfaces command which I had never considered possible (even though the functionality must have been there untouched for 11+ years). However, I don't think it's a useful feature because the connector believes the class, not the interface, is its target.]
« Last Edit: November 12, 2015, 10:14:22 am by KP »
The Sparx Team
[email protected]

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8626
  • Karma: +259/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #6 on: November 12, 2015, 10:51:56 am »
That's EXACTLY what I can't seem to do.  The "Show Realized Interfaces" decorations are NOT selectable.

Any ideas?

As I said, if you could post a process for creating that diagram we could go through the same steps and isolate where it doesn't work.

Paolo
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

KP

  • EA Administrator
  • EA Expert
  • *****
  • Posts: 2919
  • Karma: +55/-3
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #7 on: November 12, 2015, 11:55:53 am »
Quote
That's EXACTLY what I can't seem to do.  The "Show Realized Interfaces" decorations are NOT selectable.

Any ideas?
It's a red herring. These are not the droids you're looking for. The decorations aren't selectable, but can be used as an anchor point when dragging a connector TO the class (doesn't work dragging FROM the class). However the connector is attached to the class not the interface, because the decorations ARE the class, they are not interfaces.

Quote
As I said, if you could post a process for creating that diagram we could go through the same steps and isolate where it doesn't work.
As I said in my previous post, to create that diagram use ProvidedInterface elements, not the Show Realized Interfaces command.
The Sparx Team
[email protected]

RoyC

  • EA Administrator
  • EA Practitioner
  • *****
  • Posts: 1297
  • Karma: +21/-4
  • Read The Help!
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #8 on: November 12, 2015, 12:02:24 pm »
Neil is my guru. I sit at his feet and he slaps the back of my head and mutters "Wax off" to me... or something that sounds like that. And Neil will, with serene comportment, explain a few things in due course.

For my part, I will simply confess that the diagram in the Help topic is, for some reason, an artificial construction of some years in age, that nevertheless illustrates exactly the feature in the text - manifesting a realized interface on the realizing Class or Component, indicating the Class or Component that depends on the interface, and nothing more.

The diagram represents the realized interfaces using Expose Interface elements (for which the labels are in normal text, unlike the italic text of the Realized Interface symbols) - the text style is the only visual indication that the 'lollipops' are not the proper realized interface symbols. However, assume - in that diagram - that they are. So, you create a Class or Component that has a Realizes connector to an Interface element, then you select the 'Show Realized Interfaces' option on the Class/Component, and the lollipop symbol displays on the left edge of the element. It is a symbol - you can't select it, it has no properties, but you CAN create a Dependency connector FROM the 'using' Class to the symbol. If you investigate deeper, you will find that the relationship identifies the realizing element as its target, because what the connector is actually saying is "My source uses an interface provided by this target", but because the target can realize several interfaces, YOU pop the connector end onto the symbol as a simple illustration of the continuation of the statement: "... and it uses THIS interface." And that is all it does. Useless feature? No, not really. It allows you to quickly set up a summary of what interfaces are provided, by what components, to service what dependents.
« Last Edit: November 12, 2015, 12:08:15 pm by RoyC »
Best Regards, Roy

KP

  • EA Administrator
  • EA Expert
  • *****
  • Posts: 2919
  • Karma: +55/-3
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #9 on: November 12, 2015, 12:09:32 pm »
Quote
Neil is my guru.
Translation: I sometimes know the answers to some of Roy's questions.

Alternative Translation: Roy is doomed!
« Last Edit: November 12, 2015, 12:12:05 pm by KP »
The Sparx Team
[email protected]

RoyC

  • EA Administrator
  • EA Practitioner
  • *****
  • Posts: 1297
  • Karma: +21/-4
  • Read The Help!
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #10 on: November 12, 2015, 12:13:37 pm »
Hence all the slapping of heads and telling me to "wax off". It changes my question from "Why is the Universe?" to "Why does my head hurt?" See, he IS a clever guru!
Best Regards, Roy

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8626
  • Karma: +259/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #11 on: November 12, 2015, 07:14:00 pm »
Quote
Neil is my guru. I sit at his feet and he slaps the back of my head and mutters "Wax off" to me... or something that sounds like that. And Neil will, with serene comportment, explain a few things in due course.

For my part, I will simply confess that the diagram in the Help topic is, for some reason, an artificial construction of some years in age, that nevertheless illustrates exactly the feature in the text - manifesting a realized interface on the realizing Class or Component, indicating the Class or Component that depends on the interface, and nothing more.

The diagram represents the realized interfaces using Expose Interface elements (for which the labels are in normal text, unlike the italic text of the Realized Interface symbols) - the text style is the only visual indication that the 'lollipops' are not the proper realized interface symbols. However, assume - in that diagram - that they are. So, you create a Class or Component that has a Realizes connector to an Interface element, then you select the 'Show Realized Interfaces' option on the Class/Component, and the lollipop symbol displays on the left edge of the element. It is a symbol - you can't select it, it has no properties, but you CAN create a Dependency connector FROM the 'using' Class to the symbol. If you investigate deeper, you will find that the relationship identifies the realizing element as its target, because what the connector is actually saying is "My source uses an interface provided by this target", but because the target can realize several interfaces, YOU pop the connector end onto the symbol as a simple illustration of the continuation of the statement: "... and it uses THIS interface." And that is all it does. Useless feature? No, not really. It allows you to quickly set up a summary of what interfaces are provided, by what components, to service what dependents.
Then with respect (and I mean that MOST sincerely), the name of the diagram MUST be changed to "Exposing Realized Interfaces" -
Since the (unelectable) symbol from Show Realized Interfaces can't be connected to, if I've understood your comment.

In my view, it appears that the (italicised) symbol is similar to the inherited attributes - signifying a potential interface to be realized.  If you could select it (even if only via a context menu) and allowed the user to create the realization, then you's end up wiht the same picture, but with a REAL interface.

Paolo
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!

Uffe

  • EA Practitioner
  • ***
  • Posts: 1859
  • Karma: +133/-14
  • Flutes: 1; Clarinets: 1; Saxes: 5 and counting
    • View Profile
Re: Showing Realized Interfaces - broken
« Reply #12 on: November 12, 2015, 09:25:51 pm »
I eat red herrings for breakfast, me. Yummy!

But here's my problem.

Quote
It allows you to quickly set up a summary of what interfaces are provided, by what components, to service what dependents.
This would be extremely useful. Except that in order to do that, I must now draw an additional connector. I've drawn a realization and a dependency, from one component each, to the same interface. If I must now also draw a dependency from one component to the other, I introduce a direct dependency between them -- precisely what I wanted to avoid by using an interface in the first place.

If the connector (I suppose an assembly would be most correct, but I just plain don't like those bulky little buggers) was ghosted in the same way as the lollipops, I'd love this feature. Love it.

And, just to pile on for no better reason than it's raining outside, here's how it works in practice.

1) I set my model up the normal way with an interface, a component which realizes it (A), and a component which depends on it (B).
2) I drop the components in a diagram and select to display realized / dependent interfaces. Lollipops appear - yay!
3) I draw a new dependency from B to the lollipop decoration on A. The dependency sticks to the lollipop on A. Good.
4) But what's this? There's a new dependency lollipop on B, called "A"!
5) I go to A and deselect presentation of realized interfaces.
6) The dependency end now hovers in the air.
7) I move "A" around in the diagram. The dependency sort of twitches a bit, but the end stays where it is.
8) I switch A's realized interfaces back on. The dependency sorts itself out.

I should point out that if you close and re-open the diagram after 6) it all works correctly. But 4) makes the function less than intuitive, and having to draw the extra connector myself rules it out altogether -- not because I'm such a lazy sod, which I totally am, but because it requires me to break my precious model.

So IF you're going to have another look at this feature, please consider changing it to auto-draw connectors between the ghosted lollipops. Preferably headless ones, like associations or connectors (ie the ones between ports, which are actually named Connector).

Also, IF you do take a look, the whole thing would be much more useful if you could select which side of the element each type of lollipop appeared on. That way, connectors or no connectors, I could at least set them up roughly facing each other.

Cheerie-bye then,


/Uffe
My theories are always correct, just apply them to the right reality.