Taal
 Nieuwsbrief

Aanpassing definitie Programmatuur WBSO

De definitie van Programmatuur in de WBSO mogelijk aangepast

Programmatuur wordt in de WBSO gedefinieerd als "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". In de praktijk blijkt dat die definitie niet goed aansluit op de huidige ontwikkelpraktijk en de vraag is gesteld of er wel mee gestimuleerd wordt, wat gestimuleerd zou moeten worden.

Op Prinsjesdag 2020 heeft de staatssecretaris van Economische Zaken en Klimaat in een kamerbrief aangekondigd dat zij onderzoekt of de definitie aangepast moet worden. Een tweetal deskundigen is om een oordeel gevraagd en zij hebben daar een notitie over uitgebracht.

Programmatuur in de WBSO

Zo'n 20% van het WBSO-budget gaat naar ICT-projecten. Al die projecten moeten passen in de hierboven genoemde definitie voor programmatuur.

In 2016 is "voor zover dat deelsysteem is vastgelegd in een formele programmeertaal" aan de definitie toegevoegd na een rechtszaak waarin een aanvrager betoogde dat hij de technische knelpunten oploste, ook al schreef een onderaannemer de feitelijke programmatuur. Die aanvrager werd in het gelijk gesteld, maar dat was niet wat de overheid wilde.

De huidige definitie sluit niet goed aan op de actuele ontwikkelpraktijk en zorgt er vanaf 2016 al voor dat veel projecten en activiteiten niet (meer) kwalificeren en afgewezen of niet eens aangevraagd worden.

Problemen met de definitie

Zoals de deskundigen ook aangeven wordt er in de definitie te veel nadruk gelegd op het programmeren zelf en te weinig op de stappen die daaraan voorafgaan. Het programmeren is het sluitstuk van het oplossen van een technisch probleem, niet de kern daarvan. Het voorafgaande traject (architectuur, algoritmiek etc.) is veel belangrijker in het oplossen van technische knelpunten, zo zeggen die deskundigen, dan het programmeren zelf. De huidige definitie leidt tot méér programmatuur, en niet per se tot bétere programmatuur.

Trends in programmatuurontwikkeling

Het gaat te ver om in dit artikel uitgebreid in te gaan op de notitie van de deskundigen, maar ze noemen een zestal tendensen:

  1. Complexiteit: de omvang van de geheugens en snelheid van computers zijn geen feitelijke limiet meer voor de complexiteit van software. De deskundigen vinden dat er meer nadruk moet komen op de begrijpelijkheid van de software.
  2. Software integratie en low coding platforms: de meeste software die gemaakt wordt is software, die geïnterpreteerd wordt door andere software. Nieuwe softwarelagen bieden steeds hoger niveau primitieven, geschikt voor gespecialiseerde domeinen. Aanbevolen wordt om het aanpassen en integreren van software te ondersteunen, ook als dat met low code gebeurt, als er daarbij maar technische knelpunten opgelost worden.
  3. Legacy: een belangrijk probleem is dat de inhoud van de software vaak later niet meer begrepen wordt. De deskundigen stellen dat onderhoud van software net zo belangrijk is als het schrijven daarvan en adviseren dat subsidiabel te maken, maar natuurlijk alleen als dit tot technische vernieuwing van de software leidt.
  4. Agile development: ten aanzien van agile development stellen de deskundigen dat vooral de doelstellingen van een project helder moeten zijn en niet agile gedefinieerd moeten worden. Ze adviseren ook om bij een consortium van samenwerkende partijen minder zwaar te tillen aan wie welke taak verricht.
  5. MDE en domein-specifieke talen: de deskundigen stellen voor om domein-specifieke talen als SQL en ASP onder de definitie te laten vallen. Daarbij noemen ze nog de voorbeelden van modelleertalen en meta-modellen om communicatie tussen IoT-devices te beschrijven.
  6. AI en big data: softwaresystemen die (mede) tot stand komen door machine learning zijn niet geschreven in een formele programmeertaal, maar daarbij zijn wel technische knelpunten op te lossen als het samenstellen van een geschikte dataset voor training en de validatie en cleaning van die data. De deskundigen adviseren concrete activiteiten te accepteren als het vinden van de juiste instructies en instellingen om een neuraal netwerk te laten leren of het opstellen van een methode om trainingsdata op te schonen.

De deskundigen stellen als definitie voor programmatuur voor: "Een precieze beschrijving van waaruit het gedrag van een computergestuurd systeem eenduidig kan worden afgeleid, op zodanige wijze opgesteld dat het door mensen navolgbaar is en waarbij het technisch of mathematisch verifieerbaar is dat het beoogde doel daarmee wordt bereikt.".

Onze ervaring

Wij herkennen veel van wat de deskundigen in hun notitie noemen. Het steekt om duidelijk te moeten maken naar een klant dat het niet gaat om innovatie, maar aan het passen binnen de definitie. Het is naar om te moeten focussen op details in de ontwikkeling, terwijl je ingewikkelde technische knelpunten moet laten schieten, omdat je weet dat die afgewezen zullen worden. Met concepten als "het aanpassen van bestaande programmatuur" of "het integreren of doen samenwerken van bestaande programmatuur" voeren wij vaak gevechten met RVO om duidelijk te krijgen dat de aanvrager programmeertechnische knelpunten oplost en om te voorkomen dat (delen van) de aanvraag op grond van die concepten afgewezen worden. Ook vinden we het een blamage dat RVO niet aan wil geven welke talen ze als "formele programmeertaal" zien en daarvoor verwijzen naar een Wikipedia-pagina.

Aanbevelingen

In grote lijnen kunnen wij ons goed vinden in de aanbevelingen van de deskundigen. Wel kunnen wij ons voorstellen dat bepaalde adviezen zullen leiden tot nieuwe discussies: wanneer is er bijvoorbeeld sprake van "een concreet voorschrift waaruit de programmatuur kan worden gegenereerd, op zodanige wijze opgesteld dat het menselijk navolgbaar is". Het is duidelijk dat de deskundigen, niet te onrechte, aansturen op kwalitatief hoogstaande en goed gedocumenteerde software, maar of het eisen daarvan niet weer tot nieuwe uitsluitingen leidt, is de vraag.

Houding staatssecretaris

In deze fase is niet goed te duiden waar de staatssecretaris verder mee zal gaan wat betreft de adviezen, maar in haar kamerbrief noemt zij dat ze zal onderzoeken of het mogelijk is om (hoogstaande) toepassingen van AI en ML te ondersteunen en dat ze zal onderzoeken of ze meer mogelijkheden kan bieden voor het ondersteunen van modellering en simulatie door middel van ICT-tools. De andere aanbevelingen noemt zij niet, waardoor je zou kunnen gaan vermoeden dat ze daar niets in ziet.

Ook lijkt het dat ze het voorstel voor de alternatieve definitie niet (ongewijzigd) over zal nemen.

Hoe verder

We zijn natuurlijk erg benieuwd waar het naar toe gaat en wat er aan vernieuwing komt. Hopelijk zal de nieuwe definitie beter aansluiten op de huidige ontwikkelpraktijk en de mogelijkheid bieden om nuttige innovatie te stimuleren. Het zou heel fijn zijn als we kunnen zeggen dat speur- en ontwikkelingswerk gestimuleerd wordt en niet alleen bepaald ontwikkelingswerk dat binnen de krappe definities past... Later meer!

Toestemming plaatsen cookies

Deze website maakt gebruik van functionele, statistische en social media & overige cookies. Als u wilt aanpassen welke cookies en scripts gebruikt mogen worden, kunt u hieronder uw instellingen wijzigen.

Meer informatie is beschikbaar in de privacy- en cookiestatement.