SlideShare a Scribd company logo
1 of 82
Download to read offline
Model Comparison for Delta-
Compression
1
Markus Scheidgen
scheidge@informatik.hu-berlin.de
@mscheidgen
BigMDE at STAF 2016, Vienna
Agenda
▶ Motivation for Delta-Compression
▶ Model Comparison: Approaches
▶ Experiments
▶ Conclusions
2
Motivation – Delta-Compression
▶ What it is: Only store the differences of similar models
▶ Where do we have a lot of similar models:
■ Model Versioning
■ Model-based Mining of Source Repositories with reverse
engineering
▶ Why: Storage space and (indirectly) execution time for
persistence operations (I/O, etc.)
3
Model Versioning – Approaches
4
(or versioning in general)
1. Altmanninger, K., Seidl, M., Wimmer, M.: A survey on model versioning approaches. International Journal of Web
Information Systems 5(3), 271–304 (2009)
Model Versioning – Approaches
4
(or versioning in general)
state-based
r0
r1
r2
r3
e.g. models stored
in regular version
control systems
(VCS)
1. Altmanninger, K., Seidl, M., Wimmer, M.: A survey on model versioning approaches. International Journal of Web
Information Systems 5(3), 271–304 (2009)
Model Versioning – Approaches
4
(or versioning in general)
+ +
+
-
change-based
(or operation-based)
+
e.g. EMF-store,
requires to record
or infer operations
from the editing
environment
state-based
r0
r1
r2
r3
e.g. models stored
in regular version
control systems
(VCS)
1. Altmanninger, K., Seidl, M., Wimmer, M.: A survey on model versioning approaches. International Journal of Web
Information Systems 5(3), 271–304 (2009)
Model Versioning – Approaches
4
(or versioning in general)
+ +
+
-
change-based
(or operation-based)
+
e.g. EMF-store,
requires to record
or infer operations
from the editing
environment
state-based
r0
r1
r2
r3
e.g. models stored
in regular version
control systems
(VCS)
or compare?
1. Altmanninger, K., Seidl, M., Wimmer, M.: A survey on model versioning approaches. International Journal of Web
Information Systems 5(3), 271–304 (2009)
Model Versioning – Approaches
4
(or versioning in general)
+ +
+
-
change-based
(or operation-based)
+
e.g. EMF-store,
requires to record
or infer operations
from the editing
environment
state-based
r0
r1
r2
r3
e.g. models stored
in regular version
control systems
(VCS)
+ +
+
-
hybrid
(persist changes, appear state-based)
+
e.g. GIT: you only see
whole files, internally uses
pack-files with delta-
compression
or compare?
1. Altmanninger, K., Seidl, M., Wimmer, M.: A survey on model versioning approaches. International Journal of Web
Information Systems 5(3), 271–304 (2009)
Model Versioning – Architecture
5
user environment interface state
representation
compression persistence
+ +
+
-
Model Versioning – Architecture
5
user environment interface state
representation
compression persistence
+ +
+
-- +
Model Versioning – Architecture
5
user environment interface state
representation
compression persistence
+ +
+
-- +
show existing diff
Model Versioning – Architecture
5
user environment interface state
representation
compression persistence
+ +
+
-- +
create diff
Model Comparison – Tradeoffs
6
Comparison Quality
Comparison Time
Model Comparison – Tradeoffs
6
Comparison Quality
Comparison Time Extraction Time
Storage Space
Model Comparison – Tradeoffs
6
Comparison Quality
Comparison Time
Difference Model Usability
Extraction Time
Storage Space
Model Comparison – Tradeoffs
6
Comparison Quality
Comparison Time
Difference Model Usability
Extraction Time
Storage Space
Delta-Compression – Tradeoffs
7
Comparison Quality
priority for showing diffs to users [model comparison]
priority for using diffs in persistence [compression]
Model Comparison
▶ We know how to compare lists (e.g. lines of code) for a long
time
■ Meyer’s algorithm: O(N*D)
▶ Models aren’t list, but graphs (with spanning trees)
■ but, each feature in each model element is a “list” of values
■ we can compare two model elements, feature by feature
■ But, what pairs of elements should we compare?
■ We need a prior step to establish pairs of (supposingly)
matching elements
8
Meyers, E.W.: An O (ND) difference algorithm and its variations. Algorithmica 1(1- 4), 251–266 (1986)
Model Matching
9
model 1
model 2
matches differences
▶ Matching determines the quality of the comparison
▶ Different strategies to matching model elements
■ signatures: just meta-class, [name, parameter types], parent
■ similarity: lots of different criteria and heuristics
cheap
expensive
Comparison Representation
10
model 1 model 2matches
differences
Comparison Representation
11
model 1 model 2matches
differences
Comparison Representation for Compression
12
model 1
Comparison Representation for Compression
12
model 1 Δ(1,2)+
Comparison Representation for Compression
12
model 1 Δ(1,2)+ model 2=
Comparison Representation for Compression
12
model 1 Δ(1,2)+
Δ(2,3)+
model 2=
Comparison Representation for Compression
12
model 1 Δ(1,2)+
Δ(2,3)+
model 2=
model 3=
Comparison Representation for Compression
12
model 1 Δ(1,2)+
Δ(2,3)+
model 2=
model 3=
Δ(n,n+1) model n+1+ =
...
Comparison Representation for Compression
13
model 1 Δ(1,2)+
Δ(2,3)+
model 2=
model 3=
Δ(n,n+1) model n+1+ =
...
EMF-Compress
▶ We build a comparison framework for compression
■ signature-based matching
■ difference meta-model that allows patching
▶ http://github.com/markus1978/emf-compress
14
Experiments
▶ Reverse engineered GIT repositories with Java-code using
MoDisco
▶ Eclipse Foundation sources, i.e. Eclipse platform and plug-ins
▶ organized in different projects: JDT, CDT, EMF, ...
▶ available via GIT-Hub
▶ GIT repositories can be gathered automated via GIT-Hub’s
REST API
▶ We used the 200 largest Eclipse repositories that actually
contained Java code: 6.6 GB Git, 400 MLOC, 250 GB
(binary) models with 4 billion objects.
15
Experiment 1: EMF-Compare vs EMF-Compress
▶ only first 1000 revisions of the 100 largest (GIT-size) repos;
only CU’s with less than 20k elements: ~300k individual
comparisons
16
signature lines
Differences model size
signature similarity similarity similaritylines
020406080100
Number of matches
(%)
020406080100
(%)
signature parse
1550500
Avg. execution times (log)
avg.timepercompilationunit(ms)
17
0
10
20
30
0 5000 10000 15000 20000 0 5000 10000 15000 20000
executiontime(s)
0
10
20
30
1
20
400
8000
1.0
1.5
2.0
iontime(s)
1.0
1.5
2.0
Similarity-based Signature-based
18
0
10
20
0 5000 10000 15000 20000 0 5000 10000 15000 20000
0 5000 10000 15000 20000 0 5000 10000 15000 20000
executiontime
0
10
20
1
20
400
8000
0.0
0.5
1.0
1.5
2.0
size (#objects)
executiontime(s)
0.0
0.5
1.0
1.5
2.0
size (#objects)
Experiment 2: Partial Comparison
▶ Problem: not all elements have a meaningful signature
▶ Two signature matching strategies:
■ Named-only: only match named elements, use equality for the
contents of named elements
■ Meta-class: match named elements based on their signature,
match the contents of named elements based on their parent
and meta-class only
19
Experiment 2: Partial Comparison
20
cdt
cdo
...ompare
emf
...e.core
Delta
UC
Full
Size - Named-only Matcher
GB
0
2
4
6
8
10
12
14
cdt
cdo
...ompare
emf
...e.core
Delta
UC
Full
Size - Meta Class Matcher
GB
0
2
4
6
8
10
12
14
cdt
cdo
...ompare
emf
...e.core
Delta
UC
Full
Lines
MLines
0
20
40
60
80
100
Delta
UC
Full
All vs Matched - Named-only Matcher
MObjects
200
300
400
500 Delta
UC
Full
All vs Matched - Meta Class Matcher
MObjects
200
300
400
500 Delta
UC
Full
All vs Matched Lines
MLines
40
60
80
100
Discussion
▶ Only reverse engineered Java models, different result for
other meta-models possible
▶ Similarity-based matching != similarity-based matching:
more evaluation with different qualities of similarity-based
matching necessary
▶ Signatures are not necessarily meta-model independent
▶ We need a better understanding about the relationship of
comparison runtime and comparison quality
21
Conclusions
▶ EMF Compare is tailored for difference model usability, not
for model-compression
■ insufficient execution times
■ wrong representation of differences
▶ EMF-Compress is an alternative: http://github.com/
markus1978/emf-compress
▶ Better analysis of matching strategies necessary:
■ evaluation of more matching strategies
■ evaluation with models in different languages
22
Example Use-Case: Model-based MSR
23
MS M{C}
Example Use-Case: Model-based MSR
23
MS M{C}
MM{Cn}
RHEAD
…
R
0
Example Use-Case: Model-based MSR
23
MS M{C}
MM{Cn}
RHEAD
…
R
0
Example Use-Case: Model-based MSR
23
MS M{C}
MM{Cn}
RHEAD
…
R
0
{Cn-1} MM
Example Use-Case: Model-based MSR
23
MS M{C}
MM{Cn}
RHEAD
…
R
0
{Cn-1} MM
{C0}
…
MM
…
…
…
Example Use-Case: Model-based MSR
23
MS M{C}
MM{Cn}
RHEAD
…
R
0
{Cn-1} MM
{C0}
…
MM
…
…
…
Model-based Mining of Software Repositories
▶ MSR tools are already “model-based”, but in a proprietary
manner
▶ Idea: existing reverse engineering framework and
corresponding standard meta-models and modeling
frameworks instead of proprietary solutions
▶ Goals
■ deal with heterogeneity (different version control systems,
different languages)
■ reuse of existing meta-models, transformations, and languages
■ interoperability with existing analysis tools
■ retaining meaningful scalability
24
Model-based Mining of Software Repositories
▶ Scope
■ depends on concreter MSR-application and its goals
■ number of software projects: single repositories, large
repositories, ultra-large repositories
■ Sources as text and text based metrics, e.g. LOC
■ Declarations only: packages, classes, methods, but no
statements, expressions, etc.
■ Full AST with or without cross-references
25
Model-based Mining of Software Repositories
▶ Scope
■ depends on concreter MSR-application and its goals
■ number of software projects: single repositories, large
repositories, ultra-large repositories
■ Sources as text and text based metrics, e.g. LOC
■ Declarations only: packages, classes, methods, but no
statements, expressions, etc.
■ Full AST with or without cross-references
26
Reverse Engineering with MoDisco
▶ Model Discovery
▶ reverse engineering for Java, based on EMF
▶ discovery, i.e. finding sources (so called compilation units)
within projects, source folders, and packages
▶ uses Eclipse’s workspace and Java Development Toolkit (JDT)
▶ provides
■ discovers for many languages: Java, xText, JSP, XML
■ creates instances of a Java EMF meta-model that corresponds to
the handwritten JDT AST-model
■ provides transformation to language independent artifacts, e.g.
KDM
27
From Source Code- to Model-Repository
28
snapshot
A1 B1
snapshot
A2 B1
snapshot
A2 B3
snapshotsnapshotsnapshot
M3
M2
M1
f
B.f
fB.f
Load(r)
Analysis(r)
Merge(r)
Save(r)
Checkout(r)
X
d2CUs(r)
Parse(d)
X
R
Checkout +
X
CUs
Parse + Analysis
!
X
R
Checkout +
X
CUs
(Parse + Merge) + Analysis
!
X
R
X
CUs
(Load + Merge) + Analysis
!
X
R
X
CUs
(Load + Analysis0
)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
X
d2CUs(r)
Parse(d)
Model-based MSR Strategies
29
versioncontrolsystem
A1-A2
A1 B1
B1-B3
Model-based MSR Strategies
29
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
Model-based MSR Strategies
29
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
A2 B3
Model-based MSR Strategies
29
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
A2 B3
Model-based MSR Strategies
29
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
A2 B3
Model-based MSR Strategies
29
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
snapshot
snapshot
A2 B3
Model-based MSR Strategies
29
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
snapshot
snapshot
A2 B3
Model-based MSR Strategies
29
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
M1
Analysis(r)
snapshot
snapshot
A2 B3
Model-based MSR Strategies
29
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
M1
Analysis(r)
M2
snapshot
snapshot
A2 B3
Model-based MSR Strategies
29
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
M1
Analysis(r)
M3
M2
snapshot
snapshot
A2 B3
Model-based MSR Strategies
30
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
M1
Analysis(r)
M3
M2
snapshot
snapshot
A2 B3
Model-based MSR Strategies
30
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
M1
Analysis(r)
M3
M2
f
B.f
fB.f
Parse(d)
X
d2 CUs(r)
snapshot
snapshot
A2 B3
Model-based MSR Strategies
30
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
M1
Analysis(r)
M3
M2
Merge(r)
f
B.f
fB.f
Parse(d)
X
d2 CUs(r)
snapshot
snapshot
A2 B3
Model-based MSR Strategies
31
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
M1
Analysis(r)
M3
M2
Merge(r)
f
B.f
fB.f
Parse(d)
X
d2 CUs(r)
snapshot
snapshot
A2 B3
Model-based MSR Strategies
31
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
M1
Analysis(r)
M3
M2
Merge(r)
f
B.f
fB.f
Parse(d)
X
d2 CUs(r)
Load(r)Save(r)
snapshot
snapshot
A2 B3
Model-based MSR Strategies
32
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
M1
Analysis(r)
M3
M2
Merge(r)
f
B.f
fB.f
Parse(d)
X
d2 CUs(r)
Load(r)Save(r)
snapshot
snapshot
A2 B3
Model-based MSR Strategies
33
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
X
d2CUs(r)
Parse(d)
snapshot
M1
Analysis(r)
M3
M2
Merge(r)
f
B.f
fB.f
Parse(d)
X
d2 CUs(r)
Load(r)Save(r)
Importing and Traversing Source Code Repositories
34
R1
R2
R3
A1 B1
f
A2
A1 B1
f
f
B3
A2
A1 B1
f
f
A2 B3
f
A2 B1
f
A1 B1
f
A2 B1
f
A1 B1
f
A1 B1
f
B3
A2
A1 B1
f
f
A2
A1 B1
f
f
A1 B1
f
A2 B3
A2 B1
f
f
A1 B1
f
A2 B1
f
A1 B1
f
A2 B.f?
A1 B1!fB.f?
A2 B3
f
A2 B1
f
A1 B1
f ✓
✗
✗
✓
✗
✓
import traverse
Importing and Traversing Source Code Repositories
35
R1
R2
R3
import
(persistent/storage)
traverse
(transient/runtime)
Importing and Traversing Source Code Repositories
36
R1
R2
R3
A1 B1
f
import
(persistent)
traverse
(transient)
A2
A1 B1
f
f
Importing and Traversing Source Code Repositories
37
R1
R2
R3
import
(persistent)
traverse
(transient)
Importing and Traversing Source Code Repositories
38
R1
R2
R3 B3
A2
A1 B1
f
f
import
(persistent)
traverse
(transient)
Importing and Traversing Source Code Repositories
39
R1
R2
R3
A1 B1
f
B3
A2
A1 B1
f
f
✓
import
(persistent)
traverse
(transient)
✓
Importing and Traversing Source Code Repositories
40
R1
R2
R3
A2 B1
f
A1 B1
f
B3
A2
A1 B1
f
f
✓
import
(persistent)
traverse
(transient)
✓
Importing and Traversing Source Code Repositories
41
R1
R2
R3 A2 B3
f
A2 B1
f
A1 B1
f
B3
A2
A1 B1
f
f
✓
✗
import
(persistent)
traverse
(transient)
A1 B1!fB.f?
Importing and Traversing Source Code Repositories
42
R1
R2
R3
import
(persistent)
traverse
(transient)
A2 B.f?
A1 B1!fB.f?
Importing and Traversing Source Code Repositories
43
R1
R2
R3
import
(persistent)
traverse
(transient)
Importing and Traversing Source Code Repositories
44
R1
R2
R3 B3!f
A2 B.f?
A1 B1!fB.f?
import
(persistent)
traverse
(transient)
Importing and Traversing Source Code Repositories
45
R1
R2
R3 B3!f
A2 B.f?
A1 B1!fB.f? A1 B1
f ✓
import
(persistent)
traverse
(transient)
Importing and Traversing Source Code Repositories
46
R1
R2
R3 B3!f
A2 B.f?
A1 B1!fB.f?
A2 B1
f
A1 B1
f
✓
✓
import
(persistent)
traverse
(transient)
Importing and Traversing Source Code Repositories
47
R1
R2
R3 B3!f
A2 B.f?
A1 B1!fB.f?
A2 B1
f
A1 B1
f
A2 B3
f ✓
✓
✓
import
(persistent)
traverse
(transient)
Importing and Traversing Source Code Repositories
48
R1
R2
R3
✓
B3!f
A2 B.f?
A1 B1!fB.f? A1 B1
f
import
(persistent)
traverse
(transient)
✓
Importing and Traversing Source Code Repositories
49
R1
R2
R3
✓
B3!f
A2 B.f?
A1 B1!fB.f?
A2
A1 B1
f
f
✗
import
(persistent)
traverse
(transient)
✓
✓
Importing and Traversing Source Code Repositories
50
R1
R2
R3
✓
B3!f
A2 B.f?
A1 B1!fB.f?
B3f
A2
A1 B1
f
f
✗
✗
import
(persistent)
traverse
(transient)

More Related Content

What's hot

OODP Unit 1 OOPs classes and objects
OODP Unit 1 OOPs classes and objectsOODP Unit 1 OOPs classes and objects
OODP Unit 1 OOPs classes and objectsShanmuganathan C
 
20100309 03 - Vulnerability analysis (McCabe)
20100309 03 - Vulnerability analysis (McCabe)20100309 03 - Vulnerability analysis (McCabe)
20100309 03 - Vulnerability analysis (McCabe)LeClubQualiteLogicielle
 
MGU SYLLABUS MANUAL-Advance diploma in computer applications
MGU SYLLABUS MANUAL-Advance diploma in computer applicationsMGU SYLLABUS MANUAL-Advance diploma in computer applications
MGU SYLLABUS MANUAL-Advance diploma in computer applicationsmahatmagandhiuniversity
 
Generic Model-based Approaches for Software Reverse Engineering and Comprehen...
Generic Model-based Approaches for Software Reverse Engineering and Comprehen...Generic Model-based Approaches for Software Reverse Engineering and Comprehen...
Generic Model-based Approaches for Software Reverse Engineering and Comprehen...Hugo Bruneliere
 
Modeling and Evaluation of Performance and Reliability of Component-based So...
Modeling and Evaluation of Performance and Reliability  of Component-based So...Modeling and Evaluation of Performance and Reliability  of Component-based So...
Modeling and Evaluation of Performance and Reliability of Component-based So...Editor IJCATR
 
Opal Hermes - towards representative benchmarks
Opal  Hermes - towards representative benchmarksOpal  Hermes - towards representative benchmarks
Opal Hermes - towards representative benchmarksMichaelEichberg1
 
Model-Based Co-Evolution of Production Systems and their Libraries with Auto...
Model-Based Co-Evolution of Production Systems and their Libraries with Auto...Model-Based Co-Evolution of Production Systems and their Libraries with Auto...
Model-Based Co-Evolution of Production Systems and their Libraries with Auto...Luca Berardinelli
 
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...Raffi Khatchadourian
 
Applying the Scientific Method to Simulation Experiments
Applying the Scientific Method to Simulation ExperimentsApplying the Scientific Method to Simulation Experiments
Applying the Scientific Method to Simulation ExperimentsFrank Bergmann
 
Analyzing Changes in Software Systems From ChangeDistiller to FMDiff
Analyzing Changes in Software Systems From ChangeDistiller to FMDiffAnalyzing Changes in Software Systems From ChangeDistiller to FMDiff
Analyzing Changes in Software Systems From ChangeDistiller to FMDiffMartin Pinzger
 
fUML-Driven Performance Analysis through the MOSES Model Library
fUML-Driven Performance Analysisthrough the MOSES Model LibraryfUML-Driven Performance Analysisthrough the MOSES Model Library
fUML-Driven Performance Analysis through the MOSES Model LibraryLuca Berardinelli
 
BASIC CONCEPTS OF C++ CLASS 12
BASIC CONCEPTS OF C++ CLASS 12BASIC CONCEPTS OF C++ CLASS 12
BASIC CONCEPTS OF C++ CLASS 12Dev Chauhan
 
A Search-based Testing Approach for XML Injection Vulnerabilities in Web Appl...
A Search-based Testing Approach for XML Injection Vulnerabilities in Web Appl...A Search-based Testing Approach for XML Injection Vulnerabilities in Web Appl...
A Search-based Testing Approach for XML Injection Vulnerabilities in Web Appl...Lionel Briand
 

What's hot (20)

OODP Unit 1 OOPs classes and objects
OODP Unit 1 OOPs classes and objectsOODP Unit 1 OOPs classes and objects
OODP Unit 1 OOPs classes and objects
 
20100309 03 - Vulnerability analysis (McCabe)
20100309 03 - Vulnerability analysis (McCabe)20100309 03 - Vulnerability analysis (McCabe)
20100309 03 - Vulnerability analysis (McCabe)
 
MGU SYLLABUS MANUAL-Advance diploma in computer applications
MGU SYLLABUS MANUAL-Advance diploma in computer applicationsMGU SYLLABUS MANUAL-Advance diploma in computer applications
MGU SYLLABUS MANUAL-Advance diploma in computer applications
 
Generic Model-based Approaches for Software Reverse Engineering and Comprehen...
Generic Model-based Approaches for Software Reverse Engineering and Comprehen...Generic Model-based Approaches for Software Reverse Engineering and Comprehen...
Generic Model-based Approaches for Software Reverse Engineering and Comprehen...
 
Modeling and Evaluation of Performance and Reliability of Component-based So...
Modeling and Evaluation of Performance and Reliability  of Component-based So...Modeling and Evaluation of Performance and Reliability  of Component-based So...
Modeling and Evaluation of Performance and Reliability of Component-based So...
 
Icpc11c.ppt
Icpc11c.pptIcpc11c.ppt
Icpc11c.ppt
 
COMPSAC 2008 Presentation
COMPSAC 2008 PresentationCOMPSAC 2008 Presentation
COMPSAC 2008 Presentation
 
ExSchema
ExSchemaExSchema
ExSchema
 
Dynamic Symbolic Database Application Testing
Dynamic Symbolic Database Application TestingDynamic Symbolic Database Application Testing
Dynamic Symbolic Database Application Testing
 
Opal Hermes - towards representative benchmarks
Opal  Hermes - towards representative benchmarksOpal  Hermes - towards representative benchmarks
Opal Hermes - towards representative benchmarks
 
kite
kitekite
kite
 
Model-Based Co-Evolution of Production Systems and their Libraries with Auto...
Model-Based Co-Evolution of Production Systems and their Libraries with Auto...Model-Based Co-Evolution of Production Systems and their Libraries with Auto...
Model-Based Co-Evolution of Production Systems and their Libraries with Auto...
 
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
An Empirical Study of Refactorings and Technical Debt in Machine Learning Sys...
 
Applying the Scientific Method to Simulation Experiments
Applying the Scientific Method to Simulation ExperimentsApplying the Scientific Method to Simulation Experiments
Applying the Scientific Method to Simulation Experiments
 
Analyzing Changes in Software Systems From ChangeDistiller to FMDiff
Analyzing Changes in Software Systems From ChangeDistiller to FMDiffAnalyzing Changes in Software Systems From ChangeDistiller to FMDiff
Analyzing Changes in Software Systems From ChangeDistiller to FMDiff
 
fUML-Driven Performance Analysis through the MOSES Model Library
fUML-Driven Performance Analysisthrough the MOSES Model LibraryfUML-Driven Performance Analysisthrough the MOSES Model Library
fUML-Driven Performance Analysis through the MOSES Model Library
 
Icsme16.ppt
Icsme16.pptIcsme16.ppt
Icsme16.ppt
 
BASIC CONCEPTS OF C++ CLASS 12
BASIC CONCEPTS OF C++ CLASS 12BASIC CONCEPTS OF C++ CLASS 12
BASIC CONCEPTS OF C++ CLASS 12
 
Advance diploma in it
Advance diploma in itAdvance diploma in it
Advance diploma in it
 
A Search-based Testing Approach for XML Injection Vulnerabilities in Web Appl...
A Search-based Testing Approach for XML Injection Vulnerabilities in Web Appl...A Search-based Testing Approach for XML Injection Vulnerabilities in Web Appl...
A Search-based Testing Approach for XML Injection Vulnerabilities in Web Appl...
 

Viewers also liked

Mineograph Mining Automation Software
Mineograph Mining Automation SoftwareMineograph Mining Automation Software
Mineograph Mining Automation SoftwareMineograph Software
 
Mining Unstructured Software Repositories Using IR Models
Mining Unstructured Software Repositories Using IR ModelsMining Unstructured Software Repositories Using IR Models
Mining Unstructured Software Repositories Using IR ModelsSAIL_QU
 
빅데이터와 교육데이터마이닝 (고려대학교 대학원 강의) 6주차
빅데이터와 교육데이터마이닝 (고려대학교 대학원 강의) 6주차빅데이터와 교육데이터마이닝 (고려대학교 대학원 강의) 6주차
빅데이터와 교육데이터마이닝 (고려대학교 대학원 강의) 6주차JM code group
 
Data mining software comparison
Data mining software comparison Data mining software comparison
Data mining software comparison Esteban Alcaide
 
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...Norihiro Yoshida
 
임태현, software catastrophe
임태현, software catastrophe임태현, software catastrophe
임태현, software catastrophe태현 임
 
Mining Software Archives to Support Software Development
Mining Software Archives to Support Software DevelopmentMining Software Archives to Support Software Development
Mining Software Archives to Support Software DevelopmentThomas Zimmermann
 
NONLINEAR MODEL PREDICTIVE CONTROL FOR OPERATION OF A POST COMBUSTION ABSORPT...
NONLINEAR MODEL PREDICTIVE CONTROL FOR OPERATION OF A POST COMBUSTION ABSORPT...NONLINEAR MODEL PREDICTIVE CONTROL FOR OPERATION OF A POST COMBUSTION ABSORPT...
NONLINEAR MODEL PREDICTIVE CONTROL FOR OPERATION OF A POST COMBUSTION ABSORPT...Modelon
 
MED 2011 UPATcopter Presentation
MED 2011 UPATcopter PresentationMED 2011 UPATcopter Presentation
MED 2011 UPATcopter PresentationKostas Alexis
 
An Empirical Study of Goto in C Code from GitHub Repositories
An Empirical Study of Goto in C Code from GitHub RepositoriesAn Empirical Study of Goto in C Code from GitHub Repositories
An Empirical Study of Goto in C Code from GitHub RepositoriesSAIL_QU
 
MSR mining challenge 2015 - Quick Trigger
MSR mining challenge 2015 - Quick TriggerMSR mining challenge 2015 - Quick Trigger
MSR mining challenge 2015 - Quick TriggerXin Yang
 
[우리가 데이터를 쓰는 법] 온라인 서비스 개선을 위한 데이터 활용법 - 마이크로소프트 김진영 데이터과학자
[우리가 데이터를 쓰는 법] 온라인 서비스 개선을 위한 데이터 활용법 - 마이크로소프트 김진영 데이터과학자[우리가 데이터를 쓰는 법] 온라인 서비스 개선을 위한 데이터 활용법 - 마이크로소프트 김진영 데이터과학자
[우리가 데이터를 쓰는 법] 온라인 서비스 개선을 위한 데이터 활용법 - 마이크로소프트 김진영 데이터과학자Dylan Ko
 
MSR 2016 data showcase - Mining Code Review Repositories
MSR 2016 data showcase - Mining Code Review RepositoriesMSR 2016 data showcase - Mining Code Review Repositories
MSR 2016 data showcase - Mining Code Review RepositoriesXin Yang
 
Software Analytics: Towards Software Mining that Matters
Software Analytics: Towards Software Mining that MattersSoftware Analytics: Towards Software Mining that Matters
Software Analytics: Towards Software Mining that MattersTao Xie
 
연관도 분석을 이용한 데이터마이닝
연관도 분석을 이용한 데이터마이닝연관도 분석을 이용한 데이터마이닝
연관도 분석을 이용한 데이터마이닝Keunhyun Oh
 
고품질 Sw와 개발문화
고품질 Sw와 개발문화고품질 Sw와 개발문화
고품질 Sw와 개발문화도형 임
 
Mining public datasets using opensource tools: Zeppelin, Spark and Juju
Mining public datasets using opensource tools: Zeppelin, Spark and JujuMining public datasets using opensource tools: Zeppelin, Spark and Juju
Mining public datasets using opensource tools: Zeppelin, Spark and Jujuseoul_engineer
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSung Kim
 
Dissertation Defense
Dissertation DefenseDissertation Defense
Dissertation DefenseSung Kim
 
A framework for nonlinear model predictive control
A framework for nonlinear model predictive controlA framework for nonlinear model predictive control
A framework for nonlinear model predictive controlModelon
 

Viewers also liked (20)

Mineograph Mining Automation Software
Mineograph Mining Automation SoftwareMineograph Mining Automation Software
Mineograph Mining Automation Software
 
Mining Unstructured Software Repositories Using IR Models
Mining Unstructured Software Repositories Using IR ModelsMining Unstructured Software Repositories Using IR Models
Mining Unstructured Software Repositories Using IR Models
 
빅데이터와 교육데이터마이닝 (고려대학교 대학원 강의) 6주차
빅데이터와 교육데이터마이닝 (고려대학교 대학원 강의) 6주차빅데이터와 교육데이터마이닝 (고려대학교 대학원 강의) 6주차
빅데이터와 교육데이터마이닝 (고려대학교 대학원 강의) 6주차
 
Data mining software comparison
Data mining software comparison Data mining software comparison
Data mining software comparison
 
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
 
임태현, software catastrophe
임태현, software catastrophe임태현, software catastrophe
임태현, software catastrophe
 
Mining Software Archives to Support Software Development
Mining Software Archives to Support Software DevelopmentMining Software Archives to Support Software Development
Mining Software Archives to Support Software Development
 
NONLINEAR MODEL PREDICTIVE CONTROL FOR OPERATION OF A POST COMBUSTION ABSORPT...
NONLINEAR MODEL PREDICTIVE CONTROL FOR OPERATION OF A POST COMBUSTION ABSORPT...NONLINEAR MODEL PREDICTIVE CONTROL FOR OPERATION OF A POST COMBUSTION ABSORPT...
NONLINEAR MODEL PREDICTIVE CONTROL FOR OPERATION OF A POST COMBUSTION ABSORPT...
 
MED 2011 UPATcopter Presentation
MED 2011 UPATcopter PresentationMED 2011 UPATcopter Presentation
MED 2011 UPATcopter Presentation
 
An Empirical Study of Goto in C Code from GitHub Repositories
An Empirical Study of Goto in C Code from GitHub RepositoriesAn Empirical Study of Goto in C Code from GitHub Repositories
An Empirical Study of Goto in C Code from GitHub Repositories
 
MSR mining challenge 2015 - Quick Trigger
MSR mining challenge 2015 - Quick TriggerMSR mining challenge 2015 - Quick Trigger
MSR mining challenge 2015 - Quick Trigger
 
[우리가 데이터를 쓰는 법] 온라인 서비스 개선을 위한 데이터 활용법 - 마이크로소프트 김진영 데이터과학자
[우리가 데이터를 쓰는 법] 온라인 서비스 개선을 위한 데이터 활용법 - 마이크로소프트 김진영 데이터과학자[우리가 데이터를 쓰는 법] 온라인 서비스 개선을 위한 데이터 활용법 - 마이크로소프트 김진영 데이터과학자
[우리가 데이터를 쓰는 법] 온라인 서비스 개선을 위한 데이터 활용법 - 마이크로소프트 김진영 데이터과학자
 
MSR 2016 data showcase - Mining Code Review Repositories
MSR 2016 data showcase - Mining Code Review RepositoriesMSR 2016 data showcase - Mining Code Review Repositories
MSR 2016 data showcase - Mining Code Review Repositories
 
Software Analytics: Towards Software Mining that Matters
Software Analytics: Towards Software Mining that MattersSoftware Analytics: Towards Software Mining that Matters
Software Analytics: Towards Software Mining that Matters
 
연관도 분석을 이용한 데이터마이닝
연관도 분석을 이용한 데이터마이닝연관도 분석을 이용한 데이터마이닝
연관도 분석을 이용한 데이터마이닝
 
고품질 Sw와 개발문화
고품질 Sw와 개발문화고품질 Sw와 개발문화
고품질 Sw와 개발문화
 
Mining public datasets using opensource tools: Zeppelin, Spark and Juju
Mining public datasets using opensource tools: Zeppelin, Spark and JujuMining public datasets using opensource tools: Zeppelin, Spark and Juju
Mining public datasets using opensource tools: Zeppelin, Spark and Juju
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled Datasets
 
Dissertation Defense
Dissertation DefenseDissertation Defense
Dissertation Defense
 
A framework for nonlinear model predictive control
A framework for nonlinear model predictive controlA framework for nonlinear model predictive control
A framework for nonlinear model predictive control
 

Similar to Model Comparison for Delta-Compression

Tensors Are All You Need: Faster Inference with Hummingbird
Tensors Are All You Need: Faster Inference with HummingbirdTensors Are All You Need: Faster Inference with Hummingbird
Tensors Are All You Need: Faster Inference with HummingbirdDatabricks
 
Pretzel: optimized Machine Learning framework for low-latency and high throug...
Pretzel: optimized Machine Learning framework for low-latency and high throug...Pretzel: optimized Machine Learning framework for low-latency and high throug...
Pretzel: optimized Machine Learning framework for low-latency and high throug...NECST Lab @ Politecnico di Milano
 
deep_Visualization in Data mining.ppt
deep_Visualization in Data mining.pptdeep_Visualization in Data mining.ppt
deep_Visualization in Data mining.pptPerumalPitchandi
 
Performance modeling and simulation for accumulo applications
Performance modeling and simulation for accumulo applicationsPerformance modeling and simulation for accumulo applications
Performance modeling and simulation for accumulo applicationsAccumulo Summit
 
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...A High-Level Programming Approach for using FPGAs in HPC using Functional Des...
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...waqarnabi
 
Clipper: A Low-Latency Online Prediction Serving System
Clipper: A Low-Latency Online Prediction Serving SystemClipper: A Low-Latency Online Prediction Serving System
Clipper: A Low-Latency Online Prediction Serving SystemDatabricks
 
Clipper: A Low-Latency Online Prediction Serving System: Spark Summit East ta...
Clipper: A Low-Latency Online Prediction Serving System: Spark Summit East ta...Clipper: A Low-Latency Online Prediction Serving System: Spark Summit East ta...
Clipper: A Low-Latency Online Prediction Serving System: Spark Summit East ta...Spark Summit
 
MDE=Model Driven Everything (Spanish Eclipse Day 2009)
MDE=Model Driven Everything (Spanish Eclipse Day 2009)MDE=Model Driven Everything (Spanish Eclipse Day 2009)
MDE=Model Driven Everything (Spanish Eclipse Day 2009)Jordi Cabot
 
Efficient Machine Learning and Machine Learning for Efficiency in Information...
Efficient Machine Learning and Machine Learning for Efficiency in Information...Efficient Machine Learning and Machine Learning for Efficiency in Information...
Efficient Machine Learning and Machine Learning for Efficiency in Information...Bhaskar Mitra
 
Lesson 26. Optimization of 64-bit programs
Lesson 26. Optimization of 64-bit programsLesson 26. Optimization of 64-bit programs
Lesson 26. Optimization of 64-bit programsPVS-Studio
 
Start with version control and experiments management in machine learning
Start with version control and experiments management in machine learningStart with version control and experiments management in machine learning
Start with version control and experiments management in machine learningMikhail Rozhkov
 
Integrated Model Discovery and Self-Adaptation of Robots
Integrated Model Discovery and Self-Adaptation of RobotsIntegrated Model Discovery and Self-Adaptation of Robots
Integrated Model Discovery and Self-Adaptation of RobotsPooyan Jamshidi
 
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...Robert Grossman
 
Things you can find in the plan cache
Things you can find in the plan cacheThings you can find in the plan cache
Things you can find in the plan cachesqlserver.co.il
 
IRJET- Machine Learning Techniques for Code Optimization
IRJET-  	  Machine Learning Techniques for Code OptimizationIRJET-  	  Machine Learning Techniques for Code Optimization
IRJET- Machine Learning Techniques for Code OptimizationIRJET Journal
 

Similar to Model Comparison for Delta-Compression (20)

Tensors Are All You Need: Faster Inference with Hummingbird
Tensors Are All You Need: Faster Inference with HummingbirdTensors Are All You Need: Faster Inference with Hummingbird
Tensors Are All You Need: Faster Inference with Hummingbird
 
Pretzel: optimized Machine Learning framework for low-latency and high throug...
Pretzel: optimized Machine Learning framework for low-latency and high throug...Pretzel: optimized Machine Learning framework for low-latency and high throug...
Pretzel: optimized Machine Learning framework for low-latency and high throug...
 
C programming session7
C programming  session7C programming  session7
C programming session7
 
C programming session7
C programming  session7C programming  session7
C programming session7
 
deep_Visualization in Data mining.ppt
deep_Visualization in Data mining.pptdeep_Visualization in Data mining.ppt
deep_Visualization in Data mining.ppt
 
Performance modeling and simulation for accumulo applications
Performance modeling and simulation for accumulo applicationsPerformance modeling and simulation for accumulo applications
Performance modeling and simulation for accumulo applications
 
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...A High-Level Programming Approach for using FPGAs in HPC using Functional Des...
A High-Level Programming Approach for using FPGAs in HPC using Functional Des...
 
Clipper: A Low-Latency Online Prediction Serving System
Clipper: A Low-Latency Online Prediction Serving SystemClipper: A Low-Latency Online Prediction Serving System
Clipper: A Low-Latency Online Prediction Serving System
 
Clipper: A Low-Latency Online Prediction Serving System: Spark Summit East ta...
Clipper: A Low-Latency Online Prediction Serving System: Spark Summit East ta...Clipper: A Low-Latency Online Prediction Serving System: Spark Summit East ta...
Clipper: A Low-Latency Online Prediction Serving System: Spark Summit East ta...
 
MDE=Model Driven Everything (Spanish Eclipse Day 2009)
MDE=Model Driven Everything (Spanish Eclipse Day 2009)MDE=Model Driven Everything (Spanish Eclipse Day 2009)
MDE=Model Driven Everything (Spanish Eclipse Day 2009)
 
Thesis Giani UIC Slides EN
Thesis Giani UIC Slides ENThesis Giani UIC Slides EN
Thesis Giani UIC Slides EN
 
Dst
DstDst
Dst
 
High-Performance Computing and OpenSolaris
High-Performance Computing and OpenSolarisHigh-Performance Computing and OpenSolaris
High-Performance Computing and OpenSolaris
 
Efficient Machine Learning and Machine Learning for Efficiency in Information...
Efficient Machine Learning and Machine Learning for Efficiency in Information...Efficient Machine Learning and Machine Learning for Efficiency in Information...
Efficient Machine Learning and Machine Learning for Efficiency in Information...
 
Lesson 26. Optimization of 64-bit programs
Lesson 26. Optimization of 64-bit programsLesson 26. Optimization of 64-bit programs
Lesson 26. Optimization of 64-bit programs
 
Start with version control and experiments management in machine learning
Start with version control and experiments management in machine learningStart with version control and experiments management in machine learning
Start with version control and experiments management in machine learning
 
Integrated Model Discovery and Self-Adaptation of Robots
Integrated Model Discovery and Self-Adaptation of RobotsIntegrated Model Discovery and Self-Adaptation of Robots
Integrated Model Discovery and Self-Adaptation of Robots
 
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...
AnalyticOps: Lessons Learned Moving Machine-Learning Algorithms to Production...
 
Things you can find in the plan cache
Things you can find in the plan cacheThings you can find in the plan cache
Things you can find in the plan cache
 
IRJET- Machine Learning Techniques for Code Optimization
IRJET-  	  Machine Learning Techniques for Code OptimizationIRJET-  	  Machine Learning Techniques for Code Optimization
IRJET- Machine Learning Techniques for Code Optimization
 

Recently uploaded

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Model Comparison for Delta-Compression

  • 1. Model Comparison for Delta- Compression 1 Markus Scheidgen scheidge@informatik.hu-berlin.de @mscheidgen BigMDE at STAF 2016, Vienna
  • 2. Agenda ▶ Motivation for Delta-Compression ▶ Model Comparison: Approaches ▶ Experiments ▶ Conclusions 2
  • 3. Motivation – Delta-Compression ▶ What it is: Only store the differences of similar models ▶ Where do we have a lot of similar models: ■ Model Versioning ■ Model-based Mining of Source Repositories with reverse engineering ▶ Why: Storage space and (indirectly) execution time for persistence operations (I/O, etc.) 3
  • 4. Model Versioning – Approaches 4 (or versioning in general) 1. Altmanninger, K., Seidl, M., Wimmer, M.: A survey on model versioning approaches. International Journal of Web Information Systems 5(3), 271–304 (2009)
  • 5. Model Versioning – Approaches 4 (or versioning in general) state-based r0 r1 r2 r3 e.g. models stored in regular version control systems (VCS) 1. Altmanninger, K., Seidl, M., Wimmer, M.: A survey on model versioning approaches. International Journal of Web Information Systems 5(3), 271–304 (2009)
  • 6. Model Versioning – Approaches 4 (or versioning in general) + + + - change-based (or operation-based) + e.g. EMF-store, requires to record or infer operations from the editing environment state-based r0 r1 r2 r3 e.g. models stored in regular version control systems (VCS) 1. Altmanninger, K., Seidl, M., Wimmer, M.: A survey on model versioning approaches. International Journal of Web Information Systems 5(3), 271–304 (2009)
  • 7. Model Versioning – Approaches 4 (or versioning in general) + + + - change-based (or operation-based) + e.g. EMF-store, requires to record or infer operations from the editing environment state-based r0 r1 r2 r3 e.g. models stored in regular version control systems (VCS) or compare? 1. Altmanninger, K., Seidl, M., Wimmer, M.: A survey on model versioning approaches. International Journal of Web Information Systems 5(3), 271–304 (2009)
  • 8. Model Versioning – Approaches 4 (or versioning in general) + + + - change-based (or operation-based) + e.g. EMF-store, requires to record or infer operations from the editing environment state-based r0 r1 r2 r3 e.g. models stored in regular version control systems (VCS) + + + - hybrid (persist changes, appear state-based) + e.g. GIT: you only see whole files, internally uses pack-files with delta- compression or compare? 1. Altmanninger, K., Seidl, M., Wimmer, M.: A survey on model versioning approaches. International Journal of Web Information Systems 5(3), 271–304 (2009)
  • 9. Model Versioning – Architecture 5 user environment interface state representation compression persistence + + + -
  • 10. Model Versioning – Architecture 5 user environment interface state representation compression persistence + + + -- +
  • 11. Model Versioning – Architecture 5 user environment interface state representation compression persistence + + + -- + show existing diff
  • 12. Model Versioning – Architecture 5 user environment interface state representation compression persistence + + + -- + create diff
  • 14. Comparison Time Model Comparison – Tradeoffs 6 Comparison Quality
  • 15. Comparison Time Extraction Time Storage Space Model Comparison – Tradeoffs 6 Comparison Quality
  • 16. Comparison Time Difference Model Usability Extraction Time Storage Space Model Comparison – Tradeoffs 6 Comparison Quality
  • 17. Comparison Time Difference Model Usability Extraction Time Storage Space Delta-Compression – Tradeoffs 7 Comparison Quality priority for showing diffs to users [model comparison] priority for using diffs in persistence [compression]
  • 18. Model Comparison ▶ We know how to compare lists (e.g. lines of code) for a long time ■ Meyer’s algorithm: O(N*D) ▶ Models aren’t list, but graphs (with spanning trees) ■ but, each feature in each model element is a “list” of values ■ we can compare two model elements, feature by feature ■ But, what pairs of elements should we compare? ■ We need a prior step to establish pairs of (supposingly) matching elements 8 Meyers, E.W.: An O (ND) difference algorithm and its variations. Algorithmica 1(1- 4), 251–266 (1986)
  • 19. Model Matching 9 model 1 model 2 matches differences ▶ Matching determines the quality of the comparison ▶ Different strategies to matching model elements ■ signatures: just meta-class, [name, parameter types], parent ■ similarity: lots of different criteria and heuristics cheap expensive
  • 20. Comparison Representation 10 model 1 model 2matches differences
  • 21. Comparison Representation 11 model 1 model 2matches differences
  • 22. Comparison Representation for Compression 12 model 1
  • 23. Comparison Representation for Compression 12 model 1 Δ(1,2)+
  • 24. Comparison Representation for Compression 12 model 1 Δ(1,2)+ model 2=
  • 25. Comparison Representation for Compression 12 model 1 Δ(1,2)+ Δ(2,3)+ model 2=
  • 26. Comparison Representation for Compression 12 model 1 Δ(1,2)+ Δ(2,3)+ model 2= model 3=
  • 27. Comparison Representation for Compression 12 model 1 Δ(1,2)+ Δ(2,3)+ model 2= model 3= Δ(n,n+1) model n+1+ = ...
  • 28. Comparison Representation for Compression 13 model 1 Δ(1,2)+ Δ(2,3)+ model 2= model 3= Δ(n,n+1) model n+1+ = ...
  • 29. EMF-Compress ▶ We build a comparison framework for compression ■ signature-based matching ■ difference meta-model that allows patching ▶ http://github.com/markus1978/emf-compress 14
  • 30. Experiments ▶ Reverse engineered GIT repositories with Java-code using MoDisco ▶ Eclipse Foundation sources, i.e. Eclipse platform and plug-ins ▶ organized in different projects: JDT, CDT, EMF, ... ▶ available via GIT-Hub ▶ GIT repositories can be gathered automated via GIT-Hub’s REST API ▶ We used the 200 largest Eclipse repositories that actually contained Java code: 6.6 GB Git, 400 MLOC, 250 GB (binary) models with 4 billion objects. 15
  • 31. Experiment 1: EMF-Compare vs EMF-Compress ▶ only first 1000 revisions of the 100 largest (GIT-size) repos; only CU’s with less than 20k elements: ~300k individual comparisons 16 signature lines Differences model size signature similarity similarity similaritylines 020406080100 Number of matches (%) 020406080100 (%) signature parse 1550500 Avg. execution times (log) avg.timepercompilationunit(ms)
  • 32. 17 0 10 20 30 0 5000 10000 15000 20000 0 5000 10000 15000 20000 executiontime(s) 0 10 20 30 1 20 400 8000 1.0 1.5 2.0 iontime(s) 1.0 1.5 2.0 Similarity-based Signature-based
  • 33. 18 0 10 20 0 5000 10000 15000 20000 0 5000 10000 15000 20000 0 5000 10000 15000 20000 0 5000 10000 15000 20000 executiontime 0 10 20 1 20 400 8000 0.0 0.5 1.0 1.5 2.0 size (#objects) executiontime(s) 0.0 0.5 1.0 1.5 2.0 size (#objects)
  • 34. Experiment 2: Partial Comparison ▶ Problem: not all elements have a meaningful signature ▶ Two signature matching strategies: ■ Named-only: only match named elements, use equality for the contents of named elements ■ Meta-class: match named elements based on their signature, match the contents of named elements based on their parent and meta-class only 19
  • 35. Experiment 2: Partial Comparison 20 cdt cdo ...ompare emf ...e.core Delta UC Full Size - Named-only Matcher GB 0 2 4 6 8 10 12 14 cdt cdo ...ompare emf ...e.core Delta UC Full Size - Meta Class Matcher GB 0 2 4 6 8 10 12 14 cdt cdo ...ompare emf ...e.core Delta UC Full Lines MLines 0 20 40 60 80 100 Delta UC Full All vs Matched - Named-only Matcher MObjects 200 300 400 500 Delta UC Full All vs Matched - Meta Class Matcher MObjects 200 300 400 500 Delta UC Full All vs Matched Lines MLines 40 60 80 100
  • 36. Discussion ▶ Only reverse engineered Java models, different result for other meta-models possible ▶ Similarity-based matching != similarity-based matching: more evaluation with different qualities of similarity-based matching necessary ▶ Signatures are not necessarily meta-model independent ▶ We need a better understanding about the relationship of comparison runtime and comparison quality 21
  • 37. Conclusions ▶ EMF Compare is tailored for difference model usability, not for model-compression ■ insufficient execution times ■ wrong representation of differences ▶ EMF-Compress is an alternative: http://github.com/ markus1978/emf-compress ▶ Better analysis of matching strategies necessary: ■ evaluation of more matching strategies ■ evaluation with models in different languages 22
  • 39. Example Use-Case: Model-based MSR 23 MS M{C} MM{Cn} RHEAD … R 0
  • 40. Example Use-Case: Model-based MSR 23 MS M{C} MM{Cn} RHEAD … R 0
  • 41. Example Use-Case: Model-based MSR 23 MS M{C} MM{Cn} RHEAD … R 0 {Cn-1} MM
  • 42. Example Use-Case: Model-based MSR 23 MS M{C} MM{Cn} RHEAD … R 0 {Cn-1} MM {C0} … MM … … …
  • 43. Example Use-Case: Model-based MSR 23 MS M{C} MM{Cn} RHEAD … R 0 {Cn-1} MM {C0} … MM … … …
  • 44. Model-based Mining of Software Repositories ▶ MSR tools are already “model-based”, but in a proprietary manner ▶ Idea: existing reverse engineering framework and corresponding standard meta-models and modeling frameworks instead of proprietary solutions ▶ Goals ■ deal with heterogeneity (different version control systems, different languages) ■ reuse of existing meta-models, transformations, and languages ■ interoperability with existing analysis tools ■ retaining meaningful scalability 24
  • 45. Model-based Mining of Software Repositories ▶ Scope ■ depends on concreter MSR-application and its goals ■ number of software projects: single repositories, large repositories, ultra-large repositories ■ Sources as text and text based metrics, e.g. LOC ■ Declarations only: packages, classes, methods, but no statements, expressions, etc. ■ Full AST with or without cross-references 25
  • 46. Model-based Mining of Software Repositories ▶ Scope ■ depends on concreter MSR-application and its goals ■ number of software projects: single repositories, large repositories, ultra-large repositories ■ Sources as text and text based metrics, e.g. LOC ■ Declarations only: packages, classes, methods, but no statements, expressions, etc. ■ Full AST with or without cross-references 26
  • 47. Reverse Engineering with MoDisco ▶ Model Discovery ▶ reverse engineering for Java, based on EMF ▶ discovery, i.e. finding sources (so called compilation units) within projects, source folders, and packages ▶ uses Eclipse’s workspace and Java Development Toolkit (JDT) ▶ provides ■ discovers for many languages: Java, xText, JSP, XML ■ creates instances of a Java EMF meta-model that corresponds to the handwritten JDT AST-model ■ provides transformation to language independent artifacts, e.g. KDM 27
  • 48. From Source Code- to Model-Repository 28 snapshot A1 B1 snapshot A2 B1 snapshot A2 B3 snapshotsnapshotsnapshot M3 M2 M1 f B.f fB.f Load(r) Analysis(r) Merge(r) Save(r) Checkout(r) X d2CUs(r) Parse(d) X R Checkout + X CUs Parse + Analysis ! X R Checkout + X CUs (Parse + Merge) + Analysis ! X R X CUs (Load + Merge) + Analysis ! X R X CUs (Load + Analysis0 ) versioncontrolsystem A1-A2 A1 B1 B1-B3 X d2CUs(r) Parse(d)
  • 50. Model-based MSR Strategies 29 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3
  • 51. Model-based MSR Strategies 29 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1
  • 52. snapshot A2 B3 Model-based MSR Strategies 29 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1
  • 53. snapshot A2 B3 Model-based MSR Strategies 29 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d)
  • 54. snapshot A2 B3 Model-based MSR Strategies 29 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot
  • 55. snapshot snapshot A2 B3 Model-based MSR Strategies 29 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot
  • 56. snapshot snapshot A2 B3 Model-based MSR Strategies 29 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot M1 Analysis(r)
  • 57. snapshot snapshot A2 B3 Model-based MSR Strategies 29 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot M1 Analysis(r) M2
  • 58. snapshot snapshot A2 B3 Model-based MSR Strategies 29 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot M1 Analysis(r) M3 M2
  • 59. snapshot snapshot A2 B3 Model-based MSR Strategies 30 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot M1 Analysis(r) M3 M2
  • 60. snapshot snapshot A2 B3 Model-based MSR Strategies 30 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot M1 Analysis(r) M3 M2 f B.f fB.f Parse(d) X d2 CUs(r)
  • 61. snapshot snapshot A2 B3 Model-based MSR Strategies 30 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot M1 Analysis(r) M3 M2 Merge(r) f B.f fB.f Parse(d) X d2 CUs(r)
  • 62. snapshot snapshot A2 B3 Model-based MSR Strategies 31 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot M1 Analysis(r) M3 M2 Merge(r) f B.f fB.f Parse(d) X d2 CUs(r)
  • 63. snapshot snapshot A2 B3 Model-based MSR Strategies 31 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot M1 Analysis(r) M3 M2 Merge(r) f B.f fB.f Parse(d) X d2 CUs(r) Load(r)Save(r)
  • 64. snapshot snapshot A2 B3 Model-based MSR Strategies 32 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot M1 Analysis(r) M3 M2 Merge(r) f B.f fB.f Parse(d) X d2 CUs(r) Load(r)Save(r)
  • 65. snapshot snapshot A2 B3 Model-based MSR Strategies 33 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot M1 Analysis(r) M3 M2 Merge(r) f B.f fB.f Parse(d) X d2 CUs(r) Load(r)Save(r)
  • 66. Importing and Traversing Source Code Repositories 34 R1 R2 R3 A1 B1 f A2 A1 B1 f f B3 A2 A1 B1 f f A2 B3 f A2 B1 f A1 B1 f A2 B1 f A1 B1 f A1 B1 f B3 A2 A1 B1 f f A2 A1 B1 f f A1 B1 f A2 B3 A2 B1 f f A1 B1 f A2 B1 f A1 B1 f A2 B.f? A1 B1!fB.f? A2 B3 f A2 B1 f A1 B1 f ✓ ✗ ✗ ✓ ✗ ✓ import traverse
  • 67. Importing and Traversing Source Code Repositories 35 R1 R2 R3 import (persistent/storage) traverse (transient/runtime)
  • 68. Importing and Traversing Source Code Repositories 36 R1 R2 R3 A1 B1 f import (persistent) traverse (transient)
  • 69. A2 A1 B1 f f Importing and Traversing Source Code Repositories 37 R1 R2 R3 import (persistent) traverse (transient)
  • 70. Importing and Traversing Source Code Repositories 38 R1 R2 R3 B3 A2 A1 B1 f f import (persistent) traverse (transient)
  • 71. Importing and Traversing Source Code Repositories 39 R1 R2 R3 A1 B1 f B3 A2 A1 B1 f f ✓ import (persistent) traverse (transient)
  • 72. ✓ Importing and Traversing Source Code Repositories 40 R1 R2 R3 A2 B1 f A1 B1 f B3 A2 A1 B1 f f ✓ import (persistent) traverse (transient)
  • 73. ✓ Importing and Traversing Source Code Repositories 41 R1 R2 R3 A2 B3 f A2 B1 f A1 B1 f B3 A2 A1 B1 f f ✓ ✗ import (persistent) traverse (transient)
  • 74. A1 B1!fB.f? Importing and Traversing Source Code Repositories 42 R1 R2 R3 import (persistent) traverse (transient)
  • 75. A2 B.f? A1 B1!fB.f? Importing and Traversing Source Code Repositories 43 R1 R2 R3 import (persistent) traverse (transient)
  • 76. Importing and Traversing Source Code Repositories 44 R1 R2 R3 B3!f A2 B.f? A1 B1!fB.f? import (persistent) traverse (transient)
  • 77. Importing and Traversing Source Code Repositories 45 R1 R2 R3 B3!f A2 B.f? A1 B1!fB.f? A1 B1 f ✓ import (persistent) traverse (transient)
  • 78. Importing and Traversing Source Code Repositories 46 R1 R2 R3 B3!f A2 B.f? A1 B1!fB.f? A2 B1 f A1 B1 f ✓ ✓ import (persistent) traverse (transient)
  • 79. Importing and Traversing Source Code Repositories 47 R1 R2 R3 B3!f A2 B.f? A1 B1!fB.f? A2 B1 f A1 B1 f A2 B3 f ✓ ✓ ✓ import (persistent) traverse (transient)
  • 80. Importing and Traversing Source Code Repositories 48 R1 R2 R3 ✓ B3!f A2 B.f? A1 B1!fB.f? A1 B1 f import (persistent) traverse (transient)
  • 81. ✓ Importing and Traversing Source Code Repositories 49 R1 R2 R3 ✓ B3!f A2 B.f? A1 B1!fB.f? A2 A1 B1 f f ✗ import (persistent) traverse (transient)
  • 82. ✓ ✓ Importing and Traversing Source Code Repositories 50 R1 R2 R3 ✓ B3!f A2 B.f? A1 B1!fB.f? B3f A2 A1 B1 f f ✗ ✗ import (persistent) traverse (transient)