Καταργημένα θέματα ερευνητικών εργασιών 2017-

Which are the key infrastructure open source projects?

The study will analyze dependencies among open source projects (e.g. specified in Maven or npm builds, or through FreeBSD ports dependencies) in order to construct a graph. The importance of many nodes can be seeded through download count data from package managers such as Choco and Brew. These data will then be analyzed, using e.g. the PageRank algorithm, to determine which are the most important and critical projects. Furthermore, the projects will be assessed in terms of risk they pose to the community, based on characteristics such as the number of committers, licensing, security handling, product and process quality, issue management, and the freshness of commits.

Implemented by others; see Libraries.io.

Software that matters

The goal of the proposed project is to create an authoritative data set of widely-used software packages, and document its creation process in a way that allows others to replicate the data. The data set that will be created can be used for mining software repositories to test software engineering research questions. A similar approach was used in the past to create a popular data set of software projects following specific engineering practices. The work is divided into five tasks.

  1. Create a data set of popular software applications. Popularity should be measured in an objective and replicable way. For open source software packages popularity can be measured using download counts from popular software hosting platforms; for commercial software popularity can be obtained from market surveys, articles, and public data sets. The list should identify the software, its creator, its source code hosting platform (for open source software), and its main distribution point. Where possible, the list should be amended with the open source code packages (e.g. libraries) used by that software system. This can be obtained from its source code, by analyzing its binary for dynamic library imports, or by looking its documentation.
  2. Create a data set of popular Debian packages.
  3. Create a data set of popular JavaScript packages.
  4. Create a data set of popular Python packages.
  5. Create a data set of popular Java packages.

All tasks should start with a systematic search for related work and existing studies, and report on their findings through a summary with suitable references. Also, all tasks should provide their results (data sets) together with the mechanism that can recreate them, e.g. through scripting. Tasks 2—5, can be seeded with input from task 1, as well as their own measures of popularity. Data sets for tasks 2–5 should include whether a package is a stand-alone application or a library, its repository, and its measures of popularity and use. A key element in measuring use will be the transitive closure of use counts, by adding uses by dependencies and dependencies of dependencies. For example if a library a used by another library b that is used by 100 applications, then a will also have a use count of 100.

Implemented by others; see Libraries.io.

Several studies have identified quantitative changes in several quality metrics of evolving software. Examples include the evolution of C programming practices in the Unix operating system, changes after a major OpenSSL security event, and the evolution of cyclomatic complexity in the Unix and GNU/Linux systems. The objective of this study is to perform a qualitative analysis of the underlying changes to determine a) what types of code changes led to the metric changes, and, b) what drove those code changes.

Implemented by others in 2020; see Piantadosi, V., Fierro, F., Scalabrino, S. et al. How does code readability change during software evolution?. Empir Software Eng 25, 5374–5412 (2020). DOI:10.1007/s10664-020-09886-9

The use and lifetime of URLs in source code comments

Comments in source code often reference web resources through URLs. The objective of this study is mine open source software repositories for URLs and perform quantitative and qualitative analysis on them in order to answer the following research questions.

The study will conclude with recommendations for developers and their managers regarding the use of URLs in source code comments.

Implemented by others in 2019. See 9.6 million links in source code comments: purpose, evolution, and decay.

Υλοποίηση των αλγορίθμων ελέγχου φορολογικών κωδικών

Στόχος της εργασίας είναι η προσθήκη δημοσιευμένων αλγορίθμων ελέγχου φορολογικών κωδικών στο σχετικό άρθρωμα του εξαιρετικά δημοφιλούς πακέτου validator.js. Η εργασία είναι κατάλληλη για φοιτητές των τριών πρώτων ετών.

Υλοποιήθηκε το 2020.

Εμπειρική ανάλυση ετικετών που χρησιμοποιούνται σε αναφορές θεμάτων

Η εργασία θα αναλύσει τις ετικέτες που χρησιμοποιούνται σε αναφορές θεμάτων στο GitHub (GitHub Issue Tags). Στόχος είναι να απαντηθούν οι εξής ερευνητικές ερωτήσεις.

Υλοποιήθηκε από τρίτους το 2021

Τι πρέπει να γνωρίζουν οι προγραμματιστές;

Στόχος της εργασίας είναι η χαρτογράφηση των γνώσεων που είναι απαραίτητες στους προγραμματιστές. Αυτό θα γίνει με τα εξής βήματα.

Υλοποιήθηκε το 2020 και έχει υποβληθεί προς δημοσίευση.

Μετάφραση κώδικα μεταξύ διαφορετικών γλωσσών προγραμματισμού με τη χρήση μηχανικής μάθησης

Στόχος της εργασίας είναι η εκμετάλλευση υποδομών μεταγλώττισης που υποστηρίζουν πολλαπλές γλώσσες προγραμματισμού, όπως το σύστημα LLVM, για την εκπαίδευση και μετάφραση κώδικα μεταξύ διαφορετικών γλωσσών προγραμματισμού· από μια γλώσσα-πηγή σε μια γλώσσα-στόχο, π.χ. από C σε Swift. Συγκεκριμένα, το προτεινόμενο σύστημα θα δουλεύει πρώτα με τη μεταγλώττιση του κώδικα από την πηγαία γλώσσα στην ενδιάμεση γλώσσα του μεταγλωττιστή. Στη συνέχεια, το σύστημα θα μεταφράζει τον κώδικα από την ενδιάμεση γλώσσα του μεταγλωττιστή στη γλώσσα στόχο με τη χρήση μηχανικής μάθησης. Το σύστημα μηχανικής μάθησης προτείνεται να βασίζεται σε νευρωνικά δίκτυα. Θα εκπαιδευτεί με βάση σώμα που θα δημιουργηθεί από τη μεταγλώττιση υπάρχοντα κώδικα από τη γλώσσα-στόχο στην ενδιάμεση γλώσσα LLVM.

Υλοποιήθηκε από τρίτους το 2020. Βλ. Unsupervised Translation of Programming Languages και Deep learning to translate between programming languages.

Προσθήκη στο πρόγραμμα AutoHotkey αυτόματης διόρθωσης γλώσσας πληκτρολογίου

Σας τυχαίνει να γράφετε στον υπολογιστή σας sta ellhnik;a, ςηιλε υου ςαντεδ το ςριτε ιν Ενγλιση (στα ελληνικά, while you wanted to write in English) ή το αντίθετο; Στόχος της εργασίας είναι η προσθήκη στον κώδικα του προγράμματος AutoHotkey της ανίχνευσης αυτού του προβλήματος (με τη στατιστική ανάλυση ν-γραμμάτων) και στη συνέχεια της αυτόματης διόρθωσης της γλώσσας με τη διαγραφή των λανθασμένων χαρακτήρων, εισαγωγή των σωστών και ρύθμιση του πληκτρολογίου στη σωστή διάταξη. Προτείνεται η προσαρμογή του προγράμματος να γίνει παραμετρικά, ώστε να μπορούν στο μέλλον τρίτοι να μπορούν να προσθέσουν και άλλα ζεύγη γλωσσών.

Υλοποιήθηκε από εμένα το 2020

Εύρεση μη δηλωμένων εξαρτήσεων σε συστήματα διαμόρφωσης υπολογιστών

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

Υλοποιήθηκε το 2019. Βλ. * Thodoris Sotiropoulos, Dimitris Mitropoulos, and Diomidis Spinellis. Practical fault detection in Puppet programs. In 42nd International Conference on Software Engineering, ICSE ’20, pages 26–37, 2020. doi:10.1145/3377811.3380384

Αντίστροφη μεταγλώττιση βασισμένη σε μηχανική μάθηση

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

Υλοποιήθηκε το 2018. Βλ. Java decompiler using machine translation techniques καθώς και την εργασία των Cheng Fu, Huili Chen, Haolan Liu, Xinyun Chen, Yuandong Tian, Farinaz Koushanfar, Jishen Zhao. A Neural-based Program Decompiler.

Μετρικές επιτυχημένων ιστότοπων και εταιριών

Στόχος της εργασίας είναι να ερευνήσει τη συσχέτιση ανάμεσα σε μετρικές του περιεχομένου ενός ιστότοπου και της επιτυχίας του ιστότοπου ή της αντίστοιχης εταιρίας. Μερικές μετρικές μπορεί να είναι οι παρακάτω:

Οι σελίδες που θα ερευνηθούν θα είναι αυτές των ιστότοπων που εμφανίζονται στην κορυφή των Alexa rankings καθώς και των εταιριών Fortune 1000.

Αποδοτική παράσταση επιστημονικών γενεαλογικών δένδρων

Τα επιστημονικά γενεαλογικά δένδρα, όπως αυτό, έχουν δυο χαρακτηριστικά που επιτρέπουν την εμφάνισή τους με ιδιαίτερα αποδοτικό τρόπο από άποψη χώρου που καταλαμβάνεται στην εικόνα.

Στόχος της εργασίας είναι η υλοποίηση ενός εργαλείου στο σύστημα Graphviz (αντίστοιχου με το dot ή το fdp) που θα επιτρέπει την αποδοτική παράσταση τέτοιων γράφων εκμεταλλευόμενο τα ειδικά τους χαρακτηριστικά. Για το σκοπό αυτό το εργαλείο θα χρησιμοποιεί όσο αποδοτικότερα γίνεται τα κενά που αφήνονται σήμερα από το εργαλείο dot σε κάθε γενεά, κρατώντας όμως στις συνδέσεις του γράφου μία κατεύθυνση στην οποία δεν θα υπάρχουν αντίστροφες συνδέσεις (από αριστερά προς τα δεξιά στο συγκεκριμένο παράδειγμα).

Στοχαστική βελτιστοποίηση διεπαφής CAD

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

Υλοποιήθηκε το 2018. Βλ. Alexander Lattas and Diomidis Spinellis. Echoes from space: Grouping commands with large-scale telemetry data. In 40th International Conference on Software Engineering: Software Engineering in Practice Track, ICSE-SEIP ’18, New York, NY, USA, May 2018. Association for Computing Machinery. doi:10.1145/3183519.3183545

Οσμές ποιότητας σε αρχεία Word/Excel/Powerpoint

Οι οσμές ποιότητας (quality smells) μπορούν να χρησιμοποιηθούν για να ανιχνεύσουν κακή ποιότητα σε ένα ψηφιακό έγγραφο. Για παράδειγμα σε αρχεία Word μπορεί να είναι η απουσία χρήσης προτύπων (styles), σε αρχεία Excel η μη χρήση ονομάτων και σε αρχεία Powerpoint η μορφοποίηση χωρίς τη χρήση πρότυπων διαφανειών (master slides). Η εργασία

Εξέλιξη της ασφάλειας στον πηγαίο κώδικα του Unix

Με βάση ένα αποθετήριο που καλύπτει 45 χρόνια της εξέλιξης του πηγαίου κώδικα του λειτουργικού συστήματος Unix η εργασία θα ερευνήσει πώς εξελίσσονται πιθανές ευπάθειες του κώδικα που θα μπορούσαν να οδηγήσουν σε κενά ασφάλειας. Η ανίχνευση των ευπαθειών θα γίνει με τη χρήση σχετικών εργαλείων στατικής ανάλυσης κώδικα, όπως του Flawfinder.

Υλοποιήθηκε το 2019. Βλ. Charalambos Mitropoulos. 2019. Employing different program analysis methods to study bug evolution. In Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2019). ACM, New York, NY, USA, 1202-1204. DOI: 10.1145/3338906.3342489 και την αντίστοιχη μεταπτυχιακή εργασία.

Γραφική διεπαφή για εντολές του Unix

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

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

Η γραφική διεπαφή θα διαμορφώνεται για κάθε εντολή βάσει ενός αρχείου διαμόρφωσης γραμμένου σε μια απλή γλώσσα εξειδικευμένου πεδίου (domain specific language) που θα περιγράφει ποιες είναι οι διαθέσιμες παράμετροι, τι κάνει η κάθε μία και πώς μπορούν να συνδυαστούν. Η αρχική μορφή του αρχείου αυτού θα μπορεί να δημιουργείται από τον πηγαίο κώδικα της εντολής και της τεκμηρίωσής της.

Υλοποιήθηκε το 2018. Βλ. το σχετικό αποθετήριο στο GitHub και την αντίστοιχη μεταπτυχιακή εργασία.

A tool for reproducible research

Most of this functionality is provided by R Reports and the Python Notebooks. See: Shen, Helen, Interactive Notebooks: Sharing the Code, Nature, 515(7525):151–152, 2014}, DOI: 10.1038/515151a, and Ten Simple Rules for Reproducible Research in Jupyter Notebooks.

Empirical investigation of merge conflicts

Αποδοτική αποσφαλμάτωση «πίσω στο χρόνο» με την τεχνολογία Intel PT

Η τεχνολογία Intel PT επιτρέπει την καταγραφή της ροής εκτέλεσης των εντολών ενός προγράμματος με μικρό κόστος σε απόδοση. Στόχος της εργασίας είναι η υλοποίηση (μέσω προσαρμογής του υπάρχοντα κώδικα ενός αποσφαλματωτή, όπως ο GDB) αποσφαλμάτωσης «πίσω στο χρόνο» (back in time debugging) με τη χρήση της τεχνολογίας αυτής. Αν και η αποσφαλμάτωση δεν θα επιτρέπει την πρόσβαση σε μεταβλητές, θα επιτρέπει την απόλυτα ακριβή παρακολούθηση της ροής του προγράμματος, με απόδοση τέτοια που πιθανώς να μην απαιτεί ενεργοποίηση από το χρήστη. Για την μείωση της απαιτούμενης μνήμης προτείνεται η δυναμική συμπίεση των δεδομένων που καταγράφονται. Επισκόπηση σχετικών τεχνικών υπάρχει σε αυτό το άρθρο.

Η σχετική δυνατότητα υποστηρίζεται πλέον από την εντολή record pt του GDB.