variability modelling in the abs language
play

Variability Modelling in the ABS Language Dave Clarke Katholieke - PowerPoint PPT Presentation

Variability Modelling in the ABS Language Dave Clarke Katholieke Universiteit Leuven based on joint work with Jos Proena, Michiel Helvenstijen, Ina Schaefer, Radu Muschevici Tuesday 1 March 2011 Outline Introduction Feature


  1. Variability Modelling in the ABS Language Dave Clarke Katholieke Universiteit Leuven based on joint work with José Proença, Michiel Helvenstijen, Ina Schaefer, Radu Muschevici Tuesday 1 March 2011

  2. Outline • Introduction • Feature Modelling • Delta Modelling • Product Line Configuration • Feature Selection • Product Generation • Conclusion Tuesday 1 March 2011

  3. Outline Introduction • • Feature Modelling • Delta Modelling • Product Line Configuration • Feature Selection • Product Generation • Conclusion Tuesday 1 March 2011

  4. Product Line Development Feature Family Engineering Model Product Line Artefacts Base Feature Application Engineering Product Selection Tuesday 1 March 2011

  5. Running Example Tuesday 1 March 2011

  6. Running Example: Multi-lingual Hello World • English: “Hello World” • German: “Hallo Welt” • Dutch: “Hallo Wereld” • Swedish: “Hejsan Allihopa” • French: “Bonjour tout le monde” • Possibly with repetition Tuesday 1 March 2011

  7. Ingredients of Variability in ABS • Core ABS • Feature Model (µTVL) – describing variability • Deltas – implementing variability • Configuration Language • Feature Selection Language Tuesday 1 March 2011

  8. The Core Functionality Tuesday 1 March 2011

  9. The Core interface Greeting { String say_hello(); English by default } class Greeter implements Greeting { String say_hello() { return "Hello world"; } } A fully functioning application (minus main ) Tuesday 1 March 2011

  10. Outline • Introduction Feature Modelling • • Delta Modelling • Product Line Configuration • Feature Selection • Product Generation • Conclusion Tuesday 1 March 2011

  11. Product Line Development Feature Family Engineering Model Product Line Artefacts Base Feature Application Engineering Product Selection Tuesday 1 March 2011

  12. Feature Models And Alternative I18n Optional English Repeat Repeat → (times ≥ 2 && times ≤ 5) Swedish times:[1,1000] French German Constraints Attributes Or Requires Excludes Cardinalities Tuesday 1 March 2011

  13. Feature Model in µTVLs root I18n { group allof { Language { group oneof { English, Dutch, French, German, Swedish } }, opt Repeat { int [0,1000] times; } } } extension English { ifin: Repeat -> (Repeat.times >= 2 && Repeat.times <= 5); } Tuesday 1 March 2011

  14. µTVL Feature Modelling Language • µTVL adapts existing TVL language [Claessen, FUNDP , Namur U] • Constraint solver written in Choco: • finds valid feature selections matching specified constraints • checks validity of feature selections Tuesday 1 March 2011

  15. Outline • Introduction • Feature Modelling Delta Modelling • • Product Line Configuration • Feature Selection • Product Generation • Conclusion Tuesday 1 March 2011

  16. Delta-oriented Programming Core Products – complete product for some Feature Family Engineering feature configuration Model Product Deltas – additions, removals, Product Line modifications to core Artefacts Base product Feature Automated Product Application Engineering Product Selection Derivation Tuesday 1 March 2011

  17. Delta-oriented Programming • Modifications on Class Level: • Addition, Removal and Modification of Classes • Modifications of Class Structure: • Changing Super Class and Constructor • Adding/Removing Fields/Methods • Modifying Methods (wrapping original call) - [Delta-oriented Programming of Software Product Lines Schaefer, Bettini, Bono, Damiani, Tanzarella. SPLC 2010.] Tuesday 1 March 2011

  18. The Repeat Delta delta Rpt (Int times) { modifies Greeter { modifies String say_hello() { String result = ""; Int i = 0; while (i < times) { result = result + original(); i = i + 1; } return result; } } } Tuesday 1 March 2011

  19. The German Delta delta De { modifies Greeter { modifies String say_hello() { return "Hallo Welt"; } } } Tuesday 1 March 2011

  20. The Dutch Delta delta Nl { modifies Greeter { modifies String say_hello() { return "Hallo wereld"; } } } Tuesday 1 March 2011

  21. The French Delta delta Fr { modifies Greeter { modifies String say_hello() { return "Bonjour tout le monde"; } } } Tuesday 1 March 2011

  22. The Swedish Delta delta Sv { modifies Greeter { modifies String say_hello() { return "Hejsan allihopa"; } } } Tuesday 1 March 2011

  23. Outline • Introduction • Feature Modelling • Delta Modelling Product Line Configuration • • Feature Selection • Product Generation • Conclusion Tuesday 1 March 2011

  24. Features-Delta Mapping Configuration Artefacts application conditions & delta ordering Deltas Feature Model Core Tuesday 1 March 2011

  25. Configuration • Links feature model with deltas • Adds application conditions to deltas: • constraints on features and attributes • Specifies ordering between deltas • Nests deltas to ensure atomic application Tuesday 1 March 2011

  26. Configuration product line HelloMultiLingual { features Repeat, German, French, Dutch, Swedish; application conditions core English; delta De when German && not Repeat; delta Fr when French; delta Nl when Dutch; delta Sv when Swedish && Repeat; parameter passing delta Rpt(Repeat.times) after De, Fr, Nl, Sv when Repeat; } ordering Tuesday 1 March 2011

  27. Outline • Introduction • Feature Modelling • Delta Modelling • Product Line Configuration Feature Selection • • Product Generation • Conclusion Tuesday 1 March 2011

  28. Product Line Development Feature Family Engineering Model Product Line Artefacts Base Feature Application Engineering Product Selection Tuesday 1 March 2011

  29. Feature Selection Artefacts Configuration Deltas Feature Uses Uses Model Core Feature Satisfies Selection Generates Product Tuesday 1 March 2011

  30. Feature Selection • Specifies selected features and their attributes. • Final Ingredient required to Generate Product. • Checked against Feature Model. Tuesday 1 March 2011

  31. Feature Selection } // basic product with no deltas product P1 { Greeting bob; Initialisation bob = new Greeter(); (aka main) String s = ""; s = bob.say_hello(); } Tuesday 1 March 2011

  32. Feature Selection Feature Selection Attribute Specification // apply delta Fr and Repeat product P3 (French, Repeat{times=10}) { Greeting bob; bob = new Greeter(); String s = ""; s = bob.say_hello(); } Tuesday 1 March 2011

  33. Outline • Introduction • Feature Modelling • Delta Modelling • Product Line Configuration • Feature Selection Product Generation • • Conclusion Tuesday 1 March 2011

  34. Product Line Development Feature Family Engineering Model Product Line Artefacts Base Feature Application Engineering Product Configuration Tuesday 1 March 2011

  35. Product Generation • For a Feature Configuration: • Select product deltas with valid application condition • Determine linear ordering of product deltas compatible with partial ordering • Apply changes specified by product deltas to core product in the linear order Tuesday 1 March 2011

  36. Given Feature Selection // apply delta Fr and Repeat product P3 (French, Repeat{times=10}) { Greeting bob; bob = new Greeter(); String s = ""; s = bob.say_hello(); } Tuesday 1 March 2011

  37. Apply Delta Fr class Greeter implements Greeting { String say_hello() { return "Hello world"; } } + delta Fr { modifies Greeter { modifies String say_hello() { return "Bonjour tout le monde"; } } } Tuesday 1 March 2011

  38. Apply Delta Fr class Greeter implements Greeting { String say_hello() { return "Bonjour tout le monde"; } } Tuesday 1 March 2011

  39. Configure Repeat times=10 delta Rpt (Int times) { modifies Greeter { modifies String say_hello() { String result = ""; Int i = 0; while (i < times) { result = result + original(); i = i + 1; } return result; } } } Tuesday 1 March 2011

  40. Configure Repeat delta Rpt { modifies Greeter { modifies String say_hello() { String result = ""; Int i = 0; while (i < 10 ) { result = result + original(); i = i + 1; } return result; } } } Tuesday 1 March 2011

  41. Apply Repeat class Greeter implements Greeting { String say_hello() { return "Bonjour tout le monde"; } } + delta Rpt { modifies Greeter { modifies String say_hello() { String result = ""; Int i = 0; while (i < 10) { result = result + original(); i = i + 1; } return result; } } } Tuesday 1 March 2011

  42. Apply Repeat class Greeter implements Greeting { String __say_hello_original() { return "Bonjour tout le monde"; } String say_hello() { String result = ""; Int i = 0; while (i < 10) { result = result + __say_hello_original(); i = i + 1; } return result; } } Tuesday 1 March 2011

Recommend


More recommend