Enhancing Software System Upkeep with AI
How AI Automation Can Make Teams Better at Working with Legacy Systems
“These tests should be revised automatically whenever a system dependency changes. Additionally, employing machine learning to construct a software dependency graph within the legacy codebase can lead to the creation of the most accurate tests.”
As companies grow, software teams face the challenge of balancing cutting-edge technologies while simultaneously managing aging systems. This often leads to instability, not due to inherent flaws in the legacy code (typically decades old and written in languages like COBOL or Fortran), but due to fragile connections between old and new systems. To mitigate these issues, companies can employ AI technologies for software development automation. By using AI-driven tools, such as semantic proximity search, teams can dissect complex, poorly documented codebases. This not only improves code understanding but also helps the software team attain better grasp of issues that will arise.
The goal for many software teams should be to have a dedicated upkeep process in place that can build on top of legacy systems reliably, surrounding them with newer technologies by establishing durable links through automated testing, documentation, etc (Figure 1). This will effectively bridge the gap between old and new codebases while minimizing outages and enhancing performance.

Upkeep Approaches and Time-Resource Considerations
Integrating legacy systems with modern technologies demands careful planning to minimize risks and ensure smooth operations. We explore the personnel resource demand for common integration strategies and highlight three essential approaches that can help software teams manage legacy system challenges effectively (Figure 2).

Documentation: This represents a short-term strategy that will offer tangible value immediately. Teams can start off answering questions such as “what does this piece of code do?” and “what are some security risks in this codebase?” Often, software teams lack up-to-date documentation to answer these very basic questions. In addition, automated documentation can track updates in real time, providing a reliable maintenance and integration guide, especially for code that depend on upstream and downstream modules that will also evolve over time.
Robust Monitoring: Proactive monitoring systems with machine learning can predict and prevent failures early. This presents a mid-term strategy that requires dedicated personnel resources. We can use AI-powered code analysis to answer questions such as “which parts of the codebase are business-critical but lack testing?” Once established, monitoring systems will continuously track software performance. Anomaly detection with fine-tuned alerting mechanisms will notify teams to any potential issues.
Code migration: In the fast-evolving business landscape, code migration is can be very benefial. Legacy systems in some established companies will transition gradually to modern platforms to maintain functionality and meet new compliance requirements. Usually, the migration process can be prohibitly expensive, taking years with resource from cross-functional teams to achieve.
It’s worth emphasizing that AI-powered tools are starting to become specialized for these approaches, targeting teams in various segments of the code upkeep journey. By adopting the right tools with customization, businesses can significantly reduce the frequency and impact of system outages, maintaining operational integrity and paving the way for successful digital transformation.
AI Supercharges the Development Process

When handling a legacy codebase, especially one without dedicated maintainers or that has been neglected, the focus often revolves around the challenges of responsibility, costs, and reliability, which can be overwhelming. Teams might face a crossroad: some might consider rebuilding from scratch, while others might look into hiring specialists to restore order. The decision-making process is fraught with complexity; however, as eluded to in the last section, AI-powered code analysis and refactoring can pave the way for a new comprehensive approach to software maintenance.
How exactly can AI be applied to legacy systems? Take, for example, a team working with a legacy COBOL codebase. They might struggle to write tests that meet modern standards in an environment where surrounding repositories and databases are frequently updated.
As highlighted in Figures 1 and 2, analyzing legacy code can generate useful data, like documentation or new code in a contemporary language (as demonstrated in Figure 3). Although many teams might already be utilizing tools like ChatGPT, Claude, or Code Llama for such purposes, we see this as just the beginning. To truly enhance code upkeep, it is crucial for teams to integrate these practices at the CI/CD level. An important next step involves using the newly translated code to generate appropriate tests, ensuring ongoing monitoring of software quality. These tests should be revised automatically whenever a system dependency changes. Additionally, employing machine learning to construct a software dependency graph within the legacy codebase can lead to the creation of the most accurate tests.
This approach not only helps build modern capabilities around legacy code but also strengthens the interaction between old and new system components (through nearly-humanly-impossible higher test coverage, smarter logging, and thorough documentation). By establishing such connections, teams can gain a deeper understanding of software reliability at the system level. This understanding facilitates further enhancements down the road, such as fixing flaky tests and automatically rolling back code changes when certain tests fail.
Is this new “AI” approach one-size-fits-all? No, not exactly—there’s another aspect of the development process we need to discuss. Software teams need to tailor their solutions for managing their diverse codebases. Different programming languages like Fortran, COBOL, and Java each present unique maintenance challenges that are influenced by stakeholder needs and regulatory compliance.
For effective management in practice, teams must consider various factors including code dependencies, the integrity of code after refactoring, identification of crucial files for business operations, management of outdated features, outage mitigation, codebase ownership, and infrastructure tooling needs. However, we believe that integrating AI-powered tools early in the development process can significantly improve maintenance, testing, and overall software quality.
This adjustment to "shift-left" testing which initiates quality assurance closer to the start of development, can prevent bottlenecks and reduce both costs and the time taken to discover issues later. Why wait till the software is completed to do quality assurance when different parts of the software can be developed and tested with AI-tools? In addition, businesses should not rely solely on the testing creativity of its engineering, product, and QA teams, as there is always preventable human blind spots in software product development. This is especially critical in environments with legacy systems, where resolving issues during late stages can be complex and expensive. (We plan to explore this topic further in a future blog post). Consequently, it's crucial for teams to establish AI-powered testing baselines early as they integrate modern software capabilities into their tech stacks.
In short, nascent AI software tools designed for software developers provide detailed case-by-case analyses, ensuring that systems meet modern compliance and security standards while maintaining their operational integrity.
Nova AI is Here to Help
Nova AI specializes in cutting-edge code analysis, automated test generation and code refactoring tools, which are utilized to modernize legacy systems. By applying advanced machine learning techniques, Nova not only enhances the understanding of codebases but also automates the transition to earlier quality assurance to meet new software infrastructure best practices, ensuring systems remain robust and efficient through and beyond the development cycle.
We are dedicated to supporting organizations in navigating the complexities of software systems. Please visit us to learn more.