Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών
Μετασχηματισμού Κώδικα
Μπαλτζή Αλεξάνδρα Υπό την επίβλεψη του Επίκουρου Καθηγητή
Ανδρέα Λ. Συμεωνίδη και του υποψήφιου Διδάκτορα Θεμιστοκλή Διαμαντόπουλου
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ
Εισαγωγή
Ορισμός προβλήματος State of the art Σκοπός της διπλωματικής
Ανάλυση του συστήματοςΠειράματαΣυμπεράσματα – Μελλοντική εργασία
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Δομή παρουσίασης
2
• Εποχή της Πληροφορίας (Εποχή των Υπολογιστών)• Ελεύθερη ανταλλαγή και μεταφορά πληροφορίας• Επιτάχυνση ροής πληροφοριών μέσω του Διαδικτύου• Επαναχρησιμοποίηση στοιχείων λογισμικού - Τεχνολογία
Λογισμικού• Free Software – Open Source Software• Δημιουργία αποθηκών λογισμικού
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Εισαγωγή
3
• Μείωση χρόνου συγγραφής - βελτίωση ποιότητας κώδικα • Μηχανές Αναζήτησης Κώδικα (Code Search Engines)
- Προσπάθεια για σχηματισμό ερωτήματος - Προσπάθεια για έλεγχο λειτουργικότητας
• Συστήματα Συστάσεων στην Τεχνολογία Λογισμικού (Recommendation Systems in Software Engineering)
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Ορισμός προβλήματος
4
State of the art
O κύκλος του Test Driven Reuse Παρόμοια συστήματαCode ConjurerCodeGenie S6 FAST
Μειονεκτήματα• Δεν είναι πλέον λειτουργικά • Δε χρησιμοποιούν αναπτυσσόμενες αποθήκες
λογισμικού• Δεν επεξεργάζονται τα αποτελέσματα και δεν τα
προσαρμόζουν στον κώδικα του προγραμματιστή• Δεν ελέγχουν τη λειτουργικότητα των αποτελεσμάτων• Δεν αντιμετωπίζουν τις διπλοεγγραφές
5
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Συνεισφορά στον ευρύτερο χώρο της Τεχνολογίας Λογισμικού και των RSSEs:• Αναφορά βιβλιογραφίας• Ανάπτυξη του δικού μας RSSE συστήματος
Το σύστημά μας: Έχει ως βάση το TDD Κάνει χρήση αναπτυσσόμενων αποθηκών λογισμικού Κάνει χρήση ενός μοντέλου mining-scoring Ελέγχει τη λειτουργικότητα των αποτελεσμάτων Πραγματοποιεί μετατροπές στον κώδικα Παρουσιάζει τα αποτελέσματα στο χρήστη
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Σκοπός της διπλωματικής
6
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Δομή του συστήματος
7
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Δομή του συστήματος
8
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Parser
9
• Εξαγωγή της υπογραφής του ερωτήματος του χρήστη σε xml
• Χρήση του εργαλείου srcML
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Δομή του συστήματος
10
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Downloader
11
• Αναζήτηση στη CSE AGORA
• Η AGORA:- Περιλαμβάνει μεγάλο αριθμό από projects του Github- Διαθέτει API και δίνει τη δυνατότητα αναζήτησης με δομημένο ερώτημα- Το API βασίζεται στην πλατφόρμα αναζήτησης Elasticsearch
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Δομή του συστήματος
12
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Miner
13
• O Preprocessor χρησιμοποιείται για την απομάκρυνση των διπλοαρχείων με χρήση του md5 hash
• Ο Scorer χρησιμοποιείται για τη βαθμολόγηση των αρχείων, κατά την οποία:- Δημιουργούνται διανύσματα σε:
Επίπεδο μεθόδου: Επίπεδο κλάσης:
- Για τη δημιουργία των διανυσμάτων: Κάθε συνιστώσα έχει τιμή στο εύρος [0,1] Λεξικό ≈ υπογραφή ερωτήματος Το εκάστοτε διάνυσμα του ερωτήματος χρησιμοποιείται ως βάση κατά τη σύγκριση και όλες οι συνιστώσες του είναι ίσες με 1
Preprocessor Scorer PostprocessorFiles Unique
Files Scores Top Files
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Miner• Για τη βαθμολόγηση των strings ακολουθείται η παρακάτω διαδικασία:
• Για τη βαθμολόγηση των διανυσμάτων χρησιμοποιείται ο συντελεστής Tanimoto:
14
Tokenizing Stop words removal
Short words removal
StringStemming
Tanimoto similarityScore
[0,1]
String or tokens
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
MinerStable Marriage Problem
• Τα scores του πίνακα:
• Οι λίστες που δημιουργούνται:
15
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Δομή του συστήματος
16
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Tester
17
Create projects Copy src/test
filesModify src/test
files
Compile src/test filesRun test cases
Src files
Test file
Results
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Δομή του συστήματος
18
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Transformer• Μετασχηματισμός τύπου επιστροφής μεθόδων
1η περίπτωση:
2η περίπτωση:
3η περίπτωση:
19
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Transformer• Μετασχηματισμός παραμέτρων μεθόδου
Μέθοδος ερωτήματος χρήστη:
Μέθοδος xml προς μετασχηματισμό:
Οι τρεις λίστες που δημιουργούνται:
20
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Transformer• Μετασχηματισμός παραμέτρων μεθόδου
Η μέθοδος του xml μετά από το 1ο βήμα μετασχηματισμού:
Οι τρεις λίστες μετά από το 1ο βήμα μετασχηματισμού:
21
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Transformer• Μετασχηματισμός παραμέτρων μεθόδου
Η μέθοδος του xml μετά από το 2ο βήμα μετασχηματισμού:
Η μέθοδος του xml μετά από το 3ο βήμα μετασχηματισμού:
4ο βήμα μετασχηματισμού: Μέθοδος ερωτήματος χρήστη:
Μέθοδος xml προς μετασχηματισμό:
H μέθοδος του xml μετά το μετασχηματισμό: 22
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
ΠειράματαΜετρικές αξιολόγησης αποτελεσμάτων
23
Α/Α Τύπος
1
2
3
4
5
6
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
ΠειράματαΠείραμα 1o – Σύγκριση με τη Mantissa
24
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
ΠειράματαΠείραμα 1o – Σύγκριση με τη Mantissa
25
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
ΠειράματαΠείραμα 2o – Σύγκριση με το FAST
26
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
ΠειράματαΠείραμα 3o – Σύγκριση με τον Code Conjurer
27
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
ΠειράματαΠείραμα 4o – Σύγκριση με τη Mantissa σε δικό μας dataset
28
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
ΠειράματαΠείραμα 4o – Σύγκριση με τη Mantissa σε δικό μας dataset
29
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
ΠειράματαΠείραμα 4o – Σύγκριση με τη Mantissa σε δικό μας dataset
30
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Συμπεράσματα – Μελλοντικές Επεκτάσεις• Πλεονεκτήματα του συστήματός μας
Μετατροπή του ερωτήματος του προγραμματιστή σε γλώσσα κατανοητή από τη CSE AGORA Βαθμολογία και κατάταξη των αποτελεσμάτων που επιστρέφει η AGORA Έλεγχος λειτουργικότητας των αποτελεσμάτων με χρήση των test cases του προγραμματιστή Πραγματοποίηση μετασχηματισμών στα αποτελέσματα με σκοπό τη βελτίωσή τους και την αύξηση της πιθανότητας επιτυχίας στην
εκτέλεση των test cases Παρουσίαση αποτελεσμάτων στον προγραμματιστή
• Πιθανές επεκτάσεις Ενσωμάτωση και άλλων μηχανών αναζήτησης κώδικα Dependency resolution Αναζήτηση των κατάλληλων test cases για το ερώτημα
31
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Ευχαριστώ για την προσοχή σας!
Ερωτήσεις?
32
Top Related