derived features for emf by integrating advanced model queries
TRANSCRIPT
Budapest University of Technology and EconomicsDepartment of Measurement and Information Systems
Derived Features for EMF by Integrating Advanced Model Queries
István Ráth, Ábel Hegedüs and Dániel VarróBudapest University of Technology and Economics
ECMFA, 2012.07.04.
Motivating example
2
T = {}BUTE: School
VD: Teacher
BUTE
VD
teachers
T = {VD}
Metamodel
Instance model
Change notification:ADD(teachers, VD)
View
View gets updatedautomatically when the
model changesModel notifies listeners
upon changes
School metamodel in EMF
<<derived>>
<<derived>>
<<derived>>
„Teachers with the maximum number of courses assigned, among teachers of the same
school”
„Number of teachersin the school”
„Year with maximum starting date”
User-defined derived features
NoT = 1BUTE: School BUTE
VD
teachers
T = {VD}
Metamodel
Instance model View
VD: Teacher
T = {VD,RI}
teachers
RI: Teacher
Change notification:ADD(teachers, VD)
NoT = 2NoT = 1
Notification not sent forderived feature change!
View inconsistent untilmanual refresh!
RI
Ideal derived features
NoT = 1BUTE: School BUTE
teachers
T = {VD}
Metamodel
Instance model View
VD: Teacher
T = {VD,RI}
teachers
RI: Teacher
Change notification:ADD(teachers, VD)SET(NoT, 1, 2)
NoT = 2NoT = 1
Notification sent forderived feature change!
NoT = 2
VD RI
EMF-INCQUERY Overview
A model query engine for batch and live queries
• Expressive graph pattern-based query language
• Focus on reusability: query libraries, recursive pattern calls
Language
• Incrementalevaluation
• Instantaneous response for complex queries over large instance models
Performance
• On-the-fly well-formednes validation
• Incremental view maintenance
• Model synchronization
• Derived features
Use cases
http://viatra.inf.mit.bme.hu/incquery http://viatra.inf.mit.bme.hu/incquery/getting_started http://www.eclipse.org/proposals/modeling.emf.incquery/
• Declarative modelqueries
• Minimizeimperative code
Language
• Affects every part of the application
• Incrementalre-evaluation
Performance
• Developmenteffort
• Tool support
EMF integration of derived features
Important aspects of derived features
Derived features as model queries
Derived features can be represented as:o A set of relevant elements from the model
o An iterative algorithm over these elements Model query
Result can be updated withoutcomplete recalculation,
if an element is added to orremoved from the set
notification(ADD, School.teachers, teacher)-> School.numberOfTeachers++notification(REMOVE, School.teachers, teacher)-> School.numberOfTeachers--
ModelQuery(A,B): • tuples of model elements A, B• satisfying the query condition• enumerate 1 / all instances• A,B can be input or output
Advanced model queries
9
pattern teachersWithMostCourses(School : School, Teacher : Teacher) = {School.teachers(School,Teacher);neg find moreCourses(Teacher);}
pattern moreCourses(Teacher : Teacher) = {N == count find coursesOfTeacher(Teacher,_Course);M == count find coursesOfTeacher(Teacher2,_Course2);Teacher(Teacher2);Teacher != Teacher2;check(N < M);}
Queryparameters
Negativeapplicationcondition
Match counting
Checkexpression
• Declarative modelqueries
• Minimizeimperative code
Language
• Affects every part of the application
• Incrementalre-evaluation
Performance
• Developmenteffort
• Tool support
EMF integration of derived features
Important aspects of derived features
Derived features life cycle 1 – basic case
Application
ModelComplete
recalculation
RequestderivedvalueB1
B2
Getcurrentvalue
Value retrieval
• Model navigation• Filtering• Aggregation
Called when:• selected in editor• model traversal• serialization• etc.
Efficient derived features
Derived features life cycle 2 – efficient case
Application
ModelDerivedFeature
IncrementalQuery engine
EMF model reference + Change notifications
Initialization + Model
manipulation Deltamonitors
Requestderivedvalue
A3
A1
A2
A4
B1
B2
Getcurrentvalue
Incremental update
Value retrieval from cache
Query engine
RETE networkInput nodes
Intermediate nodes
Outputnodes
Deltamonitor
EMF instance model
Generated query components
Input = Model contents + changes (EMF notifications)
Output = Query results + (subsequent) Query result deltas
Query definition
Incremental evaluation of queries
A quick look into performance
Performance advantage of OCL-IA over
EclipseOCL is not significant with complex
queries
INCQUERY is 1-1.5 orders-of-magnitude faster
than Eclipse OCL-IA
http://viatra.inf.mit.bme.hu/performance
Constraint evaluation over large instance models
• Declarative modelqueries
• Minimizeimperative code
Language
• Affects every part of the application
• Incrementalre-evaluation
Performance
• Developmenteffort
• Tool support
EMF integration of derived features
Important aspects of derived features
<<derived>>
DEMO Developing derived features
private IncqueryFeatureHandler teachersWithMostCourses;public EList<Teacher> getTeachersWithMostCourses() {return IncqueryFeatureHelper.getManyReferenceValueForHandler(teachersWithMostCourses, this,SchoolPackage.Literals.SCHOOL__TEACHERS_WITH_MOST_COURSES);}
@DerivedFeature(feature = "teachersWithMostCourses")pattern teacherWithMostCourses(School : School, Teacher : Teacher) = {
find teachers(School,Teacher);neg find moreCourses(Teacher);
}
1. Define feature in metamodel
2. Define model query withEMF-IncQuery
3. Generate glue codeautomatically
Future workQuery-driven soft interconnections between EMF models
Handling references between different models by integrated queries(Paper at MODELS 2012)
Derived objects backed by model queriesRepresent query results as objects in the modelLife cycle managed by EMF-INCQUERY
• Expressivegraph-basedmodel querylanguage
Language
• Incrementalevaluationtechnique
Performance
• Easy integration through code generation
EMF integration
SummaryEfficient and automated computation ofderived features in EMF
Final points
EMF-INCQUERY 0.6 preview is available immediately
oWith complete support for derived featureso http://viatra.inf.mit.bme.hu/incquery/new/examples/derivedfeatures
Thank you very much!