Chapter 8

Delta-oriented development of model-based software product lines with DeltaEcore and SiPL: A comparison

Christopher PietschaChristoph SeidlbMichael NiekebTimo Kehrerc    aDepartment of Electrical Engineering and Computer Science, University of Siegen, Siegen, Germany
bInstitute of Software Engineering and Automotive Informatics, Technische Universität Braunschweig, Braunschweig, Germany
cDepartment of Computer Science, Humboldt-Universität zu Berlin, Berlin, Germany

Abstract

Model-based development has become a widely used approach to implement software, especially for embedded systems. Such systems must often be delivered to customers in a large number of variants exposing slightly different functionality. This need is addressed by model-based software product line (MBSPL) engineering. Implementation methodologies for MBSPLs have to be able to specify variability in models and to generate models as instances of an MBSPL. Delta modeling is a transformational approach to implement variability of an MBSPL. Variants are generated by applying one or several delta modules onto a core model. While the basic concepts of delta modeling for MBSPLs are well understood, essential development tasks such as implementation and analysis of delta modules as well as managing entire networks of delta modules are barely supported by many tools. Both our tool suites, DeltaEcore and SiPL, constitute the realization of state of the art practices in delta-oriented development of MBSPLs to address these challenges. In this chapter, we demonstrate the capabilities of DeltaEcore and SiPL, highlight their individual strengths, and compare them regarding their capabilities. With these contributions, for academics, we illustrate the state of practice, e.g., as basis for implementing results of their ongoing research and, for practitioners, we provide means to select and apply the most adequate tool in a delta-oriented MBSPL.

Keywords

delta modeling; model-based software product line

8.1 Introduction

Model-based software development (MBSD) has become a widespread approach to implement software, especially for embedded systems. In MBSD, models replace source code as primary development artifacts. Thus, implementing a system means creating one or several models specifying the behavior of the system using modeling languages such as Simulink, ASCET, a subset of the UML, or domain-specific modeling languages. Complex model-based systems must often be delivered in a large number of variants with slightly different functionality to satisfy customer demands, e.g., in the automotive domain. Software product line (SPL) engineering is a methodology to represent such a family of software systems in terms of the functionality shared by all variants (commonalities) and the functionality which is specific for an individual variant or for a subset of variants (variabilities) [24]. On the conceptual level, configurable functionality is usually represented in terms of features and the configuration logic to determine configurations (valid combinations of features) is specified in a feature model [15,4]. On the realization level, features must be implemented within reusable artifacts, e.g., as changes to models in accordance with a feature being (de)selected. On this basis, an SPL can generate a variant for any valid feature combination. A model-based SPL (MBSPL) combines MBSD and SPL engineering by specifying variability in models and generating models as variants. Techniques for implementing and maintaining MBSPLs are key to support the model management for large-scale model-based systems evolving into many versions and variants.

Delta modeling is a transformational approach to implement MBSPLs [32]. In essence, an MBSPL is implemented by a core model, representing one concrete variant, and a set of interrelated delta modules defining transformations to realize individual features. To specify a delta module, a dedicated delta language is used that aligns with the core concepts of the targeted language; e.g., DeltaJava [29,47] uses transformation operations targeting especially the language concepts of Java. A variant is derived by applying one or several delta modules onto the core model in accordance with a selected configuration.

While the foundations of delta-oriented MBSPLs are well understood, realizations within tools are faced with the following challenges: (1) dedicated delta languages are required for each modeling language, which are tedious to create; (2) an SPL must be defined, which includes the creation of delta modules; (3) an SPL needs to be maintained and developed further as part of software evolution; and (4) variants need to be derived by applying the delta modules.

These are serious obstacles for applying delta modeling in practice. In this chapter, we present a set of essential capabilities that should at least be offered by an integrated development environment for delta-oriented MBSPLs in order to address these challenges. In particular, we analyze how these capabilities are provided by DeltaEcore [33,39] and SiPL [25], two tool suites for the delta-oriented development MBSPLs which are implemented based on the Eclipse Modeling Framework (EMF) [9] and which are designed to be adaptable to arbitrary EMF-based modeling languages. We highlight the individual strengths of both tool suites and compare them regarding their capabilities. With these contributions, for academics, we illustrate the state of practice, e.g., as basis for implementing results of their ongoing research and, for practitioners, we provide means to select and apply the most adequate tool in a given scenario by delta-oriented development of MBSPLs.

The rest of the chapter is organized as follows: Section 8.2 introduces a small yet illustrative MBSPL taken from the literature used as running example throughout the chapter. Section 8.3 briefly recalls the basic ideas of delta-oriented implementation of MBSPLs from a conceptual point of view, focusing on the development tasks of creating an MBSPL from scratch and managing its evolution over time. Experienced readers familiar with the basic concepts of delta-oriented MBSPLs may skip individual aspects of this section. Subsequently, Section 8.4 describes how these development tasks are supported by the tool suites DeltaEcore and SiPL. Section 8.5 discusses and contrasts essential capabilities of both tool suites regarding their underlying concepts, technologies, and workflows, with the ultimate goal of assessing their suitability for different application scenarios. Section 8.6 demarcates our tool suites from related work and Section 8.7 concludes the chapter along with an outlook on future work.

8.2 Running example

In SPL engineering, a feature constitutes a user-visible functionality of a variant. Feature modeling is a widespread approach to define all valid feature combinations, also referred to as problem space. Each valid feature combination (i.e., a configuration) specifies exactly one variant of the SPL. A feature model can be expressed as a propositional formula over all features or using a graphical notation [4]. Each feature is either mandatory or optional and may contain sets of subfeatures grouped by and, or, and alternative groups.

Fig. 8.1 shows a feature model for an Expression Product Line (EPL; cf. [30]), which serves as running example throughout this chapter. It consists of two and-groups Data and Operations. The feature Data declares three kinds of expressions, i.e., literal (Lit), addition (Add), and negation (Neg). The feature Operations defines two kinds of operations, which can be performed on expressions, represented by the features Print and Eval. The print operation writes expressions to the console, while the eval operation evaluates the expression and returns the result. The mandatory features with a gray background represent the core features of the SPL, i.e., the features that are common to each variant of the SPL. The optional features with a white background represent the variability of the SPL leading to eight configurations.

Image
Figure 8.1 Feature model for Expression Product Line (EPL) [30].

Commonalities and variabilities of an SPL are realized by developing a generic architecture for all variants and implementing reusable artifacts, commonly referred to as solution space. Moreover, a suitable variation mechanism (see Section 8.3) must be chosen, which specifies how the problem space will be mapped onto the solution space and how to derive a specific variant by tailoring realization artifacts to functionality of the features in the selected configuration.

Variation mechanisms for MBSPLs can be classified into annotative, compositional, and transformational approaches [10]. Annotative approaches form a so-called 150% model, which contains all possible variations of a realization artifact within an SPL and, during variant creation, removes those parts that are not needed by the features selected in a configuration. Compositional approaches focus on a base model common to all variants of an SPL and create composition modules with specific additions to the base module so that a variant can be created by copying the base model and superimposing the respective composition modules for the features selected in a configuration. Finally, transformational approaches use a core model of an SPL and specify transformation modules containing instructions to add, modify, and remove elements so that, during variant creation, the changes associated with the features selected in a configuration can be performed to realize the desired functionality.

8.3 Delta modeling for MBSPLs

Delta modeling is a transformational approach, in which the solution space is described by a core model and a set of delta modules specifying changes to the core model in terms of adding, modifying, and removing elements. Unlike annotative and compositional approaches, which use specialized SPL representations of realization artifacts, delta modeling usually uses a regular variant of a realization artifact as core model (e.g., the most commonly requested variant), which permits the use of regular tools for specification and analysis. However, the flexibility of delta modeling also permits that the core model is a partial variant and that it does not comprise all core features of the SPL.

In the following, we assume that model-based technologies are used for implementing the realization artifacts of the EPL introduced in Section 8.2. More precisely, each variant of the EPL is implemented as a structured data model using the EMF [9]. EMF allows the specification of structured data models, including the specification of operations, for building applications by generating respective Java code from the model.

8.3.1 Delta language creation

A delta module consists of calls of predefined delta operations, referred to as delta actions, an application condition (when-clause), and may reference required delta modules (after-clause). The application condition maps the problem space onto the solution space by relating (combinations of) features with delta modules. Given a valid configuration, all the delta actions of all delta modules for which the application condition evaluates to trueImage are applied onto the core model in a suitable order, which is implied by the after-clause of the involved delta modules.

The set of available delta operations depends on the respective modeling language and an appropriate delta language is needed, which specifies operations to appropriately alter a model of a given source language. An interpreter for the delta language is required to execute delta operations during variant derivation. For instance, the delta language for the EMF metamodel used in the EPL running example must specify operations to add and remove elements of the types EClass, EAttribute, EOperations, etc., and operations to modify such elements by setting respective properties.

8.3.2 Software product line definition

In the following, we illustrate the realization of the EPL MBSPL and give an overview of the delta modules needed to generate variants for all valid EPL configurations.

The lower left part of Fig. 8.2 shows an EMF-based implementation for the core features of the EPL which is used as core model. The interface Exp represents expressions and specifies the method print. The class Lit represents literals, i.e., arbitrary integer numbers, and implements the aforementioned interface. It contains an attribute value, which is an integer representation of the respective literal value, e.g., the number 5. The method print writes the value of the corresponding attribute to the console as specified by the annotation.

Image
Figure 8.2 Core model of the EPL and delta modules for optional features.

The upper part of Fig. 8.2 illustrates the delta modules implementing the optional features. For instance, the delta module DEval implements the feature Eval, which is implied by its application condition (when-clause). It consists of three delta actions adding the operation eval to the interface Exp and the class Lit as well as an annotation specifying the implementation of the operation Lit.eval(). Analogously, the delta module DAdd implements the feature Add by adding the class Add, which inherits from the existing interface Exp. Furthermore, two containment references left and right are added between the class Add and the interface Exp with a lower and upper bound of one. Finally, the delta module adds the operation print to the class Add together with an annotation specifying its implementation.

While the delta modules DEval and DAdd appropriately specify the system's behavior when they are applied in isolation, i.e., only one of both delta modules is applied to the core model, their combination does not correctly satisfy the overall system's behavior as the class Add does not implement the operation eval. The features Eval and Add are independent in the problem space but interact in their realization in the solution space. This general phenomenon is referred to as optional feature problem [14]. In delta modeling, this problem can be solved by specifying a separate delta module that implements this interaction. The delta module DAddEval implements the feature interaction between the features Add and Eval by adding the operation eval() to the class Add along with the specification of its implementation via annotation. The delta module's application condition consists of a conjunction of the features Add and Eval. The delta module DAdd inserts the class Add to which the operation eval() is added by the delta module DAddEval, i.e., DAdd must be applied first, otherwise the application of the delta module DAddEval would fail, which is specified by an appropriate after-clause in DAddEval. The delta modules DNeg and DNegEval implement the feature Neg and its interaction with the feature Eval similar to the previous delta modules.

8.3.3 Software product line evolution

Although SPLs are, by design, well prepared to meet diverse requirements, one cannot anticipate all future requirements which will arise throughout the entire lifetime of an SPL [5,40]. Consequently, over time, (MB)SPLs are subject to evolution, i.e., features along with their respective realization or valid feature combinations could be added, removed, or modified. In Fig. 8.3, the feature Print of the EPL becomes optional and the feature Eval becomes a core feature.

Image
Figure 8.3 Evolved feature model for the EPL.

In addition, the implementation of the feature Eval is updated so that, whenever evaluating an expression with the eval() method, the current intermediate result is printed to the console, which effectively creates a new version of the feature Eval.

While making Eval mandatory could be implemented analogously to the previous examples by adding to the core model through delta modules, the need for removal of making Print optional creates a deep impact onto the overall solution space. Opposed to compositional approaches to implementing (MB)SPLs, delta modeling can deal with removals as well [30]. Fig. 8.4 shows the respective delta modules for realizing the evolution of the EPL.

Image
Figure 8.4 Delta modules used in the evolution of the EPL.

The delta module DNotPrint removes the print operation from the interface Exp and class Lit and is applied when the configuration does not include the feature Print, which is implied by the corresponding application condition. The delta modules DAddNotPrint and DNegNotPrint remove the print operation and its implementation from the classes Add and Neg. The former is only applied if the configuration includes the feature Add but does not include the feature Print. Thereby, the delta module DAdd must be applied first, as indicated by the after-clause. Analogously, the delta module DNegNotPrint is applied only if the configuration includes the feature Neg but not Print where the delta module DNeg is applied first. The delta modules DAddEvalVersion2 and DNegEvalVersion2 realize the evolution of the feature Eval by modifying the body of the existing annotation of the operations Add.eval() and Neg.eval(). Both delta modules must be applied after their corresponding delta modules DAddEval and DNegEval.

8.3.4 Variant derivation

Given a valid configuration, all delta modules for which the application condition over selected features evaluates to trueImage are applied onto the core model in a suitable order, which is implied by the after-clauses of the involved delta modules. For example, given the feature selection {EPL, Data, Lit, Add, Operations, Print, Eval} for the initial version of the EPL, the application condition of the delta modules DEval, DAdd, DAddEval would evaluate to trueImage and they can be applied in any order in which DAddEval is applied after DAdd. In this case, variant derivation leads to the variant depicted in the lower right part of Fig. 8.2. Using the same configuration for the evolved EPL, the delta modules DEval, DAdd, DAddEval, DAddEvalVersion2 can be applied in any order in which DAddEval is applied after DAdd and before DAddEvalVersion2.

8.4 Delta modeling with DeltaEcore and SiPL

In this section, we give a short overview of the main functionality of DeltaEcore and SiPL using our running example to compare the realizations within both tool suites. We provide the artifacts for implementing the running example in an online archive1 and direct interested readers to the webpages of DeltaEcore [33] and SiPL [25] for the latest version of the respective tool. For didactic reasons, we deliberately chose our concise running example to illustrate the tools' functionality. However, we also mention larger-scale applications for each of the tools at the end of the respective subsection.

8.4.1 DeltaEcore

The core functionality of the tool suite DeltaEcore2 [39] lies within delta language creation, SPL definition, and variant derivation, as shown in Fig. 8.5. When using DeltaEcore to manage variability of an SPL, each of these parts is used as illustrated for the running example of the EPL.

Image
Figure 8.5 Overview of the core functionality of the tool suite DeltaEcore.

8.4.1.1 Delta language creation

To transform a realization artifact of a particular source language through delta actions, delta modeling requires a respective delta language that supplies suitable delta operations, e.g., DeltaJava [29,47] for Java. One of the core functionalities of DeltaEcore is the generation of a delta language from the metamodel of an arbitrary source language. DeltaEcore provides the majority of a custom delta language through its Common Base Delta Language (CBDL), which contains language constructs to define, reference, and require delta modules, etc., that are independent of the concrete source language. To create a custom delta language, it is necessary to interface with the respective source language. For this purpose, DeltaEcore permits the specification of so-called delta dialects, i.e., specifications of the delta operations that should be provided for transforming a realization artifact of the source language within a delta module. A custom delta language in DeltaEcore consists of the combination of the CBDL with the delta dialect for the source language. Fig. 8.6 shows an excerpt from the delta dialect for Ecore models as used within the EPL running example.

Image
Figure 8.6 Excerpt from the delta dialect for Ecore models used within EPL.

In the configuration part, a delta dialect has to tie to the source language via the keyword metaModel by providing the unique model URI of the source language. Furthermore, it allows to optionally specify an identifierResolver, which is used to transform textual names provided between angle brackets (<...>) within a delta module (see Section 8.4.1.2) to elements of the modified realization artifact that can then be used in delta actions. In the deltaOperations part, a delta dialect allows to provide a list of delta operations that can then be used as delta actions within delta modules to transform a realization artifact. The example of Fig. 8.6 shows delta operations to add and remove a class but also to modify its properties, e.g., by making it abstract or changing its super types.

DeltaEcore offers capacities to analyze and (mostly) automatically create delta languages suitable for a particular source language [39]. For this purpose, the metamodel is traversed for suitable elements and so-called standard delta operations to add, modify, and remove values for these elements are created automatically with predefined semantics, e.g., to set the value for nonconstant attributes. To extend a delta dialect beyond the capabilities of the atomic standard delta operations, it is possible to specify custom delta operations with user-defined semantics, e.g., the delta dialect for Ecore in Fig. 8.6 contains one such method to set the package of a classifier, which is only possible indirectly due to the structure of Ecore.

To facilitate execution of delta actions associated with the respective delta operations from the delta dialect, DeltaEcore generates an interpreter specific to the custom delta language. For standard delta operations, the interpreter contains a full implementation due to their defined standard semantics. For custom delta operations, the interpreter contains stub methods whose body has to be implemented by the creator of the delta language to reflect the semantics of the operation.

Note that delta language creation has to be performed only once for each source language, and in the case of Ecore a suitable delta language already exists, which is delivered with the tool suite.

8.4.1.2 Software product line definition

With a suitable delta language in place, it is possible to specify the artifacts needed by DeltaEcore to create an SPL definition. In particular, these are a set of delta modules, a central mapping model that contains all application conditions, and, optionally, a list of application-order constraints.

A delta module specifies delta actions to transform a particular realization artifact by using a delta language suitable for the source language of the realization artifact. Fig. 8.7 shows the DeltaEcore file for the delta module DAdd from the running example. In its first line, the delta module is given a descriptive name, e.g., “DAdd.” The remaining lines are referred to as a delta block, which consists of a header and a body (within braces {...}).

Image
Figure 8.7 Delta module DAdd in DeltaEcore to realize the feature Add.

The header of a delta block, as first entry, specifies which delta language to use. As described in Section 8.4.1.1 only a delta dialect with suitable delta operations is needed to interface with a source language (i.e., Ecore) as the remainder of the delta language is provided by the common base delta language. Hence, using the dialect keyword, it is sufficient to provide the model URI used within an existing suitable delta dialect. With the modifies keyword, the header allows to specify which realization artifact should be transformed within the delta block, in this case, the EPL core model. For more complex scenarios, it would also be possible to provide a list of realization artifacts to be modified, e.g., when moving elements from one artifact to another. Optionally and in between the dialect and modifies keywords, it is also possible to use the requires3 keyword to provide a list of delta modules that have to be applied as prerequisite for the delta module to be applicable.

The body of the delta block consists of a sequence of delta actions, i.e., calls to delta operations defined in the delta dialect with arguments to transform the targeted realization artifact(s). In the example, first, the class Add is added. Then, both its left and right references are created. Finally, its method print() is added with a suitable implementation. To target existing elements, DeltaEcore uses references, which are enclosed within angle brackets (<...>) and are resolved to suitable elements for the delta actions, e.g., <Exp> is resolved to the interface Exp using either a generated basic reference resolver or a specialized one explicitly specified in the delta dialect (see Section 8.4.1.1).

Note that a delta module may, in principle, specify multiple delta blocks. This is sensible if a logically coherent set of transformations (e.g., to realize one particular feature) affects multiple realization artifacts of different source languages (e.g., if there also was a model specifying the concrete syntax of the EPL that would have to be subjected to variability according to the same features).

The mapping model relates (combinations of) features with a set of delta modules and, thus, constitutes a centralized model of application conditions for delta modules. Fig. 8.8 shows the DeltaEcore mapping model for the running example. In the general case, an entry to the mapping model consists of a left-hand side referencing a feature and a right-hand side giving a delta module within angle brackets (<...>), e.g., Add:<deltas/DAdd.decore>. However, more complex entries are possible. For one, the left-hand side may contain a complex expression over features comprising logical operators for negation (!), conjunction (&&), and disjunction (||), e.g., Add && Eval. Furthermore, the right-hand side may define a set of delta modules as comma-separated list (to be applied in an arbitrary order) if multiple delta modules are associated with the same expression over features.

Image
Figure 8.8 Mapping in DeltaEcore to collect all application conditions for delta modules.

Application-order constraints prescribe a partial order on delta modules to enforce constraints on their application sequence when deriving a variant from the SPL. In our running example, it has to be assured that the class Add was created and the method eval() added to its super class, i.e., the interface Exp, before adding the implementation of the method eval() to the class Add. However, this order only has to be obeyed if the selected configuration contains both features Add and Eval. Hence, the DeltaEcore delta modules DAdd, DEval, and DAddEval have to obey that (partial) order if they are selected together. Fig. 8.9 shows the respective application-order constraints file of DeltaEcore to enforce this partial order. Within brackets ([...]), DeltaEcore permits the definition of a constrained group containing arbitrarily many delta modules. Within a constrained group, the order of delta modules may be changed arbitrarily. However, the order of constrained groups themselves is maintained during variant derivation. Hence, a constrained group constitutes one level of a partial order specification. Note that it is also possible to nest constrained groups to realize more complex (partial) orders.

Image
Figure 8.9 Application-order constraints in DeltaEcore to prescribe a partial order on delta modules.

Also note that all the artifacts used in the definition of a DeltaEcore SPL are entirely model-based as they are founded in Ecore metamodels themselves. This means that DeltaEcore artifacts integrate seamlessly into an MBSPL scenario, e.g., delta modules could be generated through model transformation similar as we did in some of our work on reverse engineering SPLs [48] and pattern-based SPL development [41,42].

With the definition of delta modules, the mapping for application conditions, and the optional application-order constraints, a basic DeltaEcore SPL definition is complete and it is possible to derive variants as described in Section 8.4.1.4.

8.4.1.3 Software product line evolution

For the EPL running example, the changes for making the feature Print optional can be realized by delta modules that remove the respective elements from the core model. Similarly, making the feature Eval mandatory does not require any changes to the delta modules as the existing ones can still be applied.

However, creating a new version of a feature implementation, such as with the feature Eval, poses greater challenges: Not all users of an SPL may want to migrate to a new version of an SPL and its features immediately or completely, e.g., due to a dependency on an old version of a particular feature. In consequence, it may be necessary to include existing versions of features in the configuration process to be able to maintain them and combine them with other features, potentially in newer versions.

To address this challenge, DeltaEcore provides evolution delta modules. Evolution delta modules have the express intent of realizing versions of a feature's implementation. A version is perceived as resulting in an incremental change to the state of the realization of the previous version, i.e., further transformation. Hence, on the implementation level, evolution delta modules are similar to the delta modules that enable or disable a feature's functionality – which we refer to as configuration delta modules for disambiguation. However, conceptually, the two types of delta modules have different intents, which is relevant, e.g., in their application order where a feature has to be enabled before it can be migrated to a newer version. Fig. 8.10 shows an evolution delta module of the running example that migrates the implementation of the eval() method of the class Add to the new version of the feature Eval. Note that the delta module is introduced by the evolution keyword to signal to DeltaEcore that it is an evolution delta module.4 In the example, the delta actions within the evolution delta module make use of the same delta operations from the delta dialect as within configuration delta modules. However, it is possible to restrict the usage of some delta operations in a delta dialect to evolution delta modules by prepending their definition with an evolution keyword, e.g., especially invasive operations, such as refactorings, that should not be used for configuration.

Image
Figure 8.10 Evolution delta module DAddEvalVersion2 in DeltaEcore to migrate the implementation of the eval() method.

To associate the evolution delta module with the new version of the feature Eval, the mapping model has to be updated. In Fig. 8.11, an excerpt from the revised mapping model shows how the new version of the feature Eval is used in a condition on when to apply the evolution delta module to update the implementation of the eval() method of the class Add.

Image
Figure 8.11 Excerpt of the updated mapping in DeltaEcore to collect all application conditions for delta modules including feature versions.

When selecting a configuration that contains the feature Eval in the new version, the mapping model provides the appropriate evolution delta module5 to trigger version migration of the feature.

8.4.1.4 Variant derivation

DeltaEcore provides multiple ways to select which variant should be generated: selecting a set of delta modules to be applied, defining a configuration, and, when interfacing with an explicit feature model [40], employing a graphical configurator. Fig. 8.12 shows an example of a DeltaEcore configuration for the EPL running example.

Image
Figure 8.12 DeltaEcore configuration for an example selection of features from EPL.

With the prior option, the initial set of delta modules is explicit. With the latter two options, the selection of features within the configuration is used in conjunction with the mapping model of application conditions to resolve the left-hand side of mapping entries and, if satisfied, to include the delta modules on the right-hand side in the initial set of delta modules. For the example of Fig. 8.12, the initial set of delta modules would be {DAdd, DEval, DAddEval}.

With either of these options, the determined initial set of delta modules is completed by transitively including those delta modules that are explicitly required from the header of the contained delta block(s) (see Section 8.4.1.2), which is not necessary within the running example.

With the full set of delta modules to be applied for one particular variant, DeltaEcore determines a valid application sequence. For this purpose, application-order constraints specified explicitly in the respective model and those defined implicitly by the requires relation of delta modules are considered when building a dependency graph of delta modules. Subsequently, this dependency graph is sorted topologically and, from the resulting partial order, one permissible total order is chosen as application sequence. For the example of Fig. 8.12, valid application sequences would be [DAdd, DEval, DAddEval] or [DEval, DAdd, DAddEval] due to the application-order constraints of Fig. 8.9 prohibiting DAddEval to be applied first.

For the actual variant derivation, DeltaEcore copies the core model of the SPL and then applies the relevant delta modules in the determined application sequence. For the application of delta modules, each delta block in each delta module has its delta dialect resolved so that the delta actions within the delta block body can be executed via the interpreter for the delta language (see Section 8.4.1.2). The result of variant derivation is the realization artifacts containing appropriate functionality for the selected features and, when using evolution delta modules, respective versions thereof.

8.4.1.5 Experiences

The implementation of the running example was performed by a user familiar with DeltaEcore and, with a previously existing feature and core model, consumed approximately 45 minutes of effective working time.

In larger-scale use, DeltaEcore has been applied as a corner stone technology within the EU Project HyVar6 as part of a cloud-based reconfiguration infrastructure for variable automotive software. Furthermore, DeltaEcore has been applied in various evaluation scenarios, e.g., the TurtleBot driver software [34], a metamodel family for role-based modeling and programming languages [18], and an SPL of feature modeling notations [43]. Finally, DeltaEcore has been incorporated into multiple other tool suites, e.g., as part of reverse engineering for the generation of delta modules [48], as variant generation mechanism for context-aware SPLs [22,23], or as back-end for the new version of DeltaJava.7

8.4.2 SiPL

While the main functionalities of SiPL widely correspond to those of DeltaEcore, there are also some differences with respect to its underlying concepts which are illustrated using our running example.

8.4.2.1 Delta language creation

A distinguishing characteristic of SiPL is to derive delta modules from a model difference [26]. Therefore, SiPL is integrated with the model differencing framework SiLift [16], which provides advanced differencing and patching facilities based on graph transformation concepts. This way, the difference between an origin model and a changed version may be described as an asymmetric difference (also known as edit script) [17].

An excerpt of the conceptual structure of such a difference is illustrated in Fig. 8.13. An asymmetric difference consists of a set of operation invocations which, when applied onto the origin model, yield the changed model. Each operation invocation calls a parameterized graph transformation rule by providing actual parameter bindings and mappings of output to input parameters. A partial order is induced by the dependencies between the operation invocations. In the context of SiPL, an operation invocation corresponds to a delta action and a graph transformation rule to a delta operation, respectively.

Image
Figure 8.13 Excerpt of the conceptual structure of an asymmetric model difference used in SiPL.

That means, a delta language actually consists of a set of graph transformation rules which must be specified for the respective source language. Fig. 8.14 shows an excerpt of the set of graph-based delta operations which are typed over the Ecore metamodel. The left- and right-hand sides of a rule are merged into a single graph, following the visual syntax of the model transformation language Henshin [1,31]. The left-hand side of a rule comprises all model elements stereotyped by delete and preserve. The right-hand side contains all model elements annotated by preserve and create. The operations on top create/delete an EClass, the lower ones add/remove a superTypes relation between two EClasses. The remaining operation sets the value of the EAttribute called abstract of an EClass.

Image
Figure 8.14 Specification of delta operations in SiPL based on graph transformation concepts.

A basic set of operations can be automatically derived from the metamodel of the respective modeling language using the approach and supporting tool presented in [20] and [19,28], respectively. A specific capability of these operations is that they preserve elementary consistency constraints defined by the given language metamodel, e.g., multiplicities of references.

More complex delta operations can be manually specified using the Henshin editor or derived from examples following the concept of model transformation by-example [13]. Fig. 8.15 shows a delta operation creating an EAttribute and setting its type. Please note that the type is not declared to be mandatory by the Ecore metamodel but by a separate consistency constraint.

Image
Figure 8.15 Example of a consistency preserving delta operation which respects separate consistency constraints.

8.4.2.2 Software product line definition

To create an SPL definition in SiPL, we have to create a new delta modeling project by providing a variability model and a set of delta operations. The variability model is assumed to be a propositional formula over the set of features. However, SiPL can be extended by arbitrary variability adapters which convert a proprietary variability model into a propositional formula.

A respective adapter for converting a feature diagram expressed in FeatureIDE is already available.

Fig. 8.16 gives an overview of the overall project structure. A delta modeling project consists of several folders for the core model, delta modules, and generated model variants (referred to as products of an MBSPL in Fig. 8.16). In a first step, we have to specify the core model of our running example, which can be done by creating a new model in the respective folder or by importing an existing one. Furthermore, the respective configuration must be assigned to the core model. This information is stored in a so-called deltamodel which manages the overall solution space, i.e., the core model, delta modules including their interrelations, and the mapping of the problem space onto the solution space. Furthermore, a delta module encapsulates an asymmetric difference, has a name, and is equipped with an application condition, i.e., a propositional formula over features defined by the feature model.

Image
Figure 8.16 Delta modeling project structure in SiPL.

In order to create a new delta module, an origin model is generated by passing a valid feature configuration. If no configuration is given, the core model is used. An empty delta module is added to the deltamodel and the origin model is copied into the origin and modified folder of the respective delta module folder of the project. After that, a delta module can be implemented by editing the model in the modified folder and by comparing the original model with its modified version. Fig. 8.17 illustrates the derivation of the delta module DAddEval. Therefore, the origin model is generated by passing a configuration including the features Eval and Add.

Image
Figure 8.17 Delta module generation in SiPL.

Subsequently, we edit the model in the modified folder by adding the operation eval to the class Add and an annotation specifying its implementation. Next, an asymmetric difference is derived between the origin and modified model using SiLift. Therefore, SiLift must be configured by the respective delta operations specified as Henshin transformation rules. The asymmetric difference includes all delta actions as partially ordered set of operation invocations, according to the conceptual structure shown in Fig. 8.13. Finally, the asymmetric difference is added to the deltamodel by referencing the asymmetric difference from the respective delta module.

Analogously to DeltaEcore, SiPL also supports a textual representation from which an asymmetric difference can be derived and vice versa. Fig. 8.18 shows the textual representation of the delta module DAddEval.

Image
Figure 8.18 Textual representation of the delta module DAddEval in SiPL.

In the first line, the name of the delta module and its application condition are specified. The delta block consists of the specification of the source language and a set of delta actions. A delta action calls the graph-based implementation of the corresponding delta operation that is identified by its signature (cf. Fig. 8.14). The delta action creates the operation eval in the class Add, followed by a delta action setting the return type of the created EOperation. The other operations create the annotation and its body specifying the implementation of the EOperation. Value parameters are defined by the keyword value and must be passed in quotation marks. Object parameters are defined by the keyword object and are passed using their qualified name. If several objects have the same qualified name, XMI-IDs are attached to uniquely identify the respective elements in the overall deltamodel. Created elements can be further assigned to local variables. Please note that in Henshin return values are also specified by parameters in the operation's signature. These need not to be unique in the overall set of operations. However, to uniquely identify created elements an alias can be declared using the keyword as.

As mentioned in Section 8.3.2, the delta module DAddEval depends on the delta module DAdd. While in DeltaEcore this relation must be managed manually as application-order constraint (cf. Fig. 8.9 in Section 8.4.1.2), SiPL automatically detects such relations and manages them in the deltamodel.

8.4.2.3 Software product line evolution

As we will illustrate later in this section, relations such as dependency relations between delta modules can be effectively utilized to support the evolution of an MBSPL. In addition to dependencies, SiPL also supports the detection of conflicts, duplicates, and transient effects between delta actions and thus between delta modules. Table 8.1 summarizes our definition of the mentioned kinds of relations. SiPL exploits the fact that delta operations invoked by delta actions are implemented as declarative rules based on graph transformation concepts. This allows to statically reason about relations between delta actions by extending concepts presented in [17]. Relations between delta actions are further aggregated to relations between delta modules and can be validated against the feature model.

Table 8.1

Potential relations between delta actions.
RelationDefinitionExample
ConflictThe delta actions d1 and d2 are in conflict if they cannot be applied together or their application in both orders would lead to different resultsd1 deletes a model element which is needed by d2 or changes an attribute value such that a precondition of d2 is not fulfilled anymore, or both modify the same attribute by setting different values.
Dependencyd2 depends on d1 if d2 can only be applied after d1.d1 creates a model element which is needed by d2 or d1 changes an attribute value such that an initially unfulfilled precondition of d2 is fulfilled.
DuplicateThe delta actions d1 and d2 yield the same effect under the same condition.d1 and d2 create or delete the same element or modify the same attribute by setting the same value.
Transient effectThe application of the delta action d2 removes the effect of a delta action d1.d1 creates a model element that is deleted by d2.

The right part of Fig. 8.19 shows the relation graph of the deltamodel for the evolution scenario of our running example. Delta modules are represented as nodes and relations as arrows. Blue arrows (dark gray in print version) represent dependencies between the connected delta modules. A delta action of the source module depends on a delta action of the target module. The red arrows (mid gray in print version) represent conflicts between the connected delta modules, i.e., the execution of a delta action of the source module would prevent the execution of a delta action of the target module. Transient effects are illustrated by yellow arrows (light gray in print version). The source module contains a delta action that removes the effect of a delta action of the target module. For getting more details about a relation, we can inspect the deltamodel shown in the left part of Fig. 8.19. It consists of an expandable list of delta modules and their relations.

Image
Figure 8.19 Overview of the SiPL UI components.

For instance, to inspect the transient effect relation from the delta module DAddNotPrint to DAdd we can expand the item of the former and further expand the item holding the outgoing transient effects. Each transient effect item offers information about the kind of the transient effect and the involved delta actions. In this case, the operation print is created by one delta module and deleted by another one.

As mentioned above, the dependencies between delta modules specify the application ordering of delta modules during variant derivation. However, conflicts, duplicates, and transient effects may be a hint for a mismatch between the problem and solution space. For instance, when two features are compatible in the solution space but their delta modules are in conflict, the variant cannot be derived as expected. In our example, the detected conflicts are automatically resolved by applying the involved delta modules according to the application order defined by the dependency relation which is indicated by the red dashed arrow. However, some conflicts can only be resolved by extracting the conflicting delta actions from one of both delta modules into a new delta module which is equipped with an application condition which prevents the application of the conflicting delta actions.

Transient effects may be a hint for an inadequate variability design in the solution space. For instance, the transient effect between DAddNotPrint and DAdd is due to the evolution described in Section 8.3.3. Fig. 8.20 shows all occurring relations between both delta modules.

Image
Figure 8.20 Excerpt of the delta module relation graph showing all relations between DAdd and DAddNotPrint.

The feature Print has become an optional one and its implementation should be separated from the implementation of the features Add and Neg in order to correspond to the problem space.

SiPL offers a set of fundamental restructuring operations. All of them create one new delta module which is derived from existing delta modules; an overview of the available restructurings is given in Table 8.2.

Table 8.2

Restructuring operations provided by SiPL.
OperationResulting delta module contains ...
extractConflicts12)the delta actions of Δ1 which are in conflict with a delta action of Δ2 or (transitively) depend on a conflicting delta action of Δ1.
intersect12)the common delta actions of both arguments.
minus12)the set of delta actions contained in Δ1, but not in Δ2.
merge12)all delta actions of both arguments and extends the partial order of the delta actions according to the dependencies between the delta modules. Furthermore, duplicates and transient effects between both arguments are eliminated.

Each restructuring operation defines a precondition which must be fulfilled, otherwise the application of the operation fails. For instance, the arguments of the operation merge must not be in conflict or the conflict must be resolved by the application order induced by the dependency. Common refactorings for delta-based SPLs as introduced by Schulze et al. [37] can be easily implemented by combining the basic restructuring operations offered by SiPL.

For instance, to eliminate the transient effects between the delta modules DAdd and DAddNotPrint of our running example, we can concatenate the operations mergeImage and minusImage as illustrated in Fig. 8.21. First, we apply the operation merge(DAdd,DAddNotPrint)Image, which leads to the delta module DMerge with the manually adjusted application condition Add|Add&not(Print)Image (see Fig. 8.21A). This delta module contains all delta actions of DAdd and DAddNotPrint without those delta actions leading to a transient effect. The new delta module overlaps with the delta module DAdd. To eliminate the duplicates we apply the operation minus(DAdd,DMerge)Image, leading to the new delta module DMinus with the manually adjusted application condition Add&PrintImage (see Fig. 8.21B). The delta modules DAdd and DAddNotPrint are not needed anymore and can be deleted. Now, the resulting delta module set does not contain any transient effects or duplicates. In order to perfectly correspond to the problem space, we can further merge the delta modules DMerge and DAddEval.

Image
Figure 8.21 Refactoring to eliminate transient effects. (A) Result of applying merge(DAdd,DAddNotPrint) leading to the delta module DMerge. (B) Result of applying minus(DAdd,DMerge) leading to the delta module DMinus.

In general, however, finding an appropriate refactoring may be challenging. Therefore, SiPL further offers a range of metrics in order to assess the quality of the overall solution space and to recommend refactorings [27]. A metric is defined by a name, a computation function, an indicator which defines whether a high value is better or worse than a low value. For example, the relational complexity of a delta module measures the average number of occurrences of delta actions in relations to other delta modules. A lower value is preferable and indicates that the delta module is more easily understandable and maintainable because relations with other delta modules are less complex. The redundancy relates the number of duplicate delta actions and all delta actions of a nonempty delta module. A lower value indicates better reusability. Further metrics are presented in [27]. Whenever a refactoring is successfully applicable, the affected metric values are computed before and after the refactoring and presented to the developer. Regarding our running example, the initial relational complexity is about 2.2 (see lower left part of Fig. 8.19). After the elimination of the transient effects it decreases to 1.0.

8.4.2.4 Variant derivation

A variant can be derived by interactively selecting features or by creating a configuration file which is a simple list of features. In a first step the configuration can be validated against the variability model, i.e., the feature model. Next, for all delta modules whose application condition is evaluated to trueImage an application order is determined according to the dependency relations. The execution of the delta operations of a delta module is performed by the patching engine of SiLift, which resolves the actual parameter bindings and delegates the actual rule invocation to the Henshin interpreter. If the application of a delta module fails due to unresolved conflicts, we can start the application again in a kind of debug mode reusing the interactive patching tool of SiLift. In this mode each delta action can be interactively applied onto the core model. Conflicting delta actions can be skipped or the patched model can be edited after each successfully applied delta action in order to resolve remaining conflicts manually.

8.4.2.5 Experiences

The implementation of the running example with SiPL was performed by a user familiar with the framework and, analogously to the implementation using DeltaEcore, with a previously existing feature and core model. It consumed approximately 80 minutes of effective working time.

In addition to the implementation of the running example, SiPL has already been demonstrated using an SPL, called Smart Home, which serves as a standard example domain in the SPL community [24,45], and an SPL extracted from a case study for embedded software in industrial automation, the Pick and Place Unit (PPU) [46], which serves as a standard case study within the German Priority Programme “SPP 1593 Design For Future – Managed Software Evolution”.8 Furthermore, to evaluate the larger-scale use of SiPL, we will use the bCMS-SPL, a case study having over 50,000 variants, which is used to evaluate and compare different modeling approaches [7,6].

8.5 Capabilities of DeltaEcore and SiPL

Both tool suites, DeltaEcore and SiPL, are rich in their capabilities with regard to delta modeling. While their core functionality overlaps in some areas, their fundamental concepts are based, in part, on different design decisions, and both tool suites excel in their individual areas. Table 8.3 shows an overview of the main capabilities of both tool suites and, in the following, we briefly elaborate on each of them.

Table 8.3

Comparison of capabilities of DeltaEcore and SiPL.
Image

Delta language infrastructure: DeltaEcore provides shared functionality for delta languages, which is independent of a concrete source language (e.g., requiring another delta module), within its Common Base Delta Language (CBDL). To create a custom delta language, a delta dialect has to be provided, which is specific to the source language and provides delta operations for modification of the respective artifacts (e.g., removing a class from an Ecore metamodel).

In SiPL a deltamodel (containing delta modules and their relations) is specified by an EMF-based metamodel. Each delta module encapsulates a consistency preserving edit script. The instantiation of deltamodels and edit scripts is independent of the concrete source language. However, we have to provide a set of graph transformation rules representing delta operations specific to the source language.

Delta operation syntax: Both DeltaEcore and SiPL provide a textual syntax for custom delta languages. However, all artifacts of DeltaEcore and SiPL are entirely model-based so that another type of concrete syntax may be used as well. For example, DeltaEcore may be integrated with the graphical syntax of a source language by providing a delta recorder that tracks operations in a graphical editor and generates a delta module from them. SiPL reuses existing state-based model differencing tools, so that the standard model editors can be used to edit a given variant and to derive a delta module from the model difference.

Delta operation semantics: DeltaEcore provides a set of standard delta operations to add, modify, and remove elements on a fine-grained level whose semantics are defined by a generated interpreter. DeltaEcore also supports more coarse-grained or complex user-defined operations by custom delta operations whose semantics are realized by implementing stub methods in the generated interpreter using the imperative programming language Java. In contrast, in SiPL delta operations are declaratively specified by graph transformation rules whose semantics are formally defined by the underlying graph transformation concepts, i.e., no additional implementation for interpreting delta operations is needed.

Delta language creation: DeltaEcore provides means for the automated analysis of a source language metamodel to determine suitable delta operations for a delta dialect, e.g., to modify values of nonconstant attributes. The resulting delta dialect has expressive names for the delta operations and can be further customized, e.g., with custom delta operations.

Likewise, SiPL offers the capability of deriving a set of basic delta operations from the metamodel of the corresponding source language. However, the generated operations are more complex than those generated by DeltaEcore, e.g., by considering multiplicity constraints defined by the metamodel. A delta operation in SiPL typically consists of several fine-grained transformation actions which are combined to form a single transaction in order to preserve the consistency of the derived model. Further complex rules can be realized using the Henshin transformation rule editor or inferred from examples.

Application condition specification: DeltaEcore collects application conditions external to the delta modules themselves in a dedicated mapping model. This has the benefit that application conditions can be created and maintained in a centralized location where logically coherent delta modules are grouped under the same application condition. On the contrary, there is no dedicated mapping artifact in SiPL but each delta module is directly equipped with an application condition. This has the benefit that application conditions are readily available with the delta modules and that a modification does not lead to unexpected side effects.

Feature model integration: DeltaEcore integrates seamlessly with plain feature models, which support the modeling of just features, as well as HFMs [40,38], which support the modeling of features and feature versions. Furthermore, the tool suite DarwinSPL [22], which has its foundation in DeltaEcore, provides Temporal Feature Models (TFMs) [23], which support the integrated modeling of evolution to the feature model structure. In addition, DeltaEcore provides a generic extension mechanism for arbitrary variability modeling notations to interface, which is also used to provide a FeatureIDE [44] integration.

In SiPL the feature model must be converted into a propositional formula which might be more complex and hard to understand. However, such formulas can be efficiently validated using existing SAT solvers. Therefore, the framework provides an extension mechanism to integrate arbitrary SAT solvers. Furthermore, the framework also provides an extension mechanism to convert proprietary variability models into such a formula, e.g., for converting feature models of FeatureIDE.

Configuration contents: DeltaEcore configurations consist of a selection of features and, in addition, an optional selection of a specific version for each of the selected features. The same holds for SiPL, except for the versioning support.

Variant creation trigger: DeltaEcore's variant creation can be triggered in multiple ways: Delta modules to be applied may be selected manually or a configuration may be specified either manually as a configuration file or, when interfacing with a feature model, by using a graphical configurator. In addition, DeltaEcore offers a command line interface for headless operation and a web service for remote operation, both of which may also trigger variant creation. SiPL also supports configuration files and the interactive selection of features as well as validating a configuration against the feature model. Furthermore, SiPL supports a kind of debug mode in order to apply delta actions and to interactively resolve occurring conflicts.

Evolution support: DeltaEcore supports versions of features through evolution delta modules which perform incremental changes based on the previous feature version. When integrating with HFMs [40,38], feature versions may be modeled explicitly so that they can be incorporated in the configuration process, with a method for automatic version selection, as well as the variant derivation procedure.

In SiPL, the actual versioning of both problem and solution space artifacts is delegated to a version control system. However, there is no conceptual limitation of integrating HFMs or Temporal Feature Models in the future.

Analysis support: DeltaEcore provides an overview of SPL projects by displaying delta modules with their dependencies and modified artifacts in various views, which may be used for manual inspection and tool-supported restructuring of the SPL on a coarse-grained level. SiPL provides a coarse-grained overview by providing a relation graph as well as fine-grained information about dependencies, conflicts, duplicates, and transient effects which can be inspected in the overall deltamodel. For each delta action its effect can be further inspected in the respective model editor. All information is provided by a generic, fully automatic, and static analysis of the delta modules. Furthermore, conflicts can be partially resolved automatically by further analyzing the relations.

Refactoring support: DeltaEcore provides fundamental support for restructuring delta modules, e.g., by providing operations to merge the contents of two delta modules or to extract a sequence of delta actions to a new delta module. Responsibility for ensuring validity of the resulting delta modules lies with the user. Furthermore, DeltaEcore provides refactoring support for feature models, with the aim of preserving the consistency of problem and solution space [35].

In contrast, SiPL provides advanced analysis and refactoring support based on concepts of metrics and a basic set of restructuring operations which can be combined to more complex refactoring operations. Each operation defines a precondition which must be fulfilled in order to be applicable. Furthermore, the impact of the refactorings to the corresponding metrics is shown to recommend an appropriate one. Finally, the analysis results can also be used to detect a mismatch between the problem and solution space which can be solved by using the proposed refactorings.

8.6 Related work

Other approaches strive for goals similar to those of this chapter by generating or providing languages to manipulate realization artifacts of various languages.

Haber et al. [10] present work that is closely related to ours as they generate a delta language for a provided source language by grammar extension. However, they merely create the concrete syntax of the language without the possibility of variant creations.

Sánchez et al. [36] present a framework to define domain-specific languages for variability management for artifacts of a particular metamodel.

Zschaler et al. [49] extend upon this work by using SPL technologies to define a family of variability modeling languages. These approaches permit the definition of languages for transformational variability; however, they are not embedded in an overall SPL methodology.

Apel et al. [2] introduce FeatureHouse as a means to generalize software composition by superimposition for realization artifacts in different source languages. However, the resulting languages utilize Feature-Oriented Programming (FOP) [3], which may merely add elements but not remove them as with delta modeling.

Only limited effort has been spent on methods and techniques to automatically detect delta module interrelations and to refactor the overall set of delta modules.

Lienhardt et al. [21] introduce a constraint-based type system for conflict detection in delta-oriented programming. Delta-oriented programming focuses on a source code-based realization of SPLs, the delta dialect is restricted to classes, attributes, and operations.

The analysis functions for SiPL are independent of the source language, i.e., the set of the delta operations. The rich structure of the transformation rules is an essential precondition for its (static) analysis functions. Most of them have no equivalent in existing work, specifically the analysis of dependencies, duplicates, and transient effects. To the best of our knowledge, only Jayaraman et al. [12] present a conflict and dependency analysis of deltas similar to those provided by SiPL. It is based on critical pairs of graph transformation rules. However, each feature implementation defines one special monolithic graph transformation. In contrast to this, a delta module consists of several delta actions calling the respective transformation rule. Furthermore, Jayaraman et al. detect only dependencies and conflicts. Duplicates and transient effects are only considered by some refactorings presented by Schulze et al. [37] and Haber et al. [11]. Schulze et al. introduce a catalog of refactorings in the context of delta-oriented programming and additional tool support for executing them. However, the context for refactorings, i.e., the suspicious relationships between delta modules, must be identified manually. The same limitation applies to the approach of Haber et al., which focuses on architectural variability modeling. The results of SiPL's analysis functions offer the respective context and are used by restructuring operations which in turn can be exploited to apply several of the proposed refactorings. Damiani et al. [8] present an algorithm for refactoring in the context of delta-oriented programming. Delta modules of a monotonic implementation contain only either add and modify or remove and modify operations. Such global refactorings are not yet supported by SiPL and remain subject for future work.

In sum, to the best of our knowledge, DeltaEcore and SiPL are the only fully integrated development environments for model-based MBSPLs currently available. The approaches surveyed before only address single or small subsets of the capabilities provided by DeltaEcore and SiPL. For this reason, we deliberately abstain from including related work in Table 8.3.

8.7 Conclusion

In this chapter, we presented two tool suites for the delta-oriented development of MBSPLs; DeltaEcore and SiPL. Although sharing similar capabilities, some of them are more emphasized by one of the tools. This is not very surprising given the fact that both tools evolved largely independently of each other and emerged from different research communities. Historically, DeltaEcore is the slightly older one of both tools. Its development was strongly influenced by the software language engineering community, which is devoted to researching principles on how to systematically construct formal yet expressive languages for the sake of software development. On the contrary, the SiPL tool suite emerged from the model versioning community, which aims at establishing new techniques for differencing, patching, and merging of models with the ultimate goal of supporting professional model-based software in larger teams.

A first rather obvious difference resulting from the different historical backgrounds is the paradigm of how delta modules are being developed. DeltaEcore follows the central idea of extending an existing source language by the capability of specifying delta modules. To that end, much effort was spent on creating a sophisticated development environment which can be considered as a language workbench for engineering highly customized delta languages. On the contrary, the main motivation and thus the major paradigm shift in SiPL was to create delta modules by editing models in standard model editors and by later comparing the initial model version with its revised one. This way, a delta language is only implicitly available in terms of the set of edit operations used by the model differencing tool.

An important technological difference between both tools is that SiPL assumes delta operations to be declaratively specified by using graph transformation rules, while DeltaEcore relies on an imperative implementation of delta operations in Java. Since practitioners are generally familiar with using imperative programming languages, particularly a mainstream programming language such as Java, the latter approach is highly attractive and has the potential of a widespread adoption in industrial practice. On the contrary, a declarative approach as used by SiPL provides a formal specification of the effect of delta modules which, in turn, enables the implementation of analysis functions offering detailed insights about the relations between delta modules. The analysis support serves as a basis for the quality assurance and guided refactoring of a delta-oriented MBSPL. Although there is no empirical evidence yet with respect to the effectiveness of these techniques, the analysis and quality assurance facilities represent the most distinguishing strengths of the SiPL tool suite.

Another aspect in which both tool suites differ due to their different historical backgrounds is the way how versioning is supported in terms of the evolution of an MBSPL. In SiPL, it was a natural choice to delegate the actual versioning of both problem and solution space artifacts to a version control system. This way, all the readily available services of such a system can be simply reused, while the versioning capabilities are bound to the version space organization of the respective version control system. In contrast, DeltaEcore has the capability of supporting versioning through an integration with HFMs and Temporal Feature Models with the ultimate goal of considering SPL evolution as a primary development information. This way, there is a clear methodology of how developers can be supported in combining features of different versions instead of delegating the entire configuration to the version control system and thus to the discretion of the developer. Moreover, handling evolution as a primary development paves the way for the dynamic reconfiguration of an MBSPL at runtime.

Besides, there are some minor differences with respect to the underlying design decisions of DeltaEcore and SiPL, such as whether feature mappings are represented externally using a dedicated mapping artifact (as in DeltaEcore) or integrated with the delta modules (as in SiPL). More recently, both tool suites have started to adopt each others capabilities, for example, to provide an alternative method to specify delta modules. In SiPL, one can now synthesize a textual delta language from a set of delta operations, while DeltaEcore has adopted the idea of specifying delta modules by model editing through recording editing commands in model editors. More generally, as for future work, our aim is to closer collaborate on the development of both tool suites for the sake of learning from each other's experience and for further extending and strengthening the capabilities of each of the tools. With such a collaboration and an increasing maturity of the tools, we will be able to conduct user studies with users of different levels of experience in the future, and we are convinced that DeltaEcore and SiPL will serve as ideal experimental testbeds for a more widespread evaluation and adoption of the general idea of delta modeling in practice.

References

[1] Thorsten Arendt, Enrico Biermann, Stefan Jurack, Christian Krause, Gabriele Taentzer, Henshin: advanced concepts and tools for in-place EMF model transformations, International Conference on Model Driven Engineering Languages and Systems. Springer; 2010:121–135.

[2] Sven Apel, Christian Kästner, Christian Lengauer, Language-independent and automated software composition: the FeatureHouse experience, IEEE Transactions on Software Engineering 2013;39(1):63–79.

[3] Don Batory, Feature-oriented programming and the AHEAD tool suite, Proceedings of the 26th International Conference on Software Engineering. IEEE Computer Society; 2004:702–703.

[4] Don Batory, Feature models, grammars, and propositional formulas, Henk Obbink, Klaus Pohl, eds. Software Product Lines. Berlin, Heidelberg: Springer Berlin Heidelberg; 2005 978-3-540-32064-7:7–20.

[5] Johannes Bürdek, Timo Kehrer, Malte Lochau, Dennis Reuling, Udo Kelter, Andy Schürr, Reasoning about product-line evolution using complex feature model differences, Automated Software Engineering 2016;23(4):687–733.

[6] Afredo Capozucca, Betty H. Cheng, Geri Georg, Nicolas Guelfi, Paul Istoan, Gunter Mussbacher, Requirements definition document for a software product line of car crash management systems, version: April 2013 http://cserg0.site.uottawa.ca/cma2013models/CaseStudy.pdf. Fallstudie zur Evaluation von unterschiedlichen Modellierungsansätzen, CMA Workshop at Models 2012 http://cserg0.site.uottawa.ca/cma2012/.

[7] Alfredo Capozucca, Betty Cheng, Nicolas Guelfi, Paul Istoan, OO-SPL modelling of the focused case study, Comparing Modeling Approaches (CMA) International Workshop Affiliated with ACM/IEEE 14th International Conference on Model Driven Engineering Languages and Systems. CMA@MODELS2011. 2011.

[8] Ferruccio Damiani, Michael Lienhardt, Refactoring delta-oriented product lines to achieve monotonicity, Julia Rubin, Thomas Thüm, eds. Proceedings 7th International Workshop on Formal Methods and Analysis in Software Product Line Engineering. Eindhoven, The Netherlands, April 3, 2016. Electronic Proceedings in Theoretical Computer Science. Open Publishing Association; 2016;vol. 206:2–16.

[9] Eclipse Foundation, Eclipse Modeling Framework (EMF), https://www.eclipse.org/modeling/emf/.

[10] Arne Haber, Katrin Hölldobler, Carsten Kolassa, Markus Look, Bernhard Rumpe, Klaus Müller, Ina Schaefer, Engineering delta modeling languages, Proceedings of the 17th International Software Product Line Conference. SPLC '13. New York, NY, USA: ACM; 2013 978-1-4503-1968-3:22–31.

[11] Arne Haber, Holger Rendel, Bernhard Rumpe, Ina Schaefer, Evolving delta-oriented software product line architectures, Radu Calinescu, David Garlan, eds. Large-Scale Complex IT Systems. Development, Operation and Management. Berlin, Heidelberg: Springer Berlin Heidelberg; 2012 978-3-642-34059-8:183–208.

[12] Praveen Jayaraman, Jon Whittle, Ahmed M. Elkhodary, Hassan Gomaa, Model composition in product lines and feature interaction detection using critical pair analysis, Gregor Engels, Bill Opdyke, Douglas C. Schmidt, Frank Weil, eds. Model Driven Engineering Languages and Systems. Berlin, Heidelberg: Springer Berlin Heidelberg; 2007 978-3-540-75209-7:151–165.

[13] Timo Kehrer, Abdullah Alshanqiti, Reiko Heckel, Automatic inference of rule-based specifications of complex in-place model transformations, International Conference on Theory and Practice of Model Transformations. Springer; 2017:92–107.

[14] Christian Kästner, Sven Apel, Syed S. Rahman, Marko Rosenmüller, Don Batory, Gunter Saake, On the impact of the optional feature problem: analysis and case studies, Proceedings of the 13th International Software Product Line Conference. SPLC '09. Pittsburgh, PA, USA: Carnegie Mellon University; 2009:181–190.

[15] Kyo Kang, Sholom Cohen, James Hess, William Novak, A. Peterson, Feature-Oriented Domain Analysis (FODA) Feasibility Study. [version: 1990 (CMU/SEI-90-TR-021), Forschungsbericht] Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University; 1990. http://resources.sei.cmu.edu/library/asset-view.cfm?AssetID=11231.

[16] T. Kehrer, U. Kelter, M. Ohrndorf, T. Sollbach, Understanding model evolution through semantically lifting model differences with SiLift, 2012 28th IEEE International Conference on Software Maintenance. ICSM. 1063-6773 2012:638–641.

[17] T. Kehrer, U. Kelter, G. Taentzer, Consistency-preserving edit scripts in model versioning, 2013 28th IEEE/ACM International Conference on Automated Software Engineering. ASE. 2013:191–201.

[18] Thomas Kühn, Max Leuthäuser, Sebastian Götz, Christoph Seidl, Uwe Aßmann, A metamodel family for role-based modeling and programming languages, International Conference on Software Language Engineering. Springer; 2014:141–160.

[19] Timo Kehrer, Michaela Rindt, Pit Pietsch, Udo Kelter, Generating edit operations for profiled UML models, ME@ MoDELS. Citeseer; 2013:30–39.

[20] Timo Kehrer, Gabriele Taentzer, Michaela Rindt, Udo Kelter, Automatically deriving the specification of model editing operations from meta-models, Proceedings of the 9th International Conference on Theory and Practice of Model Transformations. Berlin, Heidelberg: Springer-Verlag; 2016;vol. 9765 978-3-319-42063-9:173–188.

[21] Michäel Lienhardt, Dave Clarke, Conflict detection in delta-oriented programming, Tiziana Margaria, Bernhard Steffen, eds. Leveraging Applications of Formal Methods, Verification and Validation. Technologies for Mastering Change. Berlin, Heidelberg: Springer Berlin Heidelberg; 2012 978-3-642-34026-0:178–192.

[22] Michael Nieke, Gil Engel, Christoph Seidl, DarwinSPL: an integrated tool suite for modeling evolving context-aware software product lines, Proceedings of the Eleventh International Workshop on Variability Modelling of Software-Intensive Systems. ACM; 2017:92–99.

[23] Michael Nieke, Christoph Seidl, Sven Schuster, Guaranteeing configuration validity in evolving software product lines, Proceedings of the Tenth International Workshop on Variability Modelling of Software-Intensive Systems. ACM; 2016:73–80.

[24] Klaus Pohl, Günter Böckle, Frank J. van d. Linden, Software Product Line Engineering: Foundations, Principles and Techniques. Berlin, Heidelberg: Springer-Verlag; 2005 3540243720.

[25] Christopher Pietsch, SiPL project website, http://pi.informatik.uni-siegen.de/projects/sipl.

[26] Christopher Pietsch, Timo Kehrer, Udo Kelter, Dennis Reuling, Manuel Ohrndorf, SiPL – a delta-based modeling framework for software product line engineering, 2015 30th IEEE/ACM International Conference on Automated Software Engineering. ASE. 2015:852–857.

[27] Christopher Pietsch, Dennis Reuling, Udo Kelter, Timo Kehrer, A tool environment for quality assurance of delta-oriented model-based SPLs, Proceedings of the Eleventh International Workshop on Variability Modelling of Software-Intensive Systems. VAMOS '17. New York, NY, USA: ACM; 2017 978-1-4503-4811-9:84–91.

[28] Michaela Rindt, Timo Kehrer, Udo Kelter, Automatic generation of consistency-preserving edit operations for MDE tools, Demos@ MoDELS. 2014;vol. 14.

[29] Ina Schaefer, Lorenzo Bettini, Viviana Bono, Ferruccio Damiani, Nico Tanzarella, Delta-oriented programming of software product lines, Software Product Lines: Going Beyond. Springer; 2010:77–91.

[30] Ina Schaefer, Lorenzo Bettini, Viviana Bono, Ferruccio Damiani, Nico Tanzarella, Delta-oriented programming of software product lines, Jan Bosch, Jaejoon Lee, eds. Software Product Lines: Going Beyond. Berlin, Heidelberg: Springer Berlin Heidelberg; 2010 978-3-642-15579-6:77–91.

[31] Daniel Strüber, Kristopher Born, Kanwal D. Gill, Raffaela Groner, Timo Kehrer, Manuel Ohrndorf, Matthias Tichy, Henshin: a usability-focused framework for emf model transformation development, International Conference on Graph Transformation. Springer; 2017:196–208.

[32] Ina Schaefer, Variability modelling for model-driven development of software product lines, Fourth International Workshop on Variability Modelling of Software-Intensive Systems, Proceedings. Linz, Austria, January 27–29, 2010. 2010:85–92.

[33] Christoph Seidl, DeltaEcore project website, http://deltaecore.org.

[34] Christoph Seidl, Integrated Management of Variability in Space and Time in Software Families. [PhD Thesis] Technische Universität Dresden; 2016. http://nbn-resolving.de/urn:nbn:de:bsz:14-qucosa-218036.

[35] Christoph Seidl, Florian Heidenreich, Uwe Aßmann, Co-evolution of models and feature mapping in software product lines, Proceedings of the 16th International Software Product Line Conference, Vol. 1. ACM; 2012:76–85.

[36] Pablo Sánchez, Neil Loughran, Lidia Fuentes, Alessandro Garcia, Engineering languages for specifying product-derivation processes in software product lines, Software Language Engineering. Springer; 2009:188–207.

[37] Sandro Schulze, Oliver Richers, Ina Schaefer, Refactoring delta-oriented software product lines, Proceedings of the 12th Annual International Conference on Aspect-Oriented Software Development. AOSD '13. New York, NY, USA: ACM; 2013 978-1-4503-1766-5:73–84.

[38] Christoph Seidl, Ina Schaefer, Uwe Aßmann, Capturing variability in space and time with hyper feature models, Proceedings of the Eighth International Workshop on Variability Modelling of Software-Intensive Systems. ACM; 2014:6.

[39] Christoph Seidl, Ina Schaefer, Uwe Aßmann, DeltaEcore – a model-based delta language generation framework, Modellierung 2014;19:21.

[40] Christoph Seidl, Ina Schaefer, Uwe Aßmann, Integrated management of variability in space and time in software families, Proceedings of the 18th International Software Product Line Conference. ACM; 2014:22–31.

[41] Christoph Seidl, Sven Schuster, Ina Schaefer, Generative software product line development using variability-aware design patterns, Proceedings of the 14th International Conference on Generative Programming: Concepts & Experiences. GPCE'15. ACM; 2015;vol. 51:151–160.

[42] Christoph Seidl, Sven Schuster, Ina Schaefer, Generative software product line development using variability-aware design patterns, Special Issue on the 14th International Conference on Generative Programming: Concepts & Experiences. GPCE'15. Computer Languages, Systems and Structures 2017;48:89–111.

[43] Christoph Seidl, Tim Winkelmann, Ina Schaefer, A software product line of feature modeling notations and cross-tree constraint languages, Modellierung 2016;2016.

[44] Thomas Thüm, Christian Kästner, Fabian Benduhn, Jens Meinicke, Gunter Saake, Thomas Leich, FeatureIDE: an extensible framework for feature-oriented software development, Science of Computer Programming 2014;79:70–85.

[45] M. Voelter, I. Groher, Product line implementation using aspect-oriented and model-driven software development, 11th International Software Product Line Conference. SPLC 2007. 2007:233–242.

[46] Birgit Vogel-Heuser, Christoph Legat, Jens Folmer, Stefan Feldmann, Researching Evolution in Industrial Plant Automation: Scenarios and Documentation of the Pick and Place Unit. [Institute of Automation and Information, Technische Universität München (TUM-AIS-TR-01-14-02), Technical Report] Munich, Germany: mediaTUM; 2014. version: 2014 https://mediatum.ub.tum.de/node?id=1208973.

[47] Tim Winkelmann, Jonathan Koscielny, Christoph Seidl, Sven Schuster, Ferruccio Damiani, Ina Schaefer, Parametric DeltaJ 1.5: propagating feature attributes into implementation artifacts, CEUR-WS. 2016:40–54.

[48] David Wille, Tobias Runge, Christoph Seidl, Sandro Schulze, Extractive software product line engineering using model-based delta module generation, Proceedings of the Eleventh International Workshop on Variability Modelling of Software-Intensive Systems. ACM; 2017:36–43.

[49] Steffen Zschaler, Pablo Sánchez, João Santos, Mauricio Alférez, Awais Rashid, Lidia Fuentes, Ana Moreira, João Araújo, Uirá Kulesza, VML*–a family of languages for variability management in software product lines, Software Language Engineering. Springer; 2010:82–102.


1  http://pi.informatik.uni-siegen.de/projects/sipl/mmalss2018/index.php.”

2  “Note that in this chapter we are focusing on the solution space portion of DeltaEcore, which constitutes only part of the tool suite's functionality. The best use of DeltaEcore is in conjunction with an explicit feature model, specifically a Hyper-Feature Model (HFM) [40,38].”

3  “In contrast to an application-order constraint (see below), which is only enabled if two delta modules are selected together manually, the requires relation forces the required delta module(s) to be applied before the delta module.”

4  “In a similar manner, a configuration keyword may be used in the same place to make explicit that it is a configuration delta module. However, due to backward compatibility, use of this keyword is optional.”

5  “Note that evolution delta modules live up to their full potential when used with HFMs [40,38], which allow definition of features with versions on the conceptual level, automated derivation of application-order constraints, semiautomatic selection of version constellations, etc.”

6  http://hyvar-project.eu.”

7  http://www.deltajava.org.”

8  http://www.dfg-spp1593.de.”

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset