Xavier Bonaventura


After getting his Ph.D. at the University of Girona (Catalonia) he moved to Munich to apply his knowledge to industry. Currently, he is a software engineer working in the automotive industry and his goal is to bring autonomous driving on the streets using modern software development techniques. He has been working with codebases of different sizes, with contributions from 5 to 1000 software developers. He loves learning and teaching and he believes that success in large scale projects can only be achieved with quality, using modern techniques, and applying software engineering principles.



Dependency management in C++ (2019)

Proper handling of dependencies in a software development project can make the difference between success and failure. A lot of actors need to be aware of these dependencies: the developer, the compiler, the linker, the build system, the runtime system and so on (even the legal department). This takes special importance in projects that need to scale, not only in the runtime phase but also in the development phase.

In this presentation, we will go through the different types of dependencies and how they can affect each phase of the project. We will go from the generic point of view with everyday life examples to the singularities of C++ including concepts that are generic for all software development projects. In the last part of the presentation, we will see how Modules introduced in C++20 could change the current scenario regarding dependencies. After this presentation, the audience will have the tools to have a better understanding of the dependencies in their projects.

Some of the concepts that we will go through are: direct vs transitive dependency, full dependency vs dependency by name, dependency graph, compilation vs runtime dependency.