Software Maintenance and Evolution

This expertise turns complex, aging software into an enabler of long‑term product evolution. By applying advanced analysis techniques and automated methodologies, it helps organizations regain control over large multidisciplinary systems, reduce technical debt, and modernize safely. SMEvo empowers engineers to understand, improve, and evolve their software with greater efficiency, predictability, and confidence.

Software Maintenance and Evolution (SMEvo) addresses the fundamental challenge of keeping complex, long-lived, and multidisciplinary software systems adaptable, dependable, and efficient. In the high-tech domains where software interacts closely with hardware architectures, physical processes, data, and operational constraints, maintenance is not an afterthought: it is a dominant cost factor and a strategic enabler of long‑term product evolution. As systems grow over years or decades, they increasingly suffer from legacy technologies, architectural erosion, shifting requirements, and loss of system knowledge, making change progressively harder and riskier. These challenges are amplified in systems that use multiple programming languages, span multiple engineering disciplines, are tightly coupled to their integration context, and are performance‑ or dependability-critical.

Focus areas of research

Automated Software Understanding & Knowledge Extraction

Research on techniques to extract structure, behavior, and semantics from large, polyglot codebases, combining static and dynamic analysis, and knowledge graphs to enable deep understanding and fact-based decision‑making on how to evolve software systems.

Software Evolution, Restructuring & Automated Transformation

Research on methods and pipelines that support the safe, efficient, and reliable evolution of complex software systems. This includes identifying structural problems, analyzing dependencies, deriving restructuring and migration strategies, and executing large-scale changes using automated or semi-automated techniques such as program transformations, code mods, refactoring engines, and LLM-augmented workflows.