De meeste systemen waarin artificial intelligence (ai) en big data zitten, worstelen met ernstige kwaliteitsproblemen. Vooral de onderhoudbaarheid en testbaarheid baren zorgen. De Software Improvement Group (SIG) stelt dat in zijn Benchmark Report 2023 waarin de kwaliteit van software tegen het licht wordt gehouden. Gebaseerd op uitgebreide analyse van systemen concludeert SIG dat de software die met behulp van ai wordt gebouwd, behoorlijk tegenvalt.
Volgens Luc Brandts, groepsdireceur SIG, ligt de kwaliteit van systemen die op die manier tot stand komen, ver beneden de verwachtingen. Dat is jammer, meent hij, want ai is zeker geen tijdelijke hype maar een blijvertje. Zo ook de software waarin ai zit. Brandts: ‘Met andere woorden, je creëert hiermee de ‘legacy’ van morgen.’
Overigens is ai niet de enige ontwikkeling waarover de SIG in zijn jaarlijkse blik op de staat van de software-technologie kritisch is. Ook het gebruik van opensourcesoftware doet alarmbellen rinkelen. Kwetsbare open source libraries worden net als bij de vorige benchmark als een probleem aangemerkt.
Maar de meeste aandacht gaat dit jaar uit naar ai in software. De benchmark laat zien dat ai- en big data-systemen aanzienlijk minder goed zijn te onderhouden dan andere systemen. 73 procent van dergelijke systemen scoren ver onder het gemiddelde van de benchmark. Dit komt vooral door de omvang van de code. Veel ai-systemen bestaan uit lange blokken code die ook nog eens complex zijn. Overigens constateert SIG dat er best wel goed onderhoudbare ai-systemen bestaan, maar die zijn ver in de minderheid.
Grote, complexe blokken
Probleem is dat grote en complexe blokken code moeilijk zijn te analyseren, lastig zijn te wijzigen, moeilijk zijn te hergebruiken en ook lastig zijn te testen. Testen die alles omvatten, zijn bijna onmogelijk uit te voeren. De hoeveelheid testcode in een ai- of big data-systeem is dramatisch klein. Slechts 1,5 procent van de code is testcode, terwijl dit normaal 43 procent is. Geringe onderhoudbaarheid maakt het steeds moeilijker om veranderingen door te voeren. Uitbreiding en integratie met andere software worden duurder, terwijl de kans op fouten groter wordt. Dit kan ook de overdracht van dit soort systemen aan andere teams belemmeren.
Dat de code zo lang en ingewikkeld wordt, komt door een gebrek aan focus in de code. De code heeft meer dan één verantwoordelijkheid. Ook gebrek aan abstractie speelt een rol: nuttige stukken code zijn niet afgezonderd in aparte eenheden. In plaats daarvan is sprake van kopiëren en plakken.
De slechte onderhoudbaarheid heeft diverse achtergronden. Data scientists doen vaak een enkel experiment. Ze hebben zelden de intentie om iets af te leveren dat lang in productie kan blijven. Bij hun opleiding wordt minder aandacht besteed aan best practices bij software engineering. Ook de ontwikkeltools die datawetenschappers gebruiken, missen de ondersteuning voor deze best practices.