Keteininformatiemodellering op basis van UML Richtlijnen en voorbeelden
versie 0.1
Bert Dingemans
Keteininformatiemodellering op basis van UML .................................................................................... 1
Richtlijnen en voorbeelden..................................................................................................... 1 Inleiding ......................................................................................................................................................... 2 Documenten ................................................................................................................................................ 3 Richtlijnen naamgeving ............................................................................................................................. 3 Richtlijnen UML modelleren ....................................................................................................................... 4
Component ............................................................................................................................. 4 Klasse ..................................................................................................................................... 5 Associatie ............................................................................................................................... 5 Eigenschap ............................................................................................................................. 5 DataType ................................................................................................................................ 5 Enumeratie ............................................................................................................................. 6 Lijstklasse ............................................................................................................................... 6 Richtlijnen documentatie........................................................................................................................... 6 Richtlijnen UML – XSD omzetting ............................................................................................................... 9
Ouder Kind ............................................................................................................................. 9 XSD Schema ........................................................................................................................ 10 Aggregatie ............................................................................................................................ 12 XSD Schema ........................................................................................................................ 12 Overerving ............................................................................................................................ 14 XSD Schema ........................................................................................................................ 14 Dienst- of servicemodel ....................................................................................................... 16 XSD Schema ........................................................................................................................ 16
Inleiding 2
Voor het ontwikkelen van keten- en informatiemodellen en voor het ontwikkelen van ketenviews in het algemeen worden ontologieen en berichtenboeken opgesteld. Het opstellen van beide producten zal veelal releasematig plaatsvinden. Daarnaast is te verwachten dat delen van de ontologieen hergebruikt zullen worden. Dat stelt enerzijds eisen aan de tools waarmee deze producten ontwikkeld en beheerd worden. Anderzijds is het gewenst om afspraken te maken over de wijze van modellering binnen de ontologie en de standaardisatie in de berichtdefinitie. Hiermee wordt bereikt dat de modellen eenduidiger, eenvoudiger te automatiseren en gemakkelijker geïnterpreteerd kunnen worden. Bij het opstellen van de architectuurrichtlijnen wordt uitgegaan van het materiaal van andere overheidsdiensten zoals ISO standaarden, Justid en Geonovum.
Documenten NEN 3610-2005
Richtlijnen naamgeving In de communicatie over keteninformatie en de uitwisseling hiervan staan twee noties centraal. De ene notie betreft de visuele taal UML en de andere notie de syntax XML. UML is bedoeld voor communicatie tussen mensen (zoals gebruikers en systeemontwerpers) en XML is bedoeld voor communicatie tussen informatiesystemen. UML en XML zijn gelijkwaardig in die zin dat ze beide dezelfde betekenis van de uit te wisselen informatie uitdrukken. De semantiek van het model is in deze het gene waarover de communicatie plaats dient te vinden. Het kiezen van de juiste naam voor de klassen en attributen is de eerste stap in het maken van een semantisch model. In diverse bronnen worden regels voor de naamgeving van de objecten gegeven.
De volgende algemene richtlijnen gelden voor de naamgeving van de XML en UMLelementen:
3
Wees niet hoofdlettergevoelig uniek binnen hun namespace Geen witte ruimte (spaties) in de naam
Gebruik nauwkeurige en begrijpelijke benamingen voor de klassen, attributen, operaties en parameters, maak voor operaties gebruik van werkwoorden voor de andere elementen van zelfstandig naamwoorden. Gebruik toevoegingen zoals datum, type en toelichting als dit de inhoud verduidelijkt, maar stapel de elementen hierbij niet Combineer meerdere woorden als nodig is om een nauwkeurige en begrijpelijke naam te vormen zonder gebruik van tussenliggende tekens (zoals "_", "-", of ruimte). Voor attributen en namen van vereniging rollen en parameters: gebruik alleen hoofdletters voor elk woord na de beginletter (camelcase). Gebruik voor klassen en datatypen een hoofdletter voor elk woord in de naam. Gebruik documentatie velden om nader toe te lichten wat de betekenis (semantiek) is van namen. Houd namen zo kort als praktisch. Gebruik standaard afkortingen. Sla voorzetsels, werkwoorden over als ze niets toevoegen aan de naamgeving. Is een verdere detaillering van de naamgeving gewenst maak dan gebruik van de standaarden en richtlijnen ePV naamgeving opgesteld door het programma ePV van het ministerie van Justitie.
Richtlijnen UML modelleren Voor het opstellen van de ontologie wordt gebruik gemaakt van UML modellering. Alternatief is eventueel ER modellering. De richtlijnen voor UML hieronder zijn eenvoudig toepasbaar voor ER modellering. Hierbij worden twee eindproducten opgesteld. Enerzijds een ontologie dat een beschrijving geeft van het complete domein- of keteninformatiemodel. Dit is het gezamenlijke begrippenkader voor alle ketenpartners. Anderzijds een dienstenmodel waarmee aangegeven wordt op welke wijze het model gevoed wordt vanuit de verschillende bronsystemen van de ketenpartners.. Binnen de UML wordt voornamelijk gebruik gemaakt van de notatiewijze klassediagram en eventueel een packagediagram. Indien gewenst kan ter illustratie een object diagram opgesteld worden. Binnen de klassediagrammen worden alleen de volgende entiteiten gemodelleerd:
Component
4
Gebruik componenten cq packages voor het groeperen van klassen in het klassediagram.
Clusters worden gemodelleerd met behulp van componenten cq packages
Klasse
Klassen zijn de meeste elementaire elementen in het klassediagram. Indien gewenst kunnen klassen beschreven worden in clusters Indien een klasse door meerdere ketenpartners wordt aangeleverd wordt één ketenpartner als eigenaar van de klassedefinitie aangewezen. Klassen kunnen structuur overerven van andere klassen. Meervoudige overerving is niet mogelijk. Hiermee wordt bedoeld dat een klasse rechtstreeks van twee of meer verschillende ouderklassen overerft Van klassen volstaat het om alleen de eigenschappen te modelleren, operaties zijn niet relevant in XSD’s.
Associatie
Alleen met behulp van associaties worden klassen met elkaar verbonden. Iedere associatie heeft een unieke naam Een associatie kan slechts twee klassen met elkaar verbinden Minimum cardinaliteit kan slechts de waarde 0 of 1 bevatten Maximum cardinaliteit kan slechts de waarden 1 of * (veel) bevatten Alleen de basisrelatie en het type aggregatie mogen gebruikt worden (andere zijn niet relevant in een keteninformatiemodel).
Eigenschap
Eigenschappen zijn uniek binnen een klasse (inclusief de overervingsketen) Minimum cardinaliteit voor een eigenschap is 0 (optioneel) of 1 (verplicht). Wees zorgvuldig met verplichte eigenschappen, zorg desgewenst voor een waarde ‘onbekend’ indien mogelijk. Maximum cardinaliteit voor een eigenschap is 1. Zichtbaarheid van eigenschappen is altijd publiek. Datatype van eigenschappen bestaat uit de basis gegevenstypen van UML inclusief de klassen beschreven in de ontologie. Iedere klasse dient ten minste één identifier eigenschap te hebben. Naast enumeraties als beperking van het domein van eigenschappen kunnen ook checkconstraints gebruikt worden indien gewenst.
DataType
5
De datatypen vanuit UBL 2.0 kunnen worden gebruikt. Zie onderstaande opsomming:
o Bedrag (xsd:decimal) o Datum (xsd:date) o Tijd (xsd:time) o Datum en tijd (xsd:dateTime) o Geo (xsd:base64Binary) Naast de UML en UBL 2.0 datatypen kan gebruik gemaakt worden van keteninformatiemodel specifieke stereotypen te definieren. Zie het hieronder uitgewerkt voor beeld geboorte vanuit het ePV.
1970-01-01 1970 0014 6030 01
Enumeratie
Enumeraties of codelijsten worden gebruikt om het domein van een eigenschap in te perken Een enumeratie omvat ten minste een code en een omschrijving De omschrijving van een enumeratie kan uitgebreid worden met een lijst van aliassen voor deze omschrijving.
Lijstklasse
Een verbijzondering van de klasse die gebruikt wordt in de dienstenbeschrijving Geeft aan wat de ingaande paramaters (zoekparameters) zijn Beschrijft de condities waaraan de resultaatset moet voldoen.
Richtlijnen documentatie Ten behoeve van het berichtenboek wordt het onderstaande sjabloon toegepast. Het verdient aanbeveling om deze gegevens geïntegreerd op te nemen in het UML
6
klassediagram. Bijvoorbeeld door uitbreiding van het model binnen de tooling. Mits de tooling dit ondersteunt Component Naam van de component Toelichtende tekst over het component Lijst van klassen Opsomming van de in het component opgenomen klassen Eigenaar Ketenpartner die de definitie van het cluster beheert Lijst van aanleverende partijen Lijst van partijen die (delen van) de gegevens aanleveren vanuit bronsystemen Lijst van afnemende partijen Lijst van partijen die (delen van) de gegevens afnemen naar doelsystemen Diagram Van een cluster wordt een UML diagram opgenomen in het berichtenboek Naam Omschrijving
Naam Omschrijving Definitie Herkomst Definitie
Lijst van aliassen Lijst van attributen Eigenaar Lijst van aanleverende partijen
Lijst van afnemende partijen
7
Klasse Naam van de klasse Toelichtende tekst over de klasse Gezamenlijke ketendefinitie De herkomst, bron, van de definitie, bijvoorbeeld (inter)nationale, sectorale of departementale standaarden Lijst van omschrijvingen die dezelfde klasse beschrijven (symoniemen) Opsomming van de in de klasse opgenomen attributen Ketenpartner die de definitie van het cluster beheert Lijst van partijen die (delen van) de gegevens aanleveren vanuit bronsystemen Lijst van partijen die (delen van) de gegevens afnemen naar
Lijst van eigenschappen
Lijst van associaties
Lijst van generalisaties Specialisatie Component Condities
Naam Definitie Herkomst Definitie
Lijst van aliassen
Omschrijving Klassenaam Datatype Cardinaliteit Enumaratie
Naam Omschrijving
8
doelsystemen Opsomming van de eigenschappen ingesloten in deze klasse inclusief het datatype en de cardinaliteiten Opsomming van de associaties met andere klassen inclusief de cardinaliteiten en de relatiesoort. Dit is inclusief de aggregaties Van welke klassen is deze klasse een generalisatie Van welke klasse is deze klasse een specialisatie Van welke component is deze klasse een onderdeel Lijst van condities (specifiek voor Lijstklassen)
Eigenschap Naam van de eigenschap Gezamenlijke ketendefinitie De herkomst, bron, van de definitie, bijvoorbeeld (inter)nationale, sectorale of departementale standaarden Lijst van omschrijvingen die dezelfde eigenschap beschrijven (symoniemen) Toelichtende tekst over de eigenschap Naam van omvattende klasse Datatype van eigenschap Minimum en maximum cardinaliteit Eventueel de toegepaste enumeratie
Associatie Naam van de associatie Toelichtende tekst over de associatie
Klassenaam 1 Klassenaam 2 Associatietype Cardinaliteiten Rol
Naam van omvattende klasse Naam van omvattende klasse Type van de associatie (inclusief aggregaties) Minimum en maximum cardinaliteiten Eventuele rolnaam
Richtlijnen UML – XSD omzetting In onderstaande paragrafen worden de meestgebruikte UML constructies getoond op basis van de ingezette tool. Op basis van deze UML klassediagrammen wordt getoond op welke wijze deze constructies omgezet worden naar XSD structuren. Desgewenst worden de constructies nader toegelicht. De tool die ingezet wordt voor het modelleren biedt de mogelijkheid om op basis van een UML klassediagram XSD bestanden te genereren. De uitwerking hieronder is hier een voorbeeld van. Echter het is te voorzien dan in de gegenereerde bestanden handmatige aanpassingen nodig zijn. Dit wordt bij de huidige projectomvang een acceptabele werkwijze.
Ouder Kind
9
class OuderKind KlasseA
0..* KlasseB
XSD Schema <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="KlasseA" type="KlasseA"/>
10
<xs:complexType name="KlasseA"> <xs:sequence/> <xs:element name="KlasseB" type="KlasseB"/> <xs:complexType name="KlasseB"> <xs:sequence> <xs:element name="KlasseA" type="KlasseA" minOccurs="1" maxOccurs="1"/>
11
Aggregatie class Aggregatie KlasseA
0..* KlasseA KlasseB
XSD Schema <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:include/> <xs:element name="KlasseA" type="KlasseA"/> <xs:complexType name="KlasseA"> <xs:sequence>
12
<xs:element name="KlasseB" type="KlasseB" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="KlasseB" type="KlasseB"/> <xs:complexType name="KlasseB"> <xs:sequence/>
13
Overerving class Ov ererv ing KlasseB
KlasseA
XSD Schema <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="KlasseB" type="KlasseB"/> <xs:complexType name="KlasseB"> <xs:complexContent> <xs:extension base="KlasseA">
14
<xs:sequence> <xs:element name="KlasseB"> <xs:complexType> <xs:sequence/> <xs:element name="KlasseA" type="KlasseA"/>
<xs:complexType name="KlasseA"> <xs:sequence/>
15
Dienst- of servicemodel
class DienstModel Lij stKlasseA
KlasseA
KlasseB
XSD Schema
16
KlasseC
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="KlasseA" type="KlasseA"/> <xs:complexType name="KlasseA"> <xs:sequence> <xs:element name="KlasseB" type="KlasseB" minOccurs="1" maxOccurs="1"/> <xs:element name="KlasseB" type="KlasseB"/> <xs:complexType name="KlasseB"> <xs:sequence/> <xs:element name="KlasseC" type="KlasseC"/> <xs:complexType name="KlasseC"> <xs:complexContent> <xs:extension base="KlasseA"> <xs:sequence/> <xs:element name="LijstKlasseA" type="LijstKlasseA"/>
17
<xs:complexType name="LijstKlasseA"> <xs:sequence> <xs:element name="KlasseA" type="KlasseA" minOccurs="1" maxOccurs="1"/>
18