Εξόρυξη Δεδομένων από Αποθήκες
Λογισμικού για Επαναχρησιμοποίηση
Λογισμικού Οδηγούμενη από Ελέγχους
Κατιρτζής Νικόλαος
Υπό την επίβλεψη του Ανδρέα Λ. Συμεωνίδη
Επίκουρου καθηγητή ΤΗΜΜΥ ΑΠΘ
Θεσσαλονίκη, 2014
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ
ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
ΕΡΓΑΣΤΗΡΙΟ ΕΥΦΥΩΝ ΣΥΣΤΗΜΑΤΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ
 Εισαγωγή
 Ορισμός προβλήματος
 State of the art
 Σκοπός της διπλωματικής
 Ανάλυση του συστήματος
 Πειράματα
 Συμπεράσματα – Μελλοντική
εργασία
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Δομή παρουσίασης
Κατιρτζής Νικόλαος 15-10-2014 2
Εισαγωγή
• Ψηφιακή Εποχή (Εποχή της Πληροφορίας)
• Μετάδοση της πληροφορίας μέσω του διαδικτύου
• Free software – Open Source software
• Δημιουργία αποθηκών λογισμικού
• Επαναχρησιμοποίηση κώδικα
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Κατιρτζής Νικόλαος 15-10-2014 3
Ορισμός προβλήματος
CSE results
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Κατιρτζής Νικόλαος 15-10-2014 4
Παρόμοια συστήματα
 Code Conjurer
 CodeGenie
 S6
 FAST
Μειονεκτήματα
‒ Δε λειτουργούν πλέον!
‒ Δε χρησιμοποιούν ανανεώσιμες αποθήκες
λογισμικού
‒ Δεν έχουν υλοποιήσει κάποιο μοντέλο
mining, αλλά αναζητούν στις CSEs και
εκτελούν τα αποτελέσματα
‒ Δεν αντιμετωπίζουν τις διπλοεγγραφές
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
State of the art
Κατιρτζής Νικόλαος 15-10-2014 5
Σκοπός της διπλωματικής
Ενίσχυση του πεδίου των RSSE συστημάτων:
– Επισκόπηση της βιβλιογραφίας
– Ανάπτυξη δικού μας RSSE συστήματος για την αναζήτηση κώδικα
Το σύστημά μας:
 Έχει ως βάση το TDD
 Κάνει χρήση αναπτυσσόμενων αποθηκών λογισμικού
 Κάνει χρήση ενός μοντέλου mining-scoring, επικεντρωμένου στο πρόβλημα που τίθεται
‒ Ανάκτηση Πληροφορίας (IR)
‒ Επεξεργασία Φυσικής Γλώσσας (NLP)
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Κατιρτζής Νικόλαος 15-10-2014 6
Δομή του συστήματος
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
PARSER
TESTER
Code
Test Case
Signature
DOWNLOADER
MINER
Files
Top files
Results
Local
repo
Κατιρτζής Νικόλαος 15-10-2014 7
Δομή του συστήματος
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
PARSER
TESTER
Code
Test Case
Signature
DOWNLOADER
MINER
Files
Top files
Results
Local
repo
Κατιρτζής Νικόλαος 15-10-2014 8
1
2
3
4
public class Stack{
public void push(Object o){}
public Object pop(){}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
<files>
<file>
<package />
<imports />
<class>
<name>Stack</name>
<method>
<name>push</name>
<block>no</block>
<parameters>
<type>Object</type>
</parameters>
<return>void</return>
</method>
<method>
<name>pop</name>
<block>no</block>
<parameters />
<return>Object</return>
</method>
</class>
</file>
</files>
• Υλοποίηση με τον Java Compiler του JDK της Oracle
• Εξαγωγή υπογραφής σε μορφή xml
Parser
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Κατιρτζής Νικόλαος 15-10-2014 9
Δομή του συστήματος
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
PARSER
TESTER
Code
Test Case
Signature
DOWNLOADER
MINER
Files
Top files
Results
Local
repo
Κατιρτζής Νικόλαος 15-10-2014 10
Αναζήτηση στο GitHub
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Searchcode 30 users + 870
top Github users
Possible
queries
GitHub
Possible queries
Top 100 results
If no results found, restart
search using next query
Snippets Miner
Snippets
If no-valuable results found, restart
search using next query
Κατιρτζής Νικόλαος 15-10-2014 11
Regex: ([w<>[]]+)?s+(w+)?((.*?))s*(throwss*w+)*{
return type name parameters body
existence
Snippets Miner
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Score fileisDuplicate score>0
file
Yes
No Yes
No
Main
list
Back-up
list
Κατιρτζής Νικόλαος 15-10-2014 12
• Η AGORA βασίζεται στην πλατφόρμα αναζήτησης Elasticsearch
• Περιλαμβάνει ένα μεγάλο αριθμό από projects του GitHub
• Διαθέτει API και δίνει τη δυνατότητα αναζήτησης με δομημένο ερώτημα
Αναζήτηση στην AGORA
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
AGORA
Query Top 200
results
Κατιρτζής Νικόλαος 15-10-2014 13
Δομή του συστήματος
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
PARSER
TESTER
Code
Test Case
Signature
DOWNLOADER
MINER
Files
Top files
Results
Local
repo
Κατιρτζής Νικόλαος 15-10-2014 14
Preprocessor:
 Σκοπός είναι η απομάκρυνση των διπλοαρχείων (duplicates)
 Χρήση του md5 hash (exact duplicates)
Miner
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Preprocessor
Files Unique
files Scorer Postprocessor
Scores Top results
Κατιρτζής Νικόλαος 15-10-2014 15
Αρχικά, γίνεται αναπαράσταση των δεδομένων:
Ακολουθεί η δημιουργία διανυσμάτων (tf):
Έπειτα, γίνεται η βαθμολόγηση των διανυσμάτων, με χρήση μετρικών όπως η ομοιότητα
συνημιτόνου
Κείμενο Περιεχόμενο
𝒅 𝟏 bag of words of
𝒅 𝟐 items bag
𝒏 𝟏 𝒏 𝟐 𝒏 𝟑 𝒏 𝟒
𝒅 𝟏 1 2 1 0
𝒅 𝟐 1 0 0 1
Κείμενο Διάνυσμα
𝒅 𝟏 1,2,1,0
𝒅 𝟐 1,0,0,1
Μοντέλο Διανυσματικού Χώρου (VSM)
Term Term Index(𝑡)
bag 1
of 2
words 3
items 4
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Κατιρτζής Νικόλαος 15-10-2014 16
Στη δική μας έκδοση:
 Κάθε συνιστώσα έχει τιμή στο εύρος [0,1]
 Λεξικό ≈ υπογραφή ερωτήματος
 Το εκάστοτε διάνυσμα του ερωτήματος χρησιμοποιείται ως βάση κατά τη σύγκριση και όλες
οι συνιστώσες του είναι ίσες με 1
Διάνυσμα σε:
• Επίπεδο μεθόδου: 𝑚 = (𝑚𝑛, 𝑟𝑡, 𝑝𝑡)
• Επίπεδο κλάσης: 𝑐 = 𝑐𝑛, 𝑚𝑠1, … , 𝑚𝑠 𝑛
Μοντέλο που υλοποιήθηκε
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
method
class
file
Κατιρτζής Νικόλαος 15-10-2014 17
Βαθμολόγηση strings
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Tokenizing
Stop words
removal
Short words
removal
Stemming
Levenshtein similarity
N-gram similarity
Tanimoto similarity
string
String or
tokens
Score
[0,1]
Κατιρτζής Νικόλαος 15-10-2014 18
Ομοιότητα συνημιτόνου…. Ή μήπως όχι;
Συντελεστής Tanimoto:
𝛵 𝑋, 𝑌 =
𝑋 ∗ 𝑌
𝑋
2
+ 𝑌
2
− 𝑋 ∗ 𝑌
0.5 1.0
X
Y0.5
1.0
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Βαθμολόγηση διανυσμάτων
Κατιρτζής Νικόλαος 15-10-2014 19
Μέθοδος
ερωτήματος
𝒔𝒎𝒊
Μέθοδος αρχείου
αποθήκης
𝒙𝒎𝒊
int add(int i, int j) 0 int add(int i, int j) 0
int subtract(int i, int j) 1 int multiply(int i, int j) 1
int multiply(int i, int j) 2
int divide(int i, int j) 3
𝒔𝒎𝒊 𝒙𝒎𝒊 score
0
0 1.0
1 0.5
1
0 0.5
1 0.5
2
0 0.5
1 1.0
3
0 0.5
1 0.5
𝑢 = [1.0, 0.0, 1.0, 0.0
Stable Marriage Problem
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
𝒔𝒎𝒊 𝒙𝒎𝒊 score𝒔𝒎𝒊 𝒙𝒎𝒊 score
0 0 1.0
𝒔𝒎𝒊 𝒙𝒎𝒊 score
0 0 1.0
2 1 1.0
𝒔𝒎𝒊 𝒙𝒎𝒊 score
0 0 1.0
2 1 1.0
0 1 0.5
𝒔𝒎𝒊 𝒙𝒎𝒊 score
0 0 1.0
2 1 1.0
0 1 0.5
1 0 0.5
𝒔𝒎𝒊 𝒙𝒎𝒊 score
0 0 1.0
2 1 1.0
0 1 0.5
1 0 0.5
1 1 0.5
2 0 1.0
2 1 0.5
3 0 0.5
3 1 0.5
Κατιρτζής Νικόλαος 15-10-2014 20
Δομή του συστήματος
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
PARSER
TESTER
Code
Test Case
Signature
DOWNLOADER
MINER
Files
Top files
Results
Local
repo
Κατιρτζής Νικόλαος 15-10-2014 21
Tester
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Create
projects
Copy src/
test files
Modify src/
test files
Compile src/
test files
Run test cases
Src files
Test file
Results
Κατιρτζής Νικόλαος 15-10-2014 22
Μετρικές αξιολόγησης αποτελεσμάτων
+Μήκος αναζήτησης (search length): Ο αριθμός των μη σχετικών αποτελεσμάτων που πρέπει να δει
ο χρήστης, έως ότου βρει Ν σχετικά.
Η σχετικότητα όμως κατά τον Mooney είναι… σχετική!
Αν όμως passed ≈ σχετικό αποτέλεσμα;
Recall
𝑪 = 𝐶𝑜𝑚𝑝𝑖𝑙𝑎𝑏𝑙𝑒 =
1
𝑁
#𝑐𝑜𝑚𝑝𝑖𝑙𝑎𝑏𝑙𝑒
𝑷 = 𝑃𝑎𝑠𝑠𝑒𝑑 =
1
𝑁
#𝑝𝑎𝑠𝑠𝑒𝑑
Precision
%
𝑷
𝑪
=
% 𝑃
% 𝐶
∗ 100%
%
𝑷
𝑪
=
1
𝑁
#𝑝𝑎𝑠𝑠𝑒𝑑
#𝑐𝑜𝑚𝑝𝑖𝑙𝑎𝑏𝑙𝑒
∗ 100%
Πειράματα
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Κατιρτζής Νικόλαος 15-10-2014 23
Σύστημα
Μετρική
GitHub AGORA Ohloh
RSSE
(AGORA)
RSSE
(GitHub)
𝑪𝒐𝒎𝒑𝒊𝒍𝒂𝒃𝒍𝒆
(% 𝑪)
4.875
(16.25%)
6.06
(20.2%)
4.563
(15.21%)
6.938
(23.1%)
7.125
(23.8%)
𝑷𝒂𝒔𝒔𝒆𝒅
(% 𝑷)
0.875
(2.9%)
2.563
(8.5%)
2.563
(8.5%)
4.5
(15%)
3.938
(13.1%)
%
𝑷
𝑪
17.9% 42.3% 56.2% 64.9% 55.3%
%
𝑷
𝑪
20.2% 33.1% 41.2% 50.1% 47.5%
MSL 21.813 14.563 11.188 10.5 7.563
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Πείραμα 1 – Σύγκριση με CSEs
Κατιρτζής Νικόλαος 15-10-2014 24
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Πείραμα 1 – Σύγκριση με CSEs
Κατιρτζής Νικόλαος 15-10-2014 25
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Πείραμα 1 – Σύγκριση με CSEs
Κατιρτζής Νικόλαος 15-10-2014 26
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Πείραμα 2 – Σύγκριση με το FAST
Κατιρτζής Νικόλαος 15-10-2014 27
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Πείραμα 3 – Σύγκριση με το Code Conjurer
Κατιρτζής Νικόλαος 15-10-2014 28
Αντιλαμβανόμαστε ότι:
 Δεν αρκούν οι Μηχανές Αναζήτησης Κώδικα για το πρόβλημά μας
 Δεν αρκεί η απλή εφαρμογή του VSM
 Είναι σημαντική η πληροφορία της εκτελεσιμότητας
Πιθανές επεκτάσεις:
 Προσθήκη άλλων CSEs
 Διευκόλυνση του χρήστη στη δημιουργία ερωτήματος (χρήση λέξεων κλειδιών)
 Feedback χρήστη
 Επέκταση σε άλλες γλώσσες προγραμματισμού
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Συμπεράσματα – Μελλοντικές Επεκτάσεις
Κατιρτζής Νικόλαος 15-10-2014 29
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Welcome to Mantissa!
Κατιρτζής Νικόλαος 15-10-2014 30
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Ερώτημα
Κατιρτζής Νικόλαος 15-10-2014 31
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Αποτελέσματα!
Κατιρτζής Νικόλαος 15-10-2014 32
Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους
Ερωτήσεις;
Κατιρτζής Νικόλαος 15-10-2014 33

Νικόλαος Κατιρτζής 7185

  • 1.
    Εξόρυξη Δεδομένων απόΑποθήκες Λογισμικού για Επαναχρησιμοποίηση Λογισμικού Οδηγούμενη από Ελέγχους Κατιρτζής Νικόλαος Υπό την επίβλεψη του Ανδρέα Λ. Συμεωνίδη Επίκουρου καθηγητή ΤΗΜΜΥ ΑΠΘ Θεσσαλονίκη, 2014 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΕΥΦΥΩΝ ΣΥΣΤΗΜΑΤΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ
  • 2.
     Εισαγωγή  Ορισμόςπροβλήματος  State of the art  Σκοπός της διπλωματικής  Ανάλυση του συστήματος  Πειράματα  Συμπεράσματα – Μελλοντική εργασία Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Δομή παρουσίασης Κατιρτζής Νικόλαος 15-10-2014 2
  • 3.
    Εισαγωγή • Ψηφιακή Εποχή(Εποχή της Πληροφορίας) • Μετάδοση της πληροφορίας μέσω του διαδικτύου • Free software – Open Source software • Δημιουργία αποθηκών λογισμικού • Επαναχρησιμοποίηση κώδικα Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Κατιρτζής Νικόλαος 15-10-2014 3
  • 4.
    Ορισμός προβλήματος CSE results Εξόρυξηαπό Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Κατιρτζής Νικόλαος 15-10-2014 4
  • 5.
    Παρόμοια συστήματα  CodeConjurer  CodeGenie  S6  FAST Μειονεκτήματα ‒ Δε λειτουργούν πλέον! ‒ Δε χρησιμοποιούν ανανεώσιμες αποθήκες λογισμικού ‒ Δεν έχουν υλοποιήσει κάποιο μοντέλο mining, αλλά αναζητούν στις CSEs και εκτελούν τα αποτελέσματα ‒ Δεν αντιμετωπίζουν τις διπλοεγγραφές Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους State of the art Κατιρτζής Νικόλαος 15-10-2014 5
  • 6.
    Σκοπός της διπλωματικής Ενίσχυσητου πεδίου των RSSE συστημάτων: – Επισκόπηση της βιβλιογραφίας – Ανάπτυξη δικού μας RSSE συστήματος για την αναζήτηση κώδικα Το σύστημά μας:  Έχει ως βάση το TDD  Κάνει χρήση αναπτυσσόμενων αποθηκών λογισμικού  Κάνει χρήση ενός μοντέλου mining-scoring, επικεντρωμένου στο πρόβλημα που τίθεται ‒ Ανάκτηση Πληροφορίας (IR) ‒ Επεξεργασία Φυσικής Γλώσσας (NLP) Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Κατιρτζής Νικόλαος 15-10-2014 6
  • 7.
    Δομή του συστήματος Εξόρυξηαπό Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους PARSER TESTER Code Test Case Signature DOWNLOADER MINER Files Top files Results Local repo Κατιρτζής Νικόλαος 15-10-2014 7
  • 8.
    Δομή του συστήματος Εξόρυξηαπό Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους PARSER TESTER Code Test Case Signature DOWNLOADER MINER Files Top files Results Local repo Κατιρτζής Νικόλαος 15-10-2014 8
  • 9.
    1 2 3 4 public class Stack{ publicvoid push(Object o){} public Object pop(){} } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <?xml version="1.0" encoding="UTF-8"?> <files> <file> <package /> <imports /> <class> <name>Stack</name> <method> <name>push</name> <block>no</block> <parameters> <type>Object</type> </parameters> <return>void</return> </method> <method> <name>pop</name> <block>no</block> <parameters /> <return>Object</return> </method> </class> </file> </files> • Υλοποίηση με τον Java Compiler του JDK της Oracle • Εξαγωγή υπογραφής σε μορφή xml Parser Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Κατιρτζής Νικόλαος 15-10-2014 9
  • 10.
    Δομή του συστήματος Εξόρυξηαπό Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους PARSER TESTER Code Test Case Signature DOWNLOADER MINER Files Top files Results Local repo Κατιρτζής Νικόλαος 15-10-2014 10
  • 11.
    Αναζήτηση στο GitHub Εξόρυξηαπό Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Searchcode 30 users + 870 top Github users Possible queries GitHub Possible queries Top 100 results If no results found, restart search using next query Snippets Miner Snippets If no-valuable results found, restart search using next query Κατιρτζής Νικόλαος 15-10-2014 11
  • 12.
    Regex: ([w<>[]]+)?s+(w+)?((.*?))s*(throwss*w+)*{ return typename parameters body existence Snippets Miner Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Score fileisDuplicate score>0 file Yes No Yes No Main list Back-up list Κατιρτζής Νικόλαος 15-10-2014 12
  • 13.
    • Η AGORAβασίζεται στην πλατφόρμα αναζήτησης Elasticsearch • Περιλαμβάνει ένα μεγάλο αριθμό από projects του GitHub • Διαθέτει API και δίνει τη δυνατότητα αναζήτησης με δομημένο ερώτημα Αναζήτηση στην AGORA Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους AGORA Query Top 200 results Κατιρτζής Νικόλαος 15-10-2014 13
  • 14.
    Δομή του συστήματος Εξόρυξηαπό Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους PARSER TESTER Code Test Case Signature DOWNLOADER MINER Files Top files Results Local repo Κατιρτζής Νικόλαος 15-10-2014 14
  • 15.
    Preprocessor:  Σκοπός είναιη απομάκρυνση των διπλοαρχείων (duplicates)  Χρήση του md5 hash (exact duplicates) Miner Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Preprocessor Files Unique files Scorer Postprocessor Scores Top results Κατιρτζής Νικόλαος 15-10-2014 15
  • 16.
    Αρχικά, γίνεται αναπαράστασητων δεδομένων: Ακολουθεί η δημιουργία διανυσμάτων (tf): Έπειτα, γίνεται η βαθμολόγηση των διανυσμάτων, με χρήση μετρικών όπως η ομοιότητα συνημιτόνου Κείμενο Περιεχόμενο 𝒅 𝟏 bag of words of 𝒅 𝟐 items bag 𝒏 𝟏 𝒏 𝟐 𝒏 𝟑 𝒏 𝟒 𝒅 𝟏 1 2 1 0 𝒅 𝟐 1 0 0 1 Κείμενο Διάνυσμα 𝒅 𝟏 1,2,1,0 𝒅 𝟐 1,0,0,1 Μοντέλο Διανυσματικού Χώρου (VSM) Term Term Index(𝑡) bag 1 of 2 words 3 items 4 Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Κατιρτζής Νικόλαος 15-10-2014 16
  • 17.
    Στη δική μαςέκδοση:  Κάθε συνιστώσα έχει τιμή στο εύρος [0,1]  Λεξικό ≈ υπογραφή ερωτήματος  Το εκάστοτε διάνυσμα του ερωτήματος χρησιμοποιείται ως βάση κατά τη σύγκριση και όλες οι συνιστώσες του είναι ίσες με 1 Διάνυσμα σε: • Επίπεδο μεθόδου: 𝑚 = (𝑚𝑛, 𝑟𝑡, 𝑝𝑡) • Επίπεδο κλάσης: 𝑐 = 𝑐𝑛, 𝑚𝑠1, … , 𝑚𝑠 𝑛 Μοντέλο που υλοποιήθηκε Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους method class file Κατιρτζής Νικόλαος 15-10-2014 17
  • 18.
    Βαθμολόγηση strings Εξόρυξη απόΑποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Tokenizing Stop words removal Short words removal Stemming Levenshtein similarity N-gram similarity Tanimoto similarity string String or tokens Score [0,1] Κατιρτζής Νικόλαος 15-10-2014 18
  • 19.
    Ομοιότητα συνημιτόνου…. Ήμήπως όχι; Συντελεστής Tanimoto: 𝛵 𝑋, 𝑌 = 𝑋 ∗ 𝑌 𝑋 2 + 𝑌 2 − 𝑋 ∗ 𝑌 0.5 1.0 X Y0.5 1.0 Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Βαθμολόγηση διανυσμάτων Κατιρτζής Νικόλαος 15-10-2014 19
  • 20.
    Μέθοδος ερωτήματος 𝒔𝒎𝒊 Μέθοδος αρχείου αποθήκης 𝒙𝒎𝒊 int add(inti, int j) 0 int add(int i, int j) 0 int subtract(int i, int j) 1 int multiply(int i, int j) 1 int multiply(int i, int j) 2 int divide(int i, int j) 3 𝒔𝒎𝒊 𝒙𝒎𝒊 score 0 0 1.0 1 0.5 1 0 0.5 1 0.5 2 0 0.5 1 1.0 3 0 0.5 1 0.5 𝑢 = [1.0, 0.0, 1.0, 0.0 Stable Marriage Problem Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους 𝒔𝒎𝒊 𝒙𝒎𝒊 score𝒔𝒎𝒊 𝒙𝒎𝒊 score 0 0 1.0 𝒔𝒎𝒊 𝒙𝒎𝒊 score 0 0 1.0 2 1 1.0 𝒔𝒎𝒊 𝒙𝒎𝒊 score 0 0 1.0 2 1 1.0 0 1 0.5 𝒔𝒎𝒊 𝒙𝒎𝒊 score 0 0 1.0 2 1 1.0 0 1 0.5 1 0 0.5 𝒔𝒎𝒊 𝒙𝒎𝒊 score 0 0 1.0 2 1 1.0 0 1 0.5 1 0 0.5 1 1 0.5 2 0 1.0 2 1 0.5 3 0 0.5 3 1 0.5 Κατιρτζής Νικόλαος 15-10-2014 20
  • 21.
    Δομή του συστήματος Εξόρυξηαπό Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους PARSER TESTER Code Test Case Signature DOWNLOADER MINER Files Top files Results Local repo Κατιρτζής Νικόλαος 15-10-2014 21
  • 22.
    Tester Εξόρυξη από ΑποθήκεςΛογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Create projects Copy src/ test files Modify src/ test files Compile src/ test files Run test cases Src files Test file Results Κατιρτζής Νικόλαος 15-10-2014 22
  • 23.
    Μετρικές αξιολόγησης αποτελεσμάτων +Μήκοςαναζήτησης (search length): Ο αριθμός των μη σχετικών αποτελεσμάτων που πρέπει να δει ο χρήστης, έως ότου βρει Ν σχετικά. Η σχετικότητα όμως κατά τον Mooney είναι… σχετική! Αν όμως passed ≈ σχετικό αποτέλεσμα; Recall 𝑪 = 𝐶𝑜𝑚𝑝𝑖𝑙𝑎𝑏𝑙𝑒 = 1 𝑁 #𝑐𝑜𝑚𝑝𝑖𝑙𝑎𝑏𝑙𝑒 𝑷 = 𝑃𝑎𝑠𝑠𝑒𝑑 = 1 𝑁 #𝑝𝑎𝑠𝑠𝑒𝑑 Precision % 𝑷 𝑪 = % 𝑃 % 𝐶 ∗ 100% % 𝑷 𝑪 = 1 𝑁 #𝑝𝑎𝑠𝑠𝑒𝑑 #𝑐𝑜𝑚𝑝𝑖𝑙𝑎𝑏𝑙𝑒 ∗ 100% Πειράματα Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Κατιρτζής Νικόλαος 15-10-2014 23
  • 24.
    Σύστημα Μετρική GitHub AGORA Ohloh RSSE (AGORA) RSSE (GitHub) 𝑪𝒐𝒎𝒑𝒊𝒍𝒂𝒃𝒍𝒆 (%𝑪) 4.875 (16.25%) 6.06 (20.2%) 4.563 (15.21%) 6.938 (23.1%) 7.125 (23.8%) 𝑷𝒂𝒔𝒔𝒆𝒅 (% 𝑷) 0.875 (2.9%) 2.563 (8.5%) 2.563 (8.5%) 4.5 (15%) 3.938 (13.1%) % 𝑷 𝑪 17.9% 42.3% 56.2% 64.9% 55.3% % 𝑷 𝑪 20.2% 33.1% 41.2% 50.1% 47.5% MSL 21.813 14.563 11.188 10.5 7.563 Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Πείραμα 1 – Σύγκριση με CSEs Κατιρτζής Νικόλαος 15-10-2014 24
  • 25.
    Εξόρυξη από ΑποθήκεςΛογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Πείραμα 1 – Σύγκριση με CSEs Κατιρτζής Νικόλαος 15-10-2014 25
  • 26.
    Εξόρυξη από ΑποθήκεςΛογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Πείραμα 1 – Σύγκριση με CSEs Κατιρτζής Νικόλαος 15-10-2014 26
  • 27.
    Εξόρυξη από ΑποθήκεςΛογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Πείραμα 2 – Σύγκριση με το FAST Κατιρτζής Νικόλαος 15-10-2014 27
  • 28.
    Εξόρυξη από ΑποθήκεςΛογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Πείραμα 3 – Σύγκριση με το Code Conjurer Κατιρτζής Νικόλαος 15-10-2014 28
  • 29.
    Αντιλαμβανόμαστε ότι:  Δεναρκούν οι Μηχανές Αναζήτησης Κώδικα για το πρόβλημά μας  Δεν αρκεί η απλή εφαρμογή του VSM  Είναι σημαντική η πληροφορία της εκτελεσιμότητας Πιθανές επεκτάσεις:  Προσθήκη άλλων CSEs  Διευκόλυνση του χρήστη στη δημιουργία ερωτήματος (χρήση λέξεων κλειδιών)  Feedback χρήστη  Επέκταση σε άλλες γλώσσες προγραμματισμού Εξόρυξη από Αποθήκες Λογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Συμπεράσματα – Μελλοντικές Επεκτάσεις Κατιρτζής Νικόλαος 15-10-2014 29
  • 30.
    Εξόρυξη από ΑποθήκεςΛογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Welcome to Mantissa! Κατιρτζής Νικόλαος 15-10-2014 30
  • 31.
    Εξόρυξη από ΑποθήκεςΛογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Ερώτημα Κατιρτζής Νικόλαος 15-10-2014 31
  • 32.
    Εξόρυξη από ΑποθήκεςΛογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Αποτελέσματα! Κατιρτζής Νικόλαος 15-10-2014 32
  • 33.
    Εξόρυξη από ΑποθήκεςΛογισμικού για Επαναχρησιμοποίηση Οδηγούμενη από Ελέγχους Ερωτήσεις; Κατιρτζής Νικόλαος 15-10-2014 33

Editor's Notes

  • #2 Mining Software Repositories for Test-Driven Reuse
  • #4 Ψηφιακή Εποχή (τέλη δεκαετίας 80) -> έκρηξη πληροφοριών -> εύκολη μετάδοση μέσω διαδικτύου Free Software Foundation, Open-Source Initiative, Αποθήκες Λογισμικού Επαναχρησιμοποίηση λογισμικού (McIlroy)
  • #5 Σχηματισμός ερωτήματος Λίστα αποτελεσμάτων
  • #6 RSSE συστήματα TDD
  • #8 Python + Java (για Parser) Αναζήτηση για Java
  • #14 Ανερχόμενη CSE Επαυξημένες δυνατότητες για αναζήτηση API για επικοινωνία με clients
  • #18 Το διάνυσμα μεθόδου έχει ως συνιστώσες το score για το όνομα, τον τύπο και τις παραμέτρους της μεθόδου. Τα διανύσματα μεθόδων των αρχείων της αποθήκης θα συγκριθούν με αυτά του ερωτήματος και για κάθε μέθοδο του ερωτήματος θα προκύψει ένα score. Τα scores αυτά θα αποτελέσουν τις συνιστώσες του διανύσματος του επόμενου επιπέδου, του διανύσματος κλάσης, το οποίο περιλαμβάνει και μία συνιστώσα για το όνομα της κλάσης.