Software legacy

Software legacy

Problem

The flip-side of success in cyber-physical systems is that the body of embedded software grows without structural changes being made. So-called legacy software is often associated with:

  • Changed requirements

  • Deprecated technology

  • Implementation shortcuts

  • Unpredictable performance

  • Etc.

It explains why an estimated (and staggering) 40% of software engineering budgets in the high-tech industry is presently consumed by software maintenance. These are costs to stand still, but add no value to customers. As a rule of thumb, every 50 to 100 thousand lines of code requires one software engineer for maintenance, every year.

Legacy software grows like annual tree rings. Pruning legacy software feels like peeling an onion: layer by layer, tears come to your eyes." (Arjan Mooij, ESI (TNO))

Solutions directions

Companies are aiming for faster development of new features, and hence more time for innovation. Roughly speaking there are three main approaches to deal with legacy software:

  1. Keep the legacy software as-is

  2. Gradually reduce the technical debt

  3. Green-field redesign of the software

Using the first option all future changes will be made around the legacy software, which adds even more rings to the tree. The third option can easily block the normal innovation rate, which is often infeasible. In practice many companies are looking at the second option.

Arjen Klomp, Thermo Fisher Scientific

We’ve managed to significantly reduce the time it takes us to build a new version of the software.

Read more
Methodology and toolkit of ESI (TNO)

Making changes in legacy software is known to be expensive, time-consuming, and error-prone. ESI (TNO) performs applied research on methodologies to:

  • Improve human understanding by analyzing the legacy code;

  • Improve code evolvability by transforming the legacy code.

As high-tech companies often have many millions of lines of code in their systems, it is almost impossible to go over all this by hand. ESI (TNO) aims for a toolkit consisting of generic tools that can easily be tailored to specific pieces of legacy software. There are three categories of methods:

The use of such methodologies frees up resources, which are currently stuck in maintenance of legacy software, for the development of new, innovative features which are valuable to customers.

references
Contact
Additional information