Modernising the FERS Software Package
Overview
This project focused on updating the Flexible, Extensible Radar Simulator (FERS) to meet modern C++ standards (C++20/23). Originally developed in C++98/03, FERS is a vital tool in radar simulation for the Radar and Remote Sensing Group (RRSG) at UCT. The modernisation enhanced FERS's performance, readability, maintainability, and future extensibility, making it compatible with modern development environments while retaining core functionality.
Objectives
- Upgrade the FERS codebase to incorporate C++20/23 features, improving readability, maintainability, and efficiency.
- Implement performance optimisations, including multithreading and improved memory management, for faster, more efficient radar simulations.
- Ensure backward compatibility to maintain the integrity and accuracy of simulation results.
- Develop and conduct thorough testing to validate the modernised software’s functionality and performance improvements.
Technologies Used
Also used: HighFive (HDF5), libxml2, Understand by SciTools, Doxygen.
Details
The modernisation process was approached incrementally, starting with an analysis of the FERS codebase to identify areas for improvement. Key upgrades included replacing manual memory management with smart pointers, implementing lambda expressions and C++-style casts, and applying advanced C++20/23 features like concepts, ranges, and modules. The project also involved optimising performance through multithreading and algorithmic improvements. Tools like Valgrind and perf were used for profiling and validation, while Doxygen was employed to generate inline documentation for maintainability.
Challenges
The primary challenges included ensuring backward compatibility, managing the complexities introduced by modern C++ features, and mitigating the risk of introducing errors during extensive refactoring. Through a careful, incremental approach and the use of robust testing tools, these challenges were systematically addressed. Regression testing, CI with GitHub Actions, and performance profiling were key in overcoming these obstacles.
Results & Performance
The modernized FERS software demonstrated improved performance, with speedups ranging from 1.46x to 3.55x across different test cases. All memory leaks were eliminated, and memory management was optimised with smart pointers. Regression testing achieved 90.5% line coverage, and function coverage reached 95.8%, ensuring high reliability.

