Software architecture recovery has long been central to research in program understanding and reengineering. Understanding and modernizing large-scale legacy software requires accurate reconstruction of its architectural structure. Traditional recovery approaches based on code clustering or template matching struggle to deliver semantically meaningful decompositions, especially in the face of architectural drift and inadequate documentation. We present a hybrid architecture recovery method that integrates Large Language Models (LLMs) with a property-based Knowledge Graph derived directly from source code. Our approach iteratively explores, proposes, and refines component boundaries through a three-phase process: Explore, Allocate, and Shift. This process combines structural analysis with semantic reasoning and prompt engineering to produce coherent component hierarchies. We evaluate our system on three real-world C codebases (cJSON, SQLite, and Bash), and compare the recovered architectures against established reference architectures and gold standards.
Syed Quadri, K. Kontogiannis, Derek Truong· Annual International Compute...· 0 citations
Complex source code analysis tasks for program understanding, verification, and compliance with regulatory frameworks and standards require appropriate in-memory models of the source code being analyzed. We present a flexible, multi-language pipeline supporting such analyses. By leveraging configurable front-end parsers and corresponding EBNF grammars, the pipeline automatically identifies the source language, provisions the appropriate parsers and AST factories, and dynamically generates in-memory Abstract Syntax Trees (ASTs) tailored for source code analysis rather than traditional compilation. Individual ASTs generated per source file are linked into a unified structure representing the entire application, with semantic linking that resolves references to functions and variables while respecting scoping. We demonstrate the approach on compliance analyses that trace sensitive data across Java and C++ modules and detect violations of NIST 800-53 controls, and show that it is tractable with respect to parsing time and the size of the ASTs generated.
Mete Isiksalan, K. Kontogiannis, Michael Rennie et al.· Annual International Compute...· 0 citations