Multi-level interfaces between software product lines : avoiding direct dependencies
Creators: name: Schröter, Reimar
Publisher: name: Universitäts- und Landesbibliothek Sachsen-Anhalt
Year: 2018
Subjects: subject: Software engineering
subject: 000

description: From the beginning of the software-development age, the reuse of program functionality has been an essential part of the development process. Only with an efficient reuse strategy it is possible to speed up the development. This becomes even more important when the construction of similar programs is focused. One promising solution to develop similar programs is based on software product lines, which allow a developer to implement these products based on a common code base. Although the concept of software product lines is well established nowadays, the application of product-line mechanisms can become challenging especially in systems with a high complexity, such as analyses that ensure a correct product-line modeling. To tackle this complexity, the concept of multi product lines has been proposed, in which the whole system is described by a set of software product lines with interdependencies. Thus, the reuse of software artifacts reaches a new level. However, as the involved product lines of a multi product line are closely coupled, the knowledge of the whole product-line dependencies is generally needed to implement parts of the system or to analyze it. As a result, the development of a multi product line can also be tedious and error-prone. To avoid direct dependencies between the product lines of a multi product line, we propose the concept of multi-level interfaces. Based on this, we aim to ease the development of multi product lines including the analysis and evolution. This could also gain particular importance when looking at the trend of a software ecosystem that represents a software product line of distributed organizations. For this purpose, we suggest to use different interfaces for each level of the development process, e.g., one interface for modeling and another interface for implementing the multi product line, whereas the lower level depends on the upper level. As a result, the whole set of interfaces will ensure a complete decoupling of the involved product lines so that we can ease the implementation and the analyses of the multi product line. To explore our concept, we specified and implemented an interface for the levels of product-line modeling as well as implementation and investigated the effect on analysis tasks in real-world systems. In this context, we found that the interface on the modeling level can ease the analysis of model compositions, since the analysis result of model compositions with and without the interface depends on each other. This is especially important in a scenario of product-line evolution. Similarly, we also discovered a benefit when using an interface on the implementation level. Here, the interface protects the developer from having to perform a manual code analysis of reusable program artifacts. In addition, as proof of concept, we also investigated the behavioral level of product lines and investigate multiple ideas on how to realize such an interface. In sum, we conclude that the concept of multi-level interfaces can be used to avoid direct dependencies between the product lines of a multi product line and that it simplifies the analysis and evolution of the whole system.
description: Seit Beginn der Softwareentwicklung ist die Wiederverwendung von Software ein essentieller Bestandteil des Entwicklungsprozesses. Nur durch eine effiziente Wiederverwendung kann eine Beschleunigung der Softwareentwicklung ermöglicht werden. Dieser Aspekt ist von umso größerer Bedeutung, wenn die Entwicklung auf die Erstellung von ähnlichen Programmen abzielt. Hierbei stellen Softwareproduktlinien eine vielversprechende Lösung bereit, die es einem Entwickler erlaubt, die verschiedenen Programme basierend auf einer gemeinsamen Quellcodebasis zu entwickeln. Obwohl Softwareproduktlinien heutzutage weit verbreitet und etabliert sind, können vor allem bei komplexen Systemen hohe Herausforderungen bei der Umsetzung entstehen, wie beispielsweise bei der Analyse der korrekten Modellierung. Um der Komplexität entgegenzuwirken, können Multiproduktlinien verwendet werden. Bei Multiproduktlinien handelt es sich um eine Menge von Produktlinien, die untereinander in Beziehung stehen. Mit dem Konzept der Multiproduktlinien konnte zugleich eine neue Art der Wiederverwendung erreicht werden, in der nicht nur einzelne Quellcodeartefakte sondern sogar vollständige Produktlinien verwendet werden. Jedoch besteht bei den voneinander abhängigen Softwareproduktlinien einer Multiproduktlinie zumeist eine enge Bindung, weshalb zur Implementierung und bei der Analyse des Gesamtsystems Detailwissen über alle Abhängigkeiten benötigt wird. Dieser Aspekt mindert den erwünschten Vorteil von einer Multiproduktlinie, da beispielsweise durch das benötigte Wissen die Implementierung erschwert wird und weiterhin fehleranfällig ist. Um die Abhängigkeiten zwischen den Softwareproduktlinien einer Multiproduktlinie zu vermeiden, schlagen wir die Verwendung von sogenannten Multi-Level Interfaces vor. Die reduzierten Abhängigkeiten zielen darauf ab, die Entwicklung der Multiproduktlinie inklusive der Analyse und Evolution zu erleichtern. Wenn man zusätzlich noch den Trend zur Entwicklung von Software-Ökosystemen betrachtet, bei der die Entwicklung der Softwareproduktlinien über mehrere Organisationen verteilt ist, erlangt die Reduzierung der Abhängigkeit noch größere Bedeutung. Daher führen wir verschiedene Schnittstellen ein, die für die jeweiligen Entwicklungsebenen einer Multiproduktlinie bestimmt sind. Zum Beispiel handelt es sich hierbei um eine Schnittstelle für die Modellierungs- und Implementierungsebene, wobei die jeweils unteren Ebenen von den darüberliegenden Ebenen abhängig sind. Insgesamt beschreiben die Schnittstellen somit eine allumfängliche Sicht auf eine Softwareproduktlinie, sodass basierend auf dem Konzept der Multi-Level Interfaces die enge Bindung zwischen den beteiligten Softwareproduktlinien einer Multiproduktlinie reduziert werden kann. In diesem Zusammenhang zielen wir darauf ab, die Entwicklung und die Analyse des Gesamtsystems zu erleichtern. Um Multi-Level Interfaces genauer zu erforschen, spezifizierten und implementierten wir eine Schnittstelle für die Modellierungs- sowie für die Implementierungsebene und untersuchten die Auswirkungen auf Analysen bezogen auf Realweltsysteme. In diesem Zusammenhang fanden wir heraus, dass unsere definierte Schnittstelle für die Modellierungsebene die Analyse von Modellkompositionen erleichtern kann. Dieser Aspekt ist besonders bei der Evolution von Softwareproduktlinien von Bedeutung, da Analysen seltener wiederholt werden müssen. Bezogen auf die Schnittstelle für die Ebene der Implementierung konnten wir ähnliche Auswirkungen feststellen. Hierbei kann die Implementierungsschnittstelle den Softwareproduktlinienentwickler dabei unterstützen, geeignete Quellcodeartefakte für die Wiederverwendung aufzudecken, ohne dass eine manuelle Analyse der Abhängigkeiten notwendig ist. Um die Allgemeingültigkeit von Multi-Level Interfaces zu untersuchen, betrachteten wir auch Schnittstellen die das Verhalten einer Produktlinie beschreiben. In diesem Zusammenhang stellten wir verschiedene Ansätze auf, um eine entsprechende Schnittstelle bereitzustellen. Anschließend untersuchen wir die Eignung der jeweiligen Ansätze. Insgesamt schlussfolgern wir, dass Multi-Level Interfaces helfen, direkte Abhängigkeiten zwischen Softwareproduktlinien einer Multiproduktlinie zu vermeiden und somit Vorteile bei der Entwicklung bezogen auf die Analyse und der Evolution des Gesamtsystems erzielt werden können.