Software product line evolution: A systematic literature review (original) (raw)

Managing evolution in software product lines

Proceedings of the Sixth International Workshop on Variability Modeling of Software-Intensive Systems - VaMoS '12, 2012

In Software Product Line (SPL) engineering, similar software products are developed in families rather than individually. Developing similar software at once leads to new challenges. In particular, the model checking problem for SPL is harder because it has to deal with potentially many products and identify exactly which ones do not work properly. In previous work, we introduced Featured Transition Systems as a compact behavioural model for SPL. We also proposed new algorithms that model check all the products of the SPL efficiently, by taking into account the commonality between them to reduce the verification time. However, our current approach does not consider that SPL can evolve. If a new feature is added to the SPL, previous verification results cannot be reused. In this paper, we define formally two particular classes of features. Using simulation relations, we show that we may anticipate the properties of some products introduced by those features. We discuss interesting perspectives and present the challenges that are still ahead.

Viewpoint for Online Evolution of Software Product Lines

Abstract This report describes an architecture viewpoint that capture the conventions for constructing and using architecture views to manage online evolution of software product lines (SPL). The viewpoint frames the multiple stakeholder concerns related to online evolution of SPL, in particular variability, versioning, traceability, availability and correctness. It defines four model kinds that show the relevant information to the stakeholders for evolving deployed SPL products.

Software product lines evolution for valuable reusability

2015

Nowadays, adopting software product line (SPL) development approach becomes a successful strategic decision in software development since the rapid time to market necessity is guaranteed by SPLs due to assets reusability [1,2]. However, the expansion of the market segment implies a boost of user's requirements that should be satisfied by quickly developing new products [1]. Thus, an agile evolution of SPLs becomes a necessity. The general purpose of a SPL is the automated construction of a new product based on the reusability of existing features [2]. A feature is a characteristic defined by the domain experts [3] that abstracts a set of software-related resources called assets. Thus, a feature model (FM) represents all the products of the SPL and permits capturing products commonalities and variability [3]. To generate a new product, a user selects a set of features via a process called configuration by respecting the constraints defined in the FM [2]. Despite that SPLs permit ...

Framework for Evolving Software Product Line

International Journal of Software Engineering & Applications, 2011

Software product line engineering is an approach that develops and maintains families of products while taking advantage of their common aspects and predicted variabilities. Indeed, software product lines (SPL) are an important means for implementing software variability which is the ability of a system to be efficiently extended, changed, customized or configured for use in a particular context. Variability needs in software are constantly increasing because variability moves from mechanics and hardware to software and design decisions are delayed as long as economically feasible. Numerous SPL construction approaches are proposed. Different in nature, these approaches have nevertheless some common disadvantages. We have proceeded to an in-depth analysis of existing approaches for the construction of Software Product Line within a comparison framework in order to identify their drawbacks. We suggest overcoming these drawbacks by an improvement of the tool support for these approaches and for their interactivity with their users. We propose to study a particular software product line which is ERP as experimentation.

A Study of Evolution Impact in Software Product Lines

Product-line architectures, i.e. a software architecture and component set shared by a family of products, represents a promising approach to achieving reuse of software. Several companies are initiating or have recently adopted a product-line architecture. However, little experience is available with respect to the evolution of the products, the software components and the software architecture. Due to the higher level of interdependency between the various software assets, software evolution is a more complex process. In this paper, we discuss the results of two case stud- ies concentrating on the evolution of software assets in two swedish organizations that have employed the product- line architecture approach for several years. Based on these two cases, we discuss the commonalities, presented as categorizations of the evolution of the requirements, the software architecture and the software components, and also the differences between the two cases.

Guaranteeing Correct Evolution of Software Product Lines

2012

The research question that we posed ourselves and which has led to this paper is: how can we guarantee the correct functioning of products of an SPL when core components evolve? This exploratory paper merely proposes an overview of a novel approach that, by extending and adapting assume-guarantee reasoning to evolving SPLs, guarantees the resilience against changes in the environment of products of an SPL. The idea is to selectively model check and test assume-guarantee properties on those SPL components affected by the changes.

Evolution support mechanisms for software product line process

Software product family process evolution needs specific support for incremental change. Product line process evolution involves in addition to identifying new requirements the building of a meta-process describing the migration from the old process to the new one. This paper presents basic mechanisms to support software product line process evolution. These mechanisms share four strategies – change identification, change impact, change propagation, and change validation. It also examines three kinds of evolution processes – architecture, product line, and product. In addition, change management mechanisms are identified. Specifically we propose support mechanisms for static local entity evolution and complex entity evolution including transient evolution process. An evolution model prototype based on dependency relationships structure of the various product line artifacts is developed. 

Codifying architecture knowledge to support online evolution of software product lines

Sharing and Reusing …, 2011

A company's architecture knowledge is often personalized across specific people that share experience and knowledge in the field. However, this knowledge may be important for other stakeholders. Omitting the codification of the architecture knowledge may result in ad-hoc practices, which is particularly relevant for software evolution. In a collaboration with Egemin, an industrial manufacturer of logistic systems, we faced the problem with a lack of codified architecture knowledge in the context of the evolution of a software product line (SPL). In particular, maintainers lack the architecture knowledge that is needed to perform the evolution tasks of deployed products correctly and efficiently. Ad-hoc updates increase costs and harm the company's reputation. To address this problem, we developed an automated approach for evolving deployed systems of a SPL. Central in this approach are (1) a meta-model that codifies the architecture knowledge required to support evolution of a SPL, and (2) and algorithm that uses the architecture knowledge harvested from a deployed system based on the meta-model to generate the list of tasks maintainers have to perform to evolve the system. Evaluation of the approach demonstrates a significant improvement of the quality of system updates with respect to the correct execution of updates and the availability of services during the updates.

Investigating the safe evolution of software product lines

2011

Abstract The adoption of a product line strategy can bring significant productivity and time to market improvements. However, evolving a product line is risky because it might impact many products and their users. So when evolving a product line to introduce new features or to improve its design, it is important to make sure that the behavior of existing products is not affected.

Managing information flow in the SPL development processes

The AMPLE Way, 2011

Software product line engineering aims to reduce development time, effort, cost, and complexity by taking advantage of the commonality within a portfolio of similar products. The effectiveness of a software product line approach directly depends on how well feature variability within the portfolio is implemented and managed throughout the development lifecycle, from early analysis through maintenance and evolution. This article presents an approach that facilitates variability implementation, management, and tracing by integrating modeldriven and aspect-oriented software development. Features are separated in models and composed by aspect-oriented composition techniques on model level. Model transformations support the transition from problem to solution space models. Aspect-oriented techniques enable the explicit expression and modularization of variability on model, template, and code level. The presented concepts are illustrated with a case study of a home automation system.