Verouderde code omzetten naar een moderne taal met AI: een praktijkcase

Misschien wel de fijnste eigenschap van generatieve AI: je kunt er taken aan overlaten die tijdrovend, bewerkelijk, foutgevoelig of zelfs ronduit saai zijn. Een van de lifehacks om je leven een stuk aangenamer te maken door het slim inzetten van AI, is het omzetten van softwarecode. Veel organisaties hebben applicaties in gebruik waarvan de code verouderd is. Soms is de kennis over het systeem zelfs niet meer aanwezig in de organisatie.

Hoe werkt dat in de praktijk, het converteren van code met behulp van AI? We nemen een praktijkcase onder de loep waarbij verschillende AI-tools zijn ingezet om low-code om te zetten naar een moderne, flexibele stack.

Low-code als LEGO-blokjes

Low-code platforms bieden een laagdrempelige manier om applicaties te ontwikkelen. Developers kunnen functionaliteiten bouwen door vooraf gedefinieerde, visuele blokken aan elkaar te koppelen – net als LEGO-blokjes. De grootste voordelen van deze vorm van programmeren zijn de eenvoud en laagdrempeligheid. Maar er zijn ook beperkingen: low-code biedt weinig flexibiliteit of controle over de code. Dat maakt het lastig om maatwerk te leveren of in te spelen op veranderende eisen.

Ook kan de afhankelijkheid van een specifiek low-code platform op lange termijn beperkend werken. Om die redenen ontstond bij de organisatie in onze praktijkcase de wens om over te stappen naar een moderne stack. Met als doel: de wendbaarheid en schaalbaarheid van de software verbeteren.

Het handmatig omzetten van code is een tijdrovende, foutgevoelige en daarmee kostbare taak. Daarom koos het Info Support-team voor de inzet van AI. Eerst werd de codebase opgeknipt in kleinere, behapbare delen. Dit maakte het mogelijk om de AI-modellen gericht in te zetten voor specifieke taken. Zo zette GPT-4 delen om van de low-code om naar de gewenste programmeertaal.

Naast de daadwerkelijke codeomzetting, genereerde AI ook automatisch testen en functionele documentatie. Dit zorgde ervoor dat de kwaliteit en consistentie van de code geborgd bleef. Het team liep, waar nodig, de AI-gegenereerde code nog handmatig na om deze te optimaliseren.

Belangrijkste lessen

Hoewel het project een succes was, kwamen er ook waardevolle lessen naar voren. Zo bleek het cruciaal om de code op te delen in behapbare taken die geschikt zijn voor de AI-modellen. Te grote of complexe taken leverden minder goede resultaten op.

Ook het zorgvuldig opstellen en iteratief verfijnen van de prompts was een belangrijke les, vertelt Joop Snijder, Head of Research Center AI: “We moesten de instructies en gewenste output heel specifiek maken. We maakten gebruik van GPT-4 en dat platform heeft nogal de neiging om zich ergens makkelijk van af te maken. Een voorbeeld: we voerden code in met het verzoek om deze om te zetten, en de output was dat GPT-4 alleen de eerste twee functies had geconverteerd. Met als toevoeging ‘de rest zet je op dezelfde manier om’. Daar hadden we natuurlijk niet zo veel aan. Dus moesten we heel duidelijk aangeven dat de hele code moest worden omgezet. Sowieso heeft GPT-4 best de neiging om te ‘kwebbelen’: dat je output krijgt met een hoop toelichting. Dan moet je ook weer hele specifieke instructies geven dat dat je alleen de omgezette code als output wil hebben. Het was wel af en toe een kwestie van stevig door prompten.”

Ten slotte was de samenwerking tussen data scientists, software engineers en domeinexperts onontbeerlijk. De data scientists zorgden voor de optimale inzet en aansturing van de AI, terwijl de software engineers de kwaliteit en architectuur van de code bewaakten. De domeinexperts brachten de benodigde vakinhoudelijke kennis in om de code te laten aansluiten op de bedrijfscontext.

Tijdswinst van wel 50 procent

De uiteindelijke voordelen waren overduidelijk: het team schatte vooraf dat het volledige project 25 tot 30 procent sneller zou gaan met behulp van AI. Achteraf bleek de tijdswinst zelfs op te lopen tot 50 procent, mede doordat de AI-modellen razendsnel grote hoeveelheden code kunnen genereren en analyseren. Daarnaast zorgden de automatisch gegenereerde testen ervoor dat de kwaliteit van de code gewaarborgd bleef. Ook bleek AI in staat om functionele documentatie te genereren die zelfs voor niet-technische stakeholders begrijpelijk was. Dit gaf het team waardevolle inzichten in de werking en samenhang van de code.

“Er is veel verouderde softwarecode in omloop die vroeg of laat zal moeten worden omgezet naar moderne talen”, aldus Joop. “Deze praktijkcase heeft laten zien dat het omzetten van code iets is wat je heel goed met behulp van AI kunt doen: nog een stuk sneller ook. Ik voorzie dat dit voor ontwikkelteams een van de beste use cases zal zijn.”