Σύστημα υπόδειξης βιβλιοθηκών και κώδικα για την επανάχρηση τμημάτων λογισμικού

Η εξέλιξη των αποθετηρίων λογισμικού και των μηχανισμών παροχής ολοκληρωμένων λύσεων (π.χ. maven για Java και pip για Python) έχει επιτρέψει τη δημιουργία πλήθους βιβλιοθηκών, οι οποίες παρέχουν έτοιμες λύσεις για ένα ευρύ φάσμα προβλημάτων.

Πολλές από τις βιβλιοθήκες αυτές πραγματοποιούν παρόμοιες λειτουργίες αλλά ενδείκνυνται για διαφορετικές χρήσεις, ανάλογα με το πρόβλημα που προσπαθούν να λύσουν. Για παράδειγμα, βιβλιοθήκες που χρησιμοποιούν την κάρτα γραφικών για ταχεία επεξεργασία δεδομένων (GPU) συνήθως δεν μπορούν να εφαρμοστούν σε δεδομένα μεγάλης κλίμακας (BigData). Δυστυχώς, η επιλογή μεταξύ διαφορετικών εναλλακτικών απαιτεί γνώσεις τις οποίες οι προγραμματιστές μπορεί να μην έχουν, και πολλές φορές οδηγούνται στη λάθος επιλογή. Αυτό συχνά δημιουργεί επιπλοκές σε μετέπειτα στάδια της ανάπτυξης, κατά τα οποία οι απαραίτητες μετατροπές είναι ιδιαίτερα κοστοβόρες.

Στόχος αυτής της διπλωματικής είναι να σχεδιαστεί και να αναπτυχθεί ένα εργαλείο το οποίο θα προτείνει στους προγραμματιστές βιβλιοθήκες που συσχετίζονται με το έργο λογισμικού στο οποίο εργάζονται, καθώς και ενδεικτικών μεθόδων αυτών των βιβλιοθηκών αυτών που πιθανώς τους ενδιαφέρουν. Το εργαλείο θα δέχεται μια πρώτη προσπάθεια υλοποίησης (που μπορεί να έχει αναπτυχθεί ως πρώτο βήμα agile τεχνικών), μια αρχική περιγραφή του έργου ή/και βιβλιοθήκες που ο προγραμματιστής ήδη ενδιαφέρεται να χρησιμοποιήσει και θα προτείνει τις βιβλιοθήκες και μεθόδους τους που θεωρεί καταλληλότερες για την υλοποίηση του έργου.

Για να πραγματοποιηθεί αυτό, θα αναζητούνται παρόμοια έργα λογισμικού και βιβλιοθήκες σε αντίστοιχα αποθετήρια και θα χρησιμοποιούνται τεχνικές μηχανικής μάθησης για την εξόρυξη των βιβλιοθηκών και μεθόδων που είναι σχετικότερες με τις εισόδους του προγραμματιστή.

Η διπλωματική αυτή μπορεί να κινηθεί σε διαφορετικούς άξονες, ανάλογα με την εστίαση σε διαφορετικά σημεία της παραπάνω διαδικασίας.

Κωδικός: Autumn19-Softeng-7

Εμπλεκόμενες Τεχνολογίες – Γνώσεις που θα αποκτηθούν

  • Εξόρυξη γράφων/Ανάλυση δεδομένων/Μηχανική μάθηση
  • Τεχνολογία λογισμικού/Ανάπτυξη λογισμικού
  • Συστήματα υποδείξεων
  • Τεχνολογίες/Γλώσσες προγραμματισμού: βιβλιοθήκες εξόρυξης δεδομένων/Python ή Java

Εκτιμώμενος Χρόνος Περάτωσης

6 – 9 Μήνες

Συνεργαζόμενοι Ερευνητές

Υποψήφιος Δρ: Εμμανουήλ Κρασανάκης (manios [dot] krasanakis [at] issel [dot] ee [dot] auth [dot] gr)