an mde tool for defining software product families with ... · an mde tool for defining software...
TRANSCRIPT
An MDE Tool for Defining Software Product Families withExplicit Variation Points
Simone Di Cola, Kung-Kiu Lau, Cuong Tran, and Chen QianSchool of Computer ScienceThe University of Manchester
Oxford Road, M13 9PL, United Kingdomdicolas,kung-kiu,ctran,[email protected]
ABSTRACTCurrent software product line engineering tools mainly fo-cus on variability in the problem space, and create productfamilies by linking variability models to artefacts in the so-lution space. In this paper, we present a tool that can beused to define software architectures with explicit variationpoints, and hence product families, directly in the solutionspace.
Categories and Subject DescriptorsD.2.2 [Software Engineering]: Design Tools and Tech-niques; D.2.11 [Software Engineering]: Software Archi-tectures
KeywordsPLE tools, architecture variability, component-based soft-ware development
1. INTRODUCTIONProduct line engineering tools, e.g. pure::variants,1 Gears,2
and COVAMOF [8], mainly focus on modelling variabilityin the problem space, and create product families by linkingvariability models to artfacts such as a code base in thesolution space [7].
By contrast, software architecture based approaches [1] cre-ate products directly in the solution space. However mostof these approaches do not define variability explicitly [4],making it difficult to relate solutions to the problem space.In this paper we present a tool that can be used to de-fine software architectures with explicit variation points, andhence product families. We briefly explain our approach anddemonstrate the tool on an example.
2. TOOL OVERVIEWOur tool supports the construction of a product family us-ing a feature-oriented approach, as illustrated by Figure 1.
1http://www.pure-systems.com/2http://www.biglever.com/
Our approach consists of three main stages: (i) build com-
F4 F5 F8 F9F6 F7
opt opt
Connector
F4 F5
alt
F8 F9F6,F7
F2F1
opt
F3
F1F1'
F0
Variation operator
F0
F1
F5
F2
F4
F3
MandatoryOptionalAlternative
F7F6 F9F8
(a) Feature model (b) Product family
Component
Figure 1: Our approach.
ponents (atomic or composite) to model the leaf features(F4-F9) in the feature model, and compose them to modelparent features wherever appropriate (F6 and F7 are com-posed into F2); (ii) apply variation operators to the setof components built in (i), according to the variation pointsin the feature model (OPT(F4), OPT(F5), ALT(F8, F9)), andrepeat this for nested variation points (2 times for F1); (iii)apply family connectors to component sets from (i), (ii)and (iii) to produce one family (F0).
For each stage, the tool provides a canvas as a design space,as well as a palette of pre-defined design blocks. The toolalso performs continuous validation. Errors appear as crossmarkers attached to erroneous entities and detailed in theProblems view. Figures 2, 3 and 5 illustrate our workbenchfor the three stages.
3. TOOL IMPLEMENTATIONOur tool is implemented using a robust stack of model-driven technologies like Eclipse Modelling Framework [9],Graphiti,3 and CDO.4
Our approach is based on a component model called FX-MAN, which is in turn based on the X-MAN componentmodel [6] and tool. X-MAN architectures have no variabil-ity, so in FX-MAN we addded: (i) variation operators thatgenerate variants of a set of X-MAN architectures, which wecall an X-MAN set ; and (ii) family connectors that composemultiple X-MAN sets into a product family.
3https://eclipse.org/graphiti/4https://eclipse.org/cdo/
Figure 2: Eclipse workbench for atomic component development.
3.1 Component DevelopmentX-MAN components can be atomic and composite. An atomiccomponent is a unit of computation. Its computation unit(CU) contains the implementation of the component. Anatomic component has a number of provided services imple-mented by the CU. Figure 2 depicts the design of an atomiccomponent. To define a service we drag onto the canvas aservice from the palette and then add inputs and outputs;then we can generate an implementation template for theCU and implement the specified service. Continuous valida-tion will ensure that the final component is well-formed.
Components are deposited in a standalone or collaborativerepository. In our tool, a repository is displayed in theRepository Explorer view, at the bottom of Figures 2 and 3.
A composite component is constructed by composing pre-constructed components (from the repository) by means ofpre-defined composition connectors and adapters. These are(exogenous) control structures that coordinate the executionof their composed components. Our composition connectorsare Sequencer and Selector. They provide sequencing andbranching respectively. Adapters are Guard and Loop, al-lowing gating and looping respectively. A composite com-ponent, just as an atomic one, provides services; they resultfrom the coordination of the services provided by its sub-components. In addition to composition connectors, X-MANalso defines an Aggregator connector, which aggregates in anew composite component the services exposed by its sub-components. An aggregated component effectively providesa facade to the aggregated services.
Figure 3 illustrates the design of a composite component
called AutoCruiseControl. Two components, AdaptSpeed
and CruiseControl, are retrieved from the repository andcomposed using a Sequencer and a Guard. Sequencing order,and gating conditions are specified as labels on coordinationconnections. The composition results in the AutoCruiseC-ontrol provided service.
In addition to control, data flow can also be specified inthe design via data channels. Data can flow ‘horizontally’between components and ‘vertically’ to the composite com-ponent services.
The result from component development is a repository of X-MAN components, which are also architectures themselves.
3.2 VariabilityTo model variability, in FX-MAN, we have defined three ex-plicit variation operators: Or, Alternative and Opt. Theydefine the standard ‘inclusive or’, ‘exclusive or’, and ‘op-tional’ variation points in feature models. Variation oper-ators can be applied to X-MAN sets to generate variations.They can be nested within one another, as in feature models.
In our tool, variation operators can be dragged from thepalette (Figure 5), and connected to component (in X-MANsets) or to other variation operators. Figure 5 shows twoAlternative and two Optional operators connected to fourX-MAN component.5 It also shows an Or operator nestedwithin an Alternative operator.
5The family connectors and adapters specify coordinationand adaptation applied to all variations.
Figure 3: Eclipse workbench for composite component development.
Variation generation results in sets of X-MAN architectures.
3.3 Composing Architectures into a FamilyFamily connectors compose X-MAN sets into a product fam-ily, which is an architecture containing the architectures ofall the members. A product family can be adapted by afamily adapter.
Family connectors and adapters are implemented in a palettein our tool as shown in Figure 5. To apply a family connectorwe drag it onto the canvas and make connections from it toX-MAN components (in X-MAN sets) or variation operators.In Figure 5, the F-Selector composes three sets of variationsproduced by the two Optional and the Alternative varia-tion operators into a single architecture. An F-Sequencercomposes the previous architecture with another set of vari-ations created by the variation operator Or to yield a largerarchitecture. Finally, a F-Loop is connected at the top.
The constructed product family can be explored via theProduct Explorer view (bottom, Figure 5). Architectures ofindividual members can be directly extracted and executed.
4. EXAMPLEConsider vehicle control systems (VCS), adapted from [5],with the feature model in Figure 4.
First, we develop seven X-MAN atomic components (corre-sponding to seven leaf features): AverageMPH, AverageMPG,Maintenance, Monitoring, FrontDetection, AllRoundDe-
tection, AdaptSpeed and CruiseControl. They are storedin the repository. The last two are then retrieved and com-posed into the composite component AutoCruiseControl in
VCS
Calculation
Mandatory OptionalAlternative
Observation Cruise Management
Average Maintenance Monitoring Collision Auto Cruise
Front All-round Or
Detection ControlMPHAverage
MPG
DetectionDetection
Figure 4: Feature model of VCS.
Figure 3.
Second, we apply variation operators defined in the featuremodel to the X-MAN components that have been constructedto implement the leaf features. To this end, we retrieve thecomponents and apply the specified variation operators tothem. In Figure 5, we apply Optional to AverageMPH andAverageMPG; Alternative to Maintenance and Monitoring,and FrontDetection and AllRoundDetection; and Or tothe latter and AutoCruiseControl.
Third, we compose all the above variations into all the pos-sible products specified by the feature model. We use F-Sequencer, F-Selector and F-Loop, also shown in Figure 5.The resulting architecture contains a total of 40 products,which can be inspected, and extracted using the ProductExplorer view in Fig. 5.
5. DISCUSSION AND CONCLUSIONCurrent product line engineering tools are mostly problemspace based (see [2] for a survey). For example, in pure::vari-ants, a family model is defined to establish links betweenfeatures in the feature model (problem space) and availableassets, i.e. code and documentation (solution space). By
Figure 5: Eclipse workbench for constructing architecture with variability.
contrast, our approach is solution space based. By having afull set of explicit variation points (including the ‘inclusiveor’) in our architectures, we can map our product familiesto the problem space. This is in contrast to most softwarearchitecture based approaches, which are also solution spacebased but do not define architectures with a full set of ex-plicit variation points.
However, currently our tool lacks an interface to the problemspace, i.e. it does not support the end user in the process offeatures (or product) selection. In this regard, we intend tointegrate our tool with pure::variants. This will allow us toextract specific products, thus tackling potential scalabilityproblems when dealing with large product families.
At the moment, our tool also does not handle constraintsbetween features in the problem space; rather, we definethem as filters on product families in the solution space. Weplan to investigate with a real example how efficient thesefilters are, and whether/how they could deal with constraintsin the problem space.
Furthermore, our approach only deals with structural vari-ability, but not parametric variability [3] . Future work willtherefore include an investigation of the latter.
Finally our tool is available at http://xmantoolset.ddns.
net.
6. REFERENCES[1] L. Bass, P. Clements, and R. Kazman. Software
Architecture in Practice. SEI Series in SoftwareEngineering. Addison-Wesley, third edition, 2012.
[2] T. Berger, R. Rublack, D. Nair, J. M Atlee, M. Becker,K. Czarnecki, and A. Wasowski. A survey of variabilitymodeling in industrial practice. In Proc. of 7th VaMoS,page 7. ACM, 2013.
[3] Jeffrey B Dahmus, Javier P Gonzalez-Zugasti, andKevin N Otto. Modular product architecture. Designstudies, 22:409–424, 2001.
[4] M. Galster, P. Avgeriou, D. Weyns, and T. Mannisto.Variability in software architecture: current practiceand challenges. ACM SIGSOFT Software EngineeringNotes, 36(5):30–32, 2011.
[5] D. Hatley and I. Pirbhai. Strategies for real-time systemspecification. Addison-Wesley, 2013.
[6] N. He, D. Kroening, T. Wahl, K.-K. Lau, F. Taweel,C. Tran, P. Rummer, and S. Sharma. Component-baseddesign and verification in X-MAN. In Proc. EmbeddedReal Time Software and Systems, 2012.
[7] M. Schulze and R. Hellebrand. Variability exchangeformat a generic exchange format for variability data.In Proc. of SE-WS’15, volume 1337. CEUR-WS.org,2015.
[8] M. Sinnema, O. De Graaf, and J. Bosch. Tool supportfor COVAMOF. In Workshop on Software VariabilityManagement for Product Derivation, 2004.
[9] D. Steinberg, F. Budinsky, E. Merks, andM. Paternostro. EMF: Eclipse Modeling Framework.Pearson Education, 2008.
APPENDIXA. DEMONSTRATION ROADMAPThe tool demonstration begins with a quick overview of thetheoretical foundations for our tool, and is followed by ademonstration of the steps described in Section 3, illustratedby the VCS example in Section 4. Each step is illustratedthrough small working examples. Tool executables and ex-amples source code will be provided to participants who wishto have a first-hand experience.
Step 1: Construct X-MAN componentsThe first step is to construct X-MAN components, atomicor composite, that implement the leaf features in the featuremodel. Once implemented, they are deposited in a sharedrepository (accessible by the participants). There are sevenleaf features, so we will construct seven X-MAN compo-nents: AverageMPH, AverageMPG, Maintenance, Monitoring,FrontDetection, AllRoundDetection, and AutoCruiseCon-
trol. As already stated in Section 4, all the components areatomic, except AutoCruiseControl, which is a compositeof two atomic components AdaptSpeed and CruiseControl.We demonstrate how the tool supports their implementa-tion, and how they can be composed into the AutoCruiseC-
ontrol component. Moreover, we demonstrate how the toolallows us to generate code for the AutoCruiseControl com-ponent, and how to verify its behaviour via JUnit tests.
Step 2: Apply variation operatorsThe second step is to apply variation operators defined in thefeature model to the constructed X-MAN components. Tothis end, we retrieve all the seven components from CDO us-ing the dialogue in Fig. 6, and apply the variation operatorsaccording to the feature model in Fig. 4. The Optional oper-
Figure 6: Dialogue for retrieving components.
ators applied to AverageMPH and AverageMPG yield the tupleF1 = 〈{AverageMPH},∅〉 and F2 = 〈{AverageMPG},∅〉 re-spectively. The Alternative operator applied to Maintenance
and Monitoring gives the set F3 = 〈{Maintenance},{Monit-oring}〉. The Or operator applied to the X-MAN set con-sisting of AutoCruiseControl and the X-MAN set resultingfrom applying the Alternative operator to FrontDetection
and AllRoundDetection yields the X-MAN set of 5 products:F4 = 〈{AutoCruiseControl, AllRoundDetection}, {All-
RoundDetection}, {FrontDetection, AutoCruiseControl},
{FrontDetection}, {AutoCruiseControl}〉.
Figure 7: Product extraction interface.
By means of the Product Explorer view, we demonstratehow each variation operator realises the variability just de-scribed, and how they can be nested in order to create com-plex variations of X-MAN sets.
Step 3: Construct the product familyAfter generating variations, a tuple of X-MAN sets are com-posed via family connectors into a product family. We demon-strate how to create the 40 products defined by the VCSfeature model. We choose to compose F1, F2, F3 into F5with the family connector F-Selector because we want toallow a driver to choose any subset of the features: Av-erageMPH, AvergageMPG, Maintenance and Monitoring.Then we choose to compose F5 and F4 with F-sequencerto combine the driver’s choice with the Cruise Managementfeature.
Step 4: Extract family membersAll the 40 products can be extracted using the product ex-traction dialogue box in Fig. 7. The (partial) result is de-picted in Fig. 8
Figure 8: Extracted product in project explorer.
We extract product No. 4 (Fig. 9), which is a premium ver-sion of VCS, has five components: AverageMPH, AverageMPG,Monitoring, AutoCruiseControl, and AllRoundDetection.The premium VCS is capable of displaying the result calcu-lated by AverageMPH, AverageMPG, or Monitoring (chosen bythe user). Then AutoCruiseControl is invoked with the aimof maintaining the speed (selected by the user). Finally, thesystem shows the distance from the vehicle to the nearestobstacle in a specified direction.
Step 5: Test family membersBecause all the products in the family are fully formed andexecutable, we check their behaviour with JUnit tests. Thisis an advantage in practical development. We demonstratethis by testing the behaviour of the extracted product No.4 (Fig. 10). This concludes the demonstration.
Figure 9: Product No.4
Figure 10: Product No.4 tests result.