Reverse-engineering van broncode is een vruchtbare aanpak voor het ‘renoveren’ van software, concludeert CWI-promovendus Davy Landman in zijn proefschrift, dat hij aankomende donderdag verdedigt. Met de term doelt hij op het opwaarderen van verouderde software naar hedendaagse omgevingen, zodat deze weer verder aangepast kan worden.
Landman wilde weten of de broncode voldoende informatie biedt om domeinmodellen op te stellen van wat de software doet, of dat daar aanvullende informatie voor nodig is zoals ontwerpdocumenten. Uit verschillende voorbeelden met bestaande software bleek dat het goed mogelijk is om handmatig dergelijke domeinmodellen op te stellen met alleen de broncode.
Daarna keek hij naar het automatiseren van dit proces. Het grote probleem daarbij is dat het voor tools lastig is om vast te stellen wat belangrijk is en wat niet. Door naar een aantal opensourceprojecten te kijken, concludeerde Landman dat zowel naar de cyclomatische complexiteit als naar het aantal coderegels gekeken kan worden om de interessante delen uit de broncode te lichten. Tot nog toe werd aangenomen dat deze twee metrieken sterk gecorreleerd zijn, maar volgens Landman is dat niet het geval.
Daarnaast keek hij hoe het succes van statische analyse beïnvloed wordt door reflectie, waarbij de broncode zijn eigen interne structuur kan inspecteren en aanpassen. Dat onderzocht hij aan de hand van opensourceprojecten die de Reflection-api van Java gebruiken. Het blijkt dat deze techniek een forse hindernis kan opwerpen als er geen rekening wordt gehouden met analyseerbaarheid.
