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