Reverse Engineering Design of Software Product Lines for Automation Technology

Project Description

In automation technology, more and more functionality is realized by software. Software variants are typically developed using a copy-paste-and-modify strategy (also called clone-and-own) which hinders maintenance and future development of the variants. In contrast, the concept of software product lines (SPL) uses a structured variant modeling and systematic reuse of software artifacts. The transition of variant development using clone-and-own to structured variant management based on SPLs is hindered by the fact that existing variants are of high value and production cannot be stopped during that transition.The goal of the project is to develop methods that (semi-)automatically transform a family of software variants from automation technology that were created using clone-and-own into a software product line. In particular, industrial requirements and the transferability of the results to industrial practice are considered. First, a method is developed to derive a family model of an existing set of variants in order to represent commonality and differences of the variants' software. Second, visualization techniques are devised to represent the family structure for domain experts and to add domain knowledge for the subsequent restructuring of the software family. Finally, reverse engineering techniques are developed which use the given information to extract reusable building blocks from the existing variants and transform those into a SPL. The developed techniques are implemented and evaluated using academic and industrial case studies with respect to their applicability.



The research project is performed in cooperation with the Institute of Software Engineering and Automotive Informatics of Technische Universität Braunschweig and funded by the German Research Foundation (DFG).