Book a Demo

Author Topic: Share model elements with diff. detail level  (Read 12303 times)

Illo

  • EA Novice
  • *
  • Posts: 5
  • Karma: +0/-0
    • View Profile
Share model elements with diff. detail level
« on: September 15, 2010, 08:53:33 pm »
Hello EA community!

I'm looking for an approach for hiding/showing model elements.

The use case is the following:
Let say we have identified classes, associations, states, transitions and some properties of them in the early 'System Analysis Phase'. We use these elements in domain diagrams which show WHAT the system shall so.

In the following design phase we detail identified classes, associations, states, transitions by adding attributes, operations, constraints and so on. We use the more detailed elements in design diagrams to show HOW the system shall be implemented.

The challenge is to use the same model elements (not copief of them) in both the abstract domain diagrams and the more detailed design diagrams. Thus the details which make up the design model, e.g. only design relevant attributes must be hidden in the domain model.

Does EA provide techniques for this use case?
Does anyone have a solution for my problem or is going to solve this problem?

Any hints are appreciated.

Best regards,
Oliver

Geert Bellekens

  • EA Guru
  • *****
  • Posts: 13523
  • Karma: +574/-33
  • Make EA work for YOU!
    • View Profile
    • Enterprise Architect Consultant and Value Added Reseller
Re: Share model elements with diff. detail level
« Reply #1 on: September 15, 2010, 09:15:15 pm »
Oliver,

Not really,

There are a few approaches possible.
The cleanest approach would be to use an MDA transformation to go from you domain model to your design model. The downside is (I think) that the transformation creates new elements, but If I'm not mistaken it keeps a reference between the source and target of the transformation.
Another approach is to use the baseline utility to create a baseline (snapshot) of your model before you start designing. You can do diff's between the current model and the baseline, but I won't be easy to consult the baseline model.

A third approach is to write an addin that effectively does the same thing as Diagram Filters, but then also on element feature level (I think Diagram Filters only work on Element level)
So the addin could hide all features on domain diagrams that have been added in design. You could make the difference using tagged values, stereotypes, ....

Geert

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8110
  • Karma: +119/-20
    • View Profile
Re: Share model elements with diff. detail level
« Reply #2 on: September 16, 2010, 08:19:58 am »
My immediate thought is to stereotype the attributes according to the level you want them to appear at.  You can then specify in the class visibility dialog the stereotypes that you wish to hide.

beginner

  • Guest
Re: Share model elements with diff. detail level
« Reply #3 on: September 21, 2010, 05:15:17 am »
Oliver,
in you use case you say "We use these elements in domain diagrams" and later "must be hidden in the domain model". These are actually two different pairs of shoes. You can re-use the same model element in the "domain model diagrams" and in the "detailed model diagrams".

However, this is not always a good idea. I found the MDA approach most useful. For that you actually create copies from CIM to PIM to PSM. EA provides a transformation for that (which for some reason I don't use but create copies with trace relations).

The good and bad with abstraction is that you cut information in the beginning and fill in the flesh later. Once you do that you might to iterate since you recognize that your beefed up model doesn't fit the customer's needs.

The domain shall be stable and on it's abstract level it must be signed off by the stakeholders. You just clone that CIM domain model in usually one PIM where you try adding details. So your domain diagrams stay the same and your model get's detailed. When you take snapshots (or use build-in version control) you can tell what has changed when. A nice side effect, but usually not important. Branch and merge is not really possible with an UML model (I can argue for that but would take some space...). So it's good for a backup and branch and cut.

b.