13. .....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
API Miner
.
Φιλοσοφία του Miner...
..
......
Υπόθεση: Σημαντικά έργα λογισμικού κάνουν χρήση ευρέως αποδεκτών και
υψηλής ποιότητας APIs.
Πόρισμα: Ένα τμήμα κώδικα που χρησιμοποιεί API calls όμοια με
σημαντικά έργα λογισμικού, εμπεριέχει και το ίδιο καλής ποιότητας API calls.
.
Λειτουργία του API Miner
..
......
...1 Συγκεντρώνουμε τοπικά τα δημοφιλέστερα projects της Java στο
GitHub.
...2 Σχηματίζουμε ένα λεξιλόγιο από API calls που εμφανίζονται στα
παραπάνω projects.
...3 Εξετάζουμε αν τα API calls που περιέχουν τα snippets ανήκουν στο
λεξιλόγιο.
...4 Απορρίπτουμε τα snippets που περιέχουν περισσότερα άγνωστα API
calls από ένα κατώφλι.
Καραγιαννόπουλος Γ. RSSE Development Θεσσαλονίκη 2017 11 / 29
29. .....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Αξιολόγηση Συστήματος
Η σύγκριση της αποδοτικότητας του συστήματος έγινε με τη βοήθεια
πειραμάτων ως προς τη μηχανή αναζήτησης της Google.
Συγκεντρώθηκε ένα σύνολο ερωτημάτων τα οποία ήταν κοινά σε όλα τα
πειράματα.
Index Query Clusters Snippets Snippets/Cluster
1 How to read CSV file 3 44 14.7
2 How to generate MD5 hash code 4 43 10.8
3 How to upload file to FTP 3 13 4.3
4 How to split string 5 53 10.6
5 How to draw text graphics 3 40 13.3
6 How to play audio file 5 79 15.8
7 How to substitute string 3 31 10.3
8 How to convert collection to an array 4 49 12.3
9 How to send email 3 46 15.3
10 How to connect to a JDBC database 5 44 8.8
11 How to execute select statement JDBC database 3 59 19.7
12 How to initialize thread 3 33 11.0
13 How to write binary data 3 35 11.7
14 How to read ZIP archive 2 32 16.0
15 How to send packet via UDP 2 31 15.5
Καραγιαννόπουλος Γ. RSSE Development Θεσσαλονίκη 2017 20 / 29
30. .....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Αξιολόγηση Συστήματος
Η σύγκριση της αποδοτικότητας του συστήματος έγινε με τη βοήθεια
πειραμάτων ως προς τη μηχανή αναζήτησης της Google.
Συγκεντρώθηκε ένα σύνολο ερωτημάτων τα οποία ήταν κοινά σε όλα τα
πειράματα.
Index Query Clusters Snippets Snippets/Cluster
1 How to read CSV file 3 44 14.7
2 How to generate MD5 hash code 4 43 10.8
3 How to upload file to FTP 3 13 4.3
4 How to split string 5 53 10.6
5 How to draw text graphics 3 40 13.3
6 How to play audio file 5 79 15.8
7 How to substitute string 3 31 10.3
8 How to convert collection to an array 4 49 12.3
9 How to send email 3 46 15.3
10 How to connect to a JDBC database 5 44 8.8
11 How to execute select statement JDBC database 3 59 19.7
12 How to initialize thread 3 33 11.0
13 How to write binary data 3 35 11.7
14 How to read ZIP archive 2 32 16.0
15 How to send packet via UDP 2 31 15.5
Καραγιαννόπουλος Γ. RSSE Development Θεσσαλονίκη 2017 20 / 29
31. .....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Πείραμα 1ο - Ακρίβεια Αποτελεσμάτων
Μετρικές όπως το precision p και το recall r δεν είναι εύκολο να
εφαρμοστούν.
Θέλουμε να λάβουμε υπόψιν και τη σειρά με την οποία εμφανίζονται τα
αποτελέσματα.
.
Average Precision
..
......
Το Average Precision ισούται με το ολοκλήρωμα p(r), r ∈ [0, 1].
AveP =
∫ 1
0
p(r)dr =
n∑
k=1
P(k)∆r(k) =
∑n
k=1(P(k) · rel(k))
number of relevants documents
.
Mean Average Precision
..
......
Έστω ένα πλήθος ερωτημάτων Q τότε το Mean Average Precision θα ισούται:
MAP =
∑Q
q=1 AveP(q)
Q
Καραγιαννόπουλος Γ. RSSE Development Θεσσαλονίκη 2017 21 / 29
32. .....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Πείραμα 1ο - Ακρίβεια Αποτελεσμάτων
Μετρικές όπως το precision p και το recall r δεν είναι εύκολο να
εφαρμοστούν.
Θέλουμε να λάβουμε υπόψιν και τη σειρά με την οποία εμφανίζονται τα
αποτελέσματα.
.
Average Precision
..
......
Το Average Precision ισούται με το ολοκλήρωμα p(r), r ∈ [0, 1].
AveP =
∫ 1
0
p(r)dr =
n∑
k=1
P(k)∆r(k) =
∑n
k=1(P(k) · rel(k))
number of relevants documents
.
Mean Average Precision
..
......
Έστω ένα πλήθος ερωτημάτων Q τότε το Mean Average Precision θα ισούται:
MAP =
∑Q
q=1 AveP(q)
Q
Καραγιαννόπουλος Γ. RSSE Development Θεσσαλονίκη 2017 21 / 29
39. .....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Συμπεράσματα - Μελλοντική Εργασία
.
Συμπεράσματα
..
......
Ο μηχανικός λογισμικού μπορεί να εξοικονομήσει χρόνο μέσω των
RSSEs.
Ο έλεγχος αναγνωσιμότητας βοηθάει στον εντοπισμό ποιοτικού κώδικα.
Η ομαδοποίηση των αποτελεσμάτων μπορεί να είναι πιο αποδοτική από
την παρουσίαση τους ως μία ενιαία λίστα.
.
Μελλοντική Εργασία
..
......
Προσθήκη επιπλέον μηχανών αναζήτησης.
Δημιουργία βάσης δεδομένων με συχνά χρησιμοποιούμενα
αποτελέσματα.
Ενσωμάτωση συστήματος σε κάποιο προγραμματιστικό περιβάλλον.
Επέκταση και σε άλλες γλώσσες προγραμματισμού.
Καραγιαννόπουλος Γ. RSSE Development Θεσσαλονίκη 2017 26 / 29
40. .....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
....
.
....
.
.....
.
....
.
.....
.
....
.
....
.
Συμπεράσματα - Μελλοντική Εργασία
.
Συμπεράσματα
..
......
Ο μηχανικός λογισμικού μπορεί να εξοικονομήσει χρόνο μέσω των
RSSEs.
Ο έλεγχος αναγνωσιμότητας βοηθάει στον εντοπισμό ποιοτικού κώδικα.
Η ομαδοποίηση των αποτελεσμάτων μπορεί να είναι πιο αποδοτική από
την παρουσίαση τους ως μία ενιαία λίστα.
.
Μελλοντική Εργασία
..
......
Προσθήκη επιπλέον μηχανών αναζήτησης.
Δημιουργία βάσης δεδομένων με συχνά χρησιμοποιούμενα
αποτελέσματα.
Ενσωμάτωση συστήματος σε κάποιο προγραμματιστικό περιβάλλον.
Επέκταση και σε άλλες γλώσσες προγραμματισμού.
Καραγιαννόπουλος Γ. RSSE Development Θεσσαλονίκη 2017 26 / 29