SlideShare a Scribd company logo
Model-based Analysis of
Source Code Repositories
Markus Scheidgen
1
Martin Schmidt Joachim Fischer
{scheidge,schmidma,fischer@informatik.hu-berlin.de
Humboldt Universität zu Berlin
Agenda
▶ Software Evolution, Reverse Engineering, and Mining Software
Repositories
▶ Model-based Mining of Software Repositories
▶ srcrepo a framework for model-bases analysis of software
repositories
▶ Experiments with Eclipse’s software repositories
▶ Conclusions
2
software maintenance
RHEAD
…
R0
■ quality assessment
■ implicit dependencies
software engineering
Software Evolution
3
requirements
M
M {C}
S
user
problem
M
M {C}
S
user
mining software repositories1
software modernization
OMG’s ADM
(Achitecture-Driven Modernization)
‣AST Meta-Model (ASTM)
‣Knowledge Discovery Meta-
Model (KDM)
‣Software Metrics Meta-Model
(SMM)
M
SS
M
M
M
{C} {C}
reverseengineering
forwardengineering
transformation
1.H. Kagdi, M.L. Collard, J.I. Maletic: A survey and taxonomy of approaches for mining software repositories in the context of software
evolution; Journal of Software Maintenance and Evolution: Research and Practice; Vol.19/Nr.2/2007
Mining Software Repositories – In General
▶ The term mining software repositories (MSR) has been coined
to describe a broad class of investigations into the examination
of software repositories.
▶ The premise of MSR is that empirical and systematic
investigations of repositories will shed new light on the process
of software evolution. [1]
▶ Different scopes, e.g. single software projects vs. many
software projects
▶ Different goals, e.g. quality assessments and implicit
dependencies vs. generalizations about software evolution
4
1.H. Kagdi, M.L. Collard, J.I. Maletic: A survey and taxonomy of approaches for mining software repositories in the context of software
evolution; Journal of Software Maintenance and Evolution: Research and Practice; Vol.19/Nr.2/2007
Model-based Mining of Software Repositories
5
MS M{C} reverse engineering
1.E.J. Chikofsky, J.H. Cross: Reverse engineering and design recovery: A taxonomy; IEEE Software; Vol.7/Nr.1/1990
2.R. Lincke, J. Lundberg, W. Löwe: Comparing Software Metrics Tools; 8th International Symp. on Software Testing and Analysis; 2008
Model-based Mining of Software Repositories
5
MS M{C}
MM{Cn}
RHEAD
…
R
0
reverse engineering
1.E.J. Chikofsky, J.H. Cross: Reverse engineering and design recovery: A taxonomy; IEEE Software; Vol.7/Nr.1/1990
2.R. Lincke, J. Lundberg, W. Löwe: Comparing Software Metrics Tools; 8th International Symp. on Software Testing and Analysis; 2008
Model-based Mining of Software Repositories
5
MS M{C}
MM{Cn}
RHEAD
…
R
0
{Cn-1} MM
reverse engineering
1.E.J. Chikofsky, J.H. Cross: Reverse engineering and design recovery: A taxonomy; IEEE Software; Vol.7/Nr.1/1990
2.R. Lincke, J. Lundberg, W. Löwe: Comparing Software Metrics Tools; 8th International Symp. on Software Testing and Analysis; 2008
Model-based Mining of Software Repositories
5
MS M{C}
MM{Cn}
RHEAD
…
R
0
{Cn-1} MM
{C0}
…
MM
…
…
…
reverse engineering
1.E.J. Chikofsky, J.H. Cross: Reverse engineering and design recovery: A taxonomy; IEEE Software; Vol.7/Nr.1/1990
2.R. Lincke, J. Lundberg, W. Löwe: Comparing Software Metrics Tools; 8th International Symp. on Software Testing and Analysis; 2008
Model-based Mining of Software Repositories
5
MS M{C}
MM{Cn}
RHEAD
…
R
0
{Cn-1} MM
{C0}
…
MM
…
…
…
reverse engineering
1.E.J. Chikofsky, J.H. Cross: Reverse engineering and design recovery: A taxonomy; IEEE Software; Vol.7/Nr.1/1990
2.R. Lincke, J. Lundberg, W. Löwe: Comparing Software Metrics Tools; 8th International Symp. on Software Testing and Analysis; 2008
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
6
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
7
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
8
Model-based MSR Strategies
9
versioncontrolsystem
A1-A2
A1 B1
B1-B3
Model-based MSR Strategies
9
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
Model-based MSR Strategies
9
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
A2 B3
Model-based MSR Strategies
9
snapshot
A1 B1
Checkout(r)
versioncontrolsystem
A1-A2
A1 B1
B1-B3
snapshot
A2 B1
snapshot
A2 B3
Model-based MSR Strategies
9
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
9
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
9
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
9
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
9
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
9
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
9
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
X
R
Checkout +
X
CUs
Parse + Analysis
!
X
R
Checkout +
X
CUs
(Parse + Merge) + Analysis
!
X
R
X
CUs
(Load + Merge) + Analysis
!
X X
snapshot
snapshot
A2 B3
Model-based MSR Strategies
10
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
10
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
10
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
10
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)
X
R
Checkout +
X
CUs
Parse + Analysis
!
X
R
Checkout +
X
CUs
(Parse + Merge) + Analysis
!
X X
!
snapshot
snapshot
A2 B3
Model-based MSR Strategies
11
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
11
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
11
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)
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
)
snapshot
snapshot
A2 B3
Model-based MSR Strategies
12
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)
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
)
Analysis0
(r)
snapshot
snapshot
A2 B3
Model-based MSR Strategies
12
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)
Analysis0
(r)
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
)
snapshot
snapshot
A2 B3
Model-based MSR Strategies
13
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)
Analysis0
(r)
Research Questions
▶ Assumptions
■ Development of MSR-applications based on models,
transformation languages and standardized meta-models is
favorable
■ Some MSR-applications need to analyze source code on a deep
(AST) level
■ MSR-analysis is performed iteratively
▶ Hypotheses
■ Models of source code repositories can be created and persisted
■ Traversing existing persistent models of source code repositories
is much faster than traversing transient models that are created
from version control system on the fly
14
srcrepo – A Framework for Model-based MSR
▶ Eclipse’s MoDisco as reverse engineering framework
■ reverse engineering for Java, based on EMF
■ Support for many JRE-ased 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
▶ EMF-Fragments1 to store very large-models
■ uses No-SQL databases and stores larger model fragments within database entries
■ in contrast to object-by-object stores such as ORM-based CDO or No-SQL-based
Morsa or Neo4J
▶ Xtend programming with higher order functions to mimic OCL-style
definition of software metrics2
15
1.M.Scheidgen, A.Zubow,J.Fischer,T.H.Kolbe: Automated and Transparent Model Fragmentation for Persisting Large Models; ACM/IEEE
15th International Conference on Model Driven Engineering Languages & Systems (MODELS); Innsbruck; 2012
2. M.Scheidgen, J.Fischer: Model-based Mining of Software Repositories; 8th Systems and Modeling Conference, Valencia, Spain,
September 29th, 2014
“OCL” to Calculate Metrics of AST-Models
16
// Weighted number of methods per class.
def wmc(AbstractTypeDeclaration type,(Block) int weight) {
type.bodyDeclarations.sum[if (body != null) weight.apply(it.body) else 1]
}
Experiments
▶ Eclipse Foundation sources, i.e. Eclipse platform and plug-
ins (large scale software repository)
▶ Organized in different (couple hundred) projects: jdt, cdt,
emf, ...
▶ Available via GITHub
▶ GIT repositories can be gathered automated via GITHub’s
REST-ful API
▶ 200 largest Eclipse repositories that actually contained Java
code: 6.6 GB Git, 400 MLOC, 250 GB model with 4 billion
objects.
17
Example Plot: Halstead-length for each Revision; Eclipse CDT
18
2004 2006 2008 2010 2012 2014 2016
0246810
time (years)
WMCwithHalsteadlength(x106
)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++
+++++
+++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++
++++++++
+++++++++++++++++++++
++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
++++
++++
++++++++++++++++++ ++
++++++++++++++++++
++++++++++++++++++++ ++++ +
+++++++++++++ ++
+++++++++++++++++
+
++++++++ +
++++++++
++++++++
++++++++++ +
+
++++
++
+++
+ ++ + +++++ +++++++++++++++++++++++++++++++++++++++
Model Create v Analysis Times
19
jdt.ui
xtext
eclipselink
jdt.core
swt
cdt
ocl
ptp
org.aspectj
cdo
udf
merge/increment
load
save
parse
checkout
time(hours)
0
2
4
6
8
10
12
14
checkout parse save load merge/
increment
udf
0200400600800
avgtimeperrevision(ms)
jdt.core
cdt
jdt.ui
cdo
f.emfstore.core
emf
jdt.debug
emf.compare
emf.texo
.diffmerge.core
GIT size
Model size
GIT repository vs model size
inGB
0
5
10
15
Diskspace
20
Delta-Compression1
21
cdt
webtools
gmf−tooling
rap
jdt.core
delta-models
initial revisions
uncompressed
Named element matching
GB
0
2
4
6
8
10
12
14
cdt
webtools
gmf−tooling
rap
jdt.core
detla-models
initial revisions
uncompressed
Meta-class matching
GB
0
2
4
6
8
10
12
14
cdt
webtools
gmf−tooling
rap
jdt.core
delta-lines
initial revisions
uncompressed
Line matching
MLines
0
20
40
60
80
100
initial
revisions
delta
models for
meta-class
delta
lines
delta models
for named
elements
020406080
Compressed relative to full size
(%)
parse compress
named
elements
compress
meta-class
decompr.
meta-class
decompr.
named
elements
parse compress
named
elements
compress
meta-class
decompr.
meta-class
decompr.
named
elements
050010001500
Avg. execution times
avg.timeperrevision(ms)
10502001000
Avg. execution times (logarithmic)
avg.timeperrevision(ms)
1.M.Scheidgen: Evaluation of Model Comparison for Delta-Compression in Model Persistence; BigMDE 2016 (at STAF 2016),Vienna,
Austria, July 6-7, 2016
Model Creation v Analysis with Delta-Compression
22
jdt.ui
xtext
eclipselink
jdt.core
swt
cdt
ocl
ptp
org.aspectj
cdo
udf
merge/increment
load
save
compress
parse
checkout
time(hours)
0
2
4
6
8
10
12
14
jdt.ui
xtext
eclipselink
jdt.core
swt
cdt
ocl
ptp
org.aspectj
cdo
udf
merge/increment
load
save
parse
checkout
time(hours)
0
2
4
6
8
10
12
14
without compression with compression
Conclusions
▶ MSR can support software evolution and helps to
understand software evolution
▶ Traversing a source code repository to gather information
(MSR) is very time consuming, especially with iterative
analysis
▶ It is possible to save most of this time via saving data in its
model state, at the cost of comparably large models that
need to be persisted
▶ The MSR analysis execution time savings are considerable
23

More Related Content

What's hot

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
mahatmagandhiuniversity
 
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
Shanmuganathan C
 
GenePattern: Ted Liefeld
GenePattern: Ted LiefeldGenePattern: Ted Liefeld
GenePattern: Ted Liefeld
niranabey
 
Opal Hermes - towards representative benchmarks
Opal  Hermes - towards representative benchmarksOpal  Hermes - towards representative benchmarks
Opal Hermes - towards representative benchmarks
MichaelEichberg1
 
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...
Kamiya Toshihiro
 
COMPSAC 2008 Presentation
COMPSAC 2008 PresentationCOMPSAC 2008 Presentation
COMPSAC 2008 Presentation
Ahrim Han, Ph.D.
 
kite
kitekite
kite
miso_uam
 
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
 
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
 
TMPA-2017: Vellvm - Verifying the LLVM
TMPA-2017: Vellvm - Verifying the LLVMTMPA-2017: Vellvm - Verifying the LLVM
TMPA-2017: Vellvm - Verifying the LLVM
Iosif Itkin
 
Advance diploma in it
Advance diploma in itAdvance diploma in it
Advance diploma in it
mahatmagandhiuniversity
 
BASIC CONCEPTS OF C++ CLASS 12
BASIC CONCEPTS OF C++ CLASS 12BASIC CONCEPTS OF C++ CLASS 12
BASIC CONCEPTS OF C++ CLASS 12
Dev Chauhan
 
DeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
DeepAM: Migrate APIs with Multi-modal Sequence to Sequence LearningDeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
DeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
Sung Kim
 
TMPA-2017: 5W+1H Static Analysis Report Quality Measure
TMPA-2017: 5W+1H Static Analysis Report Quality MeasureTMPA-2017: 5W+1H Static Analysis Report Quality Measure
TMPA-2017: 5W+1H Static Analysis Report Quality Measure
Iosif Itkin
 
Floss Metrics 2009
Floss Metrics 2009Floss Metrics 2009
Floss Metrics 2009
Inria
 
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
Frank 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 FMDiff
Martin Pinzger
 
Semantic scaffolds for pseudocode to-code generation (2020)
Semantic scaffolds for pseudocode to-code generation (2020)Semantic scaffolds for pseudocode to-code generation (2020)
Semantic scaffolds for pseudocode to-code generation (2020)
Minhazul Arefin
 
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
Luca Berardinelli
 
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)

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
 
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
 
GenePattern: Ted Liefeld
GenePattern: Ted LiefeldGenePattern: Ted Liefeld
GenePattern: Ted Liefeld
 
Opal Hermes - towards representative benchmarks
Opal  Hermes - towards representative benchmarksOpal  Hermes - towards representative benchmarks
Opal Hermes - towards representative benchmarks
 
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...
An Execution-Semantic and Content-and-Context-Based Code-Clone Detection and ...
 
COMPSAC 2008 Presentation
COMPSAC 2008 PresentationCOMPSAC 2008 Presentation
COMPSAC 2008 Presentation
 
kite
kitekite
kite
 
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...
 
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...
 
TMPA-2017: Vellvm - Verifying the LLVM
TMPA-2017: Vellvm - Verifying the LLVMTMPA-2017: Vellvm - Verifying the LLVM
TMPA-2017: Vellvm - Verifying the LLVM
 
Advance diploma in it
Advance diploma in itAdvance diploma in it
Advance diploma in it
 
BASIC CONCEPTS OF C++ CLASS 12
BASIC CONCEPTS OF C++ CLASS 12BASIC CONCEPTS OF C++ CLASS 12
BASIC CONCEPTS OF C++ CLASS 12
 
DeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
DeepAM: Migrate APIs with Multi-modal Sequence to Sequence LearningDeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
DeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
 
TMPA-2017: 5W+1H Static Analysis Report Quality Measure
TMPA-2017: 5W+1H Static Analysis Report Quality MeasureTMPA-2017: 5W+1H Static Analysis Report Quality Measure
TMPA-2017: 5W+1H Static Analysis Report Quality Measure
 
Floss Metrics 2009
Floss Metrics 2009Floss Metrics 2009
Floss Metrics 2009
 
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
 
Semantic scaffolds for pseudocode to-code generation (2020)
Semantic scaffolds for pseudocode to-code generation (2020)Semantic scaffolds for pseudocode to-code generation (2020)
Semantic scaffolds for pseudocode to-code generation (2020)
 
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
 
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

GRASPSKILLS HANDBOOK
GRASPSKILLS HANDBOOKGRASPSKILLS HANDBOOK
GRASPSKILLS HANDBOOK
graspskills
 
Beton prategangz (1) (3)
Beton prategangz (1) (3)Beton prategangz (1) (3)
Beton prategangz (1) (3)
wildan grenadi
 
two degree of freddom system
two degree of freddom systemtwo degree of freddom system
two degree of freddom system
Yash Patel
 
P1022017 Guerra Fría en 10min
P1022017 Guerra Fría en 10minP1022017 Guerra Fría en 10min
P1022017 Guerra Fría en 10min
VENTURA Contenidos
 
Building Materials for Construction
Building Materials for Construction Building Materials for Construction
Building Materials for Construction
Ajjay Kumar Gupta
 
Favourite Photo Shoot Photos
Favourite Photo Shoot Photos Favourite Photo Shoot Photos
Favourite Photo Shoot Photos
rachelhubbard7
 
Ppt fia oficial para cataluña
Ppt fia oficial para cataluñaPpt fia oficial para cataluña
Communication and media response to the Westminster Attack
Communication and media response to the Westminster AttackCommunication and media response to the Westminster Attack
Communication and media response to the Westminster Attack
Stephen Waddington
 
Rojo pdf lattice2017-nnpdf
Rojo pdf lattice2017-nnpdfRojo pdf lattice2017-nnpdf
Rojo pdf lattice2017-nnpdf
juanrojochacon
 
Metodos de programacion no lineal javier perez
Metodos de programacion no lineal javier perezMetodos de programacion no lineal javier perez
Metodos de programacion no lineal javier perez
javier peeez
 
лапта
лапталапта
лапта
denchk
 
La teoria-de-los-cuatro-humores (2)
La teoria-de-los-cuatro-humores (2)La teoria-de-los-cuatro-humores (2)
La teoria-de-los-cuatro-humores (2)
Ángeles Pérez
 
Measuring emotional contagion in social media
Measuring emotional contagion in social mediaMeasuring emotional contagion in social media
Measuring emotional contagion in social media
fatimanafie
 

Viewers also liked (13)

GRASPSKILLS HANDBOOK
GRASPSKILLS HANDBOOKGRASPSKILLS HANDBOOK
GRASPSKILLS HANDBOOK
 
Beton prategangz (1) (3)
Beton prategangz (1) (3)Beton prategangz (1) (3)
Beton prategangz (1) (3)
 
two degree of freddom system
two degree of freddom systemtwo degree of freddom system
two degree of freddom system
 
P1022017 Guerra Fría en 10min
P1022017 Guerra Fría en 10minP1022017 Guerra Fría en 10min
P1022017 Guerra Fría en 10min
 
Building Materials for Construction
Building Materials for Construction Building Materials for Construction
Building Materials for Construction
 
Favourite Photo Shoot Photos
Favourite Photo Shoot Photos Favourite Photo Shoot Photos
Favourite Photo Shoot Photos
 
Ppt fia oficial para cataluña
Ppt fia oficial para cataluñaPpt fia oficial para cataluña
Ppt fia oficial para cataluña
 
Communication and media response to the Westminster Attack
Communication and media response to the Westminster AttackCommunication and media response to the Westminster Attack
Communication and media response to the Westminster Attack
 
Rojo pdf lattice2017-nnpdf
Rojo pdf lattice2017-nnpdfRojo pdf lattice2017-nnpdf
Rojo pdf lattice2017-nnpdf
 
Metodos de programacion no lineal javier perez
Metodos de programacion no lineal javier perezMetodos de programacion no lineal javier perez
Metodos de programacion no lineal javier perez
 
лапта
лапталапта
лапта
 
La teoria-de-los-cuatro-humores (2)
La teoria-de-los-cuatro-humores (2)La teoria-de-los-cuatro-humores (2)
La teoria-de-los-cuatro-humores (2)
 
Measuring emotional contagion in social media
Measuring emotional contagion in social mediaMeasuring emotional contagion in social media
Measuring emotional contagion in social media
 

Similar to Creating and Analyzing Source Code Repository Models - A Model-based Approach to Mining Software Repositories

Software testing presentation for engineering students of computer science
Software testing presentation for engineering students of computer scienceSoftware testing presentation for engineering students of computer science
Software testing presentation for engineering students of computer science
AmaanAli86
 
SE1.ppt
SE1.pptSE1.ppt
Icsm19.ppt
Icsm19.pptIcsm19.ppt
Architectural Abstractions for Hybrid Programs
Architectural Abstractions for Hybrid ProgramsArchitectural Abstractions for Hybrid Programs
Architectural Abstractions for Hybrid Programs
Ivan Ruchkin
 
Populating a Release History Database (ICSM 2013 MIP)
Populating a Release History Database (ICSM 2013 MIP)Populating a Release History Database (ICSM 2013 MIP)
Populating a Release History Database (ICSM 2013 MIP)
Martin Pinzger
 
CS2006Ch02A.ppt dfxgbfdcgbhfcdhbfdcbfdcgfdg
CS2006Ch02A.ppt dfxgbfdcgbhfcdhbfdcbfdcgfdgCS2006Ch02A.ppt dfxgbfdcgbhfcdhbfdcbfdcgfdg
CS2006Ch02A.ppt dfxgbfdcgbhfcdhbfdcbfdcgfdg
RahithAhsan1
 
LIFT: A Legacy InFormation retrieval Tool
LIFT: A Legacy InFormation retrieval ToolLIFT: A Legacy InFormation retrieval Tool
LIFT: A Legacy InFormation retrieval Tool
Kellyton Brito
 
R at Microsoft
R at MicrosoftR at Microsoft
R at Microsoft
Revolution Analytics
 
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
jamieayre
 
SE Syllabus gvp it.pdf
SE Syllabus gvp it.pdfSE Syllabus gvp it.pdf
SE Syllabus gvp it.pdf
MrsMChandraJyostna
 
Requirements for Supporting the Iterative Exploration of Scientific Workflow ...
Requirements for Supporting the Iterative Exploration of Scientific Workflow ...Requirements for Supporting the Iterative Exploration of Scientific Workflow ...
Requirements for Supporting the Iterative Exploration of Scientific Workflow ...
Lucas Augusto Carvalho
 
(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures
Joel Falcou
 
Architecture Centric Development PPT Presentation
Architecture Centric Development PPT PresentationArchitecture Centric Development PPT Presentation
Architecture Centric Development PPT Presentation
ERPCell
 
GPCE16: Automatic Non-functional Testing of Code Generators Families
GPCE16: Automatic Non-functional Testing of Code Generators FamiliesGPCE16: Automatic Non-functional Testing of Code Generators Families
GPCE16: Automatic Non-functional Testing of Code Generators Families
Mohamed BOUSSAA
 
Cuashi2008revisited
Cuashi2008revisitedCuashi2008revisited
Cuashi2008revisited
Riccardo Rigon
 
QRS16: NOTICE: A Framework for Non-functional Testing of Compilers
QRS16: NOTICE: A Framework for Non-functional Testing of CompilersQRS16: NOTICE: A Framework for Non-functional Testing of Compilers
QRS16: NOTICE: A Framework for Non-functional Testing of Compilers
Mohamed BOUSSAA
 
Finding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux CodeFinding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux Code
Andrzej Wasowski
 
Revisiting Code Ownership and Its Relationship with Software Quality in the S...
Revisiting Code Ownership and Its Relationship with Software Quality in the S...Revisiting Code Ownership and Its Relationship with Software Quality in the S...
Revisiting Code Ownership and Its Relationship with Software Quality in the S...
The University of Adelaide
 
Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?
Sebastiano Panichella
 
Distributed R: The Next Generation Platform for Predictive Analytics
Distributed R: The Next Generation Platform for Predictive AnalyticsDistributed R: The Next Generation Platform for Predictive Analytics
Distributed R: The Next Generation Platform for Predictive Analytics
Jorge Martinez de Salinas
 

Similar to Creating and Analyzing Source Code Repository Models - A Model-based Approach to Mining Software Repositories (20)

Software testing presentation for engineering students of computer science
Software testing presentation for engineering students of computer scienceSoftware testing presentation for engineering students of computer science
Software testing presentation for engineering students of computer science
 
SE1.ppt
SE1.pptSE1.ppt
SE1.ppt
 
Icsm19.ppt
Icsm19.pptIcsm19.ppt
Icsm19.ppt
 
Architectural Abstractions for Hybrid Programs
Architectural Abstractions for Hybrid ProgramsArchitectural Abstractions for Hybrid Programs
Architectural Abstractions for Hybrid Programs
 
Populating a Release History Database (ICSM 2013 MIP)
Populating a Release History Database (ICSM 2013 MIP)Populating a Release History Database (ICSM 2013 MIP)
Populating a Release History Database (ICSM 2013 MIP)
 
CS2006Ch02A.ppt dfxgbfdcgbhfcdhbfdcbfdcgfdg
CS2006Ch02A.ppt dfxgbfdcgbhfcdhbfdcbfdcgfdgCS2006Ch02A.ppt dfxgbfdcgbhfcdhbfdcbfdcgfdg
CS2006Ch02A.ppt dfxgbfdcgbhfcdhbfdcbfdcgfdg
 
LIFT: A Legacy InFormation retrieval Tool
LIFT: A Legacy InFormation retrieval ToolLIFT: A Legacy InFormation retrieval Tool
LIFT: A Legacy InFormation retrieval Tool
 
R at Microsoft
R at MicrosoftR at Microsoft
R at Microsoft
 
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
 
SE Syllabus gvp it.pdf
SE Syllabus gvp it.pdfSE Syllabus gvp it.pdf
SE Syllabus gvp it.pdf
 
Requirements for Supporting the Iterative Exploration of Scientific Workflow ...
Requirements for Supporting the Iterative Exploration of Scientific Workflow ...Requirements for Supporting the Iterative Exploration of Scientific Workflow ...
Requirements for Supporting the Iterative Exploration of Scientific Workflow ...
 
(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures
 
Architecture Centric Development PPT Presentation
Architecture Centric Development PPT PresentationArchitecture Centric Development PPT Presentation
Architecture Centric Development PPT Presentation
 
GPCE16: Automatic Non-functional Testing of Code Generators Families
GPCE16: Automatic Non-functional Testing of Code Generators FamiliesGPCE16: Automatic Non-functional Testing of Code Generators Families
GPCE16: Automatic Non-functional Testing of Code Generators Families
 
Cuashi2008revisited
Cuashi2008revisitedCuashi2008revisited
Cuashi2008revisited
 
QRS16: NOTICE: A Framework for Non-functional Testing of Compilers
QRS16: NOTICE: A Framework for Non-functional Testing of CompilersQRS16: NOTICE: A Framework for Non-functional Testing of Compilers
QRS16: NOTICE: A Framework for Non-functional Testing of Compilers
 
Finding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux CodeFinding Resource Manipulation Bugs in Linux Code
Finding Resource Manipulation Bugs in Linux Code
 
Revisiting Code Ownership and Its Relationship with Software Quality in the S...
Revisiting Code Ownership and Its Relationship with Software Quality in the S...Revisiting Code Ownership and Its Relationship with Software Quality in the S...
Revisiting Code Ownership and Its Relationship with Software Quality in the S...
 
Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?
 
Distributed R: The Next Generation Platform for Predictive Analytics
Distributed R: The Next Generation Platform for Predictive AnalyticsDistributed R: The Next Generation Platform for Predictive Analytics
Distributed R: The Next Generation Platform for Predictive Analytics
 

Recently uploaded

Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
The Third Creative Media
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
kalichargn70th171
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
kgyxske
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
Reetu63
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
Maitrey Patel
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
kalichargn70th171
 

Recently uploaded (20)

Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...
 
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
The Key to Digital Success_ A Comprehensive Guide to Continuous Testing Integ...
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
 

Creating and Analyzing Source Code Repository Models - A Model-based Approach to Mining Software Repositories

  • 1. Model-based Analysis of Source Code Repositories Markus Scheidgen 1 Martin Schmidt Joachim Fischer {scheidge,schmidma,fischer@informatik.hu-berlin.de Humboldt Universität zu Berlin
  • 2. Agenda ▶ Software Evolution, Reverse Engineering, and Mining Software Repositories ▶ Model-based Mining of Software Repositories ▶ srcrepo a framework for model-bases analysis of software repositories ▶ Experiments with Eclipse’s software repositories ▶ Conclusions 2
  • 3. software maintenance RHEAD … R0 ■ quality assessment ■ implicit dependencies software engineering Software Evolution 3 requirements M M {C} S user problem M M {C} S user mining software repositories1 software modernization OMG’s ADM (Achitecture-Driven Modernization) ‣AST Meta-Model (ASTM) ‣Knowledge Discovery Meta- Model (KDM) ‣Software Metrics Meta-Model (SMM) M SS M M M {C} {C} reverseengineering forwardengineering transformation 1.H. Kagdi, M.L. Collard, J.I. Maletic: A survey and taxonomy of approaches for mining software repositories in the context of software evolution; Journal of Software Maintenance and Evolution: Research and Practice; Vol.19/Nr.2/2007
  • 4. Mining Software Repositories – In General ▶ The term mining software repositories (MSR) has been coined to describe a broad class of investigations into the examination of software repositories. ▶ The premise of MSR is that empirical and systematic investigations of repositories will shed new light on the process of software evolution. [1] ▶ Different scopes, e.g. single software projects vs. many software projects ▶ Different goals, e.g. quality assessments and implicit dependencies vs. generalizations about software evolution 4 1.H. Kagdi, M.L. Collard, J.I. Maletic: A survey and taxonomy of approaches for mining software repositories in the context of software evolution; Journal of Software Maintenance and Evolution: Research and Practice; Vol.19/Nr.2/2007
  • 5. Model-based Mining of Software Repositories 5 MS M{C} reverse engineering 1.E.J. Chikofsky, J.H. Cross: Reverse engineering and design recovery: A taxonomy; IEEE Software; Vol.7/Nr.1/1990 2.R. Lincke, J. Lundberg, W. Löwe: Comparing Software Metrics Tools; 8th International Symp. on Software Testing and Analysis; 2008
  • 6. Model-based Mining of Software Repositories 5 MS M{C} MM{Cn} RHEAD … R 0 reverse engineering 1.E.J. Chikofsky, J.H. Cross: Reverse engineering and design recovery: A taxonomy; IEEE Software; Vol.7/Nr.1/1990 2.R. Lincke, J. Lundberg, W. Löwe: Comparing Software Metrics Tools; 8th International Symp. on Software Testing and Analysis; 2008
  • 7. Model-based Mining of Software Repositories 5 MS M{C} MM{Cn} RHEAD … R 0 {Cn-1} MM reverse engineering 1.E.J. Chikofsky, J.H. Cross: Reverse engineering and design recovery: A taxonomy; IEEE Software; Vol.7/Nr.1/1990 2.R. Lincke, J. Lundberg, W. Löwe: Comparing Software Metrics Tools; 8th International Symp. on Software Testing and Analysis; 2008
  • 8. Model-based Mining of Software Repositories 5 MS M{C} MM{Cn} RHEAD … R 0 {Cn-1} MM {C0} … MM … … … reverse engineering 1.E.J. Chikofsky, J.H. Cross: Reverse engineering and design recovery: A taxonomy; IEEE Software; Vol.7/Nr.1/1990 2.R. Lincke, J. Lundberg, W. Löwe: Comparing Software Metrics Tools; 8th International Symp. on Software Testing and Analysis; 2008
  • 9. Model-based Mining of Software Repositories 5 MS M{C} MM{Cn} RHEAD … R 0 {Cn-1} MM {C0} … MM … … … reverse engineering 1.E.J. Chikofsky, J.H. Cross: Reverse engineering and design recovery: A taxonomy; IEEE Software; Vol.7/Nr.1/1990 2.R. Lincke, J. Lundberg, W. Löwe: Comparing Software Metrics Tools; 8th International Symp. on Software Testing and Analysis; 2008
  • 10. 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 6
  • 11. 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 7
  • 12. 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 8
  • 14. Model-based MSR Strategies 9 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3
  • 15. Model-based MSR Strategies 9 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1
  • 16. snapshot A2 B3 Model-based MSR Strategies 9 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1
  • 17. snapshot A2 B3 Model-based MSR Strategies 9 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d)
  • 18. snapshot A2 B3 Model-based MSR Strategies 9 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot
  • 19. snapshot snapshot A2 B3 Model-based MSR Strategies 9 snapshot A1 B1 Checkout(r) versioncontrolsystem A1-A2 A1 B1 B1-B3 snapshot A2 B1 snapshot X d2CUs(r) Parse(d) snapshot
  • 20. snapshot snapshot A2 B3 Model-based MSR Strategies 9 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)
  • 21. snapshot snapshot A2 B3 Model-based MSR Strategies 9 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
  • 22. snapshot snapshot A2 B3 Model-based MSR Strategies 9 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
  • 23. snapshot snapshot A2 B3 Model-based MSR Strategies 9 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 X R Checkout + X CUs Parse + Analysis ! X R Checkout + X CUs (Parse + Merge) + Analysis ! X R X CUs (Load + Merge) + Analysis ! X X
  • 24. snapshot snapshot A2 B3 Model-based MSR Strategies 10 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
  • 25. snapshot snapshot A2 B3 Model-based MSR Strategies 10 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)
  • 26. snapshot snapshot A2 B3 Model-based MSR Strategies 10 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)
  • 27. snapshot snapshot A2 B3 Model-based MSR Strategies 10 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) X R Checkout + X CUs Parse + Analysis ! X R Checkout + X CUs (Parse + Merge) + Analysis ! X X !
  • 28. snapshot snapshot A2 B3 Model-based MSR Strategies 11 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)
  • 29. snapshot snapshot A2 B3 Model-based MSR Strategies 11 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)
  • 30. snapshot snapshot A2 B3 Model-based MSR Strategies 11 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) 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 )
  • 31. snapshot snapshot A2 B3 Model-based MSR Strategies 12 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) 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 ) Analysis0 (r)
  • 32. snapshot snapshot A2 B3 Model-based MSR Strategies 12 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) Analysis0 (r) 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 )
  • 33. snapshot snapshot A2 B3 Model-based MSR Strategies 13 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) Analysis0 (r)
  • 34. Research Questions ▶ Assumptions ■ Development of MSR-applications based on models, transformation languages and standardized meta-models is favorable ■ Some MSR-applications need to analyze source code on a deep (AST) level ■ MSR-analysis is performed iteratively ▶ Hypotheses ■ Models of source code repositories can be created and persisted ■ Traversing existing persistent models of source code repositories is much faster than traversing transient models that are created from version control system on the fly 14
  • 35. srcrepo – A Framework for Model-based MSR ▶ Eclipse’s MoDisco as reverse engineering framework ■ reverse engineering for Java, based on EMF ■ Support for many JRE-ased 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 ▶ EMF-Fragments1 to store very large-models ■ uses No-SQL databases and stores larger model fragments within database entries ■ in contrast to object-by-object stores such as ORM-based CDO or No-SQL-based Morsa or Neo4J ▶ Xtend programming with higher order functions to mimic OCL-style definition of software metrics2 15 1.M.Scheidgen, A.Zubow,J.Fischer,T.H.Kolbe: Automated and Transparent Model Fragmentation for Persisting Large Models; ACM/IEEE 15th International Conference on Model Driven Engineering Languages & Systems (MODELS); Innsbruck; 2012 2. M.Scheidgen, J.Fischer: Model-based Mining of Software Repositories; 8th Systems and Modeling Conference, Valencia, Spain, September 29th, 2014
  • 36. “OCL” to Calculate Metrics of AST-Models 16 // Weighted number of methods per class. def wmc(AbstractTypeDeclaration type,(Block) int weight) { type.bodyDeclarations.sum[if (body != null) weight.apply(it.body) else 1] }
  • 37. Experiments ▶ Eclipse Foundation sources, i.e. Eclipse platform and plug- ins (large scale software repository) ▶ Organized in different (couple hundred) projects: jdt, cdt, emf, ... ▶ Available via GITHub ▶ GIT repositories can be gathered automated via GITHub’s REST-ful API ▶ 200 largest Eclipse repositories that actually contained Java code: 6.6 GB Git, 400 MLOC, 250 GB model with 4 billion objects. 17
  • 38. Example Plot: Halstead-length for each Revision; Eclipse CDT 18 2004 2006 2008 2010 2012 2014 2016 0246810 time (years) WMCwithHalsteadlength(x106 ) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++ +++++ +++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++ ++++++++ +++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + ++++ ++++ ++++++++++++++++++ ++ ++++++++++++++++++ ++++++++++++++++++++ ++++ + +++++++++++++ ++ +++++++++++++++++ + ++++++++ + ++++++++ ++++++++ ++++++++++ + + ++++ ++ +++ + ++ + +++++ +++++++++++++++++++++++++++++++++++++++
  • 39. Model Create v Analysis Times 19 jdt.ui xtext eclipselink jdt.core swt cdt ocl ptp org.aspectj cdo udf merge/increment load save parse checkout time(hours) 0 2 4 6 8 10 12 14 checkout parse save load merge/ increment udf 0200400600800 avgtimeperrevision(ms)
  • 41. Delta-Compression1 21 cdt webtools gmf−tooling rap jdt.core delta-models initial revisions uncompressed Named element matching GB 0 2 4 6 8 10 12 14 cdt webtools gmf−tooling rap jdt.core detla-models initial revisions uncompressed Meta-class matching GB 0 2 4 6 8 10 12 14 cdt webtools gmf−tooling rap jdt.core delta-lines initial revisions uncompressed Line matching MLines 0 20 40 60 80 100 initial revisions delta models for meta-class delta lines delta models for named elements 020406080 Compressed relative to full size (%) parse compress named elements compress meta-class decompr. meta-class decompr. named elements parse compress named elements compress meta-class decompr. meta-class decompr. named elements 050010001500 Avg. execution times avg.timeperrevision(ms) 10502001000 Avg. execution times (logarithmic) avg.timeperrevision(ms) 1.M.Scheidgen: Evaluation of Model Comparison for Delta-Compression in Model Persistence; BigMDE 2016 (at STAF 2016),Vienna, Austria, July 6-7, 2016
  • 42. Model Creation v Analysis with Delta-Compression 22 jdt.ui xtext eclipselink jdt.core swt cdt ocl ptp org.aspectj cdo udf merge/increment load save compress parse checkout time(hours) 0 2 4 6 8 10 12 14 jdt.ui xtext eclipselink jdt.core swt cdt ocl ptp org.aspectj cdo udf merge/increment load save parse checkout time(hours) 0 2 4 6 8 10 12 14 without compression with compression
  • 43. Conclusions ▶ MSR can support software evolution and helps to understand software evolution ▶ Traversing a source code repository to gather information (MSR) is very time consuming, especially with iterative analysis ▶ It is possible to save most of this time via saving data in its model state, at the cost of comparably large models that need to be persisted ▶ The MSR analysis execution time savings are considerable 23