TY - THES
T1 - Understanding the Re-Engineering of Variant-Rich Systems
T2 - An Empirical Work on Economics, Knowledge, Traceability, and Practices
AU - Krüger, Jacob
PY - 2021/9/10
Y1 - 2021/9/10
N2 - 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 software-engineering 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.
AB - 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 software-engineering 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.
KW - Software Reuse
KW - Software Economics
KW - Re-Engineering
KW - Platform Engineering
KW - Clone & Own
KW - Software Product Line
KW - Knowledge
KW - Traceability
U2 - 10.25673/39349
DO - 10.25673/39349
M3 - Phd Thesis 4 Research NOT TU/e / Graduation NOT TU/e)
ER -