
Doorontwikkelen met legacysoftware: lessen uit 15 jaar evolutie en optimalisatie
We willen graag enkele ervaringen delen van de afgelopen 15 jaar dat we aan belangrijke software werkten met een complexe legacy-component. Het stamt uit de jaren ’80, en is uitgegroeid tot een krachtig systeem boordevol domeinkennis en slimme algoritmes. De ‘killer feature’ is dat het om kan gaan met ingewikkelde geometrieën. Het programma heeft door de jaren heen zijn waarde meer dan bewezen.Â
Toch zijn systemen met zo’n lange geschiedenis zelden eenvoudig. De software bestond aanvankelijk vrijwel uitsluitend uit productiecode, zonder bijbehorende tests. Daardoor durfde niemand de code nog aan te passen. Om dit te doorbreken, kozen we niet voor een radicale herstart, maar voor een stapsgewijze aanpak.Â
Wees bescheidenÂ
Toen we startten, had de code een reputatie dat het ontoegankelijk was voor nieuwe medewerkers, grotendeels geschreven in oude Fortran-dialecten met wat C. Het was complex en duidelijk geworteld in paradigma’s van de jaren ’80. Toch leerden we al snel dat een eerste indruk kan bedriegen. Wat ouderwets lijkt, blijkt vaak juist doordacht — als je de moeite neemt het te begrijpen.Â
Respect voor het werk van onze voorgangers was cruciaal. Alleen door serieus te proberen hun keuzes te begrijpen, konden we de waarde en het potentieel van het systeem zien. Dat betekende soms ook erkennen dat latere toevoegingen het oorspronkelijke ontwerp juist onduidelijker hadden gemaakt.Â
Veranderende normen, blijvende waardeÂ
De tools en methodes waarmee we software ontwikkelen veranderen continu. Deze code hield een uitgebreide administratie bij voor een eigen memory manager, wat moderne compilers vanzelf doen. We vervingen deze component stap voor stap door een meer standaard aanpak. Dat deden we systematisch, zodanig dat het stapje voor stapje uitgevoerd kon worden, terwijl alles bleef werken.Â
Ook op andere vlakken moderniseerden we het systeem: we schakelden over naar Fortran-90-modules en voerden meer compiler-checks in. Hele stukken code konden vervangen worden door standaard functies. De waarde hiervan bleek ook bij nieuwe ontwikkelaars, die beter bereid waren om aan het project te blijven werken.Â
We leerden dat moderne normen niet automatisch betekenen dat je alles moet herschrijven. Vaak is het beter om ze geleidelijk te integreren in wat er al is. Zo konden we de kloof overbruggen tussen oud en nieuw, zonder het vertrouwen van gebruikers of ontwikkelaars te verliezen.Â

Een volgend levenÂ
Code blijft vaak veel langer bestaan dan gedacht. En dat betekende keuzes maken die duurzaamheid bevorderden. Zo bleven we naast onderhoud ook altijd werken aan nieuwe gebruikerswaarde. Zelfs toen herschrijven noodzakelijk was, zorgden we ervoor dat minstens de helft van onze tijd naar nieuwe features ging. Daarmee bleven we relevant én hielden we het vertrouwen van onze opdrachtgever.Â
Toen het programma uiteindelijk grotendeels werd uitgefaseerd, bleef een belangrijk deel — de rekenkern — overeind. We brachten het onder als een zelfstandige bibliotheek die nog steeds kan worden gebruikt. Een stille beloning voor de inzet om het systeem niet alleen werkend te houden, maar ook overdraagbaar en toekomstbestendig te maken.Â
Creatief proces of standaard stappenplan?Â
Is er een standaardrecept voor het aanpakken van legacysoftware? Nee, elke situatie vraagt om maatwerk. Bij legacy-code zijn de ideale standaardoplossingen vaak niet haalbaar. Er is creativiteit nodig om te zien wat wel haalbaar is, en hoe je daarnaartoe kan werken terwijl alles ondertussen blijft werken. Soms is het nodig om ‘vieze’ tussenoplossingen te gebruiken, of tijdelijke hacks die je later weer opruimt. Wat telt, is het einddoel: een robuust systeem dat leeft, evolueert en toekomst heeft.Â
In plaats van alles in één keer perfect te willen doen, werken we in pragmatische, systematische stappen. Want in legacy-ontwikkeling geldt: het ideale plan is zelden haalbaar, maar met een ‘goed genoeg’ plan — uitgevoerd met zorg en aandacht — kun je vaak nog decennia vooruit.Â
Meer informatie
Als u graag meer informatie wilt over het werken met legacy software, lees dan ons whitepaper over dit onderwerp of neem contact met ons op.