SlideShare une entreprise Scribd logo
1  sur  27
Εξαγωγή Ιδιωμάτων από
Αποθετήρια Κώδικα
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Τομέας Ηλεκτρονικής και Υπολογιστών
Ομάδα Ευφυών Συστημάτων
και Τεχνολογίας Λογισμικού
Επίβλεψη:
Αν. Καθηγητής, Ανδρέας Συμεωνίδης
Υποψήφιος Διδάκτωρ, Θωμάς Καρανικιώτης
Εκπόνηση:
Αργύρης Παπουδάκης
ΑΕΜ: 8600
Θεσσαλονίκη, Νοέμβριος 2020
Δομή Παρουσίασης
1. Εισαγωγή
2. Μεθοδολογία Συστήματος
3. Αξιολόγηση Αποτελεσμάτων
4. Συμπεράσματα και Μελλοντικές Επεκτάσεις
5. Ερωτήσεις
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 2
Ιδιώματα
• Τμήματα κώδικα (snippets) που έχουν ένα συγκεκριμένο σημασιολογικό σκοπό και
επαναλαμβάνονται σε έργα λογισμικού υψηλού επιπέδου.
• Τα ιδιώματα φαίνονται ‘’φυσικά’’ σε έναν έμπειρο προγραμματιστή.
Idiomatic Non-Idiomatic
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 3
Σημασία Ιδιωμάτων
• Προσφέρουν αναγνωσιμότητα και μεγαλύτερη δυνατότητα επαναχρησιμοποίησης
συμβάλλοντας στην ανάπτυξη λογισμικού υψηλού επιπέδου
• Μερικά από τα πλέον δημοφιλή IDE έχουν εργαλεία που παρέχουν την δυνατότητα
εισαγωγής ιδιωμάτων:
 Live Templates built-in της JetBrain
 Bing Code plug-in του Visual Studio
 SnipMatch plug-in του Eclipse
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 4
Σκοπός της διπλωματικής εργασίας
Τα εργαλεία αυτά περιέχουν ιδιώματα τα οποία:
• έχουν εισαχθεί χειροκίνητα (SnipMatch, Live Templates)
• η εύρεση τους έχει πραγματοποιηθεί με αναζήτηση στο διαδίκτυο (Bing Code)
Ανάγκη για αυτόματη εξαγωγή ιδιωμάτων από αποθετήρια κώδικα
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 5
Μεθοδολογία
Βασική ιδέα υλοποίησης:
1. Εστιάσαμε σε τμήματα κώδικα που αποτελούν εντολές ελέγχου ροής (If, For, Try, While,
Do και Switch)
2. Ομαδοποίηση των snippets
3. Επιλογή των βέλτιστων ομάδων και εύρεση του πιο αντιπροσωπευτικού σημείου για
κάθε μία από αυτές (centroid)
4. Μετατροπή του centroid σε μια γενικευμένη μορφή με στόχο την ευκολότερη
χρησιμοποίηση των ιδιωμάτων
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 6
Αρχιτεκτονική Συστήματος
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 7
Δημιουργία Συνόλου Δεδομένων
Επιλέγονται τα 1500 δημοφιλέστερα repositories σε γλώσσα προγραμματισμού Java:
• Αναπαράσταση των αρχείων Java ως Αφηρημένα Συντακτικά Δέντρα (ASTs)
• Εύρεση των snippets που περιέχουν εντολές ελέγχου ροής
• Δημιουργία συνόλου δεδομένων με εγγραφές που περιέχουν snippets τόσο σε μορφή
κώδικα όσο και σε μορφή δέντρου AST
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 8
Προεπεξεργασία Δεδομένων
• Επιλέγουμε να διατηρήσουμε μόνο τα snippets με αριθμό γραμμών μικρότερο ή ίσο του
7
• Διαχωρίζουμε τα τμήματα κώδικα σε έξι υποομάδες με βάση τον τύπο της εντολής
ελέγχου ροής
• Αρχική ομαδοποίηση (preclustering) των snippets με βάση τη πολυπλοκότητα
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 9
Υποσύνολα
Δεδομένων
Αριθμός
Εγγραφών
If 1.034.259
For 252.587
Try 246.632
While 55.438
Switch 10.482
Do 3.482
Προεπεξεργασία Δεδομένων
Ο αρχικός διαχωρισμός πραγματοποιείται με βάση τις μετρικές:
1. Cyclomatic Complexity, αριθμός ανεξάρτητων μονοπατιών του snippet
2. Συνολικός αριθμός μεταβλητών και μεθόδων του snippet
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 10
Υποσύνολα
Δεδομένων
Αριθμός
Υποομάδων
Μέσος Αριθμός
Εγγραφών
If 19 51.287
For 10 25.258
Try 11 22.421
Σχήμα Ομοιότητας
• Δημιουργία πινάκων ομοιότητας για κάθε μία από τις υποομάδες
• Η σύγκριση των snippets πραγματοποιείται με βάση την απόσταση των AST
• Τα Αφηρημένα Συντακτικά Δέντρα χρειάζεται να μετατραπούν σε ordered labelled trees
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 11
<IfStatement>
<SimpleName>resultSetFinished</SimpleName>
<Block>
<ReturnStatement>
<BooleanLiteral>false</BooleanLiteral>
</ReturnStatement>
</Block>
</IfStatement>
Αλγόριθμος pq-grams
• Χρησιμοποιείται για την μέτρηση της απόστασης δύο δέντρων
• Βασίζεται σε δύο παραμέτρους p, q
• Για κάθε ένα από τα δέντρα σχηματίζεται ένα extended tree:
 p-1 null κόμβοι εισάγονται στη ρίζα του δέντρου ως πρόγονοι
 q-1 null κόμβοι εισάγονται ως παιδιά, πριν το πρώτο και μετά το τελευταίο παιδί, κάθε
ενδιάμεσου κόμβου (non-leaf node)
 q παιδιά εισάγονται σε κάθε φύλλο του δέντρου
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 12
Αλγόριθμος pq-grams
• Για κάθε extended tree υπολογίζονται τα pq-grams trees
• Ως pq-gram ορίζεται το δέντρο που περιέχει ένα κόμβο με p-1 προγόνους και q παιδιά
• Παραδείγματα υποδέντρων 2,3-grams trees του T1
2,3
• Όλα τα pq-grams ενός δέντρου αποτελούν το προφίλ του δέντρου και συμβολίζεται με
Pp,q
Τ
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 13
Αλγόριθμος pq-grams
• Τα κοινά pq-grams trees που περιέχονται στα προφίλ των δέντρων καθορίζουν την μεταξύ
τους απόσταση σύμφωνα με την παρακάτω σχέση:
𝑑𝑝,𝑞
𝑇1, 𝑇2 = 1 − 2
𝑃𝑝,𝑞
𝑇1 ∩ 𝑃𝑝,𝑞
𝑇2
𝑃𝑝,𝑞 𝑇1 ∪ 𝑃𝑝,𝑞 𝑇2
𝑃𝑝,𝑞
(𝑇1) ∩ 𝑃𝑝,𝑞
(𝑇2) : αριθμός κοινών pq-grams δέντρων που έχουν τα T1, T2
𝑃𝑝,𝑞
(𝑇1) ∪ 𝑃𝑝,𝑞
(𝑇2) : το άθροισμα των pq-grams που έχουν τα T1, T2
• Αντίστοιχα η ομοιότητα μεταξύ δύο δέντρων δίνεται από τη σχέση:
𝑠𝑖𝑚𝑝,𝑞
𝑇1, 𝑇2 = 2
𝑃𝑝,𝑞
𝑇1 ∩ 𝑃𝑝,𝑞
𝑇2
𝑃𝑝,𝑞 𝑇1 ∪ 𝑃𝑝,𝑞 𝑇2
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 14
Φιλτράρισμα Εγγραφών
Με βάση τους πίνακες ομοιότητας που υπολογίστηκαν πραγματοποιείται αφαίρεση των
διπλοεγγραφών:
• Snippets με ομοιότητα μονάδα που ανήκουν στο ίδιο repository
• Snippets με ομοιότητα μονάδα που ανήκουν σε διαφορετικά repository αλλα
προέρχονται από το ίδιο java package το οποίο μπορεί να χρησιμοποιείται από πολλά
αποθετήρια κώδικα
Η διαδικασία του φιλτραρίσματος συμβάλει σημαντικά ώστε οι ομάδες που θα προκύψουν
στη συνέχεια να περιέχουν snippets που θα προέρχονται από μεγάλο αριθμό διαφορετικών
προγραμματιστών.
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 15
Ομαδοποίηση
• Συγχωνευτική Ιεραρχική ομαδοποίηση για κάθε έναν από τους πίνακες ομοιότητας
• Υπολογισμός απόστασης ομάδων με τη μέθοδο Average Linkage
𝑑 𝑟, 𝑠 =
1
𝑛𝑟𝑛𝑠
𝑖=1
𝑛𝑟
𝑗=1
𝑛𝑠
(𝑑(𝑟𝑖 , 𝑠𝑗))
• Επιλογή βέλτιστου αριθμού ομάδων με τη χρήση της μετρικής average silhouette
 η μέση απόσταση του σημείου από τα υπόλοιπα σημεία της ομάδας a 𝑖 =
1
𝐶𝑖 −1 𝑗∈𝐶𝑖
𝑗≠𝑖
𝑑(𝑖, 𝑗)
 η μέση απόσταση του σημείου από το αμέσως επόμενο όμοιο cluster 𝑏 𝑖 = min
𝑘≠𝑖
1
𝐶𝑘
𝑗∈𝐶𝑘
𝑑(𝑖, 𝑗)
𝑠 𝑖 =
𝑏 𝑖 − 𝑎(𝑖)
m𝑎𝑥 𝑎 𝑖 , 𝑏(𝑖)
• Βέλτιστη τιμή αριθμού ομάδων 𝑘𝑜𝑝𝑡𝑖𝑚𝑎𝑙 = 𝑘 ∶ m𝑎𝑥 ( 𝑠(𝑘))
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 16
Επιλογή Ομάδων
Η επιλογή των βέλτιστων ομάδων πραγματοποιείται με τη χρήση τριών παραμέτρων:
• Μέγεθος ομάδων
• Συνοχή που παρουσιάζουν οι ομάδες
𝑐𝑜ℎ𝑒𝑠𝑖𝑜𝑛 = 1 −
1
𝐶 − 1
𝑥∈𝐶
𝑑(𝑥, 𝑐𝑒𝑛𝑡𝑟𝑜𝑖𝑑)
• Αριθμός διαφορετικών repositories
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 17
Cluster
Type
Size
Threshold
Cohesion
Threshold
Repositories
Threshold
If 80 0.7 8
For 100 0.7 40
Try 100 0.7 30
While 50 0.7 30
Do 25 0.7 5
Switch 80 0.7 10
Γενικευμένη Μορφή Ιδιωμάτων
• Τα ιδιώματα χρειάζεται να περιέχουν ένα πλήθος μεταδεδομένων
• Για κάθε ένα από τα tokens του centroid υπολογίζεται η συχνότητα με την οποία
εμφανίζεται στα snippets του clusters
• Επιλέγουμε να διατηρήσουμε μόνο αυτά με συχνότητα μεγαλύτερη από 0.5
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 18
Παραδείγματα Ιδιωμάτων
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 19
Centroids Idioms abstract form
while ((line=reader.readLine()) != null) {
result.add(line);
}
while ((line=$(object1).readLine()) != null) {
$(object2).$(method1)(line);
}
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
$(object1).$(method1)();
} catch ($(exception) e) {
e.printStackTrace();
}
if (value == null) {
throw new IllegalArgumentException("Cannot
generate variable name for an Object return type
with null value");
}
if ($(object1) == null) {
throw new $(exception1)($(string1))
}
Αξιολόγηση Ομάδων
Οι ομάδες που χρησιμοποιήθηκαν για την εξαγωγή των ιδιωμάτων παρουσιάζουν τα εξής
χαρακτηριστικά:
• Έχουν κατά μέσο όρο 297 snippets
• Μέση τιμή συνοχής 0.81
• Μέσο αριθμό διαφορετικών repositories 59
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 20
Αξιολόγηση Ιδιωμάτων
• Για τον έλεγχο της χρησιμότητας των ιδιωμάτων χρησιμοποιήθηκαν 500 αποθετήρια
κώδικα (test set)
• Συγκρίνουμε τη γενικευμένη μορφή των ιδιωμάτων του συστήματος με τα snippets που
περιέχονται στο σύνολο αξιολόγησης
• Με βάση τη σύγκριση αυτή υπολογίζουμε δύο βασικά στατιστικά:
 Σε πόσα repositories χρησιμοποιείται το κάθε ιδίωμα
 Πόσα ιδιώματα χρησιμοποιεί το κάθε αποθετήριο κώδικα
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 21
Αξιολόγηση Ιδιωμάτων
• Τα ιδιώματα χρησιμοποιούνται κατά μέσο όρο σε 27 διαφορετικά repositories του test
set
• Μόνο δύο από τα ιδιώματα δεν βρέθηκαν να χρησιμοποιούνται σε κανένα αποθετήριο
κώδικα
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 22
Αξιολόγηση Ιδιωμάτων
• Το 81% από τα repositories χρησιμοποιούν τουλάχιστον ένα από τα ιδιώματα του
συστήματος
• Κατά μέσο όρο χρησιμοποιούν 4 ιδιώματα
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 23
Συμπεράσματα
Αναπτύξαμε ένα σύστημα αυτόματης εξαγωγής ιδιωμάτων για το οποίο ισχύει ότι:
• Αξιοποιεί τόσο τη δομική όσο και τη σημασιολογική πληροφορία των snippets
• Δημιουργεί ομάδες από τις οποίες προκύπτουν ενδιαφέροντα τμήματα κώδικα με σαφές
σημασιολογικό περιεχόμενο
• Μετατρέπει τα ιδιώματα σε μια γενικευμένη μορφή ώστε το κάθε snippet να
προσαρμόζεται στις ανάγκες του προγραμματιστή
• Τα ιδιώματα που εξαγάγαμε χρησιμοποιούνται σε ικανοποιητικό βαθμό από τα
repositories του test set
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 24
Μελλοντική Εργασία
• Επέκταση μεθοδολογίας ώστε να περιλαμβάνει και τμήματα κώδικα που δεν αποτελούν
εντολές ελέγχου ροής
• Παραλληλοποίηση των συγκρίσεων με τη χρήση GPU
• Προσθήκη περιγραφής για κάθε ιδίωμα, ώστε να είναι ευκολότερη η εισαγωγή τους σε
ένα σύστημα προτάσεων
• Εφαρμογή της μεθοδολογίας σε γλώσσες προγραμματισμού λιγότερο δομημένες έτσι
ώστε να συγκριθούν τα τελικά αποτελέσματα
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 25
Ευχαριστίες
Θα ήθελα να ευχαριστήσω θερμά τους:
• κ. Ανδρέα Συμεωνίδη
• κ. Θωμά Καρανικιώτη
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 26
Σας ευχαριστώ για την προσοχή σας
Ερωτήσεις;
Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 27

Contenu connexe

Similaire à Idioms Extraction from Code Repositories

Summarizing Software API Usage Examples Using Clustering Techniques
Summarizing Software API Usage Examples Using Clustering TechniquesSummarizing Software API Usage Examples Using Clustering Techniques
Summarizing Software API Usage Examples Using Clustering TechniquesNikos Katirtzis
 
Matsoukas Vasileios Thesis Presentation
Matsoukas Vasileios Thesis PresentationMatsoukas Vasileios Thesis Presentation
Matsoukas Vasileios Thesis PresentationISSEL
 
How the Postgres Query Optimizer Works
How the Postgres Query Optimizer WorksHow the Postgres Query Optimizer Works
How the Postgres Query Optimizer WorksEDB
 
Towards better software quality assurance by providing intelligent support
Towards better software quality assurance by providing intelligent supportTowards better software quality assurance by providing intelligent support
Towards better software quality assurance by providing intelligent supportConcordia University
 
Reducing Redundancies in Multi-Revision Code Analysis
Reducing Redundancies in Multi-Revision Code AnalysisReducing Redundancies in Multi-Revision Code Analysis
Reducing Redundancies in Multi-Revision Code AnalysisSebastiano Panichella
 
BioBankCloud: Machine Learning on Genomics + GA4GH @ Med at Scale
BioBankCloud: Machine Learning on Genomics + GA4GH  @ Med at ScaleBioBankCloud: Machine Learning on Genomics + GA4GH  @ Med at Scale
BioBankCloud: Machine Learning on Genomics + GA4GH @ Med at ScaleAndy Petrella
 
Setting Up Sumo Logic - Apr 2017
Setting Up Sumo Logic - Apr 2017Setting Up Sumo Logic - Apr 2017
Setting Up Sumo Logic - Apr 2017Sumo Logic
 
Doctoral Thesis Dissertation 2014-03-20 @PoliMi
Doctoral Thesis Dissertation 2014-03-20 @PoliMiDoctoral Thesis Dissertation 2014-03-20 @PoliMi
Doctoral Thesis Dissertation 2014-03-20 @PoliMiDavide Chicco
 
Implementation of query optimization for reducing run time
Implementation of query optimization for reducing run timeImplementation of query optimization for reducing run time
Implementation of query optimization for reducing run timeAlexander Decker
 
New Features in Apache Pinot
New Features in Apache PinotNew Features in Apache Pinot
New Features in Apache PinotSiddharth Teotia
 
CCC-Bicluster Analysis for Time Series Gene Expression Data
CCC-Bicluster Analysis for Time Series Gene Expression DataCCC-Bicluster Analysis for Time Series Gene Expression Data
CCC-Bicluster Analysis for Time Series Gene Expression DataIRJET Journal
 
PPT on Python - illustrating Python for BBA, B.Tech
PPT on Python - illustrating Python for BBA, B.TechPPT on Python - illustrating Python for BBA, B.Tech
PPT on Python - illustrating Python for BBA, B.Techssuser2678ab
 
An LSTM-Based Neural Network Architecture for Model Transformations
An LSTM-Based Neural Network Architecture for Model TransformationsAn LSTM-Based Neural Network Architecture for Model Transformations
An LSTM-Based Neural Network Architecture for Model TransformationsJordi Cabot
 
A tale of bug prediction in software development
A tale of bug prediction in software developmentA tale of bug prediction in software development
A tale of bug prediction in software developmentMartin Pinzger
 
1212 regular meeting
1212 regular meeting1212 regular meeting
1212 regular meetingmarxliouville
 
Text clustering
Text clusteringText clustering
Text clusteringKU Leuven
 
International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)IJERD Editor
 
AWS re:Invent 2016: Real-Time Data Exploration and Analytics with Amazon Elas...
AWS re:Invent 2016: Real-Time Data Exploration and Analytics with Amazon Elas...AWS re:Invent 2016: Real-Time Data Exploration and Analytics with Amazon Elas...
AWS re:Invent 2016: Real-Time Data Exploration and Analytics with Amazon Elas...Amazon Web Services
 

Similaire à Idioms Extraction from Code Repositories (20)

Summarizing Software API Usage Examples Using Clustering Techniques
Summarizing Software API Usage Examples Using Clustering TechniquesSummarizing Software API Usage Examples Using Clustering Techniques
Summarizing Software API Usage Examples Using Clustering Techniques
 
Matsoukas Vasileios Thesis Presentation
Matsoukas Vasileios Thesis PresentationMatsoukas Vasileios Thesis Presentation
Matsoukas Vasileios Thesis Presentation
 
BIRTE-13-Kawashima
BIRTE-13-KawashimaBIRTE-13-Kawashima
BIRTE-13-Kawashima
 
How the Postgres Query Optimizer Works
How the Postgres Query Optimizer WorksHow the Postgres Query Optimizer Works
How the Postgres Query Optimizer Works
 
Towards better software quality assurance by providing intelligent support
Towards better software quality assurance by providing intelligent supportTowards better software quality assurance by providing intelligent support
Towards better software quality assurance by providing intelligent support
 
Reducing Redundancies in Multi-Revision Code Analysis
Reducing Redundancies in Multi-Revision Code AnalysisReducing Redundancies in Multi-Revision Code Analysis
Reducing Redundancies in Multi-Revision Code Analysis
 
BioBankCloud: Machine Learning on Genomics + GA4GH @ Med at Scale
BioBankCloud: Machine Learning on Genomics + GA4GH  @ Med at ScaleBioBankCloud: Machine Learning on Genomics + GA4GH  @ Med at Scale
BioBankCloud: Machine Learning on Genomics + GA4GH @ Med at Scale
 
Setting Up Sumo Logic - Apr 2017
Setting Up Sumo Logic - Apr 2017Setting Up Sumo Logic - Apr 2017
Setting Up Sumo Logic - Apr 2017
 
Doctoral Thesis Dissertation 2014-03-20 @PoliMi
Doctoral Thesis Dissertation 2014-03-20 @PoliMiDoctoral Thesis Dissertation 2014-03-20 @PoliMi
Doctoral Thesis Dissertation 2014-03-20 @PoliMi
 
Implementation of query optimization for reducing run time
Implementation of query optimization for reducing run timeImplementation of query optimization for reducing run time
Implementation of query optimization for reducing run time
 
New Features in Apache Pinot
New Features in Apache PinotNew Features in Apache Pinot
New Features in Apache Pinot
 
CCC-Bicluster Analysis for Time Series Gene Expression Data
CCC-Bicluster Analysis for Time Series Gene Expression DataCCC-Bicluster Analysis for Time Series Gene Expression Data
CCC-Bicluster Analysis for Time Series Gene Expression Data
 
PPT on Python - illustrating Python for BBA, B.Tech
PPT on Python - illustrating Python for BBA, B.TechPPT on Python - illustrating Python for BBA, B.Tech
PPT on Python - illustrating Python for BBA, B.Tech
 
An LSTM-Based Neural Network Architecture for Model Transformations
An LSTM-Based Neural Network Architecture for Model TransformationsAn LSTM-Based Neural Network Architecture for Model Transformations
An LSTM-Based Neural Network Architecture for Model Transformations
 
A tale of bug prediction in software development
A tale of bug prediction in software developmentA tale of bug prediction in software development
A tale of bug prediction in software development
 
FivaTech
FivaTechFivaTech
FivaTech
 
1212 regular meeting
1212 regular meeting1212 regular meeting
1212 regular meeting
 
Text clustering
Text clusteringText clustering
Text clustering
 
International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)
 
AWS re:Invent 2016: Real-Time Data Exploration and Analytics with Amazon Elas...
AWS re:Invent 2016: Real-Time Data Exploration and Analytics with Amazon Elas...AWS re:Invent 2016: Real-Time Data Exploration and Analytics with Amazon Elas...
AWS re:Invent 2016: Real-Time Data Exploration and Analytics with Amazon Elas...
 

Plus de ISSEL

Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...ISSEL
 
Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...ISSEL
 
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...ISSEL
 
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...ISSEL
 
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...ISSEL
 
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής ΝοημοσύνηςΑνάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής ΝοημοσύνηςISSEL
 
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptxΑνάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptxISSEL
 
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...ISSEL
 
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...ISSEL
 
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...ISSEL
 
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...ISSEL
 
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνΔημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνISSEL
 
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταΕξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταISSEL
 
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...ISSEL
 
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ISSEL
 
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...ISSEL
 
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούΕξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούISSEL
 
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςΑνάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςISSEL
 
Camera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environmentsCamera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environmentsISSEL
 
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...ISSEL
 

Plus de ISSEL (20)

Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...Implementation of a platform for assessing indoor spaces regarding their frie...
Implementation of a platform for assessing indoor spaces regarding their frie...
 
Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...Autonomous car position calculation with particle filters using traffic data ...
Autonomous car position calculation with particle filters using traffic data ...
 
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...
 
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
 
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...
 
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής ΝοημοσύνηςΑνάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής Νοημοσύνης
 
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptxΑνάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptx
 
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...
 
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
 
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...
 
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...
 
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνΔημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας Ισχυρισμών
 
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταΕξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµατα
 
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...Ανάπτυξη Μηχανισμών Αυτοματοποίησης των  διαδικασιών κατασκευής συστημάτων λο...
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...
 
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...
 
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...
 
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούΕξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικού
 
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςΑνάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία Εφαρµογής
 
Camera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environmentsCamera-based localization of annotated objects in indoor environments
Camera-based localization of annotated objects in indoor environments
 
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
 

Dernier

MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTINGMANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTINGSIVASHANKAR N
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSSIVASHANKAR N
 
UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduitsrknatarajan
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfKamal Acharya
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxpranjaldaimarysona
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...Call Girls in Nagpur High Profile
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxupamatechverse
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...ranjana rawat
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Call Girls in Nagpur High Profile
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations120cr0395
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...roncy bisnoi
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINESIVASHANKAR N
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 

Dernier (20)

MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTINGMANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
 
UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduits
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 

Idioms Extraction from Code Repositories

  • 1. Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τομέας Ηλεκτρονικής και Υπολογιστών Ομάδα Ευφυών Συστημάτων και Τεχνολογίας Λογισμικού Επίβλεψη: Αν. Καθηγητής, Ανδρέας Συμεωνίδης Υποψήφιος Διδάκτωρ, Θωμάς Καρανικιώτης Εκπόνηση: Αργύρης Παπουδάκης ΑΕΜ: 8600 Θεσσαλονίκη, Νοέμβριος 2020
  • 2. Δομή Παρουσίασης 1. Εισαγωγή 2. Μεθοδολογία Συστήματος 3. Αξιολόγηση Αποτελεσμάτων 4. Συμπεράσματα και Μελλοντικές Επεκτάσεις 5. Ερωτήσεις Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 2
  • 3. Ιδιώματα • Τμήματα κώδικα (snippets) που έχουν ένα συγκεκριμένο σημασιολογικό σκοπό και επαναλαμβάνονται σε έργα λογισμικού υψηλού επιπέδου. • Τα ιδιώματα φαίνονται ‘’φυσικά’’ σε έναν έμπειρο προγραμματιστή. Idiomatic Non-Idiomatic Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 3
  • 4. Σημασία Ιδιωμάτων • Προσφέρουν αναγνωσιμότητα και μεγαλύτερη δυνατότητα επαναχρησιμοποίησης συμβάλλοντας στην ανάπτυξη λογισμικού υψηλού επιπέδου • Μερικά από τα πλέον δημοφιλή IDE έχουν εργαλεία που παρέχουν την δυνατότητα εισαγωγής ιδιωμάτων:  Live Templates built-in της JetBrain  Bing Code plug-in του Visual Studio  SnipMatch plug-in του Eclipse Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 4
  • 5. Σκοπός της διπλωματικής εργασίας Τα εργαλεία αυτά περιέχουν ιδιώματα τα οποία: • έχουν εισαχθεί χειροκίνητα (SnipMatch, Live Templates) • η εύρεση τους έχει πραγματοποιηθεί με αναζήτηση στο διαδίκτυο (Bing Code) Ανάγκη για αυτόματη εξαγωγή ιδιωμάτων από αποθετήρια κώδικα Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 5
  • 6. Μεθοδολογία Βασική ιδέα υλοποίησης: 1. Εστιάσαμε σε τμήματα κώδικα που αποτελούν εντολές ελέγχου ροής (If, For, Try, While, Do και Switch) 2. Ομαδοποίηση των snippets 3. Επιλογή των βέλτιστων ομάδων και εύρεση του πιο αντιπροσωπευτικού σημείου για κάθε μία από αυτές (centroid) 4. Μετατροπή του centroid σε μια γενικευμένη μορφή με στόχο την ευκολότερη χρησιμοποίηση των ιδιωμάτων Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 6
  • 7. Αρχιτεκτονική Συστήματος Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 7
  • 8. Δημιουργία Συνόλου Δεδομένων Επιλέγονται τα 1500 δημοφιλέστερα repositories σε γλώσσα προγραμματισμού Java: • Αναπαράσταση των αρχείων Java ως Αφηρημένα Συντακτικά Δέντρα (ASTs) • Εύρεση των snippets που περιέχουν εντολές ελέγχου ροής • Δημιουργία συνόλου δεδομένων με εγγραφές που περιέχουν snippets τόσο σε μορφή κώδικα όσο και σε μορφή δέντρου AST Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 8
  • 9. Προεπεξεργασία Δεδομένων • Επιλέγουμε να διατηρήσουμε μόνο τα snippets με αριθμό γραμμών μικρότερο ή ίσο του 7 • Διαχωρίζουμε τα τμήματα κώδικα σε έξι υποομάδες με βάση τον τύπο της εντολής ελέγχου ροής • Αρχική ομαδοποίηση (preclustering) των snippets με βάση τη πολυπλοκότητα Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 9 Υποσύνολα Δεδομένων Αριθμός Εγγραφών If 1.034.259 For 252.587 Try 246.632 While 55.438 Switch 10.482 Do 3.482
  • 10. Προεπεξεργασία Δεδομένων Ο αρχικός διαχωρισμός πραγματοποιείται με βάση τις μετρικές: 1. Cyclomatic Complexity, αριθμός ανεξάρτητων μονοπατιών του snippet 2. Συνολικός αριθμός μεταβλητών και μεθόδων του snippet Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 10 Υποσύνολα Δεδομένων Αριθμός Υποομάδων Μέσος Αριθμός Εγγραφών If 19 51.287 For 10 25.258 Try 11 22.421
  • 11. Σχήμα Ομοιότητας • Δημιουργία πινάκων ομοιότητας για κάθε μία από τις υποομάδες • Η σύγκριση των snippets πραγματοποιείται με βάση την απόσταση των AST • Τα Αφηρημένα Συντακτικά Δέντρα χρειάζεται να μετατραπούν σε ordered labelled trees Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 11 <IfStatement> <SimpleName>resultSetFinished</SimpleName> <Block> <ReturnStatement> <BooleanLiteral>false</BooleanLiteral> </ReturnStatement> </Block> </IfStatement>
  • 12. Αλγόριθμος pq-grams • Χρησιμοποιείται για την μέτρηση της απόστασης δύο δέντρων • Βασίζεται σε δύο παραμέτρους p, q • Για κάθε ένα από τα δέντρα σχηματίζεται ένα extended tree:  p-1 null κόμβοι εισάγονται στη ρίζα του δέντρου ως πρόγονοι  q-1 null κόμβοι εισάγονται ως παιδιά, πριν το πρώτο και μετά το τελευταίο παιδί, κάθε ενδιάμεσου κόμβου (non-leaf node)  q παιδιά εισάγονται σε κάθε φύλλο του δέντρου Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 12
  • 13. Αλγόριθμος pq-grams • Για κάθε extended tree υπολογίζονται τα pq-grams trees • Ως pq-gram ορίζεται το δέντρο που περιέχει ένα κόμβο με p-1 προγόνους και q παιδιά • Παραδείγματα υποδέντρων 2,3-grams trees του T1 2,3 • Όλα τα pq-grams ενός δέντρου αποτελούν το προφίλ του δέντρου και συμβολίζεται με Pp,q Τ Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 13
  • 14. Αλγόριθμος pq-grams • Τα κοινά pq-grams trees που περιέχονται στα προφίλ των δέντρων καθορίζουν την μεταξύ τους απόσταση σύμφωνα με την παρακάτω σχέση: 𝑑𝑝,𝑞 𝑇1, 𝑇2 = 1 − 2 𝑃𝑝,𝑞 𝑇1 ∩ 𝑃𝑝,𝑞 𝑇2 𝑃𝑝,𝑞 𝑇1 ∪ 𝑃𝑝,𝑞 𝑇2 𝑃𝑝,𝑞 (𝑇1) ∩ 𝑃𝑝,𝑞 (𝑇2) : αριθμός κοινών pq-grams δέντρων που έχουν τα T1, T2 𝑃𝑝,𝑞 (𝑇1) ∪ 𝑃𝑝,𝑞 (𝑇2) : το άθροισμα των pq-grams που έχουν τα T1, T2 • Αντίστοιχα η ομοιότητα μεταξύ δύο δέντρων δίνεται από τη σχέση: 𝑠𝑖𝑚𝑝,𝑞 𝑇1, 𝑇2 = 2 𝑃𝑝,𝑞 𝑇1 ∩ 𝑃𝑝,𝑞 𝑇2 𝑃𝑝,𝑞 𝑇1 ∪ 𝑃𝑝,𝑞 𝑇2 Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 14
  • 15. Φιλτράρισμα Εγγραφών Με βάση τους πίνακες ομοιότητας που υπολογίστηκαν πραγματοποιείται αφαίρεση των διπλοεγγραφών: • Snippets με ομοιότητα μονάδα που ανήκουν στο ίδιο repository • Snippets με ομοιότητα μονάδα που ανήκουν σε διαφορετικά repository αλλα προέρχονται από το ίδιο java package το οποίο μπορεί να χρησιμοποιείται από πολλά αποθετήρια κώδικα Η διαδικασία του φιλτραρίσματος συμβάλει σημαντικά ώστε οι ομάδες που θα προκύψουν στη συνέχεια να περιέχουν snippets που θα προέρχονται από μεγάλο αριθμό διαφορετικών προγραμματιστών. Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 15
  • 16. Ομαδοποίηση • Συγχωνευτική Ιεραρχική ομαδοποίηση για κάθε έναν από τους πίνακες ομοιότητας • Υπολογισμός απόστασης ομάδων με τη μέθοδο Average Linkage 𝑑 𝑟, 𝑠 = 1 𝑛𝑟𝑛𝑠 𝑖=1 𝑛𝑟 𝑗=1 𝑛𝑠 (𝑑(𝑟𝑖 , 𝑠𝑗)) • Επιλογή βέλτιστου αριθμού ομάδων με τη χρήση της μετρικής average silhouette  η μέση απόσταση του σημείου από τα υπόλοιπα σημεία της ομάδας a 𝑖 = 1 𝐶𝑖 −1 𝑗∈𝐶𝑖 𝑗≠𝑖 𝑑(𝑖, 𝑗)  η μέση απόσταση του σημείου από το αμέσως επόμενο όμοιο cluster 𝑏 𝑖 = min 𝑘≠𝑖 1 𝐶𝑘 𝑗∈𝐶𝑘 𝑑(𝑖, 𝑗) 𝑠 𝑖 = 𝑏 𝑖 − 𝑎(𝑖) m𝑎𝑥 𝑎 𝑖 , 𝑏(𝑖) • Βέλτιστη τιμή αριθμού ομάδων 𝑘𝑜𝑝𝑡𝑖𝑚𝑎𝑙 = 𝑘 ∶ m𝑎𝑥 ( 𝑠(𝑘)) Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 16
  • 17. Επιλογή Ομάδων Η επιλογή των βέλτιστων ομάδων πραγματοποιείται με τη χρήση τριών παραμέτρων: • Μέγεθος ομάδων • Συνοχή που παρουσιάζουν οι ομάδες 𝑐𝑜ℎ𝑒𝑠𝑖𝑜𝑛 = 1 − 1 𝐶 − 1 𝑥∈𝐶 𝑑(𝑥, 𝑐𝑒𝑛𝑡𝑟𝑜𝑖𝑑) • Αριθμός διαφορετικών repositories Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 17 Cluster Type Size Threshold Cohesion Threshold Repositories Threshold If 80 0.7 8 For 100 0.7 40 Try 100 0.7 30 While 50 0.7 30 Do 25 0.7 5 Switch 80 0.7 10
  • 18. Γενικευμένη Μορφή Ιδιωμάτων • Τα ιδιώματα χρειάζεται να περιέχουν ένα πλήθος μεταδεδομένων • Για κάθε ένα από τα tokens του centroid υπολογίζεται η συχνότητα με την οποία εμφανίζεται στα snippets του clusters • Επιλέγουμε να διατηρήσουμε μόνο αυτά με συχνότητα μεγαλύτερη από 0.5 Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 18
  • 19. Παραδείγματα Ιδιωμάτων Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 19 Centroids Idioms abstract form while ((line=reader.readLine()) != null) { result.add(line); } while ((line=$(object1).readLine()) != null) { $(object2).$(method1)(line); } try { out.close(); } catch (IOException e) { e.printStackTrace(); } try { $(object1).$(method1)(); } catch ($(exception) e) { e.printStackTrace(); } if (value == null) { throw new IllegalArgumentException("Cannot generate variable name for an Object return type with null value"); } if ($(object1) == null) { throw new $(exception1)($(string1)) }
  • 20. Αξιολόγηση Ομάδων Οι ομάδες που χρησιμοποιήθηκαν για την εξαγωγή των ιδιωμάτων παρουσιάζουν τα εξής χαρακτηριστικά: • Έχουν κατά μέσο όρο 297 snippets • Μέση τιμή συνοχής 0.81 • Μέσο αριθμό διαφορετικών repositories 59 Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 20
  • 21. Αξιολόγηση Ιδιωμάτων • Για τον έλεγχο της χρησιμότητας των ιδιωμάτων χρησιμοποιήθηκαν 500 αποθετήρια κώδικα (test set) • Συγκρίνουμε τη γενικευμένη μορφή των ιδιωμάτων του συστήματος με τα snippets που περιέχονται στο σύνολο αξιολόγησης • Με βάση τη σύγκριση αυτή υπολογίζουμε δύο βασικά στατιστικά:  Σε πόσα repositories χρησιμοποιείται το κάθε ιδίωμα  Πόσα ιδιώματα χρησιμοποιεί το κάθε αποθετήριο κώδικα Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 21
  • 22. Αξιολόγηση Ιδιωμάτων • Τα ιδιώματα χρησιμοποιούνται κατά μέσο όρο σε 27 διαφορετικά repositories του test set • Μόνο δύο από τα ιδιώματα δεν βρέθηκαν να χρησιμοποιούνται σε κανένα αποθετήριο κώδικα Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 22
  • 23. Αξιολόγηση Ιδιωμάτων • Το 81% από τα repositories χρησιμοποιούν τουλάχιστον ένα από τα ιδιώματα του συστήματος • Κατά μέσο όρο χρησιμοποιούν 4 ιδιώματα Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 23
  • 24. Συμπεράσματα Αναπτύξαμε ένα σύστημα αυτόματης εξαγωγής ιδιωμάτων για το οποίο ισχύει ότι: • Αξιοποιεί τόσο τη δομική όσο και τη σημασιολογική πληροφορία των snippets • Δημιουργεί ομάδες από τις οποίες προκύπτουν ενδιαφέροντα τμήματα κώδικα με σαφές σημασιολογικό περιεχόμενο • Μετατρέπει τα ιδιώματα σε μια γενικευμένη μορφή ώστε το κάθε snippet να προσαρμόζεται στις ανάγκες του προγραμματιστή • Τα ιδιώματα που εξαγάγαμε χρησιμοποιούνται σε ικανοποιητικό βαθμό από τα repositories του test set Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 24
  • 25. Μελλοντική Εργασία • Επέκταση μεθοδολογίας ώστε να περιλαμβάνει και τμήματα κώδικα που δεν αποτελούν εντολές ελέγχου ροής • Παραλληλοποίηση των συγκρίσεων με τη χρήση GPU • Προσθήκη περιγραφής για κάθε ιδίωμα, ώστε να είναι ευκολότερη η εισαγωγή τους σε ένα σύστημα προτάσεων • Εφαρμογή της μεθοδολογίας σε γλώσσες προγραμματισμού λιγότερο δομημένες έτσι ώστε να συγκριθούν τα τελικά αποτελέσματα Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 25
  • 26. Ευχαριστίες Θα ήθελα να ευχαριστήσω θερμά τους: • κ. Ανδρέα Συμεωνίδη • κ. Θωμά Καρανικιώτη Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 26
  • 27. Σας ευχαριστώ για την προσοχή σας Ερωτήσεις; Νοέμβριος 2020 Εξαγωγή Ιδιωμάτων από Αποθετήρια Κώδικα 27