Αλεξάνδρα Μπαλτζή 7485

Post on 05-Apr-2017

79 views 1 download

Transcript of Αλεξάνδρα Μπαλτζή 7485

Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών

Μετασχηματισμού Κώδικα

Μπαλτζή Αλεξάνδρα Υπό την επίβλεψη του Επίκουρου Καθηγητή

Ανδρέα Λ. Συμεωνίδη και του υποψήφιου Διδάκτορα Θεμιστοκλή Διαμαντόπουλου

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ

Εισαγωγή

Ορισμός προβλήματος 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