A Continuous Integration (CI) system automates the integration of code changes created by software developers into a single finalised software project. This is usually done in different stages, meaning the resulting source code from an initial integration can then be integrated into an even bigger software project. Software projects are diverse however, and therefore have different requirements for what constitutes a well-designed and efficient Continuous Integration (CI) system.
This is where our team – the software integration team – comes in. We tailor the CI system to fit the specific needs of different software projects. This can be in the form of adding specific tools which make it easier for developers in each project to create their specific type of software or adding specialised automations for each software project to the CI system to speed up their workflow.
One of the most important aspects of this tailoring process, particularly in automotive software projects, is making sure that the CI system creates a healthy synergy between the developing, testing and validation teams of each project. The software for each component of a BMW has a distinct development, testing and validation process, which is highly dependent on where it sits in the functionality hierarchy of the car, and its so-called Automotive Safety Integrity Level (ASIL). Another big part of our responsibility is ensuring that the CI system provides all the data that these various development teams require, so they can respond to any issues with the software in a timely and effective manner.
At the end of the day, our goal is to offload as much responsibility away from the developers and onto the CI system, allowing the developers to focus on what they do best, creating awesome features for BMW cars. That's why I'm always so proud when I see a BMW on the streets because I know I was part of the team that worked on developing that car!