Analysis techniques to support the evolution of variant-rich software systems
Creators: name: Schulze, Sandro
Publisher: name: Universitäts- und Landesbibliothek Sachsen-Anhalt
Year: 2019
Subjects: subject: Software engineering
subject: 000

description: Software is eating the world is a common saying nowadays, paraphrasing the fact that software influences almost all parts of industry or our daily life. This makes software subject to mass production while at the same time, there is an increasing demand for customization of software systems to adhere to specific requirements of users or environments. As a result, a software system is developed in many similar, yet di↵erent variants, thus, constituting a variant-rich software system. To enable development of such variant-rich systems, two approaches are commonly used: First, structured reuse by means of integrated variability allows to specify the di↵erences between variants on domain and implementation level. Second, adhoc reuse by means of clone-and-own, which reuses existing variants by copying them and afterwards, apply the required modifications (e.g., code changes) to achieve the desired variant. While both are commonly used, they raise challenges to the evolution of variant-rich system for aspects such as maintainability, testability, extensibility or reliability. In my research, I have developed techniques that allow to understand the reasons behind evolutionary challenges and how to identify and mitigate them. In this thesis, I summarize this research, mainly conducted within the last 4 years. In particular, I will present empirical as well as evolutionary analysis techniques to better understand the problems that integrated variability cause for developers and system quality. For cloneand- own systems, I will present reverse engineering techniques for di↵erent artefact types (models, requirements) that aim to extract the variability information, and thus, provide developers with a global and unified view of all variants under development.
description: Software ist auf dem Vormarsch. Ob durch voranschreitende Technologien, eine zunehmende Automatisierung oder die vielbeschworene Digitalisierung; Software beeinflusst mittlerweile fast alle Bereiche der Industrie oder unseres täglichen Lebens. Dies macht Software zu einem Gegenstand der Massenproduktion, während gleichzeitig die Nachfrage nach Anpassungen von Softwaresystemen an spezifische Anforderungen von Benutzern oder Umgebungen zunimmt. Infolgedessen wird ein Softwaresystem in vielen ähnlichen, aber unterschiedlichen Varianten entwickelt und bildet somit ein variantenreiches Softwaresystem. Um die Entwicklung derartiger variantenreicher Systeme zu ermöglichen, werden im Allgemeinen zwei Ansätze verwendet: Erstens ermöglicht die strukturierte Wiederverwendung mittels integrierter Variabilität, die Unterschiede zwischen Varianten auf Domänen- und Implementierungsebene zu definieren. Zweitens, Ad-hoc Wiederverwendung mittels clone-and-own, wobei vorhandene Varianten durch Kopieren wiederverwendet werden und anschließend die erforderlichen Modifikationen (z.B. Codeänderungen) auf der kopierten Variante durchgeführt werden, um das gewünschte Ergebnis zu erreichen. Obwohl beide häufig verwendet werden, stellen sie hinsichtlich der Wartbarkeit, Testbarkeit, Erweiterbarkeit oder Zuverlässigkeit die Entwicklung variantenreicher Systeme vor große Herausforderungen. In meiner Forschung habe ich Techniken entwickelt, die es ermöglichen, die Gründe für diese evolution¨aren Herausforderungen zu verstehen, zu erkennen und zu begrenzen. In dieser Arbeit fasse ich diese Forschung zusammen, die hauptsächlich in den letzten 4 Jahren durchgeführt wurde. Insbesondere werde ich sowohl empirische als auch evolutionäre Analysetechniken vorstellen, um die Probleme, die die integrierte Variabilität für Entwickler und die Systemqualität verursacht, besser zu verstehen. Für clone-andown Systeme werde ich Reverse Engineering Techniken für verschiedene Artefakttypen (Modelle, Anforderungen) vorstellen, die darauf abzielen, die Informationen zur Variabilität zu extrahieren, und so Entwicklern eine globale und einheitliche Ansicht aller in der Entwicklung befindlichen Varianten bieten.