Met zijn bedrijf Delphino Consultancy levert Angelo Hulshout diensten op het gebied van software- en systeemarchitectuur en modelgedreven softwareontwikkeling. Dit artikel is tot stand gekomen op basis van presentaties tijdens Code Generation en de Language Workbench Challenge, en de input van Benno Beuting (Cordis), Niels Brouwers (Nspyre), Louis van Gool, Michel de Groot Arjan van der Hoogt, Henri Hunnekes en John Kesseler (Océ), Johan den Haan (Mendix), Rob Howe (Verum), Eric Kreuwels (Fei), Rogier Wester (ASML) en Paul Zenden (Sioux).

2 May 2014

Hoe ver zijn bedrijven nu eigenlijk met modelgedreven ontwikkeling? Angelo Hulshout bezocht de Code Generation-conferentie en de Language Workbench Challenge in Cambridge en maakte een rondje langs de velden in de regio Eindhoven. In dit artikel doet hij verslag van zijn bevindingen.

Ontwikkelen met modellen: iedereen heeft er inmiddels wel een keer naar gekeken, aan geroken of op zijn minst over gehoord. Toch is het ondanks de vele benoemde voordelen, net als veel andere benaderingen voor softwareontwikkeling, nog steeds geen gemeengoed. Enerzijds wellicht omdat die voordelen niet bewezen zijn, anderzijds ook omdat een nieuwe aanpak een investering in geld, tijd en vooral veranderinspanning kost.

Daarnaast lijkt de modelgedreven-ontwikkelgemeenschap vaak nogal naar binnen gekeerd en vooral bezig met wat haar zelf interesseert: talen en codegeneratoren bouwen om het eigen werk te vereenvoudigen. Dat is jammer, want de potentie van de aanpak is groot. De eerste successen zijn alweer een paar jaar oud, en enkele partijen, onder meer in de hoek van mobiele apparaten, lijken er flink voordeel van te gaan hebben.

Een bezoek aan de Code Generation-conferentie en de Language Workbench Challenge in Cambridge en een rondgang langs bedrijven in de regio Eindhoven geven een mooi actueel beeld, waarbij niet alleen technische aspecten een rol spelen. In dit artikel stip ik de huidige stand van zaken aan in software en op het multidisciplinaire vlak en kijk ik naar een onderwerp dat dit jaar ook op Code Generation (eindelijk) de kop opstak: de factor mens in de context van modelgedreven ontwikkeling.

MDD tools

Debuut

Code Generation is al vanaf de eerste editie in 2007 gericht op tools voor modelgedreven ontwikkeling van software (MDSD, zie kader) en de daarmee behaalde resultaten. Dit jaar was er duidelijk meer aandacht voor die ervaringen en minder voor nieuwe snufjes en verbeteringen in het gereedschap. Deze laatste waren er wel, bijvoorbeeld voor de tools Rascal (CWI) en Spoofax (TU Delft), maar de meest interessante nieuwe ontwikkeling was toch het op Jetbrains MPS gebaseerde Mbeddr-platform.

 advertorial 

The waves of Agile

Derk-Jan de Grood has created a rich source of knowledge for Agile coaches and leaders. With practical tips to create a learning organization that delivers quality solutions with business value. Order The waves of Agile here.

Mbeddr is gebouwd als abstractielaag op C, met de toevoeging van domeinspecifieke talen (DSL’s) om onder meer statemachines en SI-eenheden te modelleren en requirements tot op ‘code’-niveau traceerbaar te maken. De modulaire opzet maakt het mogelijk om de centrale C-abstractie te vervangen door iets anders zonder de andere DSL’s te verliezen. Leuk weetje: door deze feature heeft Mbeddr de interesse gewekt van de Nederlandse belastingdienst, die er nu serieus naar kijkt als vervanger voor een bestaand, moeilijk onderhoudbaar modelleerplatform.

Ontstaan uit een gesubsidieerd researchproject getrokken door Markus Völter wordt Mbeddr inmiddels industrieel ingezet. Zo gebruikt Siemens het als basis voor een nieuw ontwikkelplatform. Binnen de oorspronkelijke embedded-context voelt Sioux het inmiddels uitgebreid aan de tand, zodat op Code Generation niet alleen het verhaal van Völter maar ook een ervaringsrapport uit de regio Eindhoven de revue passeerde.

Waar XText, een ander populair platform, dit jaar ontbrak omdat de makers, gesponsord door het Duitse Itemis, een eigen conferentie organiseren (XTextcon), maakte ASD zijn debuut in Cambridge. Arjan van der Meer van Nspyre liet zien hoe de methode in combinatie met Specexplorer is ingezet om naast modelverificatie ook functionele tests op basis van modellen uit te voeren, onder meer voor een containerterminal.

Gesmeerd

Een mooie opsteker voor Verum, dat na de doorstart in januari weer stevig aan de weg timmert om zijn ASD:Suite te verbeteren. In Waalre werken ze keihard aan betere integratie met andere ontwikkelomgevingen zoals Eclipse en Visual Studio en aan de gebruiksvriendelijkheid richting ontwikkelaars. De early adopters zijn aan boord gebleven en met deze verbeteringen hoopt Verum ook andere partijen te interesseren. Daarbij kan het rekenen op de medewerking van Nspyre en Sioux, die inmiddels de nodige ASD-specialisten in de gelederen hebben.

Een van de gebleven early adopters is Fei. Na een eerste pilot in 2005 past het ASD sinds 2009 regulier toe voor de besturingssoftware van zijn elektronenmicroscopen. Groepsleider Eric Kreuwels ziet meer potentieel in de methode: het genereren van componentinfrastructuur op basis van interfacemodellen en validatie tegen formele functionele specificaties, bijvoorbeeld. Door ASD te combineren met de supervisory control-techniek van de TU Eindhoven hebben ze bij Fei al aangetoond dat formeel functioneel testen binnen bereik is. De inspanning gestoken in het schrijven van unittests kan hierdoor met ongeveer een factor zeven naar beneden. Dit komt boven op de factor twee tot drie winst die ASD nu al geeft.

De kracht van ASD blijft de verificatie van modellen op basis van interfaces en statemachines, maar elk softwaresysteem heeft onderdelen die daar niet volledig mee te modelleren zijn. Voor die onderdelen zijn andere oplossingen geschikter. Paul Zenden van Sioux geeft aan dat voor hem MPS daar een rol kan spelen, terwijl Niels Brouwers van Nspyre werkt met EMFText en model-naar-teksttransformaties met QVT en Acceleo.

De embedded-software-engineers van Océ gebruiken al ruim twaalf jaar UML-gebaseerde modellen binnen de Rational-toolsuite (met name RoseRT). Door interfaces en systeemgedrag te modelleren en op basis daarvan code te genereren, hebben zij hun softwareontwikkel- en -onderhoudsproces flink geoptimaliseerd (efficiënt hergebruik), waardoor ze ontwerpiteraties kunnen overslaan. Fouten vinden in producten is deels al op voorhand mogelijk door modellen te verifiëren, in simulaties en op vroege prototypes.

In Venlo modelleren ze bijvoorbeeld de systeemsoftware-interfaces van de Prismasync-controller. Dit is een ontwikkeling van Océ die moederbedrijf Canon ook is gaan toepassen op zijn producten. Het gebruik van modellen zorgt voor een gesmeerde samenwerking tussen beide partijen, ondanks dat de Japanse systemen anders van opzet zijn en ze in Tokio een ander ontwikkelproces hanteren.

Daarnaast zetten de Venlose engineers DSL’s in om systeemtests te schrijven, die overdag en ’s nachts automatisch draaien. De testspecialisten hoeven hierdoor geen kennis van C, Java of C# te hebben om hun domeinexpertise en testintuïtie om te zetten in zinvolle geautomatiseerde tests. En de software-engineers zelf hoeven niet meer op de hoogte te zijn van alle systeemdetails om bij te kunnen dragen aan testcases op systeemniveau.

illustraties bc04 2014 1

Planbord

Modelleren speelt ook een rol in andere disciplines, een aspect dat op het softwaregeoriënteerde Code Generation niet echt aan bod komt. De niet-programmeurs spreken van model-based system engineering (MBSE, zie weer het kader). Pikant, omdat Stephen Mellor (inderdaad, die van Schlear-Mellor) zich tijdens het afsluitende panel in Cambridge liet ontvallen dat softwareontwikkeling de term ‘engineering’ (nog) niet waard is. MDSD valt echter niet helemaal los te zien van MBSE in andere disciplines. De eerdergenoemde testaanpak van Nspyre heeft multidisciplinaire aspecten aangestipt en de ASD-modellen zijn deels ook gebaseerd op toestanden van de hardware die door de gegenereerde software moet worden aangestuurd.

Het Eindhovense Cordis is heel intensief bezig met dit multidisciplinaire stuk. Directeur Benno Beuting gaat uit van de complete lifecycle van systemen en heeft een aanpak gedefinieerd waarbij MBSE in elke fase, van eerste idee tot end-of-life een zinvolle rol speelt. Dat begint al bij de requirements, waar Cordis modellen gebruikt om structuur en gedrag van bijvoorbeeld chemische installaties te specificeren. Het hanteert hiervoor een subset van UML, waarmee ook systeemengineers zonder softwareachtergrond van bijvoorbeeld Tegema uit de voeten blijken te kunnen. Belangrijk is om het juiste abstractieniveau boven software te vinden.

In eerste instantie beperkte het gebruik van modellen bij Cordis zich tot het genereren van code voor de besturing van de installaties. Later heeft het bedrijf dit uitgebreid met testgeneratie en modelverificatie en sinds kort voert het ook 3D-simulaties uit van de installaties. Deze aanpak lijkt in dit domein te leiden tot een integrale aanpak over disciplines heen.

Andere partijen zijn op onderdelen van de systeemlifecycle ook bezig met MBSE. Zo integreert ASML de zwak getypeerde Matlab-modellen van zijn fysica- en mechatronicaontwerpers direct in de sterk getypeerde C/C++-omgeving, in plaats van deze handmatig om te zetten in C/C++-code zoals eerder nodig was voor performance. Daarnaast liggen er ideeën om in de ontwerpfase simulaties van de materiaalflow door de machine te gebruiken.

Océ gaat nog een stap verder: naast directe integratie passen ze in Venlo ook codegeneratie toe uit Simulink-modellen voor regelingen, inktflow, mediagedrag en warmtehuishouding. De sterk modelgedreven aanpak die ze in software volgen, maakt het mogelijk heel snel nieuwe ideeën te simuleren en uit te proberen. Dat combineren ze met het modelleren van archetype gebruikers bij hun klanten. Innovatieve ideeën die daarbij ontstaan ter verbetering van de klantprocessen zijn zo razendsnel te toetsen en te realiseren. Mooi voorbeeld hiervan is het planbord dat in elke nieuwe printer zit en waarmee een operator realtime kan zien wanneer de verschillende jobs starten en hoe lang het systeem onbeheerd kan lopen.

Ook Nspyre en Sioux onderzoeken oplossingen aan de systeemkant, met een enigszins vergelijkbare gedachte als uitgangspunt. Zij kijken voor embedded systemen beiden naar SysML (Systems Engineering Modeling Language), een specialisatie van UML. Hierbij maken ze gebruik van Topcased, een Frans opensource product dat wordt getrokken door Polarsys. Dit in 2013 opgerichte consortium wil een opensource toolplatform neerzetten dat de gehele systeemlifecycle moet gaan ondersteunen, met een belangrijke rol voor MBSE. Nspyre besteedt hierbij ook de nodige aandacht aan systeemsimulatie. Naast een tunnelsimulator voor een grote opdrachtgever heeft het bedrijf als opleidingsvehikel een simulatie gebouwd van een stoplichtinstallatie, waarin veel aspecten terugkomen die ook in complexere multidisciplinaire systemen zijn te vinden.

Tesla

Opvallend is het groeiende belang van de factor mens (en daarmee de organisatie) in MDSD en MBSE. Tijdens Code Generation wezen Steven Kelly van Metacase en de consultant Chung-Yeung Pang erop dat juist de softwareontwikkelaars zelf de meeste weerstand hebben tegen de introductie van de modelgedreven aanpak. Op basis van tien jaar werk in zeven projecten liet Pang zien dat maar liefst zeventig procent van de betrokken programmeurs en zestig procent van de requirementsanalisten weinig gecharmeerd waren van MDSD, veelal uit onwil om te veranderen. Nadat zij het veld hadden geruimd, bleek de aanpak echter wel degelijk succesvol. John Slaby van radarfabrikant Raytheon vertelde met MDSD te zijn gestopt vanwege de grote weerstand onder ontwikkelaars.

Michel de Groot van Océ geeft aan dat zijn organisatie van die onwil weinig meer merkt. Mogelijk is die er wel geweest in de begintijd, maar inmiddels is MDSD zo ingebakken in de werkwijze dat er onder software-engineers nauwelijks nog weerstand is. Dat is anders bij MBSE: daar staan we volgens De Groot voor dezelfde uitdaging als bij MDSD twaalf jaar geleden. Benno Beuting van Cordis ziet echter dat systeemarchitecten met minder affiniteit voor software juist erg gecharmeerd zijn van de uitgeklede UML-variant die zijn bedrijf hanteert, en daar flink over meediscussiëren. Blijkbaar is UML toch niet zo ‘software-only’.

Johan den Haan van het Nederlandse Mendix heeft hier een eigen kijk op. Zijn bedrijf is weliswaar niet actief in de embedded-markt, maar zijn kennis van softwarearchitectuur en MDSD is breed inzetbaar. In zijn presentatie op Code Generation poneerde hij dat klanten de modellen moeten maken. Een spannende stelling, die in eerste instantie zeker de nodige weerstand oproept bij ontwikkelaars én eindgebruikers.

Bij Mendix kan het sinds begin april, in het (cloud)platform van het bedrijf. Op de vraag of het in embedded ook zo zou kunnen, gaf Den Haan als voorbeeld de Tesla. Nu al kunnen kopers een app op hun telefoon krijgen om met dit rijdende softwareplatform te communiceren, maar waarom zouden we niet, binnen veiligheidsmarges, toestaan dat ze zelf applicaties bouwen om de auto echt naar hun wensen te tunen?

Tussenstap

Duidelijk is dat ons de komende jaren de nodige ontwikkelingen staan te wachten in MDSD en MBSE. Overal liggen ideeën klaar om opgepakt te worden, maar de stappen die gezet gaan worden, zullen per organisatie verschillen. Waar een deel van de toolbouwers op Code Generation nog aan het navelstaren is naar verbeteringen van de eigen producten, kijken hun (potentiële) afnemers al verder. De steeds meer toegepaste simulaties bieden eveneens perspectieven: zal het ons ooit lukken software te genereren aan de hand van gedrag gedefinieerd in een driedimensionaal machinemodel, zoals Benno Beuting hardop droomt?

Minstens zo interessant voor de embedded-wereld is Mendix’ idee om een platform te creëren voor citizen developers. Misschien is dat wel waar de userinterfaceverbeteringen van bijvoorbeeld Verum naartoe moeten leiden: innovatieve bedrijven als ASML, Fei en Océ, maar ook hun klanten, die hun eigen applicaties definiëren boven op de hardware- en software-infrastructuur die ze krijgen aangeleverd door anderen.

Voor de softwareontwikkelaars die niet, of niet direct, de stap naar grafisch of anderszins modelleren willen zetten, kunnen we de ideeën van Markus Völter in Mbeddr als tussenstap gebruiken. Die weerstand moeten we een keer overwinnen. We moeten weg van het handmatig ontwerpen en coderen, willen we de doelstellingen ten aanzien van kwaliteit en ontwikkelsnelheid op systeemniveau kunnen blijven waarmaken.

Edited by Nieke Roos