Local search-based pattern matching features in EMF-IncQuery

28
Local Search-based Pattern Matching Features in EMF-IncQuery 2015. 07. 22. 1 Local 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

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. 21Local search-based pattern matching features in EMF-IncQuery

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

DEMO

2015. 07. 22. 25Local search-based pattern matching features in EMF-IncQuery

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