De-risking computational software

Does this sound familiar? Your company relies on computational software of questionable quality, perhaps because the code was written long ago, possibly by people who no longer work for you (what we call “legacy code“). Or because the software came straight from R&D but hasn’t outgrown that stage yet (what we call “research code“). You are aware of the risks, but also of the costs. How do you de-risk this software?

VORtech is daily helping clients facing this situation. You can find numerous examples in our blog series on legacy code and on projects.

Below, we first outline the primary risks associated with poor-quality computational code. We then provide a step-by-step plan to address these risks, first for legacy code, and then for R&D code.

What are the risks of poor-quality computational code?

Regardless of the cause of poor code quality, the risks remain the same:

  • The software may contain undetected errors, leading you to place undue trust in the results.
  • The code is difficult to understand, making it nearly impossible to modify or extend (or to have others do so).
  • The original developers are often the only ones who understand how the code works; if they leave, that knowledge is lost.

You can find a more detailed description of the key risks associated with legacy code here.

How do you bring the quality of computational code up to an acceptable level?

To answer this question we should distinguish between modernizing legacy code and improving research code.

How do you modernize legacy code?

When we modernize legacy code for our clients, we follow this step-by-step plan:

  1. Assess the current situation. Is it really necessary to modernize the code, and are all stakeholders on board? Is the programming language still supported in the organization? What documentation is there? Is there a useful development environment? Are there enough tests? Is the original developer still available or someone else who knows the code well? Is modernizing the current code the best option, or have requirements changed so much that new software is needed, incorporating the old code? Only when there is clarity regarding all these questions does it make sense to take action.
  2. Place the code under version control (if this hasn’t been done already) and set up the test pipeline using the tests that are already available.
  3. Improve the tests. Good tests are indispensable for verifying that the software remains correct throughout the process. Specific tests are required for every piece of functionality. Additionally, detailed tests are needed to verify specific components of the code, though this can often only be done after the next step.
  4. Modularize the code. Ensure the code consists of clear components, each with a distinct function. This prevents a modification in one place from having unexpected consequences elsewhere. Furthermore, it makes testing easier and it allows for concise, effective documentation of each component.
  5. Modernize the modules where necessary. It is often unnecessary to modernize the entire codebase; updating specific components may suffice. This also limits risk, because much of the original functionality can be preserved.

How do you bring research code up to standard?

The step-by-step plan for research code is very similar, except for the final step:

  1. Optimize the software. research code often overlooks certain aspects that are crucial for operational use. Performance is typically not a priority during the R&D phase, yet it becomes crucial during actual use. Thanks to the preceding steps, performance bottlenecks and the ways to resolve them can now be quickly identified.

Can we help you?

If you would like to talk about this subject, please call us at +31(0)15 285 01 25, send us an email, or fill out the contact form. One of our experts get in touch to be happy to discuss your challenges and answer your questions.

Want to read more?

Elsewhere on our website you can find more information regarding our services for legacy software and research software, including consultancy, improving or optimizingΒ code. Our blog series on legacy code and our project-focused blog series offer real-world examples. We also invite you to read our whitepapers on legacy code and accelerating computational software.