Excellence in Software Engineering
Enabling Innovation on Legacy Systems
02 June 2021

Author: Ömer MESCİGİL, Software Architect / Embedded Systems

What is innovation? What are the innovation categories?

Innovation is the practical implementation of ideas. One or more of the items listed below may be the output of the innovation.

  • Introduction of new goods
  • Services
  • Improvement in offering goods or services. 

In another word, innovation is the process of generating new and unique ideas or solutions and applying them to create value for the customer.

According to these definitions, innovative thinking requires considering from different perspectives.

So, innovation as a broad concept can be categorized as:

  • Service Innovation
  • Product Innovation
  • Technological Innovation
  • User Innovation

Another categorization could be as follows:

  • Employee Innovation
  • Customer Innovation
  • Partner/Supplier Innovation
  • Competitor Innovation
  • Public Innovation

Although we can specify the categories in this way, there are other categorizations. Only the most common ones are mentioned above.

In the next section, we will focus on Legacy Systems and how to deal with innovation at them.

Legacy Systems

In computing, a legacy system is an old method, technology, computer system, or application program, “of, relating to, or being a previous or outdated computer system” (“Legacy system”, Wikipedia).  

As mentioned in the previous section, innovation not only enables the application of new ideas to new infrastructures but also enables the development of existing infrastructures, services, products (which might refer to legacy systems). In another words, the change does not always require new systems, it also needs new tech on old stuff. 

We can clearly state that building innovations in the existing system has been more difficult not only in IT but in every field.

How to apply Innovation to Legacy Systems

In Object Oriented Computer Programming, SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible, and maintainable (“SOLID”, Wikipedia). The second letter “O” is the acronym of “Open Closed Principle” which is about software entities should be open for extension but closed for modification. 

While talking about innovative features, with a similar perspective mentioned above, we can basically say that legacy systems should be open for extension (to apply innovative features) and closed for modification (not to break existing functionalities while extending). If the current situation is not enough to do this, it may lead to a long and tiring road of modernizing legacy systems to support agility and innovative features. (see also the post “Legacy SW Problems & Maintenance”)

There are some modernization options which are listed below:

  • Encapsulate
    • Leverage and extend the application features by encapsulating its data and functions, making them available as services via an API.
  • Rehost
    • Redeploy the application component to other infrastructure (physical, virtual or cloud) without modifying its code, features or functions.
  • Replatform
    • Migrate to a new runtime platform, making minimal changes to the code, but not the code structure, features or functions.
  • Refactor
    • Restructure and optimize the existing code (although not its external behavior) to remove technical debt and improve nonfunctional attributes.
  • Rearchitect
    • Materially alter the code to shift it to a new application architecture and exploit new and better capabilities.
  • Rebuild
    • Redesign or rewrite the application component from scratch while preserving its scope and specifications.
  • Replace
    • Eliminate the former application component altogether and replace it, considering new requirements and needs at the same time.

Turning an idea from something abstract to a tangible, successful product or service requires going through a complex process. So let’s see some suggestions and best practices regarding this in the next section.

Innovation Processes and Methods

The innovation process creates a clear framework that structures and systematically implements the development of new products, services or business models.

Through world-wide 95% of patent applications are denied. Among the ideas that do receive patents, only 3% ever generate any revenue. Finding a defined way to identify viable ideas is key (“The Real Patent Crisis Is Stifling Innovation”, Forbes).

  • The Process generally begins with the generation of ideas
    • Brainstorming Sessions might be an option to collect ideas.
    • Web Portals / Online Platforms might be another option to collect ideas.
    • Ideas might be documented in an easy to follow form which includes author, description, use-case(s), diagram(s), flow(s) or any visual materials.
    • Proof of Concept implementations might be another or complementary option to present ideas to evaluators.
  • Collected ideas should be evaluated in a transparent and fair process.
    • Customer perspective or involvement of Product Owners / Product Managers in the evaluation period is valuable.
    • Feedback regarding the evaluation should be provided to the author of the idea in a transparent manner. 
    • Ideas can be submitted to the jury after they are filtered through some manual / automatic filters.
    • Ideas can be categorized as patentable, more information needed, innovative feature and so on.
      • “Patentable Ideas” would require a specialized study in collaboration with the relevant department of the company.
      • “More Information Needed Ideas” should go to the previous step to revisit the idea according to comments.
      • Ideas that lead to “Innovative Features” would go to the backlog of a portfolio of new / existing products / services.

Ultimately, innovation means generating new and unique ideas as a process. These ideas might be appliable to modern or legacy systems. The key regarding legacy systems is to align the system with extendibility and to apply methods within the process to generate valuable ideas.

Past Articles

Legacy Software Problems and Maintenance

Legacy Software Problems and Maintenance

A legacy system can be defined as outdated computing software and/or hardware that is still in use. Most legacy systems or setups exist due to some reasons such as long-term ongoing projects, support contracts, the difficulty of replacing modern ones due to cost or any kind of limitations.

Navigation