Overslaan en naar de inhoud gaan
nieuwe subsidiemogelijkheden

Nieuwe subsidiemogelijkheden voor ICT

Voor het aanvragen van ICT-subsidies gaan er in 2021 waarschijnlijk nieuwe mogelijkheden voor subsidie spelen. De definitie van programmatuur voor de subsidieregeling WBSO moet namelijk aangepast worden. Dat schreef minister Wiebes op 15 september 2020 in een kamerbrief. De huidige definitie dekt niet meer de lading van de snelle technologische ontwikkelingen. Dat betekent dat de WBSO wordt uitgebreid met meer mogelijkheden voor softwareontwikkeling en ICT in het algemeen!

De status quo van WBSO en ICT

Waar we in de huidige maatschappij steeds sneller de ene technologische ontwikkeling de ander op zien volgen, zien we dat ICT steeds belangrijker wordt. Denk aan elektrische auto’s, apps om de verwarming te bedienen en de deurbel met een camera. Ook binnen de subsidiewereld heeft ICT een steeds groter aandeel. In 2019 is ruim 20% van het WBSO-budget besteed aan ICT-projecten.


De huidige definitie van programmatuur

In de huidige regeling voor de WBSO wordt programmatuur als volgt omschreven:

“Het niet-fysieke, logische deelsysteem van een informatiesysteem dat de structuur van de gegevens en van de verwerkingsprocessen bepaalt voor zover dat deelsysteem is vastgelegd in een formele programmeertaal.”


ICT-projecten moesten allemaal in de genoemde definitie passen. Na een rechtszaak in 2016 is “voor zover dat deelsysteem is vastgelegd in een formele programmeertaal” aan de definitie toegevoegd. De aanvrager betoogde dat hij de technische knelpunten oploste, ook al schreef een onderaannemer de feitelijke programmatuur. De rechter stelde de aanvrager in het gelijk, waarop de definitie werd aangescherpt. Dit is echter vier jaar geleden en de technologische ontwikkelingen op ICT-gebied gaan zo snel dat de definitie alweer achterhaald is.

Waarom voldoet de huidige definitie niet?

De huidige definitie omvat niet het juiste doel dat de WBSO voor ogen heeft. Ook sluit het bepaalde ICT-ontwikkelingen uit voor subsidie, die wel degelijk innovaties en ontwikkeling van nieuwe digitale technologie omvatten. Denk bijvoorbeeld aan het ontwikkelen van Machine Learning of Artificial Intelligence, waarbij de programmatuur zelflerend is en zelf de codes en brondata verrijkt. Dit kan in vergaande gevallen zo diep gaan, dat het logische deelsystemen overschrijdt. Zelfs zover dat het systeem zelf de kennis bevat in de algoritmes, die door de programmeur soms niet te achterhalen zijn, maar wel een gigantische impact en vooruitgang in de technologie kunnen realiseren.


De huidige definitie leidt volgens de deskundigen juist tot méér programmatuur, in plaats van betere en innovatieve programmatuur.

Zoals deskundigen ook aangeven in de notitie bijgevoegd bij de kamerbrief, wordt er in de definitie te veel nadruk gelegd op de programmatuur. Het programmeren is een onderdeel van het oplossen van een technisch probleem, niet het belangrijkste daarvan. Het voorafgaande traject waar veel tijd in gaat zitten, zoals algoritmes ontwikkelen en inrichten van de architectuur, is cruciaal voor het oplossen van technische knelpunten. De deskundigen geven aan dat dit belangrijker is dan het programmeren zelf, waardoor ook andere ontwikkelingen in aanmerking moeten komen voor subsidie. Maar de huidige definitie leidt volgens de deskundigen juist tot méér programmatuur, in plaats van betere en innovatieve programmatuur.

Wat betekent dit voor de subsidiabele kosten?

Als het advies van de experts door de regering overgenomen wordt, betekent dit niet alleen dat de definitie met de tijd meegaat, maar ook dat er meer werkzaamheden in WBSO-projecten onder de subsidiabele kosten vallen.

Hieronder hebben wij een overzicht gemaakt van de kosten die op dit moment niet, maar na honorering van het advies van de experts, wel in aanmerking komen voor subsidie:

  • Herstructurering van legacy-software.
  • Documentatie van de programmatuur inclusief precieze specificatie van externe interfaces.
  • Integratie van verschillende softwarepakketten om tegen lage kosten nieuwe functionaliteit beschikbaar te stellen, door gebruik te maken van hoog niveau, domeinspecifieke beschrijvingen.
  • Verbetering van de intrinsieke kwaliteit van software, bijvoorbeeld door een verbeterde testmethodiek of softwareverificatie. Concreet valt te denken aan model-based testing of model checking.

Bij Subvention merken we dat zich bij al deze activiteiten serieuze technische knelpunten voordoen en dus S&O-activiteiten vereisen.

  1. Activiteiten ter herstructurering en documentatie van software.
  2. Activiteiten om de kwaliteit van bestaande software fundamenteel te verbeteren, bijvoorbeeld door het verwijderen van slapende softwarefouten.
  3. Activiteiten om op basis van programmatuur van derden, nieuwe eigen functionaliteit te realiseren.
  4. Ontwikkelingstrajecten waarbij een consortium van bedrijven werkt aan nieuwe toepassingen.
  5. Activiteiten om bestaande software binnen een fundamenteel nieuw executieplatform uit te voeren. Te denken valt aan het omzetten van sequentiële software naar een multiprocessor, gedistribueerd of zelfs een GPU-platform.

Aan de hand van bovengenoemde argumentatie wordt door de deskundigen ook voorgesteld om de volgende activiteiten subsidiabel te laten zijn voor de WBSO:

  • Onderhoud van programmatuur, mits dit aantoonbaar in technische zin vernieuwend is.
  • Het beschrijven van architectuur.
  • Het geschikt maken van bestaande programmatuur voor een ander hardware- of softwareplatform, waarbij onder platform wordt verstaan het geheel van hardware en besturingsprogrammatuur waarop informatiesystemen worden ontwikkeld.
  • Het ontwikkelen van programmatuur die bestaande programmatuur op een technisch nieuwe wijze integreert of laat samenwerken.

Belangrijkste aanbevelingen op de 6 ICT-trends

In de notitie die deskundigen opstelden, zijn de trends in de ICT onderverdeeld in zes onderwerpen. Hieronder hebben we de belangrijkste punten per onderwerp op een rij gezet inclusief de aanbeveling die de experts doen voor het aanpassen van de WBSO-definitie op deze gebieden.

De stukken komen uit de Notitie over programmatuur in de Wbso.

Artificial intelligence en big data

De relevantie van artificiële intelligentie (AI) en big data kan nauwelijks worden onderschat. AI en met name machine learning technieken, hebben implicaties voor de definitie van programmatuur. Dat komt doordat systemen met AI niet langer in de traditionele zin worden geprogrammeerd middels het geven van instructies. In plaats daarvan wordt het gedrag van een systeem geleerd op basis van voorbeelden.

Softwaresystemen die (mede) tot stand komen middels machine learning zijn niet geschreven in een formele programmeertaal. Toch zijn hier technische knelpunten op te lossen, bijvoorbeeld door het samenstellen van een geschikte dataset aan trainingsdata, de validatie en cleaning van deze data.

Aanbeveling van de experts: Gezien de grote vlucht die AI neemt in allerlei toepassingen en de enorme economische mogelijkheden, vinden wij dat AI toepassingen, zoals machine learning, WBSO-subsidiabel moeten zijn. Concreet kan gedacht worden aan het vinden van de juiste instructies en instellingen om een neuraal netwerk effectief te laten leren of het opstellen van een methode om trainingsdata op te schonen.

Legacy

De menselijke limiet aan het begrijpen van softwarecomplexiteit leidt tot het probleem dat software niet meer wordt begrepen. Dit heet het legacy-probleem. Waar een eerste maker van programmatuur nog wel in staat is om een eerste versie te maken voor een toepassing, blijkt het vaak niet mogelijk de programmatuur operationeel te houden als de toepassing of context van aard wijzigt. Activiteiten om de software begrijpelijk te houden zijn essentieel om de software op lange termijn bruikbaar te houden. De levensduur van software is vaak vele malen groter dan de levensduur van de hardware waarop het draait.

 Aanbeveling van de experts: Onderhoud van software is net zo belangrijk als het schrijven van software. Ook dit zou WBSO-subsidiabel moeten zijn, maar natuurlijk alleen wanneer dit tot technische vernieuwing van de software leidt.

Agile development

Agile software development is een reactie op de vaststelling dat strikte ontwikkelingsprocessen vaak niet goed werken bij de constructie van software. Door frequent overleg en adaptieve planning wordt tegemoet gekomen aan de observatie dat er bij veel softwareontwikkeling sprake is van groeiend inzicht en meer dan eens het opdoemen van onvoorziene problemen.

Het onbepaalde aspect van agile ontwikkeling lijkt bijzonder op de wijze waarop onderzoek wordt gedaan. Voor de WBSO lijkt het niet erg van belang of een project agile wordt uitgevoerd. De doelstelling van een project en de mate waarin het technisch nieuw is, zijn bepalend.

Aanbeveling van de experts: Voor de WBSO lijkt het niet relevant of een project op een ‘agile’ wijze wordt uitgevoerd. De doelstellingen van een project moeten wel helder zijn en niet agile geformuleerd worden.

Complexiteit

De omvang van programmatuur, de snelheid waarmee ze uitgevoerd wordt en de mogelijkheden om te communiceren zijn ongekend. Oorzaak hiervan is de extreme miniaturisering van elektronica, waardoor zeer grote en snelle geheugens, verwerkingseenheden en communicatienetwerken kunnen worden gemaakt. In dit alles is programmatuur de menselijke maat inmiddels ver voorbij.

De feitelijke limiet aan de complexiteit van software wordt al lang niet meer bepaald door de omvang van de geheugens of de snelheid van computers, maar primair door de limiet aan de complexiteit die de menselijke programmeur kan doorzien en hanteren.

Aanbeveling van de experts: Het hanteerbaar maken van complexiteit vereist dat programmatuur begrijpelijk is.

Software integratie en low-coding platforms

Om software hanteerbaar te maken is een enorme software infrastructuur ontstaan. De meeste software die gemaakt wordt, is software die wordt geïnterpreteerd door andere software, die vaak zelf ook weer gebouwd is in daartoe geëigende softwareomgevingen. De nieuwe softwarelagen bieden steeds hoger niveau primitieven aan, vaak geschikt voor gespecialiseerde domeinen.

De specialisten in deze domeinen kunnen op deze manier binnen hun eigen intellectuele vermogens de benodigde functionaliteit realiseren. De hulpmiddelen die zij gebruiken lijken soms wel, maar soms ook in het geheel niet op wat we aan zouden kunnen duiden als programmeertalen. Interfaceontwikkelaars ‘programmeren’ een interface door middel van ‘drag and drop’.

Dit betekent dat de meeste ontwikkeling van software niet bestaat uit het programmeren van een geheel nieuw systeem, maar uit het realiseren van nieuwe toepassingen door aanpassing van bestaande code. Dit houdt in het integreren van software in de eigen context, om daarmee nieuwe functionaliteit te integreren, zoals het opnemen van een diep neuraal netwerk om de kwaliteit van bepaalde dienstverlening te verbeteren.

Aanbeveling van de experts: De definitie van programmatuur dient het aanpassen en integreren van software te ondersteunen, ook als dit middels low-coding platforms plaatsvindt. Leidend is of daarbij technische knelpunten opgelost worden.

Model-driven engineering en domein-specifieke talen

Model-driven engineering (MDE) is een methodologie voor softwareontwikkeling waarin domeinmodellen centraal staan, dat wil zeggen dat conceptuele modellen de relevantie van alle aspecten van een specifiek toepassingsdomein in kaart brengen. MDE voorziet in abstracte representaties van de kennis en activiteiten binnen het toepassingsdomein, in plaats van de algoritmen en code.

MDE wordt algemeen gezien als een effectieve methode om op een efficiënte manier kwalitatief hoogwaardige code te ontwikkelen: Het gebruik van gestandaardiseerde modellen verhoogt de kwaliteit, de compatibiliteit tussen systemen (door hergebruik van gestandaardiseerde modellen) en vereenvoudigt het ontwerpproces (via modellen van terugkerende ontwerppatronen). Waar programmeren meer het sluitstuk is van het oplossen van een S&O-vraagstuk, wordt de kern ervan vaak wel vastgelegd in domein-specifieke talen.

Aanbeveling van de experts: domein-specifieke talen dienen onder de definitie van programmatuur te vallen. Dit geldt zowel voor bestaande talen, zoals SQL en ASP, als talen die nieuw ontwikkeld worden. Voorbeelden van deze laatste zijn modelleertalen en meta-modellen om communicatie tussen IoT devices te beschrijven.

Wat betekent dit concreet voor softwareontwikkelaars en ICT?

Vanuit Subvention houden we de wijzigingen in de WBSO nadrukkelijk in de gaten. Wij zien de steeds groter wordende impact van ICT in ons dagelijks leven als een belangrijke ontwikkeling en hopen daarom ook dat de overheid het advies van de experts overneemt.

Concreet betekent dit voor jou als softwareontwikkelaar dat meer projecten in aanmerking komen voor subsidie en dat onderdelen of werkzaamheden van ICT-projecten die momenteel uitgesloten zijn van subsidie, voortaan wel in aanmerking kunnen komen voor subsidie. Het verwachte tijdspad voor de wijziging in de programmatuuromschrijving is met ingang van 2022. Dit betekent dat je hier eind 2021 jaar al rekening mee moet houden in de aanvragen.