Grants and Funding

RefactorAI

Legacy systems are outdated systems with degraded architecture, obsolete features, and inefficient technologies. To stay competitive in today’s rapidly evolving digital landscape, organizations must modernize their legacy systems and update them to integrate with modern technologies. However, the modernization process presents significant challenges, as it requires tedious manual refactoring tasks, often further complicated by the lack of proper documentation and the unavailability of the original developers. To address these challenges, we propose the RefactorAI project, which focuses on developing an AI-integrated methodology and tool to assist developers in the refactoring tasks associated with legacy systems. The proposed approach leverages the strengths of AI, in particular Generative AI (GenAI) in combination with existing modernization approaches, while incorporating human oversight to limit the drawbacks of AI, such as LLM hallucinations. By integrating AI into the refactoring process, we aim to significantly reduce the time and cost associated with modernization efforts, while also mitigating the risks of technical debt and system vulnerability. The outcomes of RefactorAI are expected to contribute to economic, social, and ecological sustainability by making software systems more efficient, reducing technical debt, and facilitating the adoption of new technologies.

Co-Existence of Modeling Language Versions and their Bounded Co-Evolution (COEE)

Preserving the history of diverse engineering artifacts (e.g., design models, requirements, code) is vital for software engineering. Version control systems, however, focus on textual changes without understanding the syntax/semantics of their underlying languages (metamodels) let alone nuances of language evolutions (e.g., UML 2.1 to UML 2.2). Other platforms manage changes better but typically do not support arbitrary artifacts, languages, and versions. Yet, without understanding this history we do not truly understand how engineering language evolution affects engineering artifacts, their consistency, and traceability. Projects tend to use multiple languages concurrently but their evolutions rarely coincide (e.g., UML, JAVA, or EARS languages change at different times). Hence, artifacts of different versions of a given language may co-exist (e.g., client code in Java 1.8 and server code in Java 20) with artifacts of different versions of other languages (e.g., a UML 2.1 model and EARS 2009 requirements). The first main objective of this research is to develop a mechanism for language versions and their artifacts to co-exist even within the same project. With co-existing artifacts, however, we need to handle quadratically growing n-ary relationships among all versions of all languages (e.g., UML 2.1 to Java 1.8 consistency is not exactly UML 1.4 to Java 20 consistency). The second main objective is to support n-ary consistency and traceability among arbitrary language versions and their artifacts. This project addresses the co-existence and co-evolution of languages and their artifacts by first establishing a clear foundation for understanding changes at the language and artifact levels. It then develops a generic mechanism for recording and maintaining a change history enabling the automated co-existence of language versions and their respective artifacts. Finally, it develops n-ary methods for the co-evolution of artifacts and their relationships with arbitrary language versions. State-of-the-art does address the co-evolution of metamodels (languages) and models (artifacts). However, it does not address what happens if some artifacts evolve but not others. Similarly, state-of-the-art does address the co-evolution of some relationships such as consistency. However, it does not address quadratically growing n-ary relationships among all versions of all languages. Our objectives are thus both novel and vital for model-driven engineering today.