书目名称 | Handbook of Re-Engineering Software Intensive Systems into Software Product Lines | 编辑 | Roberto E. Lopez-Herrejon,Jabier Martinez,Silvia V | 视频video | | 概述 | Includes 20 chapters structured in 4 parts.Provides comprehensive compendium of the fundamentals of re-engineering legacy applications.Presents a compilation of knowledge and experiences | 图书封面 |  | 描述 | .This handbook distils the wealth of expertise and knowledge from a large community of researchers and industrial practitioners in Software Product Lines (SPLs) gained through extensive and rigorous theoretical, empirical, and applied research. It is a timely compilation of well-established and cutting-edge approaches that can be leveraged by those facing the prevailing and daunting challenge of re-engineering their systems into SPLs. The selection of chapters provides readers with a wide and diverse perspective that reflects the complementary and varied expertise of the chapter authors. This perspective covers the re-engineering processes, from planning to execution..SPLs are families of systems that share common assets, allowing a disciplined software reuse. The adoption of SPL practices has shown to enable significant technical and economic benefits for the companies that employ them. However, successful SPLs rarely start from scratch, but instead, they usually start froma set of existing systems that must undergo well-defined re-engineering processes to unleash new levels of productivity and competitiveness..Practitioners will benefit from the lessons learned by the community, | 出版日期 | Book 2023 | 关键词 | software engineering; software product lines; configurable systems; variability management; reverse engi | 版次 | 1 | doi | https://doi.org/10.1007/978-3-031-11686-5 | isbn_softcover | 978-3-031-11688-9 | isbn_ebook | 978-3-031-11686-5 | copyright | Springer Nature Switzerland AG 2023 |
1 |
Front Matter |
|
|
Abstract
|
2 |
|
|
|
Abstract
|
3 |
Feature Location in Software Variants Toward Software Product Line Engineering |
Hamzeh Eyal Salman,Abdelhak-Djamel Seriai,Christophe Dony |
|
Abstract
Feature location is the process of finding or locating a segment of code that implements a specific software function (i.e., feature). Feature location in a collection of software variants is an important step for transition from ad-hoc development to systematic development (software product line engineering). In this chapter, we present in a pedagogical order the concept of feature location, types of feature location and feature location in the software variants. Then, we present an illustrative approach for feature location based on information retrieval (IR).
|
4 |
Feature and Variability Extraction from Natural Language Requirements |
Sandro Schulze,Yang Li |
|
Abstract
Requirements or requirement specifications are usually the very first artifact that is created when starting a software project. It results from intensive discussions with customers about all facets of the software system to be developed, mostly in form of plain text. Hence, if properly done, requirement specifications reflect on all features of a software system as well as how these features depend on each other. Consequently, requirements are a valuable source for extracting variability to support systematic reuse in variant-rich software systems. We research on techniques that employ syntactical as well as semantical information from such textual requirements in order to (1) . and map requirements to them, and (2) . to understand how features are related to each other, and thus, which variants can be possibly created.
|
5 |
Semantic History Slicing |
Yi Li,Julia Rubin,Marsha Chechik |
|
Abstract
Feature location techniques aim to locate software artifacts that implement a specific program functionality, a.k.a. a feature. In this chapter, we introduce a technique called ., to locate features in software version histories. The key insight is that the information embedded in version histories can be used to establish a connection between features and changes implementing the features. We present the formal definitions as well as the general principles of semantic history slicing and provide details on a specific history slicing algorithm based on change dependency analysis. The identified feature implementing changes are fully functional and guaranteed to preserve the desired behaviors.
|
6 |
Feature Location in Models (FLiM): Design Time and Runtime |
Lorena Arcega,Jaime Font,Øystein Haugen,Carlos Cetina |
|
Abstract
In this chapter, we apply feature location to automate the identification and extraction of the features existing among a family of product models and re-engineering them into a model-based SPL. To address the feature location in software models (FLiM) challenge, we present two approaches: at design time (FLiMEA) and at runtime (FLiMRT). Both FLiMEA and FLiMRT approaches are different but complementary. FLiMEA takes information from design time models while FLiMRT takes information from runtime models. The FLiMEA approach combines Genetic Operations and Information Retrieval. Given a model and a description of a possible feature, model fragments extracted from the model are generated using genetic operation and are assessed using an information retrieval technique to rank the candidates based on the similarity with the feature description. The FLiMRT approach leverages the use of software architecture models at runtime. The information is collected in the software architecture model at runtime and each model element is assessed based on its similarity to the feature description. We evaluated our approaches in two real-world industrial case studies: BSH and CAF. The application of F
|
7 |
Search-Based Variability Model Synthesis from Variant Configurations |
Wesley K. G. Assunção,Silvia R. Vergilio,Roberto E. Lopez-Herrejon,Lukas Linsbauer |
|
Abstract
The parallel maintenance of independent system variants, developed to supply a wide range of customer-specific demands, is a complex activity. To alleviate this problem and ease the creation of new products, the consolidation of such variants into a Software Product Line (SPL) is an effective solution. For this, a fundamental step is to construct a variability model that represents the combinations of features of all the existing variants. However, the process of extracting an SPL from independent variants, and consequently constructing a variability model, is acknowledged as costly and error-prone. Instead of starting from scratch, many approaches have been proposed for reverse engineering variability models, but they have two limitations. These approaches usually optimize a single objective that does not allow software engineers to consider design trade-offs and do not exploit knowledge from implementation artifacts. This chapter presents our approach to address these limitations. Our approach applies a multi-objective optimization strategy and uses source code dependencies to reverse engineer variability models. The resulting model not only represents the desired feature combina
|
8 |
Extending Boolean Variability Relationship Extraction to Multi-valued Software Descriptions |
Jessie Galasso,Marianne Huchard |
|
Abstract
Extracting variability information from software product descriptions is crucial when reverse engineering a software product line, e.g., for variability model synthesis. Existing methods are predominantly designed for feature-oriented product lines, where products are described by the set of distinguishable features they implement, and variability information may be expressed by logical relationships over these features. However, limits of such boolean feature-based variability modeling approaches have been highlighted, notably regarding their expressive power. In this chapter, we take a step towards more complex variability extraction and focus on extracting non-boolean variability relationships from multi-valued software descriptions. We first analyze software descriptions, variability relationships and extraction methods used in the boolean case. We attract attention to a knowledge engineering framework supporting a sound and complete feature-based variability relationship extraction method. The benefits of this framework include several extensions enabling to take into account more complex datasets than boolean ones. We explore one of these extensions to extend the traditional
|
9 |
Machine Learning for Feature Constraints Discovery |
Hugo Martin,Paul Temple,Mathieu Acher,Juliana Alves Pereira,Jean-Marc Jézéquel |
|
Abstract
Constraints among features are central to the success and quality of software product lines (SPLs). Unfortunately, the number of potential interactions and dependencies, materialized as logical constraints, grows as the number of features increases in an SPL. In particular, it is easy to forget a constraint and thus mistakenly authorizes invalid products. Developers thus struggle to identify and track constraints throughout the engineering of more and more complex SPLs..In this chapter, we show how to leverage statistical machine learning (and more specifically decision trees) to automatically prevent the derivation of invalid products through the synthesis of constraints. The key principle is to try and test some product of an SPL and then identify what individual features or combinations of features (if any) are causing their non-validity (e.g., a product does not compile). A sample of derived products is used to train a classifier (here a decision tree but other classifiers might also be used as long as constraints can be easily extracted) that can classify any remaining products of the SPL. We illustrate the chapter through different application domains and software systems (a
|
10 |
|
|
|
Abstract
|
11 |
Extraction of Software Product Line Architectures from Many System Variants |
Anas Shatnawi,Abdelhak-Djamel Seriai,Houari Sahraoui |
|
Abstract
Software Product Line Architecture (SPLA) describes the architecture of a set of software variants by describing (1) what components can be included in the product configuration based on the selected features of this product (2) how these components can be configured to form a concrete architecture of the product, (3) shared components, and (4) individual architecture characteristics of each product. However, developing SPLA from scratch is known a highly, costly and risky task. The alternative is to exploit the already developed . software variants to reverse engineer SPLA. This reduces the cost of Software Product Line (SPL) development and allows to manage software variants as a SPL. In this chapter, we discuss the extraction of SPLA based on the analysis of several software variants. Precisely, we discuss the variability in SPLA. Then, we discuss challenges in extracting variability of SPLA and highlight a number of good practices proposed in the-state-of-the-art of the SPLA extraction. Next, we discuss one example approach that completely extracts SPLA of software variants.
|
12 |
ModelVars2SPL: From UML Class Diagram Variants to Software Product Line Core Assets |
Wesley K. G. Assunção,Silvia R. Vergilio,Roberto E. Lopez-Herrejon |
|
Abstract
Software Product Line (SPL) is a reuse-oriented approach to create families of related system variants. SPLs are commonly adopted as a way to overcome problems emerged with the use of opportunistic reuse. In the existing literature of extractive adoption of SPLs, most of the studies only focus on source code, limiting engineers to reason about high-level architectural design decisions. Also, the vast majority of approaches are partially automated, or do not reflect domain constraints, such as feature interactions, and include or exclude relationships, which requires extensive human intervention and is error-prone. These limitations hamper a widely adoption of SPLs in industry. To tackle these limitations, in this chapter we present ModelVars2SPL (.), an automated approach to aid the re-engineering of SPLs from existing system variants. ModelVars2SPL uses as input a set of . (UML) class diagrams and the list of features they implement. The approach generates as output two SPL core assets: (1) Feature Model (FM), which represents the combinations of features, and (2) Product Line Architecture (PLA), which represents a global structure of the variants. ModelVars2SPL is composed of fou
|
13 |
Extraction and Evolution of a Software Product Line from Existing Web-Based Systems |
Erick Sharlls Ramos de Pontes,Uirá Kulesza,Carlos Eduardo da Silva,Eiji Adachi,Elder Cirilo |
|
Abstract
This chapter presents a study of extraction and evolution of a software product line (SPL) from existing web-based systems. We show a set of activities: (1) to extract commonalities and variabilities from existing use case models of a cloned web-based system; and (2) to refactor and evolve a software product line that addresses the existing web-based systems. We observed several benefits in our study related to a systematic variability management and an ease customization and evolution of the SPL features. Also, we indicate that the presented activities can be part of a method for the extraction and evolution of SPLs.
|
14 |
Re-Engineering Microservice Applications into Delta-Oriented Software Product Lines |
Maya R. A. Setyautami,Hafiyyan S. Fadhlillah,Daya Adianto,Ichlasul Affan,Ade Azurat |
|
Abstract
Software with microservice architecture consists of a collection of small and independent services. Those services can be combined and modified to serve various purposes, which leads to an increase in requirement variability. The variability needs to be documented to track any changes and optimize the reusability. The issues are related to variability management, which is one of the main concerns in software product line engineering (SPLE). We propose an approach to re-engineer microservice applications into SPLE. The process comprises variability modeling, architectural design, and product line implementation. To model the variability in microservices, we use a multi-level feature diagram. The feature diagram is combined with the UML class diagram from existing systems to design a product line architecture. We utilize the UML-DOP profile that provides an extension to represent delta-oriented concepts in the UML notation. UML diagrams with UML-DOP profile are used to capture several levels of abstractions in the architectural models. These models enable traceability from requirements to endpoints implementation. The proposed approach is shown by performing a re-engineering for exis
|
15 |
Understanding the Variability on the Recovery of Product Line Architectures |
Crescencio Lima,Mateus Cardoso,Ivan do Carmo Machado,Eduardo Santana de Almeida,Christina von Flach |
|
Abstract
The Product Line Architecture (PLA) of a Software Product Line (SPL) is the core architecture that represents a high-level design for all the products of an SPL, including variation points and variants. If PLA documentation is missing, it can be recovered by reverse engineering the products. The recovered PLA is a relevant asset for developers and architects, that can be used to drive specific activities of SPL development and evolution, such as, understanding its structure and its variation points, and assessing reuse. This chapter presents our PLA recovery approach and an exploratory study that investigated the effectiveness of recovered PLAs to address variability identification and support reuse assessment. We recovered the PLA of 15 open source SPL projects using the PLAR, a tool that supports PLA recovery and assessment based on information extracted from SPL products’ source code. For each project, reuse assessment was supported by existing reuse metrics. The yielded results revealed that the number of products used in PLA recovery affected the variability identification, and the number of optional features affected the components reuse rate. The findings suggest that a mini
|
16 |
|
|
|
Abstract
|
17 |
PAxSPL: A Framework for Aiding SPL Reengineering Planning |
Luciano Marchezan,Elder Rodrigues,João Carbonell,Maicon Bernardino,Fábio Paulo Basso,Wesley K. G. As |
|
Abstract
Among the approaches to develop Software Product Lines (SPL), the extractive approach is adopted when the company has a set of similar systems that are analyzed to extract, categorize, and group their features throughout the SPL reengineering process. However, SPL reengineering scenarios differ due to different variables, such as the experience of the developers and product portfolios. Due to this diversity of options, rigorous planning of the reengineering process is critical to perform SPL reengineering. To create a planning framework to allow customization, we sought in the literature and analyzed SPL reengineering processes. We defined the Prepare, Assemble, and Execute Framework for SPL Reengineering (PAxSPL). PAxSPL aids the SPL reengineering planning by providing flexibility concerning artifacts, strategies, and techniques used for feature retrieval. This flexibility is given by allowing the choice and combination of different techniques for feature retrieval based on company related information. We conducted a case study to collect exploratory evidence about PAxSPL application into ten different products, generated from an organization’s real development environment. The re
|
18 |
Bottom-Up Technologies for Reuse: A Framework to Support Extractive Software Product Line Adoption A |
Jabier Martinez,Tewfik Ziadi,Tegawendé F. Bissyandé,Jaques Klein,Yves le Traon |
|
Abstract
Bottom-Up Technologies for Reuse (BUT4Reuse) is a generic and extensible framework for helping in Software Product Line (SPL) adoption from existing artefacts. It supports the re-engineering of source code variants, models, requirements, or other structured formats. Currently 17 adapters are available for different artefact types. The framework covers the most relevant re-engineering activities towards extractive SPL adoption, i.e., the same framework can support feature identification and location, feature constraints discovery, feature model synthesis, and the construction of reusable assets. Well-defined extension points are provided for integrating algorithms and techniques for the mentioned activities. Similar to the case of the adapters, more than 20 state-of-the-art algorithms and techniques are currently integrated. The target users are both SPL adopters and integrators of adapters and techniques. In addition, two integrated benchmarks are proposed towards reproducible and comparable results for feature location research. This chapter presents the framework principles, supported activities, and an overview of the currently available functionalities.
|
19 |
Systematic Software Reuse with Automated Extraction and Composition for Clone-and-Own |
Lukas Linsbauer,Stefan Fischer,Gabriela Karoline Michelon,Wesley K. G. Assunção,Paul Grünbacher,Robe |
|
Abstract
In order to meet highly individual and frequently changing customer requirements, engineers need to efficiently develop and maintain large sets of custom-tailored variants of systems. An approach commonly used in practice is to clone existing variants and adapt them to meet new requirements. This clone-and-own approach is flexible, intuitive and leads to quick results. However, it causes problems in the long run, as the efficient maintenance of existing variants and reuse of implementation when creating new variants become challenging for larger sets of clones. Software product line engineering addresses these problems as a structured approach for developing highly configurable systems by providing a common platform from which variants can be derived. This enables efficient reuse and maintenance, but requires large upfront investment for building the platform and training of developers. Furthermore, it is not as flexible when it comes to evolution, as changes to the platform can affect many variants at once and possible side-effects need to be considered. In this work, we propose an approach for combining the advantages of ad-hoc reuse, such as flexibility and intuitiveness, with t
|
20 |
Re-engineering Automation Software with the Variability Analysis Toolkit |
Kamil Rosiak,Lukas Linsbauer,Birgit Vogel-Heuser,Ina Schaefer |
|
Abstract
In the automated production systems (aPs) domain, software increasingly gains relevance to realize certain functionality. New system variants are created by using ad-hoc practices such as copying existing systems and customizing them to meet varying customer requirements, affecting software quality and overall maintainability in the long run. Various software systems’ variability information needs to be re-engineered to decrease such problems and reestablish sustainable development. In this chapter, we present the Variability Analysis Toolkit (VAT), which is an extensible framework that allows for the analysis of control software variants with implementations adhering to the IEC 61131-3 standard. It allows the analysis of all languages included in PLCOpen, which are Structured Text (ST), Sequential Function Chart (SFC), Ladder Diagram (LD), and Function Block Diagram (FBD) and their nesting. A fully customizable metric drives the comparison process and adjusts the whole process to get results as expected. The underlying framework is extensible and supports the adaptation of the process for other artifact types. The VAT supports the detection of code clones within and the analysis o
|
|
|