Local search-based pattern matching features in EMF-IncQuery
-
Upload
zoltan-ujhelyi -
Category
Science
-
view
454 -
download
0
Transcript of Local search-based pattern matching features in EMF-IncQuery
Local Search-basedPattern Matching Features in
EMF-IncQuery
2015. 07. 22. 1Local search-based pattern matching features in EMF-IncQuery
Márton Búr, Zoltán Ujhelyi, Ákos Horváth, Dániel Varró
Presenter: Ábel Hegedüs
IncQuery Labs Ltd.
Budapest University of Technology and Economics
Anti-pattern Detection in Java Programs
2015. 07. 22. 2Local search-based pattern matching features in EMF-IncQuery
public class StringLiteralCompareTest {
public StringLiteralCompareTest srcVar;
@Overridepublic boolean equals(Object other) {
return super.equals(other);}
public void test() {
srcVar.equals("source");}
}
Anti-pattern Detection in Java Programs
2015. 07. 22. 3Local search-based pattern matching features in EMF-IncQuery
public class StringLiteralCompareTest {
public StringLiteralCompareTest srcVar;
@Overridepublic boolean equals(Object other) {
return super.equals(other);}
public void test() {
srcVar.equals("source");}
}
EMF metamodel of Java programs (part)
Anti-pattern Detection in Java Programs
2015. 07. 22. 4Local search-based pattern matching features in EMF-IncQuery
public class StringLiteralCompareTest {
public StringLiteralCompareTest srcVar;
@Overridepublic boolean equals(Object other) {
return super.equals(other);}
public void test() {
srcVar.equals("source");}
}
Instance model in EMF editor
Anti-pattern Detection in Java Programs
2015. 07. 22. 5Local search-based pattern matching features in EMF-IncQuery
public class StringLiteralCompareTest {
public StringLiteralCompareTest srcVar;
@Overridepublic boolean equals(Object other) {
return super.equals(other);}
public void test() {
srcVar.equals("source");}
}
String Literal as Compare Parameter(anti-pattern as graph pattern)
inv: MethodInvocation
name = “equals”
m: NormalMethod
arg: StringLiteral
op: Literal
invokes operand
argument
check count matches == 1
: Expression
Pattern Matching Strategies
2015. 07. 22. 6Local search-based pattern matching features in EMF-IncQuery
Local Search• Executes a search plan• Lower memory requirements• Tools: ATL, GrGen.net, FUJABA, …
Incremental• Maintains a cache structure• Efficient recalculation• Tools: EMF-IncQuery, Drools, ...
Local-search Based Pattern Matching
2015. 07. 22. 7Local search-based pattern matching features in EMF-IncQuery
Find all m that m ∈ NormalMethod
Attribute test: m.name=="equals”
Find inv that inv.invokes → m
Count of inv.argument → arg is 1
Find arg that inv.argument → arg
Instance test: arg is a StringLiteral
Find op that inv.operand → op
NEG: op is not a Literal87
6
5
4
3
21
Local-search Based Pattern Matching
2015. 07. 22. 8Local search-based pattern matching features in EMF-IncQuery
Normal Method1
Find all m that m ∈ NormalMethod
Attribute test: m.name=="equals”
Find inv that inv.invokes → m
Count of inv.argument → arg is 1
Find arg that inv.argument → arg
Instance test: arg is a StringLiteral
Find op that inv.operand → op
NEG: op is not a Literal87
6
5
4
3
21
Local-search Based Pattern Matching
2015. 07. 22. 9Local search-based pattern matching features in EMF-IncQuery
Normal Method1
2
Find all m that m ∈ NormalMethod
Attribute test: m.name=="equals”
Find inv that inv.invokes → m
Count of inv.argument → arg is 1
Find arg that inv.argument → arg
Instance test: arg is a StringLiteral
Find op that inv.operand → op
NEG: op is not a Literal87
6
5
4
3
21
name: “equals”
Local-search Based Pattern Matching
2015. 07. 22. 10Local search-based pattern matching features in EMF-IncQuery
Normal Method
MethodInvocation
invokes
1
2
3
Find all m that m ∈ NormalMethod
Attribute test: m.name=="equals”
Find inv that inv.invokes → m
Count of inv.argument → arg is 1
Find arg that inv.argument → arg
Instance test: arg is a StringLiteral
Find op that inv.operand → op
NEG: op is not a Literal87
6
5
4
3
21
name: “equals”
Local-search Based Pattern Matching
2015. 07. 22. 11Local search-based pattern matching features in EMF-IncQuery
Normal Method
StringLiteral
MethodInvocation
invokes
1
2
36
Find all m that m ∈ NormalMethod
Attribute test: m.name=="equals”
Find inv that inv.invokes → m
Count of inv.argument → arg is 1
Find arg that inv.argument → arg
Instance test: arg is a StringLiteral
Find op that inv.operand → op
NEG: op is not a Literal87
6
5
4
3
21
name: “equals”
Local-search Based Pattern Matching
2015. 07. 22. 12Local search-based pattern matching features in EMF-IncQuery
Normal Method
StringLiteral
IdentifierMethod
Invocation
invokes
1
2
36
8
Find all m that m ∈ NormalMethod
Attribute test: m.name=="equals”
Find inv that inv.invokes → m
Count of inv.argument → arg is 1
Find arg that inv.argument → arg
Instance test: arg is a StringLiteral
Find op that inv.operand → op
NEG: op is not a Literal87
6
5
4
3
21
name: “equals”
EMF-IncQuery
2015. 07. 22. 13Local search-based pattern matching features in EMF-IncQuery
Runtime
Incremental queries using Rete backend
Local search backend
IDE
Language
Code generator
Development tools
Query Explorer
Local Search Debugger
Local Search Runtime
2015. 07. 22. 14Local search-based pattern matching features in EMF-IncQuery
IncQuery Engine
Model
Graph patterns
Local Search Runtime
2015. 07. 22. 15Local search-based pattern matching features in EMF-IncQuery
IncQuery Engine
Model
Graph patterns
• Calculates matches• Manages model indexes
Local Search Runtime
2015. 07. 22. 16Local search-based pattern matching features in EMF-IncQuery
IncQuery Engine
Model Rete backend
Graph patterns
Local Search Runtime
2015. 07. 22. 17Local search-based pattern matching features in EMF-IncQuery
IncQuery Engine
Model Rete backend
Graph patterns
Default (incremental) query executor
Local Search Runtime
2015. 07. 22. 18Local search-based pattern matching features in EMF-IncQuery
IncQuery Engine
Model Rete backend
Graph patterns
Pattern matches
Local Search Runtime
2015. 07. 22. 19Local search-based pattern matching features in EMF-IncQuery
IncQuery Engine
Model
Local search backend
Planner
Graph patterns
Pattern matches
• Initializes search plans• Reuses pre-populated
model indexes
Local Search Runtime
2015. 07. 22. 20Local search-based pattern matching features in EMF-IncQuery
IncQuery Engine
Model
Local search backend
Planner Matcher
Graph patterns
Pattern matches• Executes search plans• Based on depth-first search
EMF-IncQuery IDE
2015. 07. 22. 22Local search-based pattern matching features in EMF-IncQuery
Query Editor
Defines graph patterns
Model Editor
EMF-based editor
Query Explorer
Displays query results
Local Search Debugger
2015. 07. 22. 23Local search-based pattern matching features in EMF-IncQuery
Step-by-step execution of search plans• Visualizes search plans• Visualizes (partial) query results
Local Search Debugger
2015. 07. 22. 24Local search-based pattern matching features in EMF-IncQuery
Step-by-step execution of search plans• Visualizes search plans• Visualizes (partial) query results
Local Search Debugger
• Based on local search• Visualizes query
structure• Step-by-step
execution
Query Explorer
• Relies on incremental query evaluation
• Reacts on model changes
• Results can be filtered
Performance Characteristics – 1.
2015. 07. 22. 26Local search-based pattern matching features in EMF-IncQuery
1
10
100
1000 10000 100000
SEAR
CH T
IME
(S)
PROGRAM SIZE (LOC)
LS INC LS (100) INC (100) LS INC LS (100) INC (100)
Incremental approach is beneficial in case of re-evaluation
Performance Characteristics – 2.
2015. 07. 22. 27Local search-based pattern matching features in EMF-IncQuery
1
10
100
1000
10000
100000
1000 10000 100000 1000000 10000000
MEM
ORY
USA
GE
(MB)
PROGRAM SIZE (LOC)
LS INC LS INC
Local search works uses less memory
Summary
Local search based pattern matcher• Alternative execution strategy• Reuses existing infrastructure
Search Plan Debugger• Step-by-step execution of search plans• Complements Query Explorer
Future plans• Enhanced search plan generation• Hybrid pattern matching
2015. 07. 22. 28Local search-based pattern matching features in EMF-IncQuery