Legacy software systems still represent a significant portion of enterprise information systems. However, their evolution and maintenance are often challenging due to the lack of updated documentation, the increasing complexity of the codebase, and the gradual loss of knowledge about the system’s internal structure. These factors make legacy applications difficult to understand and represent a major obstacle in software maintenance and modernization processes. This thesis proposes an approach to support the understanding and modernization of legacy applications through the integration of static code analysis, knowledge graphs, and AI agents based on large language models (LLMs). Starting from the source code of a Java/JSP legacy application, a pipeline has been designed and implemented to automatically extract relevant entities and relationships, representing them within a knowledge graph stored in the Neo4j graph database. Graph analytics algorithms are applied to the resulting graph in order to identify central components and structural communities within the application. These insights are then used to guide the automatic generation of technical documentation through large language models, improving the availability and accessibility of knowledge about the analyzed system. The generated documentation is subsequently processed using embedding techniques and indexed in a vector database, enabling a retrieval-augmented generation approach. On top of this infrastructure, a question-answering system based on AI agents has been implemented, capable of using multiple tools to answer questions about the application and assist developers in understanding legacy code. The proposed approach has been validated through the analysis of a real-world case study and integrated into a containerized architecture to facilitate reproducibility and reuse by other developers. The results show that the integration of knowledge graphs, large language models, and multi-agent systems can provide effective support for the understanding and modernization of legacy applications.

Le applicazioni software legacy costituiscono ancora una componente rilevante dei sistemi informativi aziendali. Tuttavia, la loro evoluzione e manutenzione risultano spesso complesse a causa della scarsa disponibilità di documentazione aggiornata, della crescente complessità del codice e della progressiva perdita di conoscenza sul funzionamento del sistema. Questi fattori rendono difficile la comprensione delle applicazioni esistenti e rappresentano un ostacolo significativo nei processi di manutenzione e modernizzazione del software. La presente tesi propone un approccio volto a supportare la comprensione e la modernizzazione di applicazioni legacy attraverso l’integrazione di tecniche di analisi statica del codice, knowledge graph e agenti basati su modelli linguistici di grandi dimensioni (LLM). A partire dal codice sorgente di un’applicazione Java/JSP, è stata progettata e sviluppata una pipeline in grado di estrarre automaticamente entità e relazioni rilevanti, rappresentandole all’interno di un grafo di conoscenza persistito mediante il database a grafo Neo4j. Sul grafo risultante vengono applicati algoritmi di graph analytics, con l’obiettivo di individuare componenti centrali e strutture significative dell’applicazione. Tali informazioni vengono utilizzate per guidare la generazione automatica di documentazione tecnica tramite modelli linguistici, migliorando la disponibilità di conoscenza sul sistema analizzato. La documentazione generata viene successivamente elaborata tramite tecniche di embedding e indicizzata in un vector database, consentendo l’adozione di un approccio di retrieval-augmented generation. Su questa base è stato implementato un sistema di interrogazione basato su agenti AI, capace di utilizzare diversi strumenti per rispondere a domande sul funzionamento dell’applicazione e supportare gli sviluppatori nelle attività di comprensione del codice legacy. L’approccio proposto è stato validato attraverso l’analisi di un caso studio reale e integrato in un’architettura containerizzata per facilitarne la riproducibilità e l’utilizzo da parte di altri sviluppatori. I risultati evidenziano come l’integrazione di knowledge graph, modelli linguistici e sistemi multi-agent possa costituire un supporto efficace nei processi di comprensione e modernizzazione di applicazioni legacy.

Dal codice legacy alla conoscenza strutturata: un approccio multi-agent alla modernizzazione delle applicazioni

BACCILIERI, MATTEO
2024/2025

Abstract

Legacy software systems still represent a significant portion of enterprise information systems. However, their evolution and maintenance are often challenging due to the lack of updated documentation, the increasing complexity of the codebase, and the gradual loss of knowledge about the system’s internal structure. These factors make legacy applications difficult to understand and represent a major obstacle in software maintenance and modernization processes. This thesis proposes an approach to support the understanding and modernization of legacy applications through the integration of static code analysis, knowledge graphs, and AI agents based on large language models (LLMs). Starting from the source code of a Java/JSP legacy application, a pipeline has been designed and implemented to automatically extract relevant entities and relationships, representing them within a knowledge graph stored in the Neo4j graph database. Graph analytics algorithms are applied to the resulting graph in order to identify central components and structural communities within the application. These insights are then used to guide the automatic generation of technical documentation through large language models, improving the availability and accessibility of knowledge about the analyzed system. The generated documentation is subsequently processed using embedding techniques and indexed in a vector database, enabling a retrieval-augmented generation approach. On top of this infrastructure, a question-answering system based on AI agents has been implemented, capable of using multiple tools to answer questions about the application and assist developers in understanding legacy code. The proposed approach has been validated through the analysis of a real-world case study and integrated into a containerized architecture to facilitate reproducibility and reuse by other developers. The results show that the integration of knowledge graphs, large language models, and multi-agent systems can provide effective support for the understanding and modernization of legacy applications.
2024
AI Agents for Legacy Application Understanding and Modernization
Le applicazioni software legacy costituiscono ancora una componente rilevante dei sistemi informativi aziendali. Tuttavia, la loro evoluzione e manutenzione risultano spesso complesse a causa della scarsa disponibilità di documentazione aggiornata, della crescente complessità del codice e della progressiva perdita di conoscenza sul funzionamento del sistema. Questi fattori rendono difficile la comprensione delle applicazioni esistenti e rappresentano un ostacolo significativo nei processi di manutenzione e modernizzazione del software. La presente tesi propone un approccio volto a supportare la comprensione e la modernizzazione di applicazioni legacy attraverso l’integrazione di tecniche di analisi statica del codice, knowledge graph e agenti basati su modelli linguistici di grandi dimensioni (LLM). A partire dal codice sorgente di un’applicazione Java/JSP, è stata progettata e sviluppata una pipeline in grado di estrarre automaticamente entità e relazioni rilevanti, rappresentandole all’interno di un grafo di conoscenza persistito mediante il database a grafo Neo4j. Sul grafo risultante vengono applicati algoritmi di graph analytics, con l’obiettivo di individuare componenti centrali e strutture significative dell’applicazione. Tali informazioni vengono utilizzate per guidare la generazione automatica di documentazione tecnica tramite modelli linguistici, migliorando la disponibilità di conoscenza sul sistema analizzato. La documentazione generata viene successivamente elaborata tramite tecniche di embedding e indicizzata in un vector database, consentendo l’adozione di un approccio di retrieval-augmented generation. Su questa base è stato implementato un sistema di interrogazione basato su agenti AI, capace di utilizzare diversi strumenti per rispondere a domande sul funzionamento dell’applicazione e supportare gli sviluppatori nelle attività di comprensione del codice legacy. L’approccio proposto è stato validato attraverso l’analisi di un caso studio reale e integrato in un’architettura containerizzata per facilitarne la riproducibilità e l’utilizzo da parte di altri sviluppatori. I risultati evidenziano come l’integrazione di knowledge graph, modelli linguistici e sistemi multi-agent possa costituire un supporto efficace nei processi di comprensione e modernizzazione di applicazioni legacy.
Sistemi multi-agente
Software legacy
Modelli linguistici
Knowledge Graphs
RAG
File in questo prodotto:
File Dimensione Formato  
Dal_codice_legacy_alla_conoscenza_strutturata__un_approccio_multi_agent_alla_modernizzazione_delle_applicazioni___pdfA.pdf

embargo fino al 14/10/2027

Dimensione 697.01 kB
Formato Adobe PDF
697.01 kB Adobe PDF

I documenti in UNITESI sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.14251/5790