Skip to content

Commit e559fcd

Browse files
committed
UML Leeswijzer toegevoegd.
1 parent 139033c commit e559fcd

3 files changed

Lines changed: 167 additions & 0 deletions

File tree

docs/UML/UML-leeswijzer.md

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
## UML leeswijzer: Hoe lees je een MIM-UML-klassendiagram?
2+
3+
UML staat voor Unified Modelling Language en is een formele modelleertaal om objectgeoriënteerde analyses, ontwerpen en specificaties voor een informatiesysteem te kunnen maken. UML is een visuele modelleertaal om met behulp van diagrammen verschillende onderdelen van een specificatie te beschrijven. Het UML-klassendiagram is daarvan het diagramtype om de structuur en inhoud van informatie te modelleren: het informatiemodel.
4+
5+
MIM staat voor het Metamodel voor Informatiemodellering en omvat de regels voor het opstellen van een informatiemodel. MIM is opgesteld los van een specifieke modelleertaal. Er zijn wel toepassing voor MIM in specifieke modelleertalen. MIM voor UML is er daar een van.
6+
7+
In deze bijlage wordt beschreven hoe een MIM-UML-klassendiagram gelezen moet worden.
8+
Aan de hand van een model voor de adminstratie van een fietsenwinkel worden de MIM-UML constructies toegelicht.
9+
10+
<figure id="admin-fietswinkel">
11+
<img src="media/admin-fietswinkel.png" alt="Informatiemodel Fietsenwinkel">
12+
<figcaption>Een MIM-UML klassediagram voor een informatiemodel over de administratie van een fietsenwinkel.</figcaption>
13+
</figure>
14+
15+
Het 'fietsenwinkelmodel' beschrijft de administratie van een fietsenwinkel. Een `Winkel` verkoopt `Fiets`en.
16+
Een `Winkel` heeft een naam en een locatie.
17+
Een `Fiets` wordt geleverd door een `Leverancier` en verkocht aan een `Klant`.
18+
Een `Fiets` heeft allerlei kenmerken en er zijn twee type fietsen: `Stadsfiets` en `Sportfiets`.
19+
20+
Al deze informatie wordt middels MIM-UML formeel in een informatiemodel vastgelegd.
21+
22+
Er zijn de volgende MIM-UML constructies:
23+
24+
**Objecttypen**
25+
26+
Elk vak in het diagram met het stereotype «Objecttype» stelt een *objectklasse* (term uit UML) of *objecttype* (term uit MIM) voor.
27+
Een objecttype beschrijft een groep objecten met gedeelde eigenschappen en
28+
gedrag. Een voorbeeld van een objecttype is `Fiets` uit het model voor een fietsenwinkel.
29+
30+
Een *concreet objecttype* stelt een objecttype voor waarvan daadwerkelijk
31+
objecten kunnen worden gemaakt. Dit zijn de typen die in de praktijk gebruikt
32+
worden. In het fietsenwinkelmodel kan dat een objecttype `Sportfiets` of `Stadsfiets` zijn.
33+
34+
Een *abstract objecttype* is bedoeld als een algemene beschrijving en wordt
35+
gebruikt als basis voor andere objecttypen. Er worden geen objecten rechtstreeks
36+
van een abstract type gemaakt. Abstracte objecttypen worden aangeduid met
37+
cursieve namen en hebben een indicatie "abstract" in hun beschrijving.
38+
Voorbeelden in het fietsenwinkelmodel is het objecttype `Fiets` (is cursief). Het komt voor in het model maar alleen om de gezamelijke eigenschappen van een stadsfiets en een sportfiets te groeperen. Het komt niet voor als gegeven in een dataset.
39+
40+
41+
**Attributen en gegevensgroepen**
42+
43+
Binnen een objecttype staan attributen («Attribuutsoort») en soms gegevensgroepen («Gegevensgroep»).
44+
45+
*Attributen* zijn de individuele kenmerken van het objecttype.
46+
47+
*Gegevensgroepen* zijn clusters van attributen die samen een logische eenheid
48+
vormen. Bij het objecttype `Fiets` is `kleurstelling` een kenmerk dat als gegevensgroep is opgenomen. Het is beschreven als het «Gegevensgroeptype» `KleurVanOnderdelen`.
49+
50+
Het verschil tussen attributen en gegevensgroepen is zichtbaar via het
51+
*stereotype* «Attribuutsoort» of «Gegevensgroep».
52+
53+
Elk attribuut heeft een *datatype*, zoals onder meer `CharacterString`
54+
(tekstwaarde), `Integer` (geheel getal) of verwijzing naar een waardenlijst, bijvoorbeeld `Sportfietstypen`. Het attribuut en zijn datatype zijn gescheiden door een ':'. Bijvoorbeeld `aantalVersnellingen: Integer`.
55+
56+
**Waardenlijsten**
57+
58+
Waardenlijsten beperken en standaardiseren de mogelijke inhoud van een
59+
attribuut. Er zijn drie soorten waardelijsten:
60+
61+
*Enumeratie* een vaste waardenlijst die binnen het informatiemodel wordt
62+
beheerd. Wijzigingen vereisen aanpassing van het model.
63+
64+
*Codelijst* is een waardenlijst waarvan de waarden buiten het informatiemodel
65+
worden beheerd, wat flexibiliteit biedt. Wijzigingen leiden niet tot
66+
aanpassingen van het informatiemodel.
67+
68+
*Referentielijst* is een waardelijst waar een structuur in is aangebracht. Bijvoorbeeld een lijst van plaatsnamen en bijbehorende gemeentecodes. Een referentielijst wordt ook buiten het informatiemodel beheerd.
69+
70+
**Relaties tussen objecttypen**
71+
72+
Relaties in een UML-klassendiagram geven de verbindingen tussen objecttypen
73+
weer. Deze relaties verduidelijken de de structuur en interacties binnen het
74+
model. Er zijn een aantal typen relaties met elk een aparte weergave.
75+
76+
*Relatiesoorten* (in UML associaties) zijn relaties tussen objecttypen, die worden weergegeven met
77+
lijnen. Een open pijl geeft de richting van de relatie aan (van bron naar doel).
78+
Voorbeeld: Lijn tussen `Fiets` en `Klant`. Een relatie kan een naam en een relatierol hebben. In het voorbeeld: Een `Fiets` - `geleverd door` - `Leverancier`. Dit geeft aan dat in de administratie van de fietsenwinkel is opgenomen welke fiets door welke aanleveraar (= Leverancier in de rol van aanleveraar) is verkocht.
79+
80+
*Aggregatie* is een relatie waarbij is gespecificeerd dat er een 'deel/geheel' relatie tussen objecttypen is. In het voorbeeld is een `Batterij` een onderdeel van `Fiets`. Het zwarte wiebertje geeft aan dat het een 'compositie aggregatie' betreft: een batterij kan maar bij een fiets horen. Een open wiebertje is een 'gedeelde aggregatie'. In dat geval kan het deel, onderdeel uitmaken van meerdere instanties. Bijvoorbeeld, een persoon kan onderdeel uitmaken van meerdere chat-groepen.
81+
82+
*Generalisaties* zijn relaties die worden weergegeven met een lijn met een holle
83+
driehoek en duiden op een 'is-een'-relatie. Bijvoorbeeld: `Stadsfiets` is een `Fiets`. Of anders gezegd objecttype `Fiets` is een generalisatie van `Stadsfiets`. Ook wordt gezegd dat `Stadsfiets` een *subtype* is van het *supertype* `Fiets`. Het kan zijn dat een supertype niet is opgenomen in het afgebeelde diagram. In dat geval wordt er rechtsbovenin het objecttype aangegeven wat het supertype is. In het voorbeeld `Klant` heeft als niet afgebeeld supertype `Contact`.
84+
85+
*Overerving* is een belangrijk mechanisme bij het lezen van het diagram. Een subtype erft alle eigenschappen van het supertype. In het voorbeeld: een `Stadsfiets` heeft alle eigenschappen (o.a. atttributen) die `Fiets` ook heeft.
86+
87+
*Relatieklasse* is net als relatiesoort een relatie tussen objecttypen. Deze relaties bevatten ook kenmerken. Als voorbeeld: `Fiets` heeft een `verkocht aan` - `koper` relatie met `Klant`. Bij die relatie zijn opgenomen de `verkoopdatum` en het `garantienummer`.
88+
89+
**Kardinaliteit en verplichting**
90+
91+
Kardinaliteit (of multipliciteit) geeft aan hoeveel voorkomens (instanties) van een
92+
objecttype, attribuut of gegevensgroep mogelijk of vereist zijn.
93+
Veelvoorkomende kardinaliteiten zijn:
94+
95+
- 1: precies één (verplicht).
96+
97+
- 0..1: nul of één (optioneel).
98+
99+
- 1..\*: één of meer (verplicht met minimaal één).
100+
101+
- 0..\*: nul of meer (optioneel, zonder bovengrens).
102+
103+
- \*: onbepaald aantal.
104+
105+
Als er geen kardinaliteit bij een attribuut of gegevensgroep vermeld staat,
106+
wordt dit beschouwd als verplicht (1).
107+
108+
**Keuze**
109+
110+
Een UML-klassendiagram kan keuzemogelijkheden bevatten. Dit wordt aangegeven met
111+
een stereotype «Keuze».
112+
113+
*keuze-datatypen* geeft aan dat bij een attribuut een keuze gemaakt moet worden tussen verschillende datatypen. Dit wordt vaak gebruikt om een keuze tussen twee of meer geometrietypen te specificeren. In het voorbeeld: `Winkel` heeft een attribuut `locatie` met een datatype `Geografische locatie` die als keuze is gedefinieerd tussen het datatype GM_Point of GM_Surface. Locatie wordt daarmee of door een punt of een vlak weergegeven.
114+
115+
*keuze-attribuuttype* geeft aan dat een kenmerk ingevuld wordt door een keuze uit verschillende attributen. In het voorbeeld: het kenmerk `aandrijving` bij `Fiets` heeft als datatype `Aandrijving` om aan te geven dat er een keuze is tussen het attribuut `kettingaandrijving` met het daarbij behorende `kettingtype` of `snaaraandrijving` met het daarbij behorende `snaartype`.
116+
117+
*keuzerelatie* is een keuze tussen meerdere doelobjecttypen in een relatie.
118+
Bijvoorbeeld, een winkel kan eigendom zijn van een persoon of van een organisatie, maar niet van beide.
119+
120+
**Kleurgebruik UML-diagrammen**
121+
122+
Het kleurgebruik kan de leesbaarheid van UML-diagrammen verduidelijken. Een legenda geeft de betekenis weer. Belangrijk is dat kleuren geen formele betekenis hebben binnen een UML-diagram.
123+
124+
**Samenvatting**
125+
126+
127+
- MIM-UML is een toepassing van MIM gebruikmakend van de modelleertaal UML.
128+
129+
- UML is een formele en visuele taal die mbv afgesproken notaties o.a. in een uml-klassediagram, structuur en inhoud van een informatiemodel specificeert.
130+
131+
- Met «Stereotypen» worden onderdelen van UML notaties herkenbaar onderscheiden en MIM toepassingen herkenbaar gemaakt.
132+
133+
- Objecttypen, attributen en relaties vormen de kern van een UML klassediagram.
134+
135+
- Concreet objecttype: praktisch toepasbare objecten; Abstract objecttype:
136+
algemene beschrijvingen, bedoeld als basis.
137+
138+
- Attributen hebben een datatype, zoals CharacterString, Integer of een
139+
waardenlijst (codelijst of enumeratie).
140+
141+
- Waardenlijsten standaardiseren waarden; codelijsten zijn extern beheerd,
142+
enumeraties intern.
143+
144+
- Lijnen tonen relaties tussen objecttypen; generalisaties tonen
145+
'is-een' (of subtype-supertype) relatie tussen objecttypen.
146+
147+
- Kardinaliteit geeft aan hoeveel instanties mogelijk of vereist zijn.
148+
149+
- Keuzes in datatypen of relaties bieden flexibiliteit binnen het model.
150+
151+
- Kleurgebruik in UML kan de leesbaarheid van een UML diagram verhogen.
152+
153+
Door deze richtlijnen te volgen, kan een UML-klassendiagram effectief worden
154+
geïnterpreteerd. Voor meer informatie over gegevensmodelering, zie het
155+
[Metamodel voor Informatie Modelering
156+
(MIM)](https://docs.geostandaarden.nl/mim/mim/).

docs/UML/index.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# UML
2+
3+
We gebruiken vaak UML om informatiemodellen te maken.
4+
5+
- We gebruiken [../EA/index.md](enterprise architect als tooling)
6+
- Met [../Imvertor/index.md](Imvertor) wordt het UML omgezet naar andere formaten.
7+
- Publicatie van het UML gebeurt in [../ReSpec/index.md](ReSpec).
8+
- In het ReSpec document kan het volgende document als leeswijzer opnemen: [Leeswijzer UML](UML-leeswijzer.md)

mkdocs.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ nav:
2828
- Toolbox genereren: EA/MIM-toolbox-genereren.md
2929
- Toolbox genereren extensie: EA/MIM-toolbox-genereren-extensie.md
3030
- XMI exporteren: EA/xmi-exporteren.md
31+
- UML:
32+
- UML: UML/index.md
33+
- Leeswijzer UML: UML/UML-leeswijzer.md
3134
- Subversion:
3235
- SVN: svn/index.md
3336
- SVN installeren voor EAP: svn/SVN-installeren-voor-EAP.md

0 commit comments

Comments
 (0)