This thesis investigates an alternative use of type reconstruction, as a tool for extracting knowledge from programs written in weakly typed language. We explore this avenue along two different, but related directions.
In the first part we present a static analyzer that exploits typing techniques to extract information from the COBOL source code: reconstructing informative types is an effective way for automatically generating a basic tier of documentation for legacy software, and is also a reliable starting point for performing further, higher-level program understanding processing.
In the second part of we apply similar principles to an apparently distant context: validating inter-component communication of Android applications by reconstructing the types of data within Intents - the building blocks of message passing in Android.
Both for COBOL and Android, we present a distinct implementation of the static analysis system proposed.
La tesi propone un utilizzo alternativo delle tecniche di type reconstruction come strumento per l'estrazione della conoscenza da programmi scritti in linguaggi debolmente tipati. L'approfondimento si dirama in due fronti distinti ma correlati. Nella prima parte si presenta un sistema che sfrutta una tecnica di typing per estrarre informazioni da programmi sorgente COBOL: ricostruire tipi informativi è un buon modo per generare automaticamente della documentazione preliminare sul software legacy ed è anche un buon punto di partenza su cui applicare ulteriori approcci di Program Understanding. Nella seconda parte si applicano principi simili ad un contesto apparentemente distante: verificare la comunicazione tra componenti di applicazioni Android tramite la ricostruzione dei tipi dei dati contenuti negli Intent - i mattoni sui quali si basa lo scambio di messaggi in Android. Infine, sia per COBOL che per Android presentiamo una implementazione distinta del sistema di analisi statica proposto.