Ανάλυση Δεδομένων Έργων Λογισμικού για Ανάπτυξη σε Νέα Πεδία Εφαρμογής
Creators: name: Κρασανάκης, Εμμανουήλ Γ.
Publisher: name: Aristotle University of Thessaloniki
Year: 2022
Subjects: Μηχανική Λογισμικού
Τεχνητή Νοημοσύνη
Θεωρία Γράφων
Αυτοματοποιημένη Σύνθεση Κώδικα
Software Engineering
Artificial Intelligence
Graph Theory
Automated Code Synthesis

description: Η παρούσα διδακτορική διατριβή στοχεύει στη διευκόλυνση των μηχανικών λογισμικού όταν εργάζονται σε πεδία εφαρμογής με τα οποία δεν είναι εξοικειωμένοι. Για αυτόν τον σκοπό, ορίζεται μια επικουρική μεθοδολογία ανάπτυξης έργων λογισμικού, η οποία περιλαμβάνει διερεύνηση σχετικών προγραμματιστικών λύσεων, κατανόησή τους, και τελικά συγγραφή νέου κώδικα. Στα πλαίσια αυτής της μεθοδολογίας, εισάγονται πρακτικά και θεωρητικά εργαλεία που αναλύουν δεδομένα έργων λογισμικού (όπως ο πηγαίος κώδικας και οι εξαρτήσεις μεταξύ έργων) με συστήματα τεχνητής νοημοσύνης για την υποβοήθηση τόσο νέων όσο και πεπειραμένων μηχανικών. Για την ακρίβεια, αρχικά αναπτύσσονται εργαλεία που βελτιώνουν τεχνικές μη-μάθησης της θεωρίας γράφων για γρήγορη και αξιόπιστη πρόταση σχετικών λύσεων, είτε από ήδη χρησιμοποιούμενες λύσεις είτε από λέξεις-κλειδιά. Στη συνέχεια, δημιουργείται ένας νέος αλγόριθμος ανάλυσης εξαρτήσεων μεταξύ οντοτήτων πηγαίου κώδικα και υπόδειξης τμημάτων έργων λογισμικού προς ανάγνωση κατά την κατανόηση συγκεκριμένων οντοτήτων. Τέλος, εισάγεται μια νέα θεωρία, επονομαζόμενη συμπεριφορησιμότητα, για μελέτη της λογικής συνέπειας διεργασιών παραγωγής κώδικα εντός λογικών συστημάτων ασθενέστερων των μαθηματικών. Αυτή η θεωρία υποστηρίζει μια διαδικασία -και τελικά ένα εργαλείο- μερικώς αυτοματοποιημένης σύνθεσης κώδικα, όπου οι μηχανικοί λογισμικού μπορούν να μάθουν πώς να τροποποιήσουν χαλαρά διατυπωμένες προδιαγραφές (για παράδειγμα, φυσικής γλώσσας) ώστε να διορθώνουν σφάλματα στον συντεθειμένο κώδικα. Η ίδια θεωρία χρησιμοποιείται και για την παραγωγή ενός νέου μοντέλου προγραμματισμού που διευκολύνει τη σύνταξη ευκόλως επαναχρησιμοποιήσιμων προγραμματιστικών διεπαφών. Τα παραπάνω εργαλεία αξιολογούνται σε πραγματικά σενάρια χρήσης και έργα λογισμικού, όπου αναδεικνύεται η αποτελεσματικότερη υποστήριξη των μηχανικών σε σχέση με εναλλακτικές.
description: This PhD thesis aims to assist software engineers working in unfamiliar application domains. To this end, it defines an auxiliary software project development methodology, which comprises exploration of existing programming solutions, understanding them, and write up of new source code. Within this methodology, practical and theoretical tools are introduced to analyse software project data (such as source code and dependencies between projects) with artificial intelligence and support both novice and experienced engineers. In particular, there are first developed tools that improve no-learning approaches of graph theory for fast and reliable related solution recommendations, based on either already employed solutions or keywords. Next, a novel algorithm is created to analyse the dependencies of source code entities and point to software project segments needed to understand entities of interest. Finally, a new theory, called behaviorizeability, is introduced for the of study logical consistency during code production within logical systems weaker than mathematics. This theory supports a process -and in the end a tool- for partially automated code synthesis, where software engineers can learn how to modify loosely defined specifications (for example, natural language ones) to fix errors in synthesized code. The same theory is also used for the production of a new programming model that simplifies the definition of easily reusable programming interfaces. The above tools are assessed on real-world use cases and software projects, which reveal efficacy compared to alternatives.