Informatievlaanderen / OSLO-Standaarden

The content of the OSLO Standaardenregister on data.vlaanderen.be
18 stars 9 forks source link

Wordt UML correct gebruikt? #46

Closed DieterDePaepe closed 7 years ago

DieterDePaepe commented 7 years ago

Opmerking van Yvan S. op een fragment uit het interne verslag van Organisatie 3:

Vraag WB: Klopt het dat er, op basis van het voorgestelde model, 3 soorten organisaties zijn?: Public organisation, registered organization en formal organization. Antwoord TD: Ja, maar deze soorten zijn niet disjunct, een organisatie kan van meerdere soorten tegelijk zijn, waarbij de velden van die soorten dan samengevoegd worden zodat er maar één keer een beschrijving moet worden gemaakt. Antwoord GT: inderdaad niet disjoint, een geregistreerde organisatie kan ook een publieke organisatie zijn, etc…

Opmerking: In dat geval klopt het model niet volgens de UML-standaard. Mijn opmerking gaat niet over de inhoud, maar over de modellering. (Als je een standaard wil definiëren, moet je bestaande standaarden daarbij correct gebruiken, vind ik.) In dit geval kan je geen specialisatie gebruiken. Vervang de relaties door een associatie met als naam "is een" en een cardinaliteit van 1 op 0 of 1.

GeertThijs commented 7 years ago

Een subklasse is een "is een" relatie. Waarom zou specialisatie in dit geval niet mogen?

DieterDePaepe commented 7 years ago

Definitie uit de 2.5 UML specificatie (p198):

Specialization is, in contrast to subsetting, a relationship in the domain of intentional semantics, which is to say it characterizes the criteria whereby membership in the collection is defined, not by the membership. In the case of Associations, specialization means that a link classified by the specializing Association is also classified by the specialized Association. Semantically this implies that sets calculated by eliminating duplicates from the collections representing the ends of the specializing Association are subsets of the corresponding sets calculated by eliminating duplicates from collections representing the ends of the specialized Association; this fact of subsetting may or may not be explicitly declared in a model.

Verder wordt op pagina 197 een diagram getoond waarin een specialisatie meermaals voorkomt.

Bij de voorbeelden waarom men UML zou willen uitbreiden, wordt volgend voorbeeld gegeven: "Add Constraints that restrict the way UML’s constructs are used (such as disallowing multiple inheritance)."

GeertThijs commented 7 years ago

Ter info: Yvan zegt hierover in een comment op het verslag nog:

Is reeds uit het model af te leiden doordat een specialisatie wordt gebruikt. Subclasses van dezelfde parentclass sluiten elkaar per definitie uit.

Dat was vroeger (pre UML 2.5) het geval als je geen generealisatieset gebruikte. Standaard stond de property voor de default generalisatieset toen op Disjoint, maw dit:

image

Was toen verkeerd. Maar sinds 2.5 staat isDisjoint op Overlapping en is dit niet langer fout. Sowieso kun je generalisatiesets gebruiken om de verschillende classificaties beter te onderscheiden, vb:

image

Binnen eenzelfde generalisatieset kan je dan aangeven of de verschillende subklassen Disjoint of Overlapping zijn, bv:

image

Met als enig probleem dat EA die constraint niet toont. Daarom spreken we binnen OSLO af om indien disjoint de shared target style te gebruiken:

image

In de UML specs vind je gelijkaardige voorbeelden, vb: image