Filip Křikava PhD defense November 22, 2013, Sophia Antipolis CNRS, University of Nice Sophia Antipolis, I3S Laboratory, MODALIS research group Advisors: Philippe Collet and Johan Montagnat Domain-Specific Modeling Language for Self-Adaptive Software System Architectures
The vision of Autonomic Computing and Self-Adaptive Software Systems aims at realizing software that autonomously manage itself in presence of varying environmental conditions. Feedback Control Loops (FCL) provide generic mechanisms for self-adaptation, however, incorporating them into software systems raises many challenges.
The first part of this thesis addresses the integration challenge, i.e., forming the architecture connection between the underlying adaptable software and the adaptation engine. We propose a domain-specific modeling language, FCDL, for integrating adaptation mechanisms into software systems through external FCLs. It raises the level of abstraction, making FCLs amenable to automated analysis and implementation code synthesis. The language supports composition, distribution and reflection thereby enabling coordination and composition of multiple distributed FCLs. Its use is facilitated by a modeling environment, ACTRESS, that provides support for modeling, verification and complete code generation. The suitability of our approach is illustrated on three real-world adaptation scenarios.
The second part of this thesis focuses on model manipulation as the underlying facility for implementing ACTRESS. We propose an internal Domain-Specific Language (DSL) approach whereby Scala is used to implement a family of DSLs, SIGMA, for model consistency checking and model transformations. The DSLs have similar expressiveness and features to existing approaches, while leveraging Scala versatility, performance and tool support.
To conclude this thesis we discuss further work and further research directions for MDE applications to self-adaptive software systems.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Filip KřikavaPhD defense
November 22, 2013, Sophia Antipolis
CNRS, University of Nice Sophia Antipolis, I3S Laboratory, MODALIS research group
Advisors: Philippe Collet and Johan Montagnat
Domain-Specific Modeling Language for Self-Adaptive Software System
Architectures
Context and Motivation
Jeff Kephart - Autonomic Computing: The First Decade, ICAC’11 keynote
Electronic Retailer - Application Diagram
• Ever growing complexity of computing systems• Taming this complexity by skilled IT professionals does not scale• New operation modes are needed
2
Towards Self-Adaptive Software Systems
• Towards Self-Adaptive Software Systems• Realizing system that adjusts themselves in accordance with some higher-level goals
3
Monitoring Reconfiguration
Decision Making
sensors effectors
Target System
events actions
measures decisions
Feedback Control Loop (FCL)
Towards Self-Adaptive Software Systems
• Towards Self-Adaptive Software Systems• Realizing system that adjusts themselves in accordance with some higher-level goals
3
Challenges
4
Engineering of self-adaptive software systems is a challenge
Designing an adaptation engine
Controller Target System
Transducer
+ -
� =mX
i=1
1
d=
m
d
⇥(N) = �µ =
md
µ
d =m
�(N)µ
Integrating the adaptation engine into the target system
API
LOGS
CONFIGURATIONS
COMMANDS
AOP
PROFILER
Challenges
4
Engineering of self-adaptive software systems is a challenge
Designing an adaptation engine
Controller Target System
Transducer
+ -
� =mX
i=1
1
d=
m
d
⇥(N) = �µ =
md
µ
d =m
�(N)µ
Integrating the adaptation engine into the target system
API
LOGS
CONFIGURATIONS
COMMANDS
AOP
PROFILER
Challenges
5
Integrating the adaptation engine into the target system
Adaptation Engine Target System
• Extensive handcrafting of non-trivial code• Cumbersome and error-prone• Accidental complexities
Adhoc Implementations
Controller Target System
Transducer
+ -
� =mX
i=1
1
d=
m
d
⇥(N) = �µ =
md
µ
d =m
�(N)µ
API
LOGS
CONFIGURATIONS
COMMANDS
AOP
PROFILER
Challenges
6
Integrating the adaptation engine into the target system
Adaptation Engine Target SystemReusing and adapting existing work
Controller Target System
Transducer
+ -
� =mX
i=1
1
d=
m
d
⇥(N) = �µ =
md
µ
d =m
�(N)µ
API
LOGS
CONFIGURATIONS
COMMANDS
AOP
PROFILER
• Often target specific types of adaptation problems (Bertran’12)• Require the use of certain adaptation mechanism (Garlan’04)• Applicable to single domain (Rouvoy’08) or technology (Asadollahi’09)• Do not support remoting or complex control schemes (Adamczyk’08, Gorton’06)• Limiting their applicability
Requirements
7
Identified requirements for integrating self-adaptation into software systems
Generality
• Domain-agnostic• Technology-agnostic
• Explicit FCLs, their process and interactions• Verification support
Visibility
• Reusable FCL parts across adaptation scenarios
Reusability
Requirements
7
Identified requirements for integrating self-adaptation into software systems
Generality
• Domain-agnostic• Technology-agnostic
• Explicit FCLs, their process and interactions• Verification support
Visibility
• Reusable FCL parts across adaptation scenarios
Reusability
• Remote distribution of FCL
Distribution
• Composition• Reflection
Complexcontrol
Requirements
7
Identified requirements for integrating self-adaptation into software systems
Generality
• Domain-agnostic• Technology-agnostic
• Explicit FCLs, their process and interactions• Verification support
Visibility
• Reusable FCL parts across adaptation scenarios
Reusability
• Remote distribution of FCL
Distribution
• Composition• Reflection
Complexcontrol
• Prototyping• Automating
Tooling
Lightweight approach
Objectives
Provide an approach to facilitate systematic integration of self-adaptive mechanisms into software systems through feedback control loops.
8
“”
Contributions
9
Feedback Control Definition Language
The ACTRESS Modeling Environment
The SIGMA Model Manipulation Languages
Monitoring Reconfiguration
Decision Making
sensors effectors
Target System
events actions
measures decisions
Integrating the adaptation engine into the target system
Con
trib
utio
ns
Facilitates language
use
Facilitates tooling
implementation
Controller Target System
Transducer
+ -
� =mX
i=1
1
d=
m
d
⇥(N) = �µ =
md
µ
d =m
�(N)µ
API
LOGS
CONFIGURATIONS
COMMANDS
AOP
PROFILER
Generality Visibility Reusability Distribution Complex control
Tooling
Lightweight approach
Plan
10
1. Feedback Control Definition Language
2. The ACTRESS Modeling Environment
3. The Sigma Model Manipulation Languages
4. Conclusions and Perspectives
Plan
11
1. Feedback Control Definition Language
2. The ACTRESS Modeling Environment
3. The Sigma Model Manipulation Languages
4. Conclusions and Perspectives
Feedback Control Definition Language
12
1. Raise the level of abstraction
2. Fine-grained decomposition of FCL elements
3. Explicit interactions
4. Provide reflection and composition capabilities
5. Embed remoting
Monitoring Decision Making Reconfiguration
measures
events
decisions
actions
General Purpose Language (GPL)
Generality
Visibility
Reusability
Distribution
Complexcontrol
Feedback Control Definition Language
13
1. Raise the level of abstraction
2. Fine-grained decomposition of FCL elements
3. Explicit interactions
4. Provide reflection capabilities
5. Embed remoting
Domain-Specific Modeling
Feedback Control Definition Language
13
1. Raise the level of abstraction
2. Fine-grained decomposition of FCL elements
3. Explicit interactions
4. Provide reflection capabilities
5. Embed remoting
Domain-Specific Modeling
Monitoring Reconfiguration
Decision Making
sensors effectorsevents actions
measures decisions
Feedback Control Definition Language
13
1. Raise the level of abstraction
2. Fine-grained decomposition of FCL elements
3. Explicit interactions
4. Provide reflection capabilities
5. Embed remoting
Domain-Specific Modeling
• Feedback Control Loop• Sequence of interconnected processes• Inputs x State -> Output• Reactive• Concurrent• Dynamic
Monitoring Reconfiguration
Decision Making
sensors effectorsevents actions
measures decisions
Feedback Control Definition Language
13
1. Raise the level of abstraction
2. Fine-grained decomposition of FCL elements
3. Explicit interactions
4. Provide reflection capabilities
5. Embed remoting
Domain-Specific Modeling
• Feedback Control Loop• Sequence of interconnected processes• Inputs x State -> Output• Reactive• Concurrent• Dynamic
Monitoring Reconfiguration
Decision Making
sensors effectorsevents actions
measures decisions
• The Actor Model• Network of actors communicating via
message passing• Message x State -> Message(s)• Reactive• Concurrent• Dynamic
actor
actor
actor
Feedback Control Definition Language
14
• Feedback Control Loop• Sequence of interconnected processes• Inputs x State -> Output• Reactive• Concurrent• Dynamic
• The Actor Model• Network of actors communicating via
message passing• Message x State -> Message(s)• Reactive• Concurrent• Dynamic• Thread safe• Scalable• Remoting support• Programming support
Monitoring Reconfiguration
Decision Making
sensors effectorsevents actions
measures decisions
actor
actor
actor
Feedback Control Definition Language - Adaptive Element
15
Monitoring Reconfiguration
Decision Making
sensors effectorsevents actions
measures decisions
Processor
in input
out output
Effector
in input
Sensor
out output
Target System
in input
Controller
in input
out output
Processor
out output
Feedback Control Definition Language - Adaptive Element
15
Monitoring Reconfiguration
Decision Making
sensors effectorsevents actions
measures decisions
Processor
in input
out output
Effector
in input
Sensor
out output
Target System
in input
Controller
in input
out output
Processor
out output
in input
providedEffectorprovidedSensor
out output
Feedback Control Definition Language - Illustration
• Typical example of a control-based solution to a well-known and well-scoped problem• Design of a sophisticated control mechanisms• Integration left for adhoc implementation
16
QoS management control of web servers by content delivery adaptation
Feedback Control Definition Language - Illustration
17
Idea: service time = fixed overhead + data-size dependent overhead
Abdelzaher et al., 1999, 2002
QoS management control of web servers by content delivery adaptationGoal: maintain server load around some pre-set value
Prerequisite: preprocessed content (different quality and size)
Feedback Control Definition Language - Illustration
17
Idea: service time = fixed overhead + data-size dependent overhead
Abdelzaher et al., 1999, 2002
QoS management control of web servers by content delivery adaptationGoal: maintain server load around some pre-set value
/1/photo.jpg
/2/photo.jpg
/photo.jpgfull quality
degraded quality
Prerequisite: preprocessed content (different quality and size)
Feedback Control Definition Language - Illustration
17
Idea: service time = fixed overhead + data-size dependent overhead
Abdelzaher et al., 1999, 2002
QoS management control of web servers by content delivery adaptationGoal: maintain server load around some pre-set value
/1/photo.jpg
/2/photo.jpg
/photo.jpgfull quality
degraded quality
normal load
overload
Prerequisite: preprocessed content (different quality and size)
Feedback Control Definition Language - Illustration
17
Idea: service time = fixed overhead + data-size dependent overhead
Abdelzaher et al., 1999, 2002
QoS management control of web servers by content delivery adaptation
...
serve fromtree #2
serve fromtree #1
Rejection Level
Minimum Content Full Content
Goal: maintain server load around some pre-set value
/1/photo.jpg
/2/photo.jpg
/photo.jpgfull quality
degraded quality
normal load
overload
Prerequisite: preprocessed content (different quality and size)
Feedback Control Definition Language - Illustration
17
Idea: service time = fixed overhead + data-size dependent overhead
Abdelzaher et al., 1999, 2002
QoS management control of web servers by content delivery adaptation
...
serve fromtree #2
serve fromtree #1
Rejection Level
Minimum Content Full Content
Goal: maintain server load around some pre-set value
/1/photo.jpg
/2/photo.jpg
/photo.jpgfull quality
degraded quality
normal load
overload
Prerequisite: preprocessed content (different quality and size)
Feedback Control Definition Language - Illustration
17
Idea: service time = fixed overhead + data-size dependent overhead
Abdelzaher et al., 1999, 2002
QoS management control of web servers by content delivery adaptation
...
serve fromtree #2
serve fromtree #1
Rejection Level
Minimum Content Full Content
Generality Visibility Reusability
Using FCDL
Goal: maintain server load around some pre-set value
/1/photo.jpg
/2/photo.jpg
/photo.jpgfull quality
degraded quality
normal load
overload
Prerequisite: preprocessed content (different quality and size)
Feedback Control Definition Language - Illustration
17
Idea: service time = fixed overhead + data-size dependent overhead
Abdelzaher et al., 1999, 2002
QoS management control of web servers by content delivery adaptation
...
serve fromtree #2
serve fromtree #1
Rejection Level
Minimum Content Full Content
Distribution Complex control
Generality Visibility Reusability
Using FCDL
Goal: maintain server load around some pre-set value
/1/photo.jpg
/2/photo.jpg
/photo.jpgfull quality
degraded quality
normal load
overload
Prerequisite: preprocessed content (different quality and size)
Feedback Control Definition Language - Illustration
18
3. Compute severity of adaptation (G)
2. Compute the requests rate (R), bandwidth (W) and utilization (U)
1. Compute the number of requests (r) and size of responses (w)
1. Compute the number of requests (r) and size of responses (w)
accessLog: FileTailer
out lines
file=/var/log/apache2/access.log
Feedback Control Definition Language - Illustration
access_log
19
active sensor FileTailer { push out port lines: String
property file: String}
processor Accumulator { push in port input: long pull out port sum: long}
processor AccessLogParser { push in port lines: String push out port size: int push out port requests: int}
Generality
Visibility
Reusability
requestCounter: Accumulator
responseSizeCounter: Accumulator
in input
out sum out sum
in lines
out sizeout requests
accessLogParser: AccessLogParser
access_log
Feedback Control Definition Language - Illustration
20
active processor PeriodTrigger<T> { pull in port input: T push out port output: T
property initialPeriod = 10.seconds}
Generality
Visibility
Reusability
requestCounter: Accumulator
responseSizeCounter: Accumulator
scheduler: PeriodTrigger
loadMonitor: LoadMonitor
in input
out sum out sum
in requests in size
out utilization
in input
out output
initialPeriod=10s
accessLog: FileTailer
in lines
out lines
file=/var/log/apache2/access_log
out sizeout requests
accessLogParser: AccessLogParser
2. Compute the requests rate (R), bandwidth (W) and utilization (U)
content_tree
Feedback Control Definition Language - Illustration
access_log
21
Generality
Visibility
Reusability
utilController: UtilizationController
requestCounter: Accumulator
responseSizeCounter: Accumulator
scheduler: PeriodTrigger
loadMonitor: LoadMonitor
in input
out sum out sum
in requests in size
out utilization
in input
out output
in utilization
out contentTreeinitialPeriod=10s
adaptor: ContentAdaptor
in contentTree
accessLog: FileTailer
in lines
out lines
file=/var/log/apache2/access_log
out sizeout requests
accessLogParser: AccessLogParser
k=?U*=?
3. Compute severity of adaptation (G)
Feedback Control Definition Language - Illustration
22
composite ApacheQOS {
feature accessLog = new FileTailer { file = “/var/log/apache2/access_log” }
feature accessLogParser = new AccessLogParser feature requestCounter = new Accumulator feature responseSizeCounter = new Accumulator feature loadMonitor = new LoadMonitor feature scheduler = new PeriodTrigger<Double> feature utilController = new UtilizationController feature adaptor = new ContentAdaptor
connect accessLog.lines to accessLogParser.lines connect accessLogParser.size to responseSizeCounter.input connect accessLogParser.requests to requestsCounter.input connect requestCounter.output to loadMonitor.requests connect responseSizeCounter.output to loadMonitor.size connect loadMonitor.utilization to scheduler.input connect scheduler.output to utilController.utilization connect utilController.contentTree to adaptor.contentTree }
Complete model of the first prototype
Generality Visibility Reusability
ApacheQOSutilController
: UtilizationController
in input
requestCounter: Accumulator
responseSizeCounter: Accumulator
scheduler: PeriodTrigger
loadMonitor: LoadMonitor
in input
out sum out sum
in requests in size
out utilization
in input
out output
in utilization
out contentTree
syst
em
laye
rco
ntro
l la
yer
initialPeriod=10s
adaptor: ContentAdaptor
in contentTree
accessLog: FileTailer
in lines
out lines
file=/var/log/apache2/access_log
out sizeout requests
accessLogParser: AccessLogParser
k=?U*=?
Feedback Control Definition Language - Composition
Feedback Control Definition Language - Interaction Contracts
28
in input
: Accumulator
out sum
• Activated on input push request• Activated on sum pull request
in input
: Accumulator
out sumin reset
out output
Feedback Control Definition Language - Interaction Contracts
29
• Activated on input push request• Activated on reset push request• Activated on input / reset request• Activated on sum pull request• Activated on input push request always pushing data on output• Activated on reset push request always pushing data on output• ....
in input
: Accumulator
out sumin reset
out output
Feedback Control Definition Language - Interaction Contracts
30
• Behavior not explicitly stated in the architecture - Black Box• Limits verification support• Limits code-generation support
When it receives data on its input port, it pushes to its output port the input value plus the sum of all the input values it has received since the last time the reset port was triggered, similarly, when pulled on the sum port, it returns the sum of all the input values since the last reset, and finally receiving any data on its reset port, sets the current accumulated value back to 0.
if (!input.isEmpty()) { value += input.get output.send(value) } else if (!reset.isEmpty()) { reset.get() value = 0 } else if (!sum.isEmpty()) { sum.send(value) } else { throw new IllegalStateException("Invalid execution") }
in input
: Accumulator
out sumin reset
out output
Feedback Control Definition Language - Interaction Contracts
31
Interaction ContractsDescribe allowed interactions among components
Visibility
processor Accumulator { push in port reset: int push in port input: long pull out port sum: long push out port output: long
• Reference implementation of FCDL based on Eclipse Modeling Framework• Facilitate the use of FCDL
ACTRESS - Modeling Support
34
controller UtilizationController { // ...
// interaction contract act activate(utilization; ; contentTree) // beginning of Xbase implementation implementation xbase { var G = M
// interaction contract act activate { // computes the error val E = targetUtilization - utilization // computes new extend of adaptation G = G + k * E
// correct bounds if (G < 0) G = 0 if (G > M) G = M // returns the result G }}
• Textual DSL for authoring FCDL models• Additionally supports
• Modularity• Java interoperability• Implementation specification using Xbase
• Eclipse IDE support
xFCDL (Extended FCDL)
utilController: UtilizationController
in utilization
out contentTree
k=?U*=?
ACTRESS - Code Generation Support
35
accessLogParser accessLog adaptor
apache control
requestCounter
responseSizeCounter
loadMonitor
utilization
scheduler utilController
ApacheQOS
ACTRESS Runtime
actor
actor with event listener
compositeactor
containment
messagepassing
ApacheQOS utilController: UtilizationController
in input
requestCounter: Accumulator
responseSizeCounter: Accumulator
scheduler: PeriodTrigger
loadMonitor: LoadMonitor
in input
out sum out sum
in requests in size
out utilization
in input
out output
in utilization
out contentTree
out requests
out size
initialPeriod=10s
in contentTree
server: ApacheWebServer
k=?U*=?
Code generator
Model-to-Texttransformation
ACTRESS Domain
Framework
FCDL Model
Executable System
Xbase compiled to JavaSkeleton implementation
ACTRESS - Code Generation Support
36
@SuppressWarnings("all")public class UtilizationControllerAct extends AdaptiveElementAct {
// ...
protected double activate(final double utilization) { // TODO: compute and output value for contentTree port }
// ...
}
utilController: UtilizationController
in utilization
out contentTree
k=?U*=?
Skeleton Implementation
PrescriptiveDescriptive
Visibility
ACTRESS - Verification Support
37
FCDL Verification
ACTRESS - Verification Support
37
FCDL Verification
Model Well-Formedness
• Data-type compatibility• Port connections• Required properties• and others
meta-model constraints(SIGMA)
ACTRESS - Verification Support
37
FCDL Verification
Model Well-Formedness
• Data-type compatibility• Port connections• Required properties• and others
meta-model constraints(SIGMA)
Architecture
interaction contracts verification
(SIGMA)
• Consistency• Determinacy• Completeness
ACTRESS - Verification Support
37
FCDL Verification
Model Well-Formedness
• Data-type compatibility• Port connections• Required properties• and others
meta-model constraints(SIGMA)
Architecture
interaction contracts verification
(SIGMA)
• Consistency• Determinacy• Completeness
@OCL(invDifferentSource="self.ports->select(p | p.name = 'size' || p.name = 'requests') // select ports ->collect(p | p.connections) // select their connects->collect(p | p.parent) // select owning instances->asSet()->size() == 2 // there must be two different ones")processor LoadMonitor {
User Structural Constraints
xFCDL OCL Annotations
ACTRESS - Verification Support
37
FCDL Verification
Model Well-Formedness
• Data-type compatibility• Port connections• Required properties• and others
• Internal DSLs in Scala for model manipulation• Embeds domain-specific constructs into a GPL• Small API• Efficient• Directly reuse the host language infrastructure
Internal DSLs
SIGMA
Lightweight approach
SIGMA
Quick Example
Check that all instances within a composite have unique names
SIGMA
Quick Example
Check that all instances within a composite have unique names
def invUniqueNamesWithinType = self.parent.allFeatures forall (e => e != self implies e.name != self.name)
SIGMA
SIGMA
Quick Example
Check that all instances within a composite have unique names
• Similar expressiveness• Easy to edit• Easy to test
• Easy to debug• Easy to integrate into model
manipulation workflow
def invUniqueNamesWithinType = self.parent.allFeatures find (e => e != self && e.name == self.name) match { case None => Passed case Some(e) => Error(s”Element $e has the name”) .quickFix(“Rename ‘${self.name}’ to ‘${self.name}’_2”) { self.name += “_2” } }
def invUniqueNamesWithinType = self.parent.allFeatures forall (e => e != self implies e.name != self.name)
SIGMA
SIGMA
45
Architecture
SIGMA
Eclipse Modeling Framework (EMF)
Scala
SIGMA EMF bridge
Model Navigation
Model-to-Model Transformation
Model Consistency Checking
Model Modification
Model-to-Text Transformation
CommonInfrastructure
Task-specificDSLs
ANR EMERGENCEANR-09-SEGI-012
Requirements
• Tool support
• Expressiveness
• Usability
• Testability
Plan
46
1. Feedback Control Definition Language
2. The ACTRESS Modeling Environment
3. The Sigma Model Manipulation Languages
4. Conclusions and Perspectives
Summary
• Combining self-adaptive software systems with principles of MDE to provide systematic and tooled approach for integrating control mechanisms into software applications.
• Design of a domain-specific modeling language for defining complex feedback control loop architectures on a flexible, high level of abstraction.
• A reference implementation and tools facilitating the language use including modeling, code synthesis and verification support.
• A family of internal DSLs in Scala for lightweight model manipulations including model consistency checking, model transformations.
47
Summary
• Combining self-adaptive software systems with principles of MDE to provide systematic and tooled approach for integrating control mechanisms into software applications.
• Design of a domain-specific modeling language for defining complex feedback control loop architectures on a flexible, high level of abstraction.
• A reference implementation and tools facilitating the language use including modeling, code synthesis and verification support.
• A family of internal DSLs in Scala for lightweight model manipulations including model consistency checking, model transformations.
47
• Materialized in 2 software stacks• The ACTRESS Modeling Environment
http://fikovnik.github.io/Actress• The SIGMA Model Manipulation DSLs
• P. Collet, F. Křikava, J. Montagnat, M. Blay-Fornarino, D. Manset. Issues and Scenarios for Self-Managing Grid Middleware, Workshop on Grids meets autonomic computing (GMAC '10), 2010
• F. Křikava, P. Collet, M. Blay-Fornarino. Uniform and Model-Driven Engineering of Feedback Control Systems, International Conference on Autonomic Computing (ICAC'11), 2011 short paper
• F. Křikava, P. Collet. A Reflective Model for Architecting Feedback Control Systems, International Conference on Software Engineering and Knowledge Engineering (SEKE'11), 2011
• F. Křikava, P. Collet. On the Use of an Internal DSL for Enriching EMF Models, Workshop on OCL and Textual Modelling (OCL'12), 2012
• F. Křikava, P. Collet, R. France. Actor-based Runtime Model of Adaptable Feedback Control Loops, Workshop on [email protected] (MRT'12), 2012
• F. Křikava, P. Collet, R. France. ACTRESS: Domain-Specific Modeling of Self-Adaptive Software Architectures, International Conference on Dependable and Adaptive Distributed Systems, SAC’14 (to appear)
• F. Křikava, P. Collet, R. France. Exploring Internal Domain-Specific Languages for Model Manipulations, International Conference on Programing Languages, SAC’14, short paper (to appear)
49
• EclipseCon Europe 2012 Modeling Symposium − Enriching EMF Models with Scala, Ludwigsburg, Germany• Scala Workshop 2013 − Model Manipulation Using Embedded DSLs in Scala, Montpellier, France
SIGMA model manipulation DSLs have been also presented at: