When we took on this project, setting up the software, both locally for development and in the final product, consisted largely of manual processes with little automation.
A first major challenge was to achieve sufficient test coverage without changing the code more than necessary. The difficulty was that the existing code was not built to be testable. We therefore first relied on comprehensive end-to-end testing to avoid regressions. Based on this, we carried out refactorings to make the software more testable and achieved a test coverage of around 90% of the critical components by means of automated unit and integration tests.
For the project setup, we used the modern Python package and dependency manager Poetry. Poetry makes it possible to create reproducible Python environments and helps to keep the dependencies up-to-date.
In addition to development, the further collaboration also includes a lot of knowledge transfer regarding Python, a programming language we have relied on for several years in the context of Machine Learning.
What we particularly appreciate about this project, apart from the software engineering, is the close collaboration with Bühler, which is very uncomplicated and efficient despite the size of the group, the complex organisation and the diversity of areas of activity.