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

Locating malicious software supply chain rings

The pervasiveness of free software reuse and the open nature of most free software projects can be exploited through the purposeful injection of vulnerabilities by malicious actors to implement software supply-chain attacks. It is conceivable that these actors work under fake identities and collaborate in groups in order to establish a credible online presence. The objective of this study is to develop and evaluate techniques for identifying such ring groups. The techniques may include social network analysis (the groups are likely to be closely-knit) and machine learning (the characteristics and behavior of the corresponding profiles may be outliers compared to those of real persons).

Implemented by others; see e.g. Anomalicious: automated detection of anomalous and potentially malicious commits on GitHub and Practical automated detection of malicious npm packages.

The effects of working from home on programming quality and productivity

Many modern developer workplaces have an open-office layout. While this obviously reduces office space costs, its proponents argue that it enhances cooperation. On the other hand detractors argue that sch layouts make it difficult to concentrate, something that is anecdotally visible through the widespread adoption and use of over-the-ear noise-cancelling headphones. The lockdowns associated with the COVID-19 pandemic allowed the implementation of a natural experiment to determine the effect of such workplaces on programming quality and productivity. As developers started working from home and some might be able to isolate themselves from noise and interruptions, we might find code with fewer faults and more complex constructs. Or hindered cooperation might be visible through more emails and online messages.

The objective of the proposed study is to examine these correlations, controlling as much as possible other factors, such as a distracting home environment.

References

Implemented by others; see e.g. Pandemic programming and Challenges and Gratitude: A Diary Study of Software Engineers Working From Home During Covid-19 Pandemic.

Use neural network to determine processor microarchitecture

Modern cloud computing infrastructures have their hypervisors obscure the underlying processor microarchitecture from the client operating system. This happens for business reasons, but prevents client from determining whether they are vulnerable to side channel attacks. The proposed work will address this shortcoming by training a neural network to recognize diverse processor microarchitectures. The training data will stem from the values of processor performance counters after executing diverse workloads.

A study of bugs found in configuration management systems

Bug studies are important for understanding the nature of bugs which complex systems suffer from [1, 2]. This study aims to analyze and characterize previously reported bugs in popular configuration management systems (e.g., Puppet, Ansible, Docker, etc.). Specifically, the study should answer (some) of the following questions:

The output of this study should be a set of useful findings that can guide the design of future automated techniques for detecting bugs in configuration management systems.

References

  1. Chaliasos, Stefanos, et al. “Well-typed programs can go wrong: A study of typing-related bugs in JVM compilers.” Proceedings of the ACM on Programming Languages 5.OOPSLA (2021): 1-30.
  2. A. Di Franco, H. Guo and C. Rubio-González, “A comprehensive study of real-world numerical bug characteristics,” 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE), 2017, pp. 509-519, doi: 10.1109/ASE.2017.8115662.

A skeletal program enumeration algorithm for detecting soundness compiler bugs

Skeletal program enumeration (SPE) is an effective compiler testing technique, which works as follows. Given a program P with a specific syntactic structure, SPE enumerates all program variants that share the same structure as the original program P, but they expose different variable usage patterns. SPE has been applied in diverse compilers (i.e., GCC, LLVM, Dotty) and has found hundreds of crashes.

The goal of this program is to adapt the SPE algorithm to detect soundness compiler bugs. A soundness compiler bugs occurs when the compiler mistakenly compiles a wrongly-typed program. Detecting soundness bugs is highly important, as soundness bugs defeat the safety offered by type systems in statically-typed languages.

Given a program structure, the adapted SPE algorithm should perform a smart enumeration and produce program variants that although they share the same structure as the input, they exhibit (different kinds of) errors in different locations.

Mutation-based testing for ORM systems

A recent work [1, 2] has introduced a generator that produces queries used to test the correctness of ORM implementations via differential testing.

The goal of this project is to develop mutation-based testing approaches for uncovering bugs in ORM systems. The effectiveness of these mutation-based techniques will be evaluated in terms of bug-finding capability and code coverage improvement. In addition, one will compare the developed techniques against the existing query generator [3].

References

  1. T. Sotiropoulos, S. Chaliasos, V. Atlidakis, D. Mitropoulos and D. Spinellis, “Data-Oriented Differential Testing of Object-Relational Mapping Systems,” 2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE), 2021, pp. 1535-1547, doi: 10.1109/ICSE43902.2021.00137.
  2. Cynthia

Detecting bugs in GNU Octave and Matlab

GNU Octave is an open-source platform for performing scientific and numerical computations. GNU Octave is aimed to be compatible with Matlab.

The goal of this work is to develop a testing approach for detecting (inconsistency) bugs in GNU Octave. Specifically, one will implement a program generator, suitably crafted for detecting numerical bugs in GNU Octave. To establish a suitable test oracle, one can use differential testing against the GNU Octave and Matlab implementations.

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.