De stand van embedded software in Nederland


Warning: Undefined array key "bio" in /home/techwatch/domains/test.bits-chips.nl/public_html/wp-content/plugins/wpcodebox2/src/Runner/QueryRunner.php(126) : eval()'d code on line 13

Author:

Reading time: 8 minutes

Wat zijn de grote trends rond embedded software in Nederland en daarbuiten? Hebben iot en ai een grote invloed? En hoe zit het met modelgebaseerd ontwikkelen? Bits&Chips kijkt samen met Tiobe wat er allemaal speelt in de hightechsector.

Iedere software-engineer zal de Tiobe-index wel kennen, de ranglijst voor de populariteit van programmeertalen gebaseerd op zoekopdrachten bij zoekmachines, webwinkels en fora. De nauwkeurigheid van die meting wordt vaak in twijfel getrokken, maar op zijn minst biedt de index een interessant kijkje in de ontwikkeling van programmeertalen over de jaren heen.

Maar Tiobe zit ook op een andere berg data, die voor de Bits&Chips-lezer veel interessanter is. Van bijna een miljard coderegels bij hightechbedrijven – vooral de Nederlandse – meet het Eindhovense bedrijf dagelijks hoe het gesteld is met de kwaliteit, van de kleinere bedrijven tot aan de grote multinationals. In totaal driehonderdvijftig metrieken kunnen worden bijgehouden, zowel met eigen software als met die van derde partijen.

Samen met directeur Paul Jansen kijken we naar de trends in het embedded-softwarewereldje. Overigens wel met een slag om de arm; Tiobe komt binnen bij softwareprojecten die al redelijk groot en volwassen zijn. De trends die Jansen ziet, gaan dus vooral over wat er op dit vlak gebeurt.

Inhaalslag voor security

En dat is best wel wat. Als eerste valt op dat de iot-trend een steeds groter stempel drukt. ‘Iot lijkt een hypewoord, maar het is echt iets dat gaande is in die wereld’, zegt Jansen. ‘Embedded software was vroeger een geïsoleerd stukje code dat in de machine ging en waar verder helemaal niemand bij kon. Nu moet iedereen kunnen connecten. Dat heeft ook zijn consequenties voor de manier van programmeren.’

Die gevolgen zijn bijvoorbeeld te zien op het vlak van security. Voorheen was dat nog weleens een sluitstuk in het embedded-domein, maar ondertussen is het besef doorgedrongen dat dat echt niet kan in een immer verbonden wereld. ‘Als ik naar onze klanten kijk, dan is security nu echt een hot issue, terwijl dat vijf jaar geleden absoluut niet speelde’, vertelt Jansen. ‘De meeste grote multinationals hadden bijvoorbeeld wel security officers, maar nu hebben deze mensen ook echt iets te zeggen en willen de softwareafdelingen binnen die bedrijven daar echt iets mee gaan doen.’

De spelers in embedded software zijn daarom afgelopen jaar begonnen om een flinke inhaalslag te maken op dat gebied. ‘Je ziet nog vaak dat ze een beetje aan het rondsnuffelen zijn hoe dat precies moet’, signaleert Jansen. ‘Het grootste securityrisico zit natuurlijk in de uitrol, hoe je dingen afschermt en goede firewalls neerzet. Maar op codevlak kun je ook wel wat doen en daar kun je allerlei tools voor inzetten. Daar is iedereen nu mee bezig. Wij merken dat zelf ook; we nemen de resultaten van dit soort tools nu expliciet mee in onze meting omdat klanten daarom vragen.’

Hipstertalen en botsende culturen

De iot-trend brengt nog een andere grotere verandering met zich mee: embedded devices zijn niet langer het exclusieve domein van de embedded-software-engineer. Er hoort immers een webinterface bij of een app, en een stuk backendcode op een cloudserver. ‘Ik weet van een klant dat ze een systeem hebben met een miljoen regels C++-code, waar ondertussen twee miljoen regels Javascript in zitten. Terwijl het toch een embedded systeem is. Dus er gebeuren gekke dingen op dat vlak. Die trend zie je echt overal, niet alleen in de consumentensector, maar ook in sectoren als automotive, medisch of machinebouw’, constateert Jansen.

Dat wordt nog eens versterkt door een andere globale trend, die bekendstaat als de post-pc-era. ‘Van oudsher had je je embedded toepassing en daarnaast een controleapplicatie op Windows, als het dashboard van al je machines. Dat soort applicaties zijn nu langzaamaan van de desktop aan het verdwijnen en naar het web aan het gaan’, zegt Jansen.

C, C++, Java en C# maken nog altijd de dienst uit in de projecten die Tiobe doormeet. Paul Jansen ziet de web- en app-talen echter groeien als kool.

Dat betekent dat de embedded-softwareorganisaties ineens te maken krijgen met hele andere technieken. Dat begint al bij programmeertalen: Android gebruikt Java, voor Apple zijn er Swift en Objective-C, en het web is het domein van Javascript. En die komen allemaal met hun eigen ontwikkelraamwerken. Een heel ander landschap dan de machinetalen C en C++. Ook de dynamiek van het web of apps is heel anders dan die van de embedded-wereld, met snelle iteraties en constante vernieuwing als troef. De embedded-softwareafdelingen moeten dus snel nieuwe competenties opbouwen op deze gebieden.

De meeste bedrijven lossen dat op door nieuwe mensen aan te nemen die bekend zijn op dat vlak. Een goed idee, vindt Jansen, want mobiel en web zijn wel echt andere takken van sport dan embedded. ‘Maar het kan wel een behoorlijke invloed hebben op de cultuur binnen een organisatie’, denkt hij. ‘Mobiele apps zitten meer in de hipstersfeer, en die mannen komen ook met een heel setje nieuwe programmeertalen aanzetten. Die willen modern zijn en graag in Rust en Elixir en dat soort obscure taaltjes programmeren. Dat botst natuurlijk met de wat meer traditionele, conservatieve embedded-softwarewereld.’

Oude taal, nieuw jasje

Kijken we naar die traditionele embedded-softwarewereld, dan lijkt die in eerste instantie inderdaad erg conservatief te zijn: tachtig procent van wat er gebeurt, is C en C++, aangevuld door Java en C# voor de gebruikersinterfaces en hogere applicatielagen. ‘Er dienen zich gewoon niet echt alternatieven aan’, zegt Jansen. ‘Je hebt wel Lua, dat kan ook op C-codeniveau wat doen, maar dat breekt gewoon niet door.’

Dat sluit eigenlijk wel aan bij de algemene trend in programmeertalenland. Tiobe roept elk jaar een ‘taal van het jaar’ uit gebaseerd op de groei over de laatste twaalf maanden, en dat was deze keer verrassend genoeg good old C. ‘Maar dat is gewoon omdat er eigenlijk niks verandert, en dan heb je er eentje die net iets meer heeft dan de rest’, legt Jansen uit. ‘Het is echt niet zo dat iedereen ineens C is gaan programmeren.’

In de Tiobe-index trekken programmeertalen steeds meer naar elkaar toe. Die trend is zowel binnen de hightechsector te zien als in het algemeen, zegt Jansen: ‘Tegenwoordig is een applicatie niet meer standalone; er zit een heel ecosysteem bij met een website en een app en weet ik niet wat. Dat betekent dat je talen bij elkaar moet gaan verzamelen, want elke taal is weer goed in zijn eigen vakgebiedje.’

Maar schijn bedriegt ook wel een beetje, want zoomen we verder in, dan is er de afgelopen twee jaar toch een grote verschuiving geweest in C++. Sinds de laatste grote update in 1998 was de ontwikkeling van de taal eigenlijk tot stilstand gekomen; weliswaar waren er een hoop nieuwe ideeën, maar die schopten het maar niet tot een standaard. Het moest tot 2011 duren voordat het eindelijk zover was. De hoeders van de taal besloten vervolgens om dit niet opnieuw te laten gebeuren en hebben in 2014 en 2017 ook nieuwe versies uitgebracht, met kleinere veranderingen.

De behoudende embedded-sector was niet gelijk om, maar het oude C++98 is de afgelopen twee jaar dan eindelijk ingeruild. Niet voor the latest and greatest, maar voor C++11. ‘Toch is dat echt wel een verandering ten opzichte van C++98’, stelt Jansen. ‘De manier waarop je daarin kunt programmeren, is heel veel beter geworden.’

Hiermee wordt gelijk ook een belangrijke reden voor de onverminderde populariteit van de traditionele talen duidelijk, aldus Jansen. ‘Als er een nieuwe taal komt met een interessante feature, dan nemen die grote talen dat gewoon over. Ze cherrypicken van die kleine taaltjes. Zo is C++11 ontstaan uit inzichten uit andere talen, en Java 8 en 9 hebben ook gewoon allerlei moderne functional programming-principes overgenomen. Het is wat dat betreft wel een verrassing dat C zich zo goed staande weet te houden ondanks het feit dat de taal bijna niet verandert.’

Vertrouwen in modellen neemt toe

Een andere trend die Jansen opmerkt, is dat de embedded-industrie het steeds meer aandurft om code te genereren uit modellen. ‘Wat mij betreft, wordt modelgebaseerd ontwikkelen af en toe een beetje gehypet; het is zeker niet het geval dat je alles kunt modelleren. Maar je kunt er wel heel veel mee winnen, als je het tenminste heel goed en zorgvuldig inzet in een bedrijf.’

Er zijn eigenlijk twee smaken van de aanpak: generieke modelleerpakketten aan de ene kant en domeinspecifieke talen aan de andere kant. ‘Dat laatste leeft nog wat minder, want daar moet je een extra inspanning voor doen: je moet het formalisme ontwikkelen en zelf een codegenerator schrijven. Dat gebeurt in sommige bedrijven, maar nog heel sporadisch.’

Bij de generieke pakketten zit er wel schot in de zaak. Of eigenlijk: pakket – enkelvoud – want Matlab/Simulink is in de industrie heer en meester. ‘Van oudsher worden die modellen vooral gebruikt als prototype, als specificatie van het algoritme. Een programmeur moet het dan nog in het echt implementeren, en daar gaan heel veel dingen bij fout. Maar die gegenereerde code wordt qua performance en footprint echt goed, dus zie je de trend dat bedrijven dat steeds meer gebruiken’, vertelt Jansen.

Opvallend is wel dat de Nederlandse industrie eigenlijk nog erg weinig gebruikmaakt van modelgebaseerd ontwikkelen. ‘Als je kijkt naar de Duitse of Franse autobedrijven, dan zie je dat tachtig procent van zo’n auto via modelleertalen in elkaar wordt gezet. Bij de Nederlandse bedrijven worden die ook wel gebruikt, maar het heeft niet de overhand. Al kan het zo zijn dat deze bedrijven het niet zien als programmeercode; dan komt het bij ons niet in zicht.’

Software is niet meer vrijblijvend

Er is ook een wereldwijde trend die vooralsnog schittert door afwezigheid. Terwijl nieuwsberichten over ai en machine learning ons om de oren vliegen, merkt Jansen daar in de embedded-industrie nog niks van. Waarschijnlijk is het ook nog te vroeg, oppert hij. ‘Ik denk dat het wel gaat komen; er zijn bedrijven die natuurlijk gigantisch veel data hebben waar je iets slims mee kunt doen. Maar waarschijnlijk is iedereen nog bezig om de features en requirements goed te krijgen, en wij komen pas in beeld op het moment dat producten naar de markt toe gaan en kwaliteit een belangrijke eis is.’

De gemiddelde kwaliteit van de embedded software die Tiobe doormeet, blijft de afgelopen jaren toenemen.

Bij de embedded-softwarebedrijven valt Jansen wel een heel andere trend op: kwaliteit wordt steeds belangrijker. Hoewel hij ook hier moet toegeven dat dat beeld mogelijk vertekend is – softwarekwaliteit meten is immers precies wat Tiobe doet. ‘Maar vroeger moesten we nog missionaris zijn en nu is het bij de meeste bedrijven vanzelfsprekend. Ze hebben veel meer een houding van: ‘Kom maar op, we willen meters maken.’’

‘Ik denk dat dat te maken heeft met het verwachtingspatroon van de markt. In den beginne was het nog leuk dat het speeltje het deed en was het jammer als het kapotging, maar nu is het veel meer key geworden. Bedrijven hebben een serieus probleem als er negatieve online reviews verschijnen, dus ze zijn er heel serieus mee bezig.’

Kortom: de hightechsector lijkt software steeds serieuzer te nemen als productdifferentiator. Dat daarbij behoedzaam te werk wordt gegaan en niet elke nieuwe technologie direct wordt omarmd, is logisch – embedded devices zijn beperkter in hun capaciteit en minder vergeeflijk voor fouten. Maar het beeld dat naar voren komt in de ontwikkelingen is duidelijk: software eist er een steeds grotere rol in op.