Encapsulating and Exploiting Change with Changeboxes Marcus Denker Tudor Gîrba Adrian Lienhard Lukas Renggli Oscar Nierstrasz Pascal Zumkehr
Marcus Denker Tudor Gîrba Adrian Lienhard Lukas Renggli Oscar Nierstrasz Pascal Zumkehr
Change happens.
“Depend in the direction of stability.”
A B A B C do foo do foo bar something ... something ... ... else anotherDo ... Add Change Remove Version i Version i+1
“Commit often.”
Update
Update Change
Update Change Commit
? Update Commit
We put the change in a box
1
Changeboxes encapsulate changes. 1 2 Change Specification
Changeboxes are immutable. 3 1 2 1 Change * ChangeBox Specification spec
4 3 1 2 1 Change * ChangeBox Specification spec
Changeboxes are applied on other Changeboxes. 4 3 5 1 2 1 Change * ChangeBox Specification spec * ancestor
Changeboxes are applied on other Changeboxes. 4 3 5 1 2 1 1 Change Merge * ChangeBox merger Specification spec Strategy * ancestor
Changeboxes define the scope for dynamic execution. 4 3 5 1 2 1 1 1 Change Merge * * Element ChangeBox merger Specification spec Strategy target * ancestor
1 1 1 Change Merge * * Element ChangeBox Specification merger Strategy target spec * ancestor Class Method Definition Rename ... Element Element Specification Specification
Method lookup is similar to Classboxes. B w ^4 B x B y B z A x B x B z ^1 ^2 ^3 ^10 A B
Method lookup is similar to Classboxes. B w ^4 B x B y B z A x B x B z ^1 ^2 ^3 ^10 MethodDict A x -> a MethodElement MethodDict B x -> a MethodElement y -> a MethodElement z -> a MethodElement w -> a MethodElement
Method lookup is similar to Classboxes. B w ^4 B x B y B z A x B x B z ^1 ^2 ^3 ^10 MethodDict A x -> a MethodElement B new x ? MethodDict B x -> a MethodElement y -> a MethodElement z -> a MethodElement w -> a MethodElement
Classes are looked up in a similar way.
Merge is supported via a MergeStrategy.
Changeboxes encapsulate changes. Changeboxes are immutable. Changeboxes are applied on other Changeboxes. Changeboxes define a scope for dynamic execution.
Encapsulate and exploit change in Changeboxes
Recommend
More recommend