Evolution of Modelling Languages Bart Meyers Hans Vangheluwe
Evolution of Modelling Languages Bart Meyers Hans Vangheluwe 1
Concrete syntax Petri Net meta-model Concrete mapping conf orm s to Train DSL meta-model conforms to Train 2 XML <track id=“t%%n” train=“train%%t” next=“%%next”/> <train id=“train%%t”/> co nf or m s to Train 2 PT <railroad> <track id=“t 0” train=“train 0” next=“sw 1”/> <train id=“train 0”/> <switch id=“sw 1” next. L=“t 5” next. R=“t 2”/> <track id=“t 2” next=“t 3”/> <track id=“t 3” next=“t 4”/> <track id=“t 4” next=“s 6”/> <track id=“t 5” next=“s 6”/> <station id=“s 6” next=“t 0”/> </railroad> XML representation <track id=“t%%n” next=“%%next”/> <station id=“s%%n” next=“%%next”/> <switch id=“sw%%n” next. L=“%%left” next. R=“%%right”/> Abstract syntax Marked Petri Net 2
Metamodel evolution: Train v 1 to Train Tv 2 add “length” to Rail - length : : Integer Rails are not linked with rails 3
Petri Net meta-model Concrete syntax Concrete mapping conf orm s to Train v 2 conforms to Train 2 XML <track id=“t%%n” train=“train%%t” next=“%%next”/> <train id=“train%%t”/> co nf or m s to Train 2 PT <railroad> <track id=“t 0” train=“train 0” next=“sw 1”/> <train id=“train 0”/> <switch id=“sw 1” next. L=“t 5” next. R=“t 2”/> <track id=“t 2” next=“t 3”/> <track id=“t 3” next=“t 4”/> <track id=“t 4” next=“s 6”/> <track id=“t 5” next=“s 6”/> <station id=“s 6” next=“t 0”/> </railroad> XML representation <track id=“t%%n” next=“%%next”/> <station id=“s%%n” next=“%%next”/> <switch id=“sw%%n” next. L=“%%left” next. R=“%%right”/> Abstract syntax Need for model co-evolution Marked Petri Net 4
Migration transformation ED 5
Petri Net meta-model Concrete syntax Concrete mapping conf orm s to Train v 2 conforms to Train 2 XML <track id=“t%%n” train=“train%%t” next=“%%next”/> <train id=“train%%t”/> co nf or m s to Train 2 PT <railroad> <track id=“t 0” train=“train 0” next=“sw 1”/> <train id=“train 0”/> <switch id=“sw 1” next. L=“t 5” next. R=“t 2”/> <track id=“t 2” next=“t 3”/> <track id=“t 3” next=“t 4”/> <track id=“t 4” next=“s 6”/> <track id=“t 5” next=“s 6”/> <station id=“s 6” next=“t 0”/> </railroad> XML representation <track id=“t%%n” next=“%%next”/> <station id=“s%%n” next=“%%next”/> <switch id=“sw%%n” next. L=“%%left” next. R=“%%right”/> Abstract syntax Need for transformation co-evolution Marked Petri Net 6
Concrete syntax conf ! conforms to Train 2 XML <track id=“t%%n” train=“train%%t” next=“%%next”/> <train id=“train%%t”/> ED-1 co nf or m s to -1 Optimize? conforms to EDoes D not apply to semantic evolution. Train 2 PT <railroad> <track id=“t 0” train=“train 0” next=“sw 1”/> <train id=“train 0”/> <switch id=“sw 1” next. L=“t 5” next. R=“t 2”/> <track id=“t 2” next=“t 3”/> <track id=“t 3” next=“t 4”/> <track id=“t 4” next=“s 6”/> <track id=“t 5” next=“s 6”/> <station id=“s 6” next=“t 0”/> </railroad> XML representation Petri Net meta-model Concrete mapping orm s to Train v 2 <track id=“t%%n” next=“%%next”/> Optimize? Abstract syntax ED-1 Optimize? <station id=“s%%n” next=“%%next”/> <switch id=“sw%%n” next. L=“%%left” next. R=“%%right”/> Marked Petri Net 7
Evolution building blocks model evolution image evolution domain evolution transformation evolution 8
Conclusions • evolution always happens, this goes for languages too • today: lack of support for language evolution • divide and conquer: basic evolution scenarios • automation is the goal, but full automation impossible 9
Questions and Discussion 10
- Slides: 10