Safety-critical industrial software, such as the software embedded in cars, should receive additional scrutiny, not just by developers, but also by the community at large. Companies are often rather reluctant to allow such information to leave their offices. This paper offers an unfortunately rare view into the processes used by two large automotive manufacturers for architecting their automotive product lines.
The paper provides a detailed, reasoned summary of wide-ranging interviews conducted by the authors with system architects at Volvo and Scania. Each author is actually associated with one of the companies being studied, making access to these architects simpler. It certainly makes for fascinating reading.
Both companies come off looking fairly good. But as the authors dig deeper, it is really quite interesting to see the similarities and differences in processes used, especially given their rather different histories and management practices. Given the different contexts, it is the many similarities that are surprising, rather than the differences.
My background is largely in pure software and mathematics, so in this paper, I found two things quite puzzling. The first was how much the architecture seemed to require changes on a continual basis. This seems to be due to the fact that hardware components seemed to change frequently, and that this somehow counts as an architectural change. Since Parnas’ paper on modularization [1], software architects expect modules to change frequently; however, as I see it, in a well-designed architecture, they will not. Perhaps this is mostly an issue of terminology, regarding what comprises the architecture.
The second puzzle is the fact that neither company seems to use any generative techniques. In both cases, the selection of an item from a product family is driven by on-board configuration files! No wonder there is significant code bloat in such embedded systems.
While there are minor flaws in the paper, I would still heartily recommend it to anyone interested in automotive software.