Diversiteit beheersen door hogere abstractieniveaus en geïntegreerde tools, dat lijkt de trend van de komende jaren in objectoriëntatie. Platformonafhankelijke modellen en webdiensten op basis van documentformaten moeten verschillen overbruggen tussen oude en nieuwe platformen die almaar groeien en vertakken. Eclipse, een ‘open source’ platform voor ontwikkelomgevingen van IBM, speelt er op in. "It’s cool," zegt ontwerper Erich Gamma.
Objectoriëntatie is ooit begonnen als een programmeertechniek met bijbehorende ondersteuning in een programmeertaal, maar inmiddels staat de P in ‘OOP-congres’ voor zowel ‘Programming’, ‘Projects’ als ‘Practices’. Althans volgens Sigs-Datacom, de Duitse tak van het Amerikaans-Engelse 101communications, dat regelmatig congressen organiseert over objectoriëntatie. Na München was Amsterdam vorig jaar aan de beurt met drie dagen van presentaties, seminars en een tentoonstelling over, inderdaad, programmeren, projecten en praktijken. Alles objectgeoriënteerd, als tenminste webdiensten ook daartoe gerekend mogen worden.
Zelfs XML (eXtensible Markup Language) dat door het World Wide Web Consortium (W3C) is gestandaardiseerd, en bijbehorende technieken, vallen onder objectoriëntatie in de ruime betekenis. Toepassing van XML om gestructureerde data uit te wisselen heeft inmiddels geleid tot volwaardige XML-databases, bijvoorbeeld de eXtensible Information Server (XIS) van eXcelon. Maar ook echte objectgeoriënteerde databases die door een api (application programming interface) aan een oo-programmeertaal zijn gekoppeld, zijn beschikbaar. Fastobjects van Poet is vooral ontworpen voor Java, maar er is ook een versie die Ansi C++ ondersteunt.
Dat neemt niet weg dat de overgrote meerderheid van de databases ook in de oo-omgeving nog steeds relationeel is, en dan moet er dus een afbeelding worden gedefinieerd. Dat is niet zo moeilijk, aldus auteur en president van Ronin International Scott Ambler, als je weet wat je doet.
Overerving en associaties zijn maar op een beperkt aantal manieren op tabellen af te beelden – een tabel per hiërarchie, een tabel per concrete klasse of een tabel per klasse. De moeilijkheid zit hem vooral in de implementatie van ‘persistence’. Tip van Ambler: neem nooit een attribuut met een zakelijke betekenis zoals een klantnummer als primaire sleutel, want zo’n kenmerk kan in de loop der tijd veranderen.
Ambler is overigens vooral bekend als voorman van de Agile Modeling-stroming die zich afzet tegen bureaucratisering van software-engineering door onnodig complexe processen. Behalve aan eXtreme Programming (XP) kan de ontwikkelaar zich committeren aan Crystal Light, Scrum, ‘dynamic system development method’ (dsdm), ‘feature driven development’ (fdd) en natuurlijk AM.
De Agile-ontwikkelmethodologie is zelfs zo beweeglijk dat zij met haar ogenschijnlijke tegenpool RUP is te verbinden. Dit Unified Process van Rational kwam aan bod in een aparte presentatie, opgezet rond het thema ’tien waterval-principes’ versus ’tien moderne principes’. Het zal dus geen verbazing wekken dat toolbouwer Rational iteratief ontwerpen adviseert. In beheer, eisen (requirements), ontwerp en omgeving vergen iteratieve processen meer moeite en tijd. Dat wordt echter ruimschoots goedgemaakt in implementatie, test, en waardering (assessment).
Rational schat de mogelijke winst van ‘iteratief’ ten opzichte van ‘waterval’ in de orde van grootte van 15 procent.
Modelleren
Rational is het bedrijf van Grady, Booch en Rumbaugh, die de basis hebben gelegd van de Unified Modeling Language (UML). Ook Togethersoft van methodoloog Peter Coad levert UML-modelleringstools met als vlaggenschip het Together Control Center dat modelleren, bouwen en inzetten zo goed mogelijk probeert te integreren. Volgens opgave ondersteunt het Java, C++, IDL (Interface Definition Language), Visual Basic 6 en de eerste versies van Visual Basic.NET en Visual C#. Met deze ondersteuning van verticale integratie en verschillende platformen speelt het bedrijf duidelijk in op de toekomst.
UML wordt als standaard beheerd door de Object Management Group (OMG), een organisatie van een groep ondernemingen die ook Corba (Common object request broker architecture) onder haar hoede heeft. Het bijzondere van de OMG is dat al haar belangrijke standaarden zoals UML, maar ook CWM (Common Warehouse Metamodel), gebaseerd zijn op een gemeenschappelijke abstracte notatie, de Meta Object Facility (MOF).
Met MOF wordt bijvoorbeeld een metataal gedefinieerd om UML in uit te drukken. In die (meta) taal wordt UML beschreven, en UML is op zijn beurt de notatie voor een bepaald softwaremodel. Een systeemontwerper heeft alleen te maken met de onderste twee lagen van de vier, maar er is dus altijd een gemeenschappelijke basis in de MOF. Deze meta-metanotatie van de MOF is nu weer af te beelden op XML en geeft dan de XML Metadata Interchange (XMI). MOF is echter ook te projecteren op Java in de Java Metadata Interface (JMI). Niet alleen van de MOF maar ook van lagen daaronder zijn dergelijke afbeeldingen gemaakt, en er zijn er nog veel meer mogelijk, bijvoorbeeld op het .Net platform..
In 2001 heeft de Architecture Board van de OMG met een dergelijke (potentiële) samenwerkbaarheid in gedachten de ‘model driven architecture’ (mda) geïntroduceerd. Het grondidee is dat een softwaresysteem gemodelleerd wordt in een ‘platform independent model’ (pim) dat alleen gebruikt maakt van UML en eventueel CWM en MOF.
Een dergelijk pim kan vervolgens verfijnd worden tot een ‘platform specific model’ (psm) dat wel platformspecifieke kenmerken zoals exceptiemechanismen en parametertypen bestrijkt. Een Corba psm zal bijvoorbeeld Corba Interface, Corba Value, Corba Struct en Corba Union onderscheiden terwijl het bovenliggende pim slechts een klasse aangeeft. Een J2EE-psm zal op basis van hetzelfde pim Java-constructies gebruiken.
UML 2.0
De waarde van mda ligt in de mogelijkheid om op een gestandaardiseerde manier verbindingen te leggen tussen allerlei modellen, en vervolgens ook hun implementaties op diverse platformen. Het gaat dan zowel om verfijningen van pim naar psm als afbeeldingen tussen verschillende soorten psm. Bovendien kunnen voor allerlei bedrijfstoepassingen generieke pims worden ontworpen en, niet minder belangrijk, mda maakt het mogelijk om op een gestandaardiseerde manier legacy-systemen te integreren. Op al deze gebieden ontplooit de OMG momenteel veel activiteiten.
Wat de OMG niet doet, is het maken van case (computer aided software engineering) tools die mda ondersteunen, want dat is het terrein van de leden. Arc Styler is een voorbeeld van een bedrijf dat hieraan werkt (bètaversie Arc Styler 3.0 beschikbaar) maar ook Rational en Telelogic hebben aangekondigd mda te zullen ondersteunen.
Michael Andersson van Telelogic neemt namens zijn bedrijf deel aan een consortium dat onder de naam U2 Partners voorstellen heeft gedaan voor de komende UML 2.0-revisie. Door gebrek aan overeenstemming tussen en zelfs binnen de groepen die hieraan werken is UML 2.0 vorig jaar niet gereed gekomen, maar het zal waarschijnlijk bestaan uit een kern, de infrastructuur, met daarop een superstructuur van diverse profielen. Uitwisseling van diagrammen wordt gestandaardiseerd en de Object Constraint Language (OCL) krijgt met een eigen versie 2.0 een nog belangrijkere functie. Michael Andersson vertelde dat omzetting van modellen naar code beter ondersteund zal worden in de nieuwe versie. Het uiteindelijke doel is zelfs om modellen automatisch te kunnen compileren.
Ongetwijfeld zullen verder de ‘Action Semantics’ van het recente UML 1.4.1 behouden blijven of verbeterd worden en de UML-sequentiediagrammen zijn in het U2-voorstel aanzienlijk uitgebreid en gepreciseerd. Er komen notaties voor alternatieven en optionele interacties, herhalingen, excepties en parallellisme, het wordt mogelijk interacties te ontleden in hun eventuele delen en sequentiediagrammen kunnen verwijzingen bevatten naar andere diagrammen. Met dat laatste kan hergebruik van protocollen eenvoudig worden weergegeven.
Platformonafhankelijk
Als applicaties met elkaar kunnen communiceren op een gestandaardiseerde manier door middel van het Hyper Text Transport Protocol (Http) is er eigenlijk al sprake van webdiensten. Maar bij het tegenwoordige begrip ‘Webservices’ is die communicatie in XML geformatteerd, dat wil zeggen in een standaard tekstformaat. De verbinding kan ‘peer to peer’ zijn (p2p) of verlopen via een bemiddelaar (broker). In het laatste geval is er sprake van de al genoemde soa (service oriented architecture). Tenslotte moet er, wil er sprake zijn van een webdienst, een mogelijkheid zijn om procedures aan te roepen met een rpc (remote procedure call).
Het Simple Object Access Protocol (Soap) is met name bedoeld om op een platformonafhankelijke manier objecten te kunnen aanroepen, ofwel een rpc uit te voeren. Een Soap-document is in de kern een XML-document en dus een tekstdocument. Het is echter ook mogelijk om binaire aanhangsels mee te sturen en in plaats van Http het Smtp (Simple Mail Transfer Protocol) te gebruiken.
In dat laatste geval zou men dus eigenlijk niet van webservices maar van ‘e-mail services’ moeten spreken…
Meestal wordt met ‘webdiensten’ echter een soa bedoeld waarin een ‘requestor’ een bepaalde dienst kan opzoeken in een registersysteem. Dit heet ‘universal description, discovery and integration’ (uddi). ‘Providers’ kunnen hun diensten publiceren in weer een ander XML-formaat, de Web Service Description Language (Wsdl). Via uddi kunnen Requestor en Provider dan op basis van de Wsdl-beschrijving en Soap tot zaken komen.
Het globale idee achter dit alles is dat zakelijke diensten op een hypertekst-achtige manier met elkaar verweven kunnen worden.
Craig Stewart van Sonic Software noemt als voorbeeld dat de notebook-reparatiedienst van Sony naadloos de tracking-service van UPS gebruikt.
Afgaande op de OOP-presentaties in Amsterdam is Java de toonaangevende omgeving voor objectoriëntatie, maar Microsoft is met zijn .Net-project, de eigen oo-taal C#, een Common Run Time Language (CRL) en een Visual Studio die dat alles zal ondersteunen, natuurlijk een verhaal apart.
Voor Java-ontwikkelaars, tenslotte, levert Sitraka met Performa Sure en JProbe hulpmiddellen om programmatuur te analyseren en door te meten op daadwerkelijke prestatie. Zo kan het motto ”From Ideas to Solutions’ van het OOP 2002 congres in Amsterdam van begin tot eind door tools worden ondersteund.
IDE
Zodra er over objectoriëntatie gesproken wordt, volgt meestal ‘ontwerpen met componenten’, waarbij een component een software-artefact is met een duidelijk interface en een duidelijke functionaliteit.
IBM OTI (Object Technology International) gebruikt voor het Eclipse Platform de term ‘plug in’, maar plug-ins vormen een schoolvoorbeeld van componenten.
Eclipse is een ‘open source’ platform voor het bouwen van ide’s (integrated development environment) voor diverse toepassingen zoals websites, ingebedde Java-programma’s, C++ programma’s en Enterprise Java Beans. Op zichzelf doet het niets, maar alle functionaliteit wordt bij het opstarten geïnstalleerd door de beschikbare plug-ins op de kern aan te sluiten.
Elke plug-in heeft een ‘manifest file’ in XML waarin de connecties met andere plug-ins zijn aangegeven. Uit de manifest files wordt een ‘in-memory plug-in registry’ opgebouwd dat de instantiatie van plug-ins beheert. Het Eclipse-platform zelf draait op een standaard Java Virtuele Machine. Behalve Eclipse zelf is er ook een volledige Java-ontwikkelomgeving beschikbaar die, uiteraard, met Eclipse Platform is gebouwd.
Eclipse is niet alleen de moeite waard door de interessante technologie en omdat het vrij beschikbaar is, maar zeker ook omdat het ondersteund wordt door IBM OTI.
De presentatie ‘Eclipse – An Open Source Platform for the Next Generation of Development Tools’ op het OOP-congres werd door niemand minder verzorgd dan Erich Gamma die niet alleen directeur is van het OTI-laboratorium in Zürich maar vooral bekend is van de ‘software patterns’. Gamma is lid van het Eclipse architectuurteam en hoofd van de Eclipse Java-ontwikkelomgeving.
Het project is oorspronkelijk ontstaan uit Visual Age for Java van IBM, maar is inmiddels, met de recente versie 2.0, aanzienlijk verder ontwikkeld. In de woorden van Erich Gamma op OOP 2002: "It’s cool."
Als het om ontwikkelomgevingen gaat, is Borland echter ook nog steeds nadrukkelijk van de partij, niet alleen met ondersteuning voor Java en C++ maar ook als het gaat om webtoepassingen en databaseconnectiviteit van oo-applicaties.
Hans van Thiel, freelance medewerker