Anneke Kleppe is al vanaf 1995 betrokken bij standaardisatieactiviteiten van de Object Management Group. Ze houdt zich vooral bezig met Object Constraint Language. Ook is ze medeauteur van het eerste boek over ‘modelgedreven architectuur’, een raamwerk voor softwareontwikkeling met abstracte hiërarchieën van modellen. Uiteindelijk zullen volgens Kleppe generieke modellen door één druk op de knop worden vertaald naar werkende code.
|
In 2003 hebben zij, behalve over OCL en het gebruik daarvan, ook een boek gepubliceerd over modelgedreven architectuur. Mda (model driven architecture), een initiatief van de OMG, introduceert een raamwerk van pim’s (platform independent model) en psm’s (platform specific model) voor softwareontwikkeling. Het boek MDA Explained, The Model Driven Architecture: Practice and Promise van Kleppe, Warmer en Bast is het eerste ter wereld over dit nieuwe paradigma in software-engineering.
In het dagelijks leven is Kleppe eigenaar/directeur van Klasse in Soest en houdt zij zich bezig met objectgeoriënteerd advies, training en ontwerp.
Kun je iets vertellen over de historie en hoe je betrokken bent geraakt bij OMG Standaardisatie?
"Tot 1995 werkte ik bij KPN Research. Ik zag objectoriëntatie als de toekomst. Ik ben vervolgens in 1995 begonnen met Klasse Objecten. Warmer werkte toentertijd voor IBM aan de eerste versie van UML en we werkten veel samen. Resultaten daarvan waren het boek Praktisch OMT en mijn bijdragen aan die eerste UML-versie. Het is nauwelijks bekend dat wij vanaf het eerste uur bij het vaststellen van de standaard betrokken zijn geweest, maar onze namen staan erop als bewijs. Warmer heeft van 1999 tot en met 2002 ook bij Klasse Objecten gewerkt."
UML 2.0 is in 2003 door de OMG aanvaard. Komt er een nieuwe uitgave van Praktisch UML?
"De meeste onderdelen van UML 2.0 zijn geaccepteerd, maar het geheel nog niet. Eventuele wijzigingen zullen echter minimaal zijn en de derde editie van ons boek is gepland voor april 2004."
In MDA Explained behandel je als voorbeeld een cateringbedrijfje, een ontbijtdienst. Je hebt één platformonafhankelijk model met daaronder drie platformspecifieke modellen. Het ene psm is relationeel, het tweede ejb (enterprise Java bean) en het derde webgebaseerd. De psm’s vertalen naar respectievelijk SQL- (System Query Language), ejb- en jsp-broncode (Java server page). Hoe illustreert dit mda?
"In mda is het uitgangspunt altijd een platformonafhankelijk model. In dit voorbeeld is dat een model dat getransformeerd wordt naar een systeem met een drielagen architectuur, dus drie platformspecifieke modellen en daaronder drie broncode modellen. De code van een (deel)systeem is in wezen ook een model. De database communiceert met de tussenliggende laag en die weer met de webserverlaag. Die communicatie moet je natuurlijk ook modelleren in je platformspecifieke modellen. Het systeem voor de ontbijtdienst is geïmplementeerd in Optimal J van Compuware en de tool en het voorbeeld zijn beschikbaar op de Klasse-website. De belofte van mda is nu dat je dergelijke modeltransformaties, met allerlei varianten of intermediaire modellen, kunt automatiseren. Denk aan tools die parameters voor transformaties kunnen accepteren. Mda gaat over de automatisering van de automatisering en de waarde ervan ligt in de tools voor modeltransformaties."
Gaat het dan om automatische transformaties tussen bijvoorbeeld Java en C++ en omgekeerd?
"Niet persé, want met dergelijke omzettingen ben je er nog niet. Het gaat niet om Java, C++ of SQL, maar om verschillende psm’s die met elkaar moeten kunnen samenwerken. Het gaat om een geheel aan platformspecifieke modellen die samen een bepaald architectuursysteem opleveren. Een pim moet dus naar meerdere psm’s omgezet worden en de betere tools doen dat nu ook al. De term ‘platform’ wordt wel vaak opgevat in de zin van implementatie, maar moet volgens mij meer gezien worden in de zin van architectuur. Een platformonafhankelijk model is dus platformspecifiek in een drielagen- of een vijflagen architectuur of nog anders te modelleren."
Leveranciers van UML-tools hebben het nu al vaak over ‘round trip engineering’. Als je er dan naar kijkt, blijft het toch beperkt tot eenvoudige ‘stubs’ of signaturen van operaties.
"Dat is niet de schuld van de tools, maar van de beperkte uitdrukkingskracht van de modelleertaal. De OMG werkt aan een executeerbare versie van UML, een uitbreiding waarmee je wel ‘body’s’ kunt specificeren. Daarnaast werkt ze aan QVT (Query, View and Transformation), een taal waarmee je transformaties kunt specificeren. Voor beide geldt dat het nog wel enige tijd zal duren voordat ze toepasbaar zijn. Je hebt wel een ‘UML action semantics’ op basis van ASL (Action Specification Language) die door Kennedy Carter in Engeland is ontworpen en waarmee UML-modellen executeerbaar worden. Dit is ook een officiële OMG-standaard, maar volgens mij staat ASL te dicht bij de hardware om binnen mda bruikbaar te zijn."
Liggen hier mogelijkheden voor OCL?
"De tweede versie is sterk uitgebreid en het is nu een volledige zoektaal geworden. Je kunt waarden aanduiden in een systeem en vergelijkingen maken met andere waarden. Daardoor kun je dus pre- en postcondities aangeven, initiële waarden, hoe waarden afgeleid zijn van andere waarden, regels waar operaties aan moeten voldoen enzovoort. In UML is het vaak niet duidelijk hoe objecten met elkaar samenhangen en daarvoor is OCL heel geschikt. Je zou eigenlijk twee dingen moeten toevoegen om op een redelijk hoog niveau acties te kunnen specificeren: ‘assignment’ en creatie van een nieuw object."
Je hebt onlangs een plug-in geschreven voor de Eclipse-ontwikkelomgeving. Is dit Octopus ook open broncode?
"Het is wel gratis, althans in de bèta-versie die sinds 1 december 2003 op onze website staat, maar niet open broncode. Octopus is een tool die de nieuwe versie van OCL ondersteunt. We vonden dat de meeste UML-tools onvoldoende maken van OCL, en door in een omgeving als Eclipse te werken, kunnen we zelf de toepassing wereldwijd bevorderen."
Doorgaand op de relatie tussen de verschillende mda-modellen, inclusief de werkende code: hoe kun je automatisch van een generieke bij een specifieke beschrijving komen?
"Elk model heeft al specifieke zaken in zich. Er zijn dus weinig echt generieke modellen. Kies je ervoor om een bepaalde klasse op te nemen in je model, dan doe je dat al omdat dit specifiek voor dit systeem nuttig is. Zelfs al is alleen de naam van de klasse bekend, het model is al specifiek. Dit betekent niet dat mda nutteloos is. Bij het implementeren van een UML-model moeten programmeurs vandaag de dag veel dingen doen die telkens terugkomen, zoals het implementeren van een associatie. Met mda-tools is dit saaie werk te automatiseren. Mda staat nog in de kinderschoenen, maar ik denk dat de tijd echt komt dat je met één druk op de knop een platformonafhankelijk model kunt vertalen naar werkende code."
Bij mda gaat het om modellen van modellen. Dat lijkt goed te passen in de generieke lagenstructuur van de OMG-standaarden.
"De OMG-standaarden zijn inderdaad op een soortgelijke wijze gestructureerd. Met de mof (meta object facility) specificeer je UML en cwm (common warehouse meta-model), met UML specificeer je een UML-model en dat model specificeert het systeem dat je ontwerpt. Die vier lagen zorgen ervoor dat omzettingen mogelijk zijn tussen alle OMG-specificaties. Het lijkt misschien ingewikkeld, maar het is precies hetzelfde als met een klasse en een object. Zoals een object een instantie is van een klasse, zo is een systeem een instantie van een model. Het model kun je zien als een instantie van de taal en de taal is dan een instantie van de mof. Als je in mda een platformspecifiek model of, beter gezegd, een platformspecifieke architectuur wilt transformeren in een andere, kun je dat doen via het platformonafhankelijke model daarboven. Dergelijke tools zijn er overigens nog niet, maar dat is het principe."
Hoe zie je de toekomst van mda?
"Het belang van mda is te vergelijken met dat van objectoriëntatie of met de ontwikkeling van databases daarvoor of met compilerbouw nog eerder. Mda is een paradigmaverschuiving in de softwareontwikkeling – die overigens wel, net als de voorgaande, een jaar of tien in beslag zal nemen."< BR>