entiteittype in zijn vreemde domein niet alle entiteiten ziet, die de eigenaar heeft gecreëerd. Al die entiteittypen, entiteiten en attributen die eigen zijn voor een bepaalde module, en ook in het zichtdomein van tenminste één andere module voorkomen, vormen het publieke domein van die module. Het publieke domein vormt de uitgaande interface van de module. De overige gegevens worden beschouwd als het privé domein van de module. Van privé gegevens kan de eigenaar zowel de structuur als de waarde veranderen, zonder dat andere modulen daar last van hebben. In het beheer van die gegevens is hij dus autonoom. Onafhankelijkheid Merkwaardig genoeg hoeven modulen niet aan veel eisen te voldoen om te kunnen worden geïntegreerd. Ze heb ben maar deels dezelfde entiteittypen nodig en per enti teittype maar deels dezelfde attributen. Beide modulen behoeven niet dezelfde constraints te hebben voor ge meenschappelijke entiteittypen. Wil men echter dat de modulen kunnen worden gebruikt als zelfstandige ge gevensbanken, dan moeten enkele aanvullende voor waarden worden gesteld. Een module noemen we onafhankelijk in het geïntegreer de systeem als hij de eigenschap heeft dat programma's die voor de afzonderlijke module zijn getest, ook correct werken in het geïntegreerde systeem en dat ze niet door wijzigingen in de schema's van andere modulen kunnen worden verstoord. Onafhankelijkheid betekent dat noch de programmeur noch de gebruiker kennis hoeft te hebben van structuur of gegevens buiten het schema van de module. De logische voorwaarde voor onafhankelijkheid is dat de gebruiker of de programmeur van de module voor elke wijziging van een gegeven in het eigen domein alle constraints kan controleren die daarbij een rol kunnen spelen. Een constraint kan hij alleen controleren als die voorkomt in zijn schema. Een constraint kan alleen voor komen als alle gegevens waarnaar die constraint wijst, zichtbaar zijn volgens het schema van de module. Deze eis betekent dat geen enkele andere module constraints mag bevatten, die verwijzen naar eigen gegevens van de onafhankelijke module en die niet worden geïmpliceerd door een constraint van de onafhankelijke module. Deze voorwaarde klinkt wat abstract, maar hij is heel gemakkelijk te controleren, zoals wordt getoond in het volgende voorbeeld (zie kader). Dit voorbeeld toont hoe het de constraints zijn die be palen of voor een module de juiste interfaces zijn ge kozen. Die bepalen namelijk of het vreemde domein voldoende zicht biedt op de omgeving om onder alle om standigheden alle relevante constraints te kunnen na leven. De eenvoudigste oplossing om alle modulen onaf hankelijk te maken, is om alle gegevens in hun schema Voorbeeld MODULE HUIS entiteittype Persoon(een natuurlijk persoon]; attributen Naam [achternaam en voorletter]; Adres[volledig postadres]; Geboortedatum Sofinummer [sociaal-fiscaal nummer); entiteittype Huis[een gebouw of gedeelte voor af zonderlijke bewoning]; attributen Kadastraal nummer Woningnr[unieke code per woning]; Eigenaar[de rechtspersoon die eigenaar is van de woning]; Hoofdbewoner[natuurlijk persoon die hoofdbe woner is]; Waarde Oppervlakte [perceelsoppervlak in m2]; Inhoud[inhoud woning in m3]; Adres eigen-domein Persoon Huis Het waterleidingbedrijf beheert de aansluitingen van huizen op het waterleidingnet. De voor dit beheer benodigde gegevens zijn beschreven in dit schema. Module „Waterleiding" Is geïntegreerd met module „Huis". In deze structuur is module „Waterleiding" eigenaar van „Aan sluiting" (met wordt aangegeven dat alle attributen eigendom zijn) en van het attribuut „Aansluitingen" van „Huis". Voor deze module vormen de overige attributen van „Huis" dus het vreemde domein. Entiteittype „Huis" hoort tot het publieke domein van module „Huis". Constraint C1 voldoet aan de voorwaarde voor onafhankelijkheid, maar constraint C2 niet. Deze refereert namelijk naar het eigen MODULE WATERLEIDING entiteittype Huis attributen Kadastraal nummer Woningnr Hoofdbewoner Inhoud Adres Wateraansluiting [de waterleidingaansluiting]; entiteittype Aansluiting attributen Huis[het aangesloten huis]; Maxafname[maximale afname in m3 per uur]; Vorige meterstand Huidige meterstand Opnamedatum constraints C1 Huidige meterstand Vorige meterstand; C2 Maxafname Huis. Inhoud; eigen-domein Huis (Aansluiting), Aansluiting attribuut „Inhoud" van module „Huis" en naar attribuut „Maxaf name" van module „Aansluiting". Dit laatste attribuut is echter niet zichtbaar voor module „Huis". Als gevolg hiervan is module „Huis" afhankelijk: stel dat men wegens een verbouwing de in houd wil verkleinen, dan is het mogelijk dat constraint C2 daar door wordt geschonden. Dit kan echter niet vanuit module „Huis" worden gecontroleerd. Er zijn twee mogelijkheden om module „Huis" onafhankelijk te maken. De eerste is om het vreemde domein van de module uit te breiden met het entiteittype „Aansluiting", met eventueel al leen attribuut „MaxAfname". De andere mogelijkheid is om de constraint uit module „Waterleiding" te laten vallen. 322 NGT GEODESIA 93 - 7

Digitale Tijdschriftenarchief Stichting De Hollandse Cirkel en Geo Informatie Nederland

(NGT) Geodesia | 1993 | | pagina 6