%Nr: DS-2001-03 %Author: Erik de Haas %Title: Logics for OO Information Systems: a semantic study of object % orientation from a categorial-substructural perspective. Dit proefschrift bevat een onderzoek naar formele aspecten van object oriÄentatie. Het bevat een semantische beschrijving van een generieke taal voor modelleren en specificeren van object georienteerde informatiesystemen. Deze semantische beschrijving geeft inzicht in de constructies die gebruikt worden bij het object georienteerd modelleren. Dit inzicht kan voor een aantal doeleinden worden gebruikt, bijvoorbeeld voor het ontwikkelen en verfijnen van geautomatiseerde object geÄ orienteerde software ontwikkelsystemen of voor het ontwikkelen van optimalisatie technieken voor algoritmen die object georienteerde data verwerken. In de praktijk van object georienteerd modelleren en object georienteerde databases hebben de gebruikte talen meestal geen formeel wiskundig fundament. Belangrijke voorbeelden van zulke talen zijn UML (de industriele standaard taal voor object georienteerd modelleren) en ODMG (een voorgestelde standaard voor object georienteerde database talen). Ondanks dat deze talen geen formele basis hebben word er toch een aantal 'semi-formele' taken mee uitgevoerd. Voor UML bestaan er zogenaamde 'code-generatie' algoritmen, die UML expressies vertalen naar expressies in object georienteerde programmeertalen. Ook bestaan er algoritmen voor query optimalisatie op object georienteerde database modellen, die zijn opgeschreven in UML of ODMG. Omdat deze talen geen formele basis hebben, zijn deze systemen verdacht voor inconsistenties en ambiguiteiten. Daarom kunnen bijvoorbeeld sommige UML expressies niet worden vertaald. Onderzoek naar de mathematische fundamenten van zulk soort talen beoogt de ontwikkeling van systemen die object georienteerde talen gebruiken te ondersteunen, door het wegnemen van onduidelijkheden en het voorzien in een consistente interpretatie van deze talen. Het onderzoek naar semantische aspecten van object orientatie is ook interessant vanuit een ander oogpunt. De concepten die belangrijk zijn in object orientatie komen uit de praktijk, en zijn daar ontwikkeld om informatie analisten en software ontwikkelaars te helpen op een nette en precieze wijze hun informatie modellen op te schrijven. Deze informatie modellen zijn afspiegelingen van een werkelijke situatie. In deze zin raakt dit onderzoek thema's uit de filosofie. In de filosofie is het immers een belangrijk doel om op precieze wijze aspecten van de werkelijkheid te beschrijven. In dit proefschrift worden de volgende zeven onderwerpen behandeld: 1. In hoofdstuk 1 is een analyse gemaakt van de praktijk context waarin object georienteerde talen worden gebruikt. Deze analyse is belangrijk, omdat deze voorwaarden stelt aan de (mathematische) interpretatie van de talen. Een informatie analist begint normalerwijze aan zijn modelleertaak met het benoemen van objecten. Dit benoemen resulteert in eerste instantie alleen in 'labels', omdat er aan het begin van de analyse nog geen kennis zal zijn van de structuur en het gedrag van de objecten (daar moet de analist juist achter zien te komen). Toch zal de analist reeds in het begin delen van zijn model moeten opschrijven om hierover te kunnen communiceren. In de loop van zijn analyse zullen de objecten meer betekenis en structuur gaan krijgen, maar op elk moment zal het zo kunnen zijn dat objecten slechts partieel, of zelfs 'ongefundeerd' beschreven zijn. De taal en de interpretatie daarvan zal met deze 'partialiteit' en 'ongefundeerdheid' om moeten kunnen gaan. 2. Hoofdstuk 2 bestaat uit een analyse van de concepten die over het algemeen als belangrijk voor het object georienteerde paradigma worden bestempeld. Omdat deze concepten uit de praktijk, zonder formele basis, zijn geboren, bestaan er vaak meerdere invullingen van de concepten. In de analyse wijzen wij op mogelijke problemen met het interpreteren van de concepten en doen wij een voorstel voor het (informeel) interpreteren van deze concepten. Deze analyse vormt de basis van de formalisatie in de opvolgende hoofdstukken. 3. In hoofdstuk 3 introduceren wij de formele taal die wij ontwikkeld hebben voor de mathematisering van object georienteerde talen. Deze taal heeft zowel grafische als tekstuele componenten en wordt aangeduid met: "de taal der categoriale grafen". Deze taal is een generieke taal waarop de meeste basiscomponenten en constructoren uit de object georienteerde modelleer en database talen kunnen worden afgebeeld. In dit hoofdstuk worden syntactische eigenschappen van deze taal behandeld, en wordt er een probleem opgelost dat te maken heeft met het imploderen en exploderen van grafische taalcomponenten. 4. Het formele model voor object georienteerde informatiesystemen wordt gedefinieerd in hoofdstuk 4. Dit model vormt het semantisch model voor de taal der categoriale grafen. Daarnaast definieren wij een formele interpretatie van deze formele object georienteerde taal in dit model, en een syntactische calculus voor de taal. In andere woorden: wij definieren een logica voor object orientatie. 5. In hoofdstuk 5 schetsen wij de wetenschappelijke context van de logica voor object orientatie die wij zojuist hebben geconstrueerd. Hierin behandelen wij de notie van formele semantiek in de informatica, en de logica theorieen die ten grondslag liggen aan onze logica voor object orientatie. Dit zijn modale logica en substructurele logica. Verder laten wij een aantal aan onze logica gerelateerde systemen de revue passeren. Aan het eind van dit hoofdstuk wijzen wij nog op een tweetal toepassingen van onze logica: op het gebied van object georienteerd software ontwikkelen, en op het gebied van 'data mining' op object georienteerde data. 6. In hoofdstuk 6 vindt de logische analyse plaats van onze logica voor object georienteerde informatiesystemen. In dit hoofdstuk worden de concepten ontleed in opzichzelfstaande logica's en de thema's 'axiomatisering', 'compleetheid' en 'computationele complexiteit' behandeld. Hierbij geeft de logica inzicht in de concepten die een rol spelen bij object georienteerde systemen. Daarnaast doen wij ook iets terug voor de logica: wij doen een voorstel om op een bepaalde manier logica te bedrijven, die gebaseerd is op intuities voor object orientatie. 7. Hoofdstuk 7 bevat de analyse van vier filosofische vraagstukken, waarbij wij gebruik maken van de formele taal die in dit hoofdstuk ontwikkeld is. In de filosofie is het bekend dat reeds beschrijvingen van basale concepten uit de werkelijkheid tot lastige vraagstukken kunnen leiden. Aangezien object georienteerd modeleren tot doel heeft zaken uit de werkelijkheid te beschrijven, is het niet meer dan natuurlijk dat wij daar dezelfde lastige vraagstukken tegen kunnen komen. In de praktijk wordt echter meestal over deze lastige problemen heengestapt, omdat de informele talen uit de praktijk vaak geen heldere interpretatie geven. Dat gebeurt terwijl deze vraagstukken toch voor inconsistenties kunnen zorgen en daardoor tot fouten kunnen leiden, omdat de expressies in de informele taal steeds voor verschillende interpretaties vatbaar zijn. Wij laten met behulp van vier voorbeelden zien dat je door gebruik te maken van onze formele taal deze problemen helder kunt krijgen. Zodoende kun je een bewuste keuze maken in het interpreteren van expressies waarin lastige filosofische vraagstellingen schuilgaan. Hiermee tonen wij aan dat onze logica voor object orientatie behulpzaam is voor het analyseren van complexe object georienteerde informatiesystemen.