New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider allowing multi-level modeling: Native support for the abstraction-occurrence pattern #1393

Open
TimLethbridge opened this Issue Oct 19, 2018 · 1 comment

Comments

Projects
None yet
1 participant
@TimLethbridge
Member

TimLethbridge commented Oct 19, 2018

The abstraction-occurrence pattern is when instances of a class in a model has occurrences that are modelled as instances of another class. Examples include:

TVSeries -- Episodes
ProductCategory -- Product
BookTitle -- CopyOfBook

In programming languages, both classes in each pair need to be at the same 'level', i.e. classes. However the multi-level modeling concept suggests that in models the abstraction (e.g. BookTitle) could have instances (specific BookTitles) that are the classes for their copies. The abstraction would become a metaclass.

Beginner modelers tend to get confused as to where the 'instance-of' relationship lies, so Umple support would be useful. But we also would have to be careful to avoid adding confusion, or generating code that is overly complex.

One suggestion would be to tag the abstraction-occurrence association with a stereotype. Then we could generate delegation methods automatically such that attributes of occurrence instances 'inherit' the attributes of their related abstraction instance.

@TimLethbridge

This comment has been minimized.

Member

TimLethbridge commented Oct 19, 2018

Lots of info about multi-level modeling can be found here:
http://homepages.ecs.vuw.ac.nz/Groups/MultiLevelModeling/MultiPublications

Also see
https://link.springer.com/article/10.1007/s10270-016-0565-6
and the paper by De Lara about when and how to use multi-level modeling
http://www.miso.es/pubs/tosem.pdf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment