Skip to content
Bits&Chips
×
×
About
Memberships
Advertising
Magazines
Videos
Contact

Log in

Background

Why architecture matters more than ever in the age of AI

2 July 2026

Robert van Uden is practice lead software architecture at Alten.

Reading time: 8 minutes

Applying AI with an architectural mindset makes it a genuine force multiplier. Applying it without one makes it a complexity multiplier.

At Alten, we’ve been doing legacy system modernization projects for decades. Generative AI has significantly changed the way we approach these projects. Stories about creating new applications in hours instead of months have been competing with each other over the productivity gains AI can bring. However, most of these stories focus on greenfield development. But what does AI actually mean for legacy systems? Should we continue maintaining existing code or should we start from scratch and throw away the old code and prompt our way to a new codebase?

As is always the case with these types of questions, it depends. If we were to prompt: “Make me a new operating system with better performance than Windows and Linux,” the result wouldn’t be usable. These systems are far too complex, too deeply embedded in real-world constraints unavailable in an LLM. On the other hand, if we’re dealing with a small application of, say, 10 KLOC, then a rewrite from scratch might be a viable option.

This tells us that for most systems, we need to keep working with existing legacy codebases, making improvements and extending their functionality. But what’s the essential gain brought by AI-assisted software development? And what are the pitfalls?

Unstable feedback loop

Before the advent of generative AI, we were already dealing with what can be described as the “vicious cycle of legacy systems.” This vicious cycle begins when the code needs to be changed to support a new requirement or to fix a problem. The team must decide whether there’s time to refactor the existing code and realize a future-ready design. In many cases, project pressure wins and refactoring is postponed in favor of adding code on top of what already exists. This short-term solution makes the system larger and increasingly more difficult to understand.

The practice of adding code instead of refactoring creates an unstable feedback loop in which complexity increases over time, productivity decreases, risk grows and consequently, the cost of change rises. Companies have struggled and some have even gone bankrupt over this, as they were unable to ship new features and lost ground to their competitors. The public sector suffers from this too. Governments have been unable to implement new legislation because the civil-service systems that need to be updated are no longer fully understood by anyone. Experience confirms that tightly coupled, poorly structured architectures are a core predictor of poor software delivery performance and that teams operating under them consistently struggle to deploy safely and independently.

The root cause of this lies in the interaction between two factors: the quality of the software architecture and our capacity to understand it. Well-designed software is significantly easier to navigate than poorly designed software – that much is true. But even a well-designed system eventually grows to a size and complexity that exceeds what any individual can hold in their head. Our cognitive capacity is the scaling constraint. A more experienced software engineer can navigate a legacy codebase more effectively than a junior one, and a well-structured system is easier for both. But as systems grow, even the most experienced engineer may be outperformed by an LLM in raw comprehension of an unfamiliar codebase.

A well-defined architecture compensates for our limited cognition by making local reasoning possible. When a system is decomposed into components with clear responsibilities and well-defined interfaces, an engineer doesn’t need to understand the entire codebase to reason confidently about a specific change. The engineer only needs to understand the relevant component and its contract with the rest of the system. Complexity is contained rather than unbounded. Architecture also externalizes design intent that would otherwise exist only in the minds of the engineers who built the system, creating a shared understanding that outlasts any individual and survives team turnover.

The absence of a well-defined architecture achieves the opposite. Complexity is unbounded. To understand one thing, an engineer must understand everything. This creates a hard dependency on the engineers who originally built the system. Knowledge that’s rarely documented and that walks out the door when those people leave. The result is a direct and measurable impact on time to market: It simply takes too long for a new team to become productive.

Coupled with our limited ability to understand complex systems is another factor: risk aversion. Because engineers don’t fully understand the current software or the impact of a code change, only ‘safe’ changes are made, which inherently increases the architecture’s complexity over time. These are incremental patches that avoid touching what’s fragile but add another layer of accidental complexity. New technical debt is created that’s unlikely to be paid back.

AI-assisted decomposition

So, what happens when we simply let AI solve an issue? It will figure out a solution and provide a pull request consisting of a lot of new code. The issue appears to be resolved, while in fact, the problem has grown bigger. We’re adding even more code than before the AI era, further increasing the complexity of the codebase. Without structure, AI becomes an accelerator of the very cycle we’re trying to escape.

The only scalable way to deal with complex systems is to decompose the architecture into components that are loosely coupled and have high cohesion. This allows both humans and AI-assisted tooling to reason about the system effectively. It also provides a clear standard for evaluating whether an AI-generated solution is compliant with the intended design.

Consider a monolithic climate control system where control loop logic is scattered across the user interface, driver software, configuration and API modules. A first step toward decomposition is extracting a dedicated control loop component with a well-defined interface. Once isolated, both engineers and AI agents can reason about control loop behavior independently, test it in isolation and change it without fear of cascading side effects. The scope of any change, and the scope of what AI needs to understand to make that change correctly, shrinks drastically.

This is also where AI brings unique value in the legacy context, beyond just generating new code. AI tools can analyze existing codebases, identify clusters of related functionalities, detect hidden dependencies and help create a plan to isolate the control loop component, while also mitigating regression risk by generating test cases at multiple levels of the test pyramid. In this way, AI can actively assist in the process of decomposition itself.

Before the AI era, this kind of architectural refactoring was expensive and slow. It required deep familiarity with the existing system, significant manual effort to build test coverage from scratch and long-term horizons to absorb unexpected setbacks, which is why many organizations deferred it indefinitely. AI changed this. It can rapidly analyze an unfamiliar codebase, help generate the test coverage needed to make changes safely and support the incremental work of decomposition at a pace that was previously impractical for most teams.

New division of labor

If AI is better at handling complexity than us, why do we still need to manage it? Even though AI handles complexity better than humans, it isn’t immune to it. Poorly structured “Big Ball of Mud” architectures are characterized by cyclic dependencies, low cohesion and high coupling. In these systems, even AI struggles to determine the impact of a change.

One practical constraint is model context capacity: Very large codebases spanning millions of lines across hundreds of modules still exceed what can be loaded into a single model context. The good news is that context window sizes have grown considerably. Models nowadays support hundreds of thousands of tokens or more. For the very largest systems, unfortunately, this still provides only partial coverage.

The more fundamental issue is context noise. In a poorly structured codebase, it’s difficult to identify which parts of the code are actually relevant to a given change and no retrieval strategy can reliably surface what the structure doesn’t isolate. In “Big Ball of Mud” architectures, important details are buried in a large amount of unrelated code, making it harder for AI to reason correctly and increasing the likelihood of hallucinations. In contrast, in a well-designed system, most of what ends up in context is directly relevant, raising the signal-to-noise ratio and allowing AI to reason more accurately.

Structure also becomes critical as soon as development moves from a single agent to many. In an agentic environment, multiple agents working simultaneously on the same codebase will, without clear boundaries, inevitably make conflicting changes to independent features. Components with well-defined responsibilities allow work to be safely parallelized: Feature development can be decomposed into a coordinated sequence of steps, each scoped to individual components, with an orchestration layer managing dependencies between them. This isn’t a nice-to-have; it’s the only approach that scales as the number of agents grows.

The relationship between structure and quality points in the same direction. A well-structured architecture allows behavior to be tested at different levels of abstraction. Individual components can be verified in isolation, which makes it easier to cover edge cases and performance characteristics. This shifts the burden of validation from the entire system to a manageable subset. Even when AI generates the test cases, human judgment remains essential. A person reviewing the behavior of a single, well-defined component is in a far better position to do that than a person reviewing the behavior of an entire system.

This leads to a new and explicit division of labor between humans and AI. AI excels at navigating complexity: reading unfamiliar code, identifying patterns, generating implementations and spotting potential issues across large bodies of code. Humans own the architectural intent, the decisions about how a system should be structured, what its components are responsible for and where the boundaries lie. Human judgment is also irreplaceable in validation: deciding whether an AI-generated solution is not just functional but architecturally sound.

Managing legacy systems is fundamentally different from greenfield development. In legacy system management, the name of the game is the understandability of the architecture. Without this, the complexity of the architecture will continue to grow and we’ll remain trapped in the vicious cycle of legacy systems, with or without AI.

Breaking the cycle

The fundamentals of software engineering haven’t changed with the advent of AI-assisted tooling. The wisdom built up over the past decades stays valid. Specification skills, architectural thinking and solid verification and validation practices are as essential as ever. With AI-assisted tooling, these artefacts become the primary input to software development, not a byproduct of it. Alongside these enduring skills, working effectively with AI requires new competencies: the ability to formulate precise prompts, to evaluate AI-generated code critically and to define architectural guardrails that keep automated generation aligned with design intent.

The vicious cycle of legacy systems isn’t new. What’s new is that the cycle has, for most organizations, been running long enough that escaping it with conventional methods has become practically impossible. Each iteration has added complexity, raised the cost of change and narrowed the window for meaningful improvement.

AI introduces, for the first time, a credible means of breaking that cycle. It can absorb the complexity that has accumulated over decades, reading unfamiliar code, identifying structural weaknesses and generating the tests that make safe refactoring possible at a speed and scale no team of engineers can match. But reversing the cycle requires architectural intent. Without it, AI simply accelerates the forward direction: more code, faster, with less understanding.

Applying AI with an architectural mindset makes it a genuine force multiplier. Applying it without one makes it a complexity multiplier. The difference between those two outcomes is architecture.

Related content

Safer, faster and more reliable software: the industrial impact of Rust

You can’t address AI’s risks by banning ASML’s exports

Top jobs
Your vacancy here?
View the possibilities
in the media kit
Events
Courses
Headlines
  • ASIC design team spins out from Philips as ICwaves

    8 July 2026
  • Dutch defense embraces Intelic’s software-first drone interoperability approach

    8 July 2026
  • TNO and Destinus collaborate on radar seekers

    8 July 2026
  • Noviotech Campus sees another director go

    6 July 2026
  • UT appoints Gregor Halff as new executive board president

    6 July 2026
  • Reports: Semi equipment market to reach up to $250B in 2028

    1 July 2026
  • Japanese researcher proposes simpler high-NA EUV optics design

    25 June 2026
  • ASML partners with TNO on photonic chip pilot line

    24 June 2026
  • Dutch minister pushes back on US bid to tighten China chip controls

    24 June 2026
  • Alixlabs launches beta APS platform for non-litho patterning

    23 June 2026
  • Thales NL expands radar system production and test capacity

    23 June 2026
  • Robin Radar and TNO develop airborne radar

    22 June 2026
  • Nearfield closes record 330-million-euro funding round

    22 June 2026
  • Koen ten Hove appointed as CTO of Thales NL

    19 June 2026
  • Besi raises long-term targets on AI packaging and hybrid bonding demand

    18 June 2026
  • ABN Amro: AI and defense boom shakes up Dutch EMS sector

    17 June 2026
  • Nexperia stays profitable despite China disruption

    16 June 2026
  • ASML, TSMC and Imec scale 2D transistors to 50nm pitch on 300mm wafers

    15 June 2026
  • Optical interconnect market explodes to $39B by 2030

    15 June 2026
  • Forced layoffs avoided until May 2027 in union-backed ASML restructuring plan

    11 June 2026
Bits&Chips logo

Bits&Chips strengthens the high tech ecosystem in the Netherlands and Belgium and makes it healthier by supplying independent knowledge and information.

Bits&Chips focuses on news and trends in embedded systems, electronics, mechatronics and semiconductors. Our coverage revolves around the influence of technology.

Advertising
Subscribe
Events
Contact
Follow us on
High-Tech Systems Magazine (Dutch)
(c) Techwatch bv. All rights reserved. Techwatch reserves the rights to all information on this website (texts, images, videos, sounds), unless otherwise stated.
  • About
  • Memberships
  • Advertising
  • Videos
  • Contact
  • Search
Privacy settings

Bits&Chips uses technologies such as functional and analytical cookies to improve the user experience of the website. By consenting to the use of these technologies, we may capture (personal) data, unique identifiers, device and browser data, IP addresses, location data and browsing behavior. Want to know more about how we use your data? Please read our privacy statement.

 

Give permission or set your own preferences

Functional Always active
Functional cookies are necessary for the website to function properly. It is therefore not possible to reject or disable them.
Voorkeuren
De technische opslag of toegang is noodzakelijk voor het legitieme doel voorkeuren op te slaan die niet door de abonnee of gebruiker zijn aangevraagd.
Statistics
Analytical cookies are used to store statistical data. This data is stored and analyzed anonymously to map the use of the website. De technische opslag of toegang die uitsluitend wordt gebruikt voor anonieme statistische doeleinden. Zonder dagvaarding, vrijwillige naleving door je Internet Service Provider, of aanvullende gegevens van een derde partij, kan informatie die alleen voor dit doel wordt opgeslagen of opgehaald gewoonlijk niet worden gebruikt om je te identificeren.
Marketing
Technical storage or access is necessary to create user profiles for sending advertising or to track the user on a site or across sites for similar marketing purposes.
  • Manage options
  • Manage services
  • Manage {vendor_count} vendors
  • Read more about these purposes
View preferences
  • {title}
  • {title}
  • {title}

Your cart (items: 0)

Products in cart

Product Details Total
Subtotal €0.00
Taxes and discounts calculated at checkout.
View my cart
Go to checkout

Your cart is currently empty!

Start shopping

Notifications