views:

55

answers:

3

I am in a early stage of a project, graphically modelling the system structure.

Is there any widely accepted graphical notation for showing interface "bundles"?

Interface bundles would be a collection of several separate interfaces (belonging together) which are aggregated in order to reduce figure complexity.

Example would be to visualize a

  • direct debit interface,
  • voucher interface,
  • credit card interface and
  • prepaid interface

as one aggregated payment interface with hinting that the actual implementation consists of several interfaces. I am looking for ways to illustrate the "hinting".

A: 

If you're using UML, I think the relevant diagram is a component diagram, which you could use to easily capture component ("bundles") and describe their interfaces.

example: Component diagram example

Ami
In UML one would use the lollipop notation for showing interfaces. However, how would the lollipops be drawn in order to show a composite interface?
Bernd
One of the options in my answer gets to this, you can have multiple interfaces on one port (lollipop) different tools represent this with different levels of quality. As such there are other options I have provided, plus if you add it to a component then it is realizing and interface, which may not mean the same as a grouping of interfaces, not just for one component's realization.
Ted Johnson
+1  A: 

So, it all depends on what you are trying to say from a modeling perspective. Options 3 could be your hinting, but there are other options.

  1. Use packages for grouping and add a keyword of 'group'/'interface set' plus name the package what the grouping should be called as, not my personal favorite, but common, because it is easy, and people over use packages for the wrong meaning.
  2. Make one large/grouped interface and have it realize the others. This would be very explicit from an inheritance perspective. It would work nice during behavior modeling (sequence diagrams) because the child interface methods would actually be available.
  3. Like 2, but instead the use/depends line and add a keyword to the line, you can put a 'hint' keyword like contains, groups, include (this is standard).
  4. You could use association, aggregation, composition lines between the a large/grouped interface and contained interfaces like in option 3.
  5. If it is more important that they are grouped at realization or the component level, you can put multiple interfaces on 1 port (i.e.) lollipop coming of a component.

If these don't work there might be more complex or behavior related UML modeling options. You could even try and leverage the IBM services profile, but it is more about grouping interfaces (services) for deployment grouping, kind of like 5.

Ted Johnson
I understand that your suggestions actually depict the realized/contained interfaces.I am however after a notation that does not show the realized/contained interfaces but instead a a marker (or whatever) indicating that the interface is abstract.The goal is to reduce complexity from the diagram in order to make it comprehensible.I rather would like to avoid "visual noise" and make the figure management compliant :-)Lollipops are nice, is there a notation for marking them abstract?
Bernd
Well most elements, e.g. classifiers, classes, interfaces, etc can be made abstract. The visible difference is that the name text is italicized. If you are serious about reducing clutter you could create your own profile and change the icon to something that denotes the abstract or grouping for your needs.
Ted Johnson
A: 

Sounds like component diagrams would be useful here. Check out the following example:

Component diagram

UML Component Diagrams: Reference: http://msdn.microsoft.com/en-us/library/dd409390%28VS.100%29.aspx

Esther Fan - MSFT