SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

Similar a 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
 

Similar a 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...
 

Más 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
 

Más 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
 
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...
 

Último

CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordAsst.prof M.Gokilavani
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...Call Girls in Nagpur High Profile
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escortsranjana rawat
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Christo Ananth
 
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...ranjana rawat
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlysanyuktamishra911
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Dr.Costas Sachpazis
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSISrknatarajan
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Christo Ananth
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSKurinjimalarL3
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performancesivaprakash250
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSRajkumarAkumalla
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)Suman Mia
 
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
 

Último (20)

CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
 
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...
 

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