Please use this identifier to cite or link to this item:
http://dx.doi.org/10.25673/39349
Title: | Understanding the re-engineering of variant-rich systems : an empirical work on economics, knowledge, traceability, and practices |
Author(s): | Krüger, Jacob |
Referee(s): | Saake, Gunter Leich, Thomas |
Granting Institution: | Otto-von-Guericke-Universität Magdeburg, Fakultät für Informatik |
Issue Date: | 2021 |
Extent: | xxvi, 242 Seiten |
Type: | Hochschulschrift |
Type: | PhDThesis |
Exam Date: | 2021 |
Language: | English |
URN: | urn:nbn:de:gbv:ma9:1-1981185920-413055 |
Subjects: | Software reuse Re-engineering Clone&own Platform engineering |
Abstract: | Context: Most modern software systems exist in different variants to address a variety of
requirements, such as customer requests, regulations, or hardware restrictions. To benefit
from the high commonality between variants, such variant-rich systems (e.g., Linux kernel,
automotive software, webservers) usually reuse existing artifacts (which implement so-called
features). In fact, in many organizations, a variant-rich system establishes itself over time
through developers using clone&own (i.e., copying and adapting a variant) as a reuse
strategy. Typically, the maintenance burden of having numerous separated variants forces
an organization to re-engineer its cloned variants into a reusable platform by adopting
concepts of software product-line engineering. Despite the practical prevalence of this
re-engineering scenario, most research on decision support has focused on the proactive
adoption (i.e., starting from scratch) of platform engineering.
Objective: In this dissertation, we empirically study four closely related properties in the
context of variant-rich systems, namely economics, knowledge, traceability, and practices.
Note that, while we focus on the re-engineering of cloned variants into a platform, many of
our findings are relevant for engineering any (variant-rich) software system. More precisely,
we aim to contribute an empirics-based body-of-knowledge that can guide organizations in
planning and monitoring their (re-)engineering projects. In parallel, our studies advance on
educated guesses, which are widely used to reason on variant-rich systems. To this end,
we aim to provide economical data that allows to compare and understand the differences
between clone&own and platform engineering. Since our findings highlight the economical
impact and close relation of knowledge and feature traceability, we further aim to provide a
detailed understanding of these two properties in the context of re-engineering projects.
Finally, we aim to synthesize all of our findings and connect them to contemporary softwareengineering
practices to derive processes and recommendations for planning, initiating,
steering, and monitoring platform engineering.
Method: To address our objectives, we relied on a number of empirical research methods
to collect data from various sources. In most cases, we built on eliciting qualitative data
from the literature, which we identified through systematic literature reviews. To enrich
that data, we conducted interview and online surveys, measurement and multi-case studies,
as well as experiments; which we selected and employed based on their feasibility to address
a certain objective. By synthesizing from different sources, we aimed to improve the validity
of our data to provide reliable insights for researchers and practitioners.
Results: On an abstract level, we can summarize four key contributions. First, we contribute
a rich dataset on the economics of (re-)engineering variant-rich systems, from which
we derive the core insight that moving towards platform engineering (e.g., more systematic
clone management) is economically promising. Second, we contribute an understanding of
developers’ memory and how to support their knowledge needs, leading to the core insight
that expensive recovery activities can be mitigated by enforcing suitable documentation
techniques (e.g., feature traceability). Third, we contribute insights on how different feature traces impact developers’ program comprehension, based on which our core insight is that
feature traceability should ideally be independent of configurability. Finally, we contribute a
process model and recommendations on how to (re-)engineer variant-rich systems, with our
core insight being that carefully planning and periodically assessing a variant-rich system
helps to exploit its full potential (e.g., in terms of cost savings).
Conclusion: Overall, we provide detailed insights into four important properties that
help organizations as well as researchers understand and guide (re-)engineering projects
for variant-rich systems. We discuss these insights and their connections to each other as
well as to contemporary software-engineering practices, enabling others to adopt them to
different scenarios. So, our contributions involve the synthesis and considerable extension
of the existing body-of-knowledge on (re-)engineering variant-rich systems. Kontext: Moderne Softwaresysteme werden in einer Vielzahl an Varianten angeboten um verschiedenste Anforderungen von Kunden, Regulierungen oder der Hardware zu bedienen. Da sich die einzelnen Varianten solcher variantenreichen Systeme (z.b. der Linux Kernel, Fahrzeugsoftware oder Webserver) sehr ähneln, können Entwickler die Wiederverwendung existierender Artefakte, die ein bestimmtes Feature implementieren, während der Entwicklung ausnutzen. Dabei werden in den meisten Fällen Varianten zuerst nur kopiert und an neue Anforderungen angepasst. Da solche kopierten Varianten voneinander losgelöst sind, wird deren Wartung in den meisten Fällen immer kostenintensiver, was oftmals dazu führt, dass die Entwickler eine wiederverwendbare Softwareplattform aus diesen extrahieren. Obwohl dieser extraktive Ansatz in der Praxis am verbreitetsten ist, fokussiert sich die Forschung meistens darauf, Entscheidungshilfen für die proaktive Neuentwicklung einer Plattform zu entwickeln. Ziele: In dieser Dissertation werden empirische Methoden genutzt, um vier zusammenhängende Eigenschaften mit Bezug zu variantenreichen Systemen zu untersuchen: Kosten, Wissen, Nachvollziehbarkeit und Verfahren. Anzumerken ist, dass trotz unseres Fokus auf den extraktiven Ansatz, viele unserer Erkenntnisse für jegliche (variantenreiche) Softwaresysteme relevant sind. Wir sammeln empirische Daten um den wissenschaftlichen Stand in Bezug auf variantenreiche Systeme zu erweitern und Unternehmen bei der Planung und Beobachtung von Softwareprojekten zu unterstützen. Dazu vergleichen wir zuerst die Kosten um Varianten basierend auf Kopien oder einer Plattform zu entwickeln. Bei dieser Untersuchung haben wir festgestellt, dass insbesondere das Wissen der Entwickler und dessen Nachvollziehbarkeit die Entwicklung variantenreicher Systeme beeinflussen. Nachdem wir diese beiden Eigenschaften detaillierter untersucht haben, kombinieren wir alle unsere Ergebnisse um Methodiken und Empfehlungen für die Planung, Initialisierung und Beobachtung von Softwareplattformen zu definieren. Methodik: Unsere Forschung basiert auf verschiedenen empirischen Methoden um Daten aus unterschiedlichen Quellen zu erheben. Durch dieses Vorgehen konnten wir die Validität unserer Ergebnisse verbessern und liefern damit eine Alternative zu den begründeten Vermutungen auf denen sich Entscheidungen bezüglich variantenreicher Systeme bisher meist stützen. Wir haben meist systematische Literaturreviews genutzt um qualitative Daten aus existierenden Arbeiten zu erheben. Um diese Daten zu komplementieren, haben wir dem jeweiligen Ziel angepasste Methoden genutzt, beispielsweise Interviews, Umfragen, Fallstudien oder Experimente. Ergebnisse: Stark zusammengefasst können wir vier Kernergebnisse definieren. Erstens liefern wir Daten zu den Kosten der Entwicklung variantenreicher Systeme, die zeigen, dass Unternehmen darauf hinarbeiten sollten, ihre Entwicklung in Richtung einer Plattform zu systematisieren. Zweitens bieten wir Einsichten dazu, welches Wissen Entwickler benötigen und aus welchen Quellen sie dieses gewinnen können, wobei unsere zentrale Einsicht die Notwendigkeit geeigneter Dokumentationen ist. Drittens haben wir die Nachvollziehbarkeit von Features als eine Art der Dokumentation untersucht und festgestellt, dass diese idealerweise nicht auf Techniken für die Konfiguration von Software aufbaut. Zuletzt haben wir Methodiken und Empfehlungen aus unseren Ergebnissen synthetisiert und die Einsicht gewonnen, dass die Planung und regelmäßige Evaluierung variantenreicher Systeme hilft, deren Nutzen zu maximieren. Fazit: Insgesamt beschreiben wir in dieser Dissertation detaillierte Einsichten zu vier essentiellen Eigenschaften für die Entwicklung und Extraktion von variantenreichen Systemen. Damit diese Eigenschaften an verschiedene Szenarien angepasst werden können, diskutieren wir ihre Zusammenhänge miteinander und mit aktuellen Methoden der Softwareentwicklung. Daraus resultiert eine Synthese und erhebliche Erweiterung des existierenden Wissensstandes bezüglich der Entwicklung variantenreicher Systeme. |
URI: | https://opendata.uni-halle.de//handle/1981185920/41305 http://dx.doi.org/10.25673/39349 |
Open Access: | Open access publication |
License: | (CC BY-SA 4.0) Creative Commons Attribution ShareAlike 4.0 |
Appears in Collections: | Fakultät für Informatik |
Files in This Item:
File | Description | Size | Format | |
---|---|---|---|---|
Krueger_Jacob_Dissertation_2021.pdf | Dissertation | 3.17 MB | Adobe PDF | View/Open |