Skip to content
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

Keuzes beter structureren #171

Closed
lennartvanbergen opened this issue Jun 24, 2021 · 8 comments
Closed

Keuzes beter structureren #171

lennartvanbergen opened this issue Jun 24, 2021 · 8 comments
Assignees
Labels
1.2 Issue meenemen in versie 1.2 prio2 Belangrijk, maar niet urgent y-issue MINOR-versie: nieuwe functionaliteit achterwaarts compatibel z-issue PATCH-versie: achterwaarts compatible bugfix

Comments

@lennartvanbergen
Copy link
Collaborator

Keuze tussen datatypes

Keuze tussen eigenschappen van een object (attribuutsoorten, relatiesoorten, externe koppeling - niet per 1 type MIM-element)

@dkrijtenburg-GNM dkrijtenburg-GNM added prio2 Belangrijk, maar niet urgent y-issue MINOR-versie: nieuwe functionaliteit achterwaarts compatibel z-issue PATCH-versie: achterwaarts compatible bugfix labels Jul 1, 2021
@dkrijtenburg-GNM
Copy link
Contributor

UML-voorbeeld toevoegen

@pmaria pmaria self-assigned this Jul 1, 2021
@dkrijtenburg-GNM dkrijtenburg-GNM added the 1.1.1 Issue meenemen in versie 1.1.1 label Jul 1, 2021
@kad-mesdat
Copy link
Contributor

DIt issue is gerelateerd aan de vraag van #158. De tekst van 2.7.2 kan idd wel wat helderder. Hieronder voorstellen daarvoor:

Een Keuze kan op meerdere plekken gebruikt worden, en maakt het mogelijk waar in het metamodel normaal gesproken maar één mogelijkheid bestaat, een opsomming te geven van meerdere mogelijkheden, waarbij in een concreet geval altijd precies één van deze mogelijkheden wordt gebruikt.

Een Keuze maakt het mogelijk een opsomming te geven van meerdere mogelijkheden, waarbij in een concreet geval altijd precies één van deze mogelijkheden wordt gebruikt. Er zijn verschillende plekken waar dit gebruikt kan worden.

Een belangrijk voordeel van deze modellering is dat de kardinaliteiten zuiver gehouden kunnen worden. Anders gezegd, er kan mee voorkomen worden dat een kardinaliteit van bijvoorbeeld twee kenmerken eerst optioneel gemaakt moet worden en dat hierna via een constraint deze toch weer verplicht gemaakt moeten worden, voor precies één van de mogelijkheden. Het is aan de modelleur om te kiezen voor een constraint of een Keuze.

Een belangrijk voordeel van het gebruik van de Keuze ten opzichte van een constraint is dat de kardinaliteiten zuiver gehouden kunnen worden. Bij het gebruik van een constraint zie je vaak dat de kardinaliteit van bijvoorbeeld twee kenmerken optioneel gemaakt is en om vervolgens via de constraint toch weer verplicht gemaakt te worden, voor precies één van de mogelijkheden.

Het is niet de bedoeling om twee attribuutsoorten te modelleren met elk een datatype en de attribuutsoorten optioneel te maken.

Zonder de mogelijkheid van keuze, zou je te maken krijgen met twee attribuutsoorten met bijbehorend datatype. Echter, in dat geval mogen de attribuutsoorten niet dezelfde naam hebben, aangezien deze bij hetzelfde objecttype horen. Ook zou de kardinaliteit niet kloppen: die zou dan [0..1] moeten worden, maar dat doet geen recht aan het feit dat er één verplicht aanwezig moet zijn, en er ook geen twee naast elkaar mogen zijn. De werkelijke kardinaliteit is [1..1].

Dit kan volgens mij weg. Maar zo niet, dan liever zo:
Bij een modellering zonder Keuze zou je te maken krijgen met een attribuutsoort per datatype, maar met een verschillende naam, hoewel ze betrekking hebben op hetzelfde kenmerk. Ook zou de kardinialiteit niet kloppen: die zou dan [0..1] moeten worden, maar dat doet geen recht aan het feit dat er één verplicht aanwezig moet zijn, en er ook geen twee naast elkaar mogen zijn. De werkelijke kardinaliteit is [1..1].

Bij de twee usecases over attribuut keuze heb ik echt een visuele weergave nodig. Volgt later

@lennartvanbergen
Copy link
Collaborator Author

Duiding: we werken nu een aantal keuzes uit, maar de keuze tussen bv attribuutsoort of relatiesoort ontbreekt, alsmede tussen relatiesoort en externe koppeling.

Voorstel: algemener opzetten keuze.

Keuze tussen datatypes en eigenschappen kan niet, dus twee categorieën:

  • tussen datatypen
  • tussen eigenschappen

Voorstel: TODO

Mogelijk geen MIM 1.1.1. misschien meer iets voor 1.2 of zo?

@dkrijtenburg-GNM dkrijtenburg-GNM removed the 1.1.1 Issue meenemen in versie 1.1.1 label Dec 14, 2021
@dkrijtenburg-GNM
Copy link
Contributor

lennart werkt dit verder uit na afstemming met Pano en Paul op 22-2-23

@lennartvanbergen
Copy link
Collaborator Author

lennartvanbergen commented Mar 22, 2023

Komt per saldo neer op:

Use Case: keuze tussen eigenschappen

bv. keuze tussen relatiesoort en attribuutsoort
bv. email (extern aan organisatie), of relatie naar persoon (binnen organisatie)
bv. personeelsnummer (intern in organisatie), of relatie naar organisatie (extern aan organisatie)
bv. contactpersoon als gegevensgroep of een persoon (binnen organisatie)

Conceptueel is het allemaal: een keuze tussen eigenschappen.

@ThiesMesdag
Copy link
Contributor

image

Nog toevoegen in tekst ? Metagegeven: heeft keuze-eigenschappen

Toepassing: Objecttype, Keuze.

@ThiesMesdag
Copy link
Contributor

Bovenstaande plaatje is nog niet helemaal goed (De binding van een keuze tussen attribuutsoorten/gegevensgroep is geen relatie maar een attribuut met keuze type (stereotype)). Verder is de vraag of dit te implementeren zou zijn.
Omdat er nog geen acute praktijkvraag voor is lijkt het ons verstandig om dat eerst uit te zoeken. Dus deze gaat naar een volgende release.

@Gtrouborst
Copy link
Contributor

Tekst en figuur/figuren zijn aangepast en opgenomen in de documentatie van MIM1.2

@Gtrouborst Gtrouborst added the 1.2 Issue meenemen in versie 1.2 label Sep 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1.2 Issue meenemen in versie 1.2 prio2 Belangrijk, maar niet urgent y-issue MINOR-versie: nieuwe functionaliteit achterwaarts compatibel z-issue PATCH-versie: achterwaarts compatible bugfix
Projects
Status: Verwerkt in documentatie
Development

No branches or pull requests

8 participants