Multi Software Product Lines

About the Project

MultiPLe is a project that aims at developing methods and tools to support development of Multi Software Product Lines (MPLs), which are a special kind of software product lines (SPLs). An SPL is a family of related programs that are often generated from a common code base with the goal of maximizing reuse between these programs. An MPL is a set of interacting and interdependent SPLs.

Reuse in SPLs is achieved by combining assets, e.g., components, to produce a number of similar programs. The resulting concrete products of an SPL (a.k.a.SPL instances) are tailored to a specific use-case or environment. Large SPLs can be built by reusing functionality provided by smaller SPLs and sometimes functionality of multiple SPLs is integrated, which results in an MPL. For example, an MPL (e.g., a distributed system) can be developed from multiple components (e.g., database servers) that are developed as an SPL itself. This results in a composition of SPLs where compatibility between interacting SPLs has to be ensured. Proper configuration of such interdependent SPLs not only ensures compatibility but also reduces consumed resources by removing unneeded functionality, avoiding unneeded dependencies to other programs, reducing the user interface, etc.

The aim of the MultiPLe project is to develop and extend techniques and concepts for modeling, implementing, and configuring MPLs. This includes new approaches for modeling dependencies between SPLs, extending techniques for SPL implementation, automation of SPL development, and optimization of MPLs. In this project we focus on feature-oriented product line engineering and associated modeling techniques like feature modeling as well as different implementation techniques such as component-based software development, frameworks, preprocessors (e.g., the C/C++ preprocessor), and feature-oriented programming (FOP).