Ga naar de inhoud

Waarom snel innoveren in software het gebruik van Model Driven Software Engineering vereist

De bereidheid van de samenleving om nieuwe technologieën toe te passen neemt toe. Er is dan ook een toenemende behoefte om innovaties in een hoger tempo en tegen lagere kosten te introduceren. In wezen zijn er twee manieren om deze doelen te bereiken: het verhogen van de ontwikkelingsefficiëntie en/of het verkorten van de ontwikkelingscyclus. Terwijl een verhoging van de efficiëntie met 10% een respectabele kostenbesparing oplevert, zal een verlaging van de cyclustijd met 10% de inkomsten met een veel grotere marge doen toenemen. Met andere woorden, geen enkele efficiëntieverbetering zal de reductie van de cyclustijd overtreffen. Modelgedreven software engineering resulteert in zowel cyclustijdreductie als efficiëntieverbeteringen en is daarom essentieel voor snelle innovatie in software.

Beperkingen van code centric software engineering

Conventionele, codecentrale software engineering maakt gebruik van empirische, trial-and-error-technieken om de kwaliteit van het product vast te stellen. Het handmatig schrijven van code is zeer foutgevoelig. Om te voorkomen dat deze fouten zich verspreiden naar het vrijgegeven product, voeren traditionele softwareontwikkelingsteams een groot aantal unit-, integratie- en systeemtests uit. Deze nemen kostbare tijd in beslag, met name wanneer ze fouten aan het licht brengen, die vervolgens moeten worden verholpen. Helaas zijn de meeste softwaresystemen zo complex dat het technisch noch economisch mogelijk is om ze volledig te testen en als gevolg daarvan komen defecten bij klanten terecht. De trend naar toenemende complexiteit van de systemen verergert deze problemen alleen maar.

Een manier om de cyclustijd te verkorten is door efficiëntere methoden te gebruiken om software te maken. Automatisering kan de anders foutgevoelige en tijdrovende handmatige processen sterk stroomlijnen. Het automatisch verifiëren, valideren en genereren van code verkort de ontwikkelingscyclus aanzienlijk en heeft als bijkomend voordeel dat de overgrote meerderheid van de softwarefouten volledig worden geëlimineerd. De bespaarde tijd kan worden besteed aan het ontwerpen van nieuwe functies of zelfs geheel nieuwe producten.

De voordelen van MDE

Model-driven engineering (MDE) is een manier om software te ontwikkelen door automatisch computerprogramma’s te genereren uit modellen in plaats van ze met de hand te schrijven. Het richt zich op het vastleggen op een abstract niveau van alle onderwerpen die betrekking hebben op een specifiek probleemdomein, in plaats van op de computerconcepten die nodig zijn om het te implementeren.

Door overbodige details te verbergen, houdt MDE de complexiteit beheersbaar en maakt het begrijpen van en communiceren over een softwaresysteem eenvoudiger en minder foutgevoelig. Software wordt automatisch gegenereerd uit geverifieerde en gevalideerde modellen, waardoor de kans op fouten nog kleiner wordt. Bovendien wordt door het loskoppelen van een probleemdomein van de onderliggende implementatiedetails de levensduur van een softwaresysteem drastisch verlengd en kan het mee-evolueren met de technologische vooruitgang. MDE verhoogt dus sterk de productiviteit en de productkwaliteit en verlaagt zowel de kosten voor het beheer van de productlevenscyclus als de totale eigendomskosten.

Horizontale en verticale MDE

MDE is er in verschillende smaken, afhankelijk van de behandelde domeinen. De twee hoofdcategorieën zijn ‘horizontaal’ en ‘verticaal’. Horizontale MDE verwijst naar het gebruik van modelleringsinstrumenten en -technieken die MDE mogelijk maken in een breed scala van markten en toepassingen, van de ontwikkeling van software voor horloges tot medische systemen. Horizontale MDE-hulpmiddelen bieden de mogelijkheid om snel algoritmen, besturingstoepassingen, gegevensmodellen, gebruikersinterfaces en nog veel meer te ontwikkelen. Voor horizontale MDE zijn er verschillende commerciële hulpmiddelen beschikbaar, die schaalvoordelen bieden en de kosten van het gebruik van MDE verminderen, terwijl ze een factor 3-5 toename van de efficiëntie en 99% vermindering van de door de klant gemelde defecten opleveren. Voorbeelden hiervan zijn tools van Mathworks, Verum en Cordis.

Verticale MDE verwijst naar het modelleren van een zeer specifiek, niche probleemdomein. In dit geval is het de kunst om de specifieke concepten vast te leggen waarmee architecten, ingenieurs en andere belanghebbenden met elkaar communiceren over het domein. Op een zeer hoog abstractieniveau worden de concepten die uniek zijn voor het domein en de relaties daartussen vastgelegd en omgezet in formele, goed gedefinieerde, zogenaamde domeinspecifieke talen (DSL’s), die de stakeholders kunnen gebruiken om te communiceren zoals ze dat zouden doen met werkvloerjargon.

Het voordeel van verticale MDE is dat het uiteindelijk resulteert in een factor 10 of meer efficiencywinst en dat de levensduur van de IP die ermee wordt vastgelegd sterk wordt verlengd. Door IP te ontkoppelen van de details van de implementatie, kunnen ook nieuwe technologieën gemakkelijker worden toegepast. Het nadeel van verticale MDE is dat er een op maat gemaakte DSL moet worden ontwikkeld voor elk domein dat gemodelleerd wordt, waardoor de adoptiekosten sterk toenemen en er secundaire uitdagingen ontstaan, zoals de voortdurende ontwikkeling en het onderhoud van de DSL zelf.

Adoptie van MDE

Of het nu horizontaal of verticaal is, het toepassen van MDE is een stapsgewijs proces. Het uitgangspunt is meestal in een deel van een bestaand softwaresysteem waar een probleem is opgedoken, of waar de functionaliteit moet worden geoptimaliseerd. Indicatoren voor de invoering van MDE zijn onder andere toenemende kwaliteitsproblemen in het veld, afnemende voorspelbaarheid van softwareontwikkeling, afnemende output van functies en ontevredenheid van klanten/engineeringsteams.

De introductie van MDE in een bestaand softwaresysteem hangt sterk af van het vermogen van uw engineeringteam om het systeem op te splitsen in subsystemen. MDE kan en moet alleen stapsgewijs worden ingevoerd in bestaande software, subsysteem voor subsysteem, te beginnen met de subsystemen die het meest vatbaar zijn voor re-engineering en het best in staat zijn om de investering op de lange termijn te rechtvaardigen.

Horizontale MDE moet worden overwogen voor alle complexe cyberfysische systemen en moet in eerste instantie worden toegepast op die gebieden van het systeem waar sprake is van algoritmische of gedragscomplexiteit. Verticale MDE moet worden toegepast wanneer u complexe, unieke IP heeft die is vastgelegd in software en die de kern vormt van de levensvatbaarheid van uw bedrijf op de lange termijn.

De mate waarin MDE moet worden overgenomen hangt af van de ROI die u ervaart. MDE kan worden gebruikt om een groot deel van de levenscyclus van de softwareontwikkeling te faciliteren, maar niet alles. Commercieel beschikbare horizontale MDE-tools hebben een lagere investeringsdrempel en leiden daardoor tot een snellere ROI en kunnen op grotere schaal worden gebruikt. De kosten voor de ontwikkeling van een DSL ter ondersteuning van verticale MDE kunnen zeer hoog zijn, waardoor de toepassing ervan beperkt blijft tot die gebieden van een systeem waar de ROI duidelijk gerechtvaardigd is.

Belangrijke succesfactoren

Hoewel de invoering van MDE uiteindelijk de ontwikkelingscyclustijd verkort, worden bedrijven vaak afgeschrikt door de investeringen vooraf. Ten eerste vereist de invoering van MDE het wegnemen van middelen uit de conventionele software engineering. Het gevolg op korte termijn is een verergering van de pijn, namelijk door een verdere vertraging in de levering van functies. Een andere moeilijkheid is dat de winst niet in één keer komt, maar geleidelijk aan over een periode van één tot twee jaar en in sommige gevallen zijn de beloningen niet zichtbaar na één project. Daarom moet de invoering van MDE worden gestuurd door de bedrijfsstrategie en niet alleen worden behandeld als een procesverbetering.

MDE zorgt ervoor dat sommige bedrijven het zien als een soort zilveren kogel. Sommige ingenieurs verwachten dat alles een wandeling in het park wordt, nu alle code automatisch wordt gegenereerd en er geen menselijke tussenkomst meer nodig is. Dit is niet het geval. MDE moet worden gezien als het pistool dat de zilveren kogel afvuurt: het zal werken zolang het wordt behandeld door iemand die het op de juiste manier wil gebruiken.

Een andere kritiek op MDE die vaak door software-ingenieurs wordt geuit om de invoering ervan uit te stellen, is dat het nog geen holistische, homogene oplossing biedt voor de engineering van complete softwaresystemen en waarschijnlijk pas over tien jaar of meer zal worden toegepast. Het biedt echter wel genoeg van een oplossing om enorme waarde te leveren aan bedrijven die bereid zijn om het te adopteren. Anders gezegd, er is geen technische reden om MDE niet toe te passen op die gebieden waar het een oplossing biedt en veel zakelijke redenen waarom MDE zou moeten en moet worden toegepast. Er zijn nu veel softwareproblemen die zo complex zijn dat ze niet kunnen worden aangepakt zonder modelgedreven tools en technieken als ingenieurs betrouwbare en robuuste oplossingen willen produceren binnen een realistische tijdspanne.

MDE in de praktijk

In de afgelopen jaren heeft ASML grote stappen gemaakt in het gebruik van zowel horizontale als verticale MDE. Zo speelt Altran een grote rol in de ontwikkeling van DSL’s waarbij de softwarearchitecten en -engineers van ASML specificaties schrijven en de softwarefabriek van Altran deze vervolgens implementeert. De DSL’s worden ontwikkeld voor verschillende lagen in de softwarearchitectuur. Ze worden gebruikt om de productiesoftware voor ASML’s Twinscan-systemen automatisch te genereren, te valideren en tot op zekere hoogte te verifiëren.

Start-up Liteq, nu onderdeel van Kulicke & Soffa, paste MDE toe om de volledige besturings- en applicatiesoftware te ontwikkelen voor de Liteq 500, een lithografisch geavanceerd productiesysteem voor halfgeleiders. Met behulp van Verum’s softwareontwerptools realiseerde een klein team van ingenieurs een groot, complex softwaresysteem dat zowel betrouwbaar als robuust is. Ze behandelden de onzekerheden van software van derden, gingen om met de eisen die in de loop van de tijd ontstonden, verminderden de hoeveelheid testen die ze uitvoerden en beschouwden zichzelf als betere ingenieurs als gevolg daarvan. Ze hebben dit alles bereikt terwijl ze een meer dan 2,5 keer zo grote productiviteitsverbetering hebben bereikt gedurende de gehele productontwikkelingscyclus in vergelijking met een conventionele, op code gebaseerde ontwikkelingsaanpak.

HTSC

HTSC

Het High Tech Software Cluster is een samenwerkingsverband van ruim 30 innovatieve softwarebedrijven, onderzoeksorganisaties en onderwijsinstellingen die u ondersteunen om de digitalisering van uw bedrijf betaalbaar en praktisch te maken.

Lees meer
Schrijf je in voor onze nieuwsbrief en ontvang updates.