U bent hier:
  1. Home
  2. Nieuws
  3. Interviews
  4. Bekijk


Achtergrond

Asymmetrische cryptografie, een onevenredige last voor de CPU

Asymmetrische of publieke-sleutelcryptografie kan een zware wissel trekken op de processor, zowel op het vlak van berekeningen als qua...

Column

De economische architectuur

Beste lezers, dit is mijn laatste reguliere column. Ik heb de afgelopen jaren geschreven over intelligente pleisters en punaises, waar we nu het Holst Centre voor hebben. Ik heb geschreven over de...

Interview

Afgeslankt NXP klimt uit zwart gat

Het waren pijnlijke jaren, maar het gaat weer de goede kant op met zijn bedrijf, vertelt CTO René Penning de Vries van NXP. Een gesprek...

Achtergrond

Trends in modelgedreven ontwikkeling

30 augustus 2010

Van 16 tot en met 18 juni vormde Cambridge voor de vierde maal het decor van Code Generation. Deze conferentie, in tegenstelling tot veel andere niet op academische leest geschoeid, draait sinds de eerste editie in 2007 om de praktijk van modelgedreven ontwikkeling: de succesverhalen, de mislukkingen en de laatste ontwikkelingen op het gebied van talen en gereedschappen. Een mooie basis om eens op een rijtje te zetten wat er op dit moment speelt op dit vlak – aansluitend op de trends in softwareontwikkeling uit de vorige Bits&Chips.

In model-driven software development (MDSD) draait alles om het verhogen van de productiviteit van softwareontwikkelaars. Door modellen te maken op een hoger abstractieniveau worden systemen en hun werking overzichtelijker, waarna we de details door middel van codegeneratie toevoegen in de uiteindelijke software. Uitgangspunt: modellen zonder overbodige details en op het juiste abstractieniveau zijn beter te toetsen met stakeholders en (deterministisch) gegenereerde code vraagt op niet al te lange termijn minder test- en debugwerk.

Zoals bij alle ontwikkelactiviteiten staat of valt dit met de beschikbaarheid van het juiste gereedschap. Hoewel we met een command-linecompiler nog steeds heel ver komen, is het opzetten van een consistente omgeving voor modellering en codegeneratie een stuk makkelijker met een geïntegreerde ontwikkelomgeving. Waar we bij programmeerwerk praten over een integrated development environment (IDE), gaat het bij MDSD om een zogeheten language workbench. Dit is een geïntegreerde omgeving voor het definiëren van domeinspecifieke talen (DSL’s), al dan niet op basis van UML of XML, en de bijbehorende modeltranformaties en codegeneratoren. Een language workbench maakt het een stuk eenvoudiger om deze elementen op een consistente manier te beschrijven.

In veel gevallen kunnen we de ontworpen taal direct in de workbench gebruiken. Er zijn echter ook omgevingen, zoals XText, die op basis van de taal een aparte editor genereren, waarmee gebruikers vervolgens aan de slag gaan. De scheiding tussen taalontwikkeling en -gebruik wordt daarmee strikter, en het risico van taal- of architectuur-‘vervuiling’ door overenthousiaste gebruikers kleiner.

Er zijn al goede basisoplossingen beschikbaar voor MDSD. Het verst lijkt MetaEdit+ van het Finse Metacase, dat ook de langste historie heeft op dit gebied. Verder integreert Microsoft UML- en DSL-gebaseerde omgevingen in Visual Studio 2010, terwijl IBM en de opensourcegemeenschap oplossingen bieden op basis van het Eclipse Modeling Framework (EMF) en het Graphical Modeling Framework (GMF), waaronder Topcased en XText. Ook bedrijven als het Franse Softfluent en het Tsjechische Jetbrains leveren met Codefluent Software Factory respectievelijk Meta Programming System (MPS) een goede basis voor een language workbench. Relatieve nieuwkomer is Spoofax, een Eclipse-gebaseerde werkbank waar de groep rond Eelco Visser op de TU Delft de nodige energie in steekt.

In de aanloop naar de Code Generation-conferentie, en ook tijdens het evenement, hebben diverse partijen de basis gelegd voor de Language Workbench Competion 2011. Doel van deze ‘wedstrijd’ is om te laten zien welke workbench het meest geschikt is voor welke toepassing.

Van alle basisoplossingen voor MDSD lijkt MetaEdit+ van het Finse Metacase het verst.

Dit laatste vraagstuk hangt onder meer samen met de discussie over de keuze voor grafische dan wel tekstuele DSL’s. Deze is nog steeds niet afgelopen, ondanks de vele voorbeelden van mogelijkheden om beide te integreren. Zo zijn er recentelijk twee projecten geweest die een op Eclipse GMF gebaseerde grafische oplossing succesvol hebben geïntegreerd met het tekstuele XText: een bij een niet met name te noemen Duitse onderneming en een in het opensourceproject Papyrus. De aangekondigde samenwerking tussen Metacase (van het grafische MetaEdit+) en het Duitse Itemis (XText) zou ook tot integratie kunnen leiden, maar de kans daarop is niet heel groot, gezien de gesloten productlicentie en architectuur van MetaEdit+. Inmiddels hebben ook de mensen achter MPS en Spoofax aangegeven ideeën in deze richting verder te gaan uitontwikkelen. Overigens zijn zij ook serieus aan het kijken naar de integratie van DSL’s met bestaande programmeertalen, zodat ook heel specifieke technische domeinaspecten kunnen worden meegenomen in de toekomst.

Oudgediende UML

Een andere interessante ontwikkeling is projectional editing. Hierbij werken we niet met vertaalslagen tussen verschillende modellen (en uiteindelijk code), maar slaan we modelinformatie op in een centrale database. Vanuit deze repository kunnen we verschillende representaties van deze informatie tonen en/of wijzigen. Zo wordt het mogelijk om bijvoorbeeld een datamodel weer te geven in een tekstuele notatie vergelijkbaar met structures in Java, in tabelvorm of in de vorm van SQL-statements voor een database. Wijzigen we een van deze representaties, dan veranderen de andere mee. Zo ontstaat een manier van werken waarbij verschillende stakeholders vanuit hun favoriete weergave kunnen werken aan hetzelfde model. Uit het resultaat genereren we vervolgens werkende software, eigenlijk gewoon een additionele representatie van het model.

Het Tsjechische Jetbrains levert Meta Programming System (MPS) een goede basis voor een language workbench.

De afgelopen tien jaar heeft het bedrijf Intentional, van ex-Microsoft-onderzoeker Charles Simonyi, aan een product gewerkt dat uitgaat van dit principe. De strategie is echter om het niet vrij te geven aan het grote publiek voor het perfect is. Daardoor hebben slechts enkele partijen buiten het bedrijf het resultaat kunnen zien.

Anderen hebben inmiddels vergelijkbare initiatieven ontplooid waarvan de vruchten wel beschikbaar zijn, al zijn ze mogelijk minder ver dan Intentional. Met name MPS van Jetbrains is vergevorderd en zal eind dit jaar naast tekstuele ook grafische representaties ondersteunen. Een van de genoemde twee oplossingen die Eclipse GMF en XText integreren, gaat ook in de richting van projectional editing en tijdens Code Generation presenteerde Martin Thiede van Lear zijn webgebaseerde oplossing, Concrete. Dit product is nog in een erg pril stadium, maar heeft als interessante aspect de integratie van het web in de modelleeroplossing.

De integratie van modelleren en het web zien we ook terug in ‘modellen@runtime’. Deze aanpak poogt de voordelen van de gemaakte modellen mee te nemen naar de omgeving waarin de resulterende systemen worden toegepast. Uitgangspunt is dat we een systeem sneller kunnen aanpassen aan nieuwe of afwijkende wensen als dat zijn modellen inherent in zich meedraagt, zonder dat we voor kleine wijzigingen steeds een nieuwe ontwikkelcyclus (nieuwe versie, service pack) door moeten.

Bij embedded systemen zou de aanpak de vorm kunnen aannemen van featuremodellen die we runtime aanpassen door middel van configuratie. Bij webgebaseerde, cloud computing-applicaties is het denkbaar dat we configuraties van online services definiëren op basis van modellen die in de cloud beschikbaar zijn. In een discussie met Johan den Haan van Mendix en Steven Kelly van Metacase kwamen we tot de conclusie dat voor de laatste toepassing de technische beperkingen van de omgeving in ieder geval voorlopig nog te groot zijn. Die beperkingen zijn echter gekoppeld aan performance, gebruiksvriendelijkheid en betrouwbaarheid, eisen waarvoor in die omgeving steeds sneller oplossingen worden gevonden.

Relatieve nieuwkomer is Spoofax, een Eclipse-gebaseerde werkbank waar de groep rond Eelco Visser op de TU Delft de nodige energie in steekt.

Een domein waarin de modellen@runtime-aanpak snel een weerslag zou kunnen vinden, is dat van gebruikersinterfaces. Deze kunnen we met behulp van onderliggende modellen snel configureerbaar maken, mits het gekozen platform dit ondersteunt. Voorbeelden hiervan zijn Eclipse E4 en Wazaabi.

Bij dit alles mogen we niet vergeten dat de (inmiddels) oudgediende UML ook nog bestaat. Bedrijven als Kennedy Carter (het vroegere Shlaer-Mellor) en Thales maken hiermee producten op een modelgedreven manier, zonder eigen DSL’s te hoeven ontwikkelen. De kritiek dat de taal te groot, te generiek en te complex is geworden, is voor veel organisaties reden om af te zien van modelgedreven ontwikkeling met UML, maar de genoemde partijen hebben een werkbare subset gevonden. Dit is een van de redenen voor OMG om de standaard te herzien en op te splitsen in delen die verschillende vormen van UML-complicance kunnen bieden. Niet geheel ten onrechte, volgens Alistair Blair van Thales in Groot-Brittannië, die aangeeft dat wat hem betreft UML 1.4 voldoende groot is voor executable UML. Ter indicatie: versie 1.4 beslaat 454 pagina’s, 2.2 een kleine duizend (740 voor Infrastructure en 228 voor Superstructure).

Vervelend verwijt

Adoptie van modelgedreven ontwikkeling gaat niet vanzelf. De succesverhalen die op conferenties als Code Generation de revue passeren, zijn vaak afkomstig van organisaties met een ontwikkelmanager die een sterke visie heeft op MDSD en deze ook nog weet te handhaven. Of ze komen van partijen die hun ontwikkeling neerleggen bij een MDSD-specialist als Itemis, Kennedy Carter of Metacase, of in Nederland bij de juiste afdeling van Cap Gemini of Ordina.

De kloof tussen werken met modellen en werken met code is voor veel softwareontwikkelaars schijnbaar onoverbrugbaar, en niet elk bedrijf stuurt hard genoeg op deze richting om terugval in oude praktijken te voorkomen. Een discussie tijdens Code Generation mondde uit in de conclusie dat naast managers en ontwikkelaars ook de samenwerking met de klant een rol speelt. Veel succesverhalen rond MDSD komen uit markten waar engineers ofwel zelf veel affiniteit hebben met het eindproduct (mobiele telefonie) of veel en gemakkelijk met de opdrachtgever/eindgebruiker kunnen communiceren (banken, verzekeringen). In productontwikkeling en zeker ook in de hightechindustrie ligt dit vaak wat moeilijker, omdat ontwikkelaars zelden of nooit een eindgebruiker spreken. Meestal zijn de twee van elkaar gescheiden door enkele lagen van productmanagement en salesmensen, die als filter op requirements fungeren. Gevolg: veel ‘fouten’ en ‘snelle fixes’.

De opensourcegemeenschap levert het Eclipse-gebaseerde XText.

Een combinatie van modelleertalen die nauw aansluiten bij de werkwijze van zowel ontwikkelaars als stakeholders en de belangrijkste elementen van Agile (met name klantcontact) zou de adoptie van modelgedreven ontwikkeling kunnen verkleinen. Dat is precies de insteek van het Nederlands initiatief AgileMDD.Net, dat onlangs van start is gegaan.

Een laatste heikele punt bij de toepassing van MDSD is dat veel van de oplossingen vooral goed lijken te werken bij de ontwikkeling van nieuwe software. Dit lijkt een zwakte in een tijd dat we steeds meer nieuwe applicaties maken op basis van bestaande softwarebouwwerken. Net als bij de introductie van nieuwe platformtechnologieën (besturingssystemen, frameworks) is het zelden of nooit een optie om alles helemaal opnieuw te doen. Dit zou echter geen belemmering moeten zijn om een modelgedreven aanpak te starten. Zoals ASML en Océ in Bits&Chips 8, 2010, al aangaven, was ook tijdens Code Generation 2010 de consensus dat MDSD prima inzetbaar is om de variabele stukken software boven op een bestaand bouwwerk te ontwikkelen, of het nu gebruikersinterfaces of statemachines zijn.

Het moderniseren van de onderliggende bouwwerken is een ander probleem, dat niet moet worden geadresseerd door MDSD maar door een andere manier om om te gaan met softwarearchitectuur waarbij het geleidelijk adopteren van nieuwe ontwikkelingen een rol speelt. Hiervoor worden voor .Net en webgebaseerde oplossingen al ondersteunende gereedschappen ontwikkeld, die zo nodig ook samenwerken met MDSD-oplossingen. De enige partij die op dit vlak serieuze activiteiten lijkt te ontplooien is Mia-Software, met zijn Mia-Modernization-pakket.

Al met al is er op het gebied van modelgedreven ontwikkeling de nodige beweging in de wereld. Het voorgaande overzicht is zeker niet uitputtend, maar omvat wel de belangrijkste trends van dit moment. Met name language workbenches, de integratie van talen en projectional editing zullen de komende twee jaar de nodige nieuwe ontwikkelingen laten zien, en hopelijk ook de nodige succesvolle toepassingen.

Laten we eindelijk de kritiek weerleggen die Barbara Liskov uitte toen ze vorig jaar de Turing Award kreeg. Zij stelde toen dat de ontwikkelingen op het gebied van software-engineering de afgelopen 25 jaar een herhaling van zetten waren: elke nieuwe programmeertaal was meer van hetzelfde, zonder dat het abstractieniveau echt omhoogging. Een vervelend verwijt, als we erbij bedenken dat de laatste echte verhoging van de productiviteit van softwareontwikkelaars is gerealiseerd toen we van assembler overgingen op Fortran.

Angelo Hulshout is softwarearchitect, trainer, coach en MDSD-enthousiast. Dit artikel is mede gebaseerd op informatie van Peter Bell (Systemsforge), Alistair Blair (Thales UK), Johan den Haan (Mendix), Steven Kelly (Metacase), Bernhard Merkle (Sick), Pedro Molina (Cap Gemini Spanje), Eelco Visser (TU Delft), Markus Völter (Itemis) en Jos Warmer (Ordina), waarvoor dank.

Angelo Hulshout

Terug naar overzicht



© Bits & Chips | Deze pagina op internet: http://www.bits-chips.nl/nieuws/interviews/bekijk/artikel/trends-in-modelgedreven-ontwikkeling.html