configuration information intermingled .... By limiting the range of variants available from a given Concrete Factory: ... Class Diagram Handling. Message.
Aspect weaving is The unifying paradigm ! MDA is mainly useful in a PLE context
Product derivation in a Product Line: Executive Summary The analysis model has identified the variants between products (including Platform specificities)
Reified as language-level classes (inheritance, …)
Decorated with OCL meta-level constraints
Systematic use of the Abstract Factory pattern
To specify a product among the family
Model Transformations (at the meta-model level) to automatically derive a product Using OCL2
12/09/2003 – 14h35
3
WP3 – Task 3.3
The 3 Dimensions of Software Configuration Management : [Estublier et al. 95] The Variant dimension Handle environmental differences
The revision dimension Evolution over time
The concurrent activities dimension Many developers are authorized to modify the same configuration item
12/09/2003 – 14h35
Even with the help of sophisticated tools, the complexity might be daunting Try to simplify it by reifying the variants of an OO system
4
WP3 – Task 3.3
Traditional Approaches Patch the executable Device drivers
Source level, link time, boot time, on demand at runtime
If (language == french) { #ifdef MSW io_puts(0, ‘‘Bonjour’’, 7); #elseif TEXT printf(‘‘Bonjour\n’’); #endif } else { #ifdef MSW io_puts(0, ‘‘Hello’’, 5); #elseif TEXT printf(‘‘Hello\n’’); #endif
5
WP3 – Task 3.3
•
•
Static and Dynamic configuration information intermingled Hard to change your mind on what should be static or dynamic…
Basic Idea Abstract the Intent
Io.write_line(language.hello) Rely on Dynamic Binding for the Details < < A bs tr ac t> > IO
< < A bs trac t> > Language
writeLi ne( )
12/09/2003 – 14h35
MSW
Hello () : S trin g
T EXT
Frenc h
B as ic
Uncouple the variations from the selection process
Automatically derive a product using OCL2 metamodel transformation 6
WP3 – Task 3.3
Case Study: The Mercure Product Line Engine 1
1 1 Mercure 1 1
…
Engine
Engine N
1... Net Driver
Net Driver 1
1
1..*
1..*
…
1..* Manager 1..*
43,980,465,111,040 possible variants
Net Driver N
*
observe
{Presence constraint}
1..*
buffers
Message
Manager 1
…
Manager N 1..2
+... 1..* GUI
12/09/2003 – 14h35
1
+Use
+available 1..* 1 Language
GUI 1
…
GUI N LanguageCat 1
Language Cat 2
7
WP3 – Task 3.3
{Mutual exclusion}
Language 1-1
… Language 1-N Language 2-1
… Language 2-N
Exemples of Constraints at the PLA Level Inheritance constraint Optional classes in Product Line Architecture can be omitted in certain products so a non-optional class cannot inherit from an optional one. OCL expression (at the M2 level):
Constraints specific to a given PLA Presence constraint. To express in a specific SPLA that the presence of the optional class C1 requires the presence of C2, we add the following OCL meta-model constraint.
context Model inv presenceClass(‘C1’) implies presenceClass(‘C2’)
Mutual Exclusion constraint. To express in a specific SPLA that two optional classes cannot be present in the same Product, we add the following OCL meta-model constraint. context Model inv (presenceClass(‘C1’) implies not presenceClass(‘C2’)) and (presenceClass(‘C2’) implies not presenceClass(‘C1’))
12/09/2003 – 14h35
9
WP3 – Task 3.3
Reifying the Variants call_back
Mercure_Factory
1 1
FullMercure
makes
1
Mercure 1
MinMercure
CustomMercure
CustomMercure
12/09/2003 – 14h35
new_gui() : GUI Dynamic binding replaced with direct call (and even in lining)
When more than one living class z
Dynamic binding (or replaced by if then … else)
12/09/2003 – 14h35
Implemented in SCM context using compilation – GNU SmallEiffel
12
“Reifying variants in configuration management” J.ML. Jézéquel. ACM Transactions on Software Engineering and Methodology, July 1999. Using OCL2 & UMLAUT framework WP3 – Task 3.3
Using OCL2
forAll op in Operation.allInstances() {
12/09/2003 – 14h35
-- The returned type of the operation determines the used variants Class opReturnType := (op.parameter->select(p:Parameter|p.kind = #return)).type
13
if opReturnType.isAbstract then –- For multiple choice, we use stereotypes to specify the -- selected variants forAll st in op.stereotype { selectVariant(st.name) } else –- Here, we directly get the selected variant selectVariant(opReturnType.name) endif }
Advanced Mechanics. FRANCE ... Design solutions. ⢠Analysis of results ... Materials. Topology. Geometry r f. R. Design Models. Analysis. Models. Deformations.
Source : Research International and the Henley Centre for Forecasting. Successful. Ambitious. Aggressive. Clever. Hardworking. Modern. Arrogant. Boring.
Qualité : Norme ISO 9001: 2000. HACCP en place. Produit non soumis à l'étiquetage OGM, conformément à la réglementation en vigueur. Produit non ionisé.
Vous pouvez également plonger la boîte 20 min dans l'eau bouillante juste avant de servir. Liste d'ingrédients: Eau, ... AMORA. INFORMATIONS TECHNIQUES.
Mode d'emploi : verser le lait froid (0 à 3°C) dans la cuve d'un batteur. Incorporer la préparation pour Mousse saveur Crème. Brûlée Alsa dans le lait. Monter au ...
11. Les composantes structurelles du paysage. • L'élément principal (le paysage ..... 800, Place Victoria. C.P. 391, bureau 4500. Montréal (Québec) H4Z 1J2.
Valeurs nutritionnelles moyennes. Pour 100 g de produit tel que vendu. Pour 100ml de produit reconstitué. Pour une portion de. 250ml de produit reconstitué. **.
19 juin 2003 - ... des parties. ââRèglesâ plus ou moins clairs. âRègles claires mais litige trop long ou coûteux. âRègles claires mais litige trop destructeur ...
Produit non soumis à l'étiquetage OGM, conformément à la réglementation en vigueur. Produit non ionisé ... UNILEVER France Food Solutions. 23 rue François ...
Mode d'emploi : verser le lait froid (0 à 3°C) dans la cuve d'un batteur. Incorporer la préparation déshydratée pour Mousse. Cappuccino Alsa ... Liste d'ingrédients : sucre, dextrose, chocolat: 9% (sucre, pâte de cacao, beurre de cacao, LAIT en poudr
Les flans ALSA contiennent plus de 100mg de calcium et moins de 5g de lipides par portion. Le GEMRCN ... Escherichia coli. 10. 1,100. 1,169. 60,00. 170,00.