Mastering Software Diversity in Agricultural Technology
Diversity of variants as a challenge
Modern agricultural technology must deal with many product variants resulting from various usage scenarios, customer wishes, and regulatory requirements. This leads to the development of numerous variants for the respective hardware and software parts of these systems. Reuse on the level of software components is of central importance in this context: Components that are used in different ways by all variants must be identified and managed.
However, it is not easy to identify and centrally manage reusable components. Reasons for this include the complexity of the systems and of the development processes, which often results in parallel development projects not being coordinated adequately. This may lead to redundancies between the variants. Productivity losses, significant maintenance costs, and longer times to market are hard to avoid in such a situation.
Systematic reuse of system components
In the context of the collaboration with John Deere, Fraunhofer IESE has developed and employed systematic control of software diversity. The research topic was software for displays that are used in John Deere tractors. The displays allow controlling various functions of the tractor and of the attached implements and have a wide variety of variants due to the numerous configuration possibilities. The steps we performed to increase reuse in variants were:
- Tool-supported analysis of the differences in system variants
- Structural system modification to improve the handling of diversity
- Operationalization of the new structure with the help of configuration management
The tool-supported analysis is an extension of the SAVE tool of Fraunhofer IESE used for the static evaluation of systems. The tool is able to analyze several system variants at the same time and to identify common as well as specific software parts efficiently. In this project, four system variants with more than one million lines of code each were thus analyzed within just a few minutes.
Productivity gain for the future
On the basis of the data obtained from the analysis, the structure of the system was modified (refactored). This improvement minimizes redundancies and fully exploits the reuse potential. Subsequent projects benefit from increased development productivity due to lower implementation effort and less defects. In order to ensure the sustainability of the new system structure, the last step is to include it in the configuration management and to pin it down in terms of the organization. Here the focus is on the coordination mechanisms (e.g., split projects, branches) that are entered into the tool chain.