Softwareonderhoud wordt geschat op 75% tot 90% van de kosten van de levenscyclus van softwareontwikkeling, en de kosten worden verwacht te stijgen. Naarmate systemen hun grenzen overschrijden, vereist het onderhouden en refactoren van code steeds meer inspanning en introduceert het ernstige risico's, aangezien cruciale IP en bedrijfs-/systeemkennis vaak verborgen zit in verouderde onderdelen.

Aangezien hightech-bedrijven vaak vele miljoenen regels code in hun systemen hebben, staat bekend dat het wijzigen van oude software duur, tijdrovend en foutgevoelig is. Om een legacy-toepassing te refactoren of zelfs efficiënt te onderhouden, is het essentieel om een goed begrip van de code te hebben. Welke techniek hiervoor gebruikt kan worden, hangt af van de specifieke situatie.

Dynamische analyse

Statische analyse kan helpen om inzicht te krijgen in de architectuur, gegevens en afhankelijkheden van een toepassing. Het helpt echter niet bij het begrijpen van programmaflow, gegevensstroom (tussen oproepen, lezen/schrijven naar de database en schermgegevens), identificeren welke code wordt uitgevoerd om specifieke use cases te vervullen, of ervoor zorgen dat alle bedrijfsregels in overweging zijn genomen. Om deze informatie te waarborgen, is dynamische analyse nodig. Dynamische analyse kan de kenniskloof dichten door het statische model aan te vullen met een uitgebreide analyse van de toepassing tijdens runtime.

Legacy-toepassingen en technical debt

Dit project ontwikkelt methodologieën en tools om statische en dynamische analyse van code te combineren, met als doel industriële ingenieurs te voorzien van informatie voor het begrijpen van legacy-toepassingen en het aanpakken van technical debt. De haalbaarheid en toegevoegde waarde van de aanpak worden gevalideerd aan de hand van casestudies, waarbij industriële software uit het medische domein wordt gebruikt.