Verborgen logica en geïsoleerde kennis
De D-Flow FM calculation kernel is grotendeels geschreven in Fortran. In de loop van tientallen jaren is de software continu verder ontwikkeld en uitgebreid. Hierdoor ontstond een omvangrijke codebase waarin veel technische en domeinspecifieke kennis verweven zit.
Tegelijkertijd gingen senior developers en domeinexperts die aan de oorspronkelijke software hadden gewerkt met pensioen of verlieten zij de organisatie. Daarmee dreigde een deel van de historische context en kennis over ongedocumenteerde dependencies verloren te gaan.
Voor Deltares was het daarom belangrijk om opnieuw volledige grip te krijgen op de bestaande softwarearchitectuur. Developers moesten snel antwoord kunnen krijgen op vragen over:
- Exacte call trees, dependencies en het gebruik van global variables en global state.
- De inhoudelijke consistentie tussen de Fortran-code en de officiële technische referentiedocumentatie, waaronder TechRef-PDF’s.
- Complexe code paths die met traditionele zoekmethoden veel tijd kosten om volledig te analyseren.
Re:App Reverse Architecting
Samen met SUE startte Deltares een Reverse Architecting-project om de D-Flow FM kernel volledig te analyseren en in kaart te brengen met Re:App, SUE’s AI-gedreven oplossing voor applicatiemodernisatie. Het doel was niet om de bestaande software direct te vervangen, maar om eerst inzichtelijk te maken hoe de applicatie daadwerkelijk is opgebouwd en hoe code, dependencies en technische documentatie met elkaar samenhangen.
Code en context samenbrengen
De volledige Fortran-codebase van circa zes miljoen regels code werd in Re:App opgenomen, samen met CMake-buildconfiguraties, utility libraries en technische documentatie.
Hierdoor kon Re:App niet alleen individuele bestanden analyseren, maar verbanden leggen over de volledige applicatie.
Knowledge Graph en hybrid search
Binnen Re:App configureerde SUE een hybride zoekarchitectuur waarin onderdelen uit de source code, zoals subroutines en variabelen, direct werden gekoppeld aan relevante documentatie en hydrologische formules.
Deze Knowledge Graph maakt het mogelijk om vragen niet alleen op basis van tekstuele overeenkomsten te beantwoorden, maar ook vanuit de daadwerkelijke relaties binnen de softwarearchitectuur.
Gespecialiseerde AI-agents
Voor specifieke analyses werden gespecialiseerde subagents ingezet. Zo kunnen onder andere automatisch visuele Mermaid call-tree diagrams worden gegenereerd.
Door taken en context af te bakenen per agent blijft de analyse gericht en kunnen complexe architectuurvragen over een grote codebase nauwkeurig worden onderzocht.
Validatie door domeinexperts
De resultaten werden vervolgens getest en gevalideerd door developers en domeinexperts van Deltares. Via de chatinterface van Re:App konden zij concrete vragen stellen over de architectuur, code paths en technische documentatie en de antwoorden direct controleren.
Van miljoenen regels code naar direct inzicht
De D-Flow FM calculation kernel is met Re:App reverse architected. Daarmee heeft Deltares veel sneller inzicht in de structuur, dependencies en verborgen logica binnen een omvangrijke en bedrijfskritische legacy-codebase. De aanpak werd getoetst aan vooraf bepaalde succescriteria en vergeleken met reguliere AI coding assistants, zoals GitHub Copilot.
Inzicht over de volledige codebase
Waar traditionele AI coding assistants voornamelijk werken vanuit lokale context, kan Re:App verbanden onderzoeken over de volledige repository.
Daardoor kunnen developers vragen stellen over top-level entry points, complexe dependencies tussen modules en de bredere architectuur van de applicatie.
Code en documentatie direct gekoppeld
Re:App koppelt source code aan interne coding guidelines en technische referentiedocumentatie.
Vragen over bijvoorbeeld hydrologische formules kunnen daardoor direct worden verbonden aan de relevante implementatie en bijbehorende broninformatie.
Minder ruimte voor hallucinaties
Door de integratie met de Knowledge Graph baseert Re:App analyses op daadwerkelijk aanwezige bestanden, subroutines en onderlinge relaties binnen de codebase.
Dit verkleint de kans op incorrecte of verzonnen verwijzingen en maakt resultaten beter controleerbaar door developers.
Architecturale verbanden zichtbaar
Naast het samenvatten van grote en complexe routines maakt Re:App ook onderlinge afhankelijkheden en mogelijke inconsistenties tussen modules inzichtelijk.
Hierdoor ontstaat niet alleen inzicht in wat afzonderlijke stukken code doen, maar vooral in hoe de applicatie als geheel functioneert.
Van uren zoeken naar antwoorden in seconden
Onderzoek naar complexe code paths vergde voorheen vaak uren of zelfs dagen en bestond onder andere uit handmatige zoekopdrachten met tools als grep.
Met Re:App kunnen developers dezelfde architectuurvragen rechtstreeks stellen en binnen enkele seconden gericht inzicht krijgen in de relevante code, dependencies en documentatie.
"We zijn blij met de resultaten van het project. Re:App geeft ons een eenvoudigere manier om beter inzicht te krijgen in de complexe code achter onze software."
Let's Talk
Let's Talk
* required