Pantelidou Eirini: Design and development of a system for incremental static ...Manos Tsardoulias
Nowadays software technology has made great progress. A detailed Internet research revealed that, there are open source software repositories (GitHub), which contain a plethora of software projects and most of them have a high level of complexity. As we refer to open source software products, we realize that these are projects, which are continuously changing in real-time, both in the number and content of their source code files. Therefore, the scheduled quality control of the entire project from the beginning, once a day or week is not enough, because delays the feedback of the developers. Generally, static analysis aims to detect and report to the developer code errors, bugs, security vulnerabilities and violations of programming rules. But every developer needs to know, how every change of a file affects the total quality of the software project. This purpose is served by static analysis with the production of quality metrics. The need for timely knowledge of the quality change of the software project, led to the realization of this diploma thesis, which aims to calculate the static analysis metrics only of changing code files and not the entire software project from the beginning. Thus, a system was designed, which directly isolates the changing and affected files from all files in the repository and then using a static analysis mechanism, extracts the new values of quality metrics exclusively for changing files. The results of the use of this system show that, it contributes dynamically to the continuous quality control of software projects, as it provides immediate and targeted information about the changes. Also, enables to time and resource savings and helps in the quality optimization of the products, as it prevents the developer from the wasteful building of software project on non-quality code parts.
Theofilos Georgiadis: Library recommendation system for the reuse of software...Manos Tsardoulias
This system helps developers when searching for python libraries. The developer constructs the query in natural language and the system returns the 10 most relevant libraries. It is based on a graph, its nodes are constructed by keywords and libraries that was extracted from a set of open source projects. For every keyword that is present with a library we connect the two nodes with an edge. For every time that a keyword is present with a library, the weight of the edge is increased by one. Using this graph we extract representations of the graph's nodes. Lastly using these representations and a method for calculating the similarity, we calculate the similarity of each library with each keyword and we extract a recommendation for the 10 libraries with the highest value of similarity.
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
Η στενή συνεργασία μεταξύ των προγραμματιστών για την ανάπτυξη καινοτόμων έργων λογισμικού κρίνεται απαραίτητη. Για αυτόν τον λόγο, υπάρχουν αρκετές διαδικτυακές πλατφόρμες φιλοξενίας προγραμμάτων, οι οποίες δίνουν τη δυνατότητα στους χρήστες τους να παρακολουθεί ο ένας τις αλλαγές, τις προτάσεις και τις παρατηρήσεις του άλλου για την εξέλιξη και τη βελτίωση του κώδικα. Επιπλέον, οι πλατφόρμες αυτές ελέγχουν τις διαφορετικές εκδόσεις του κώδικα ενός έργου, ώστε ο προγραμματιστής να μπορεί να ανατρέξει σε οποιαδήποτε από αυτές, εάν το επιθυμεί. Όλες οι τροποποιήσεις, οι οποίες διενεργούνται από ένα πρόσωπο της ομάδας ανάπτυξης λογισμικού σε μία δεδομένη χρονική στιγμή, συγκεντρώνονται σε ένα commit, όπου καταγράφονται μάλιστα όλοι οι λόγοι πίσω από αυτές. Έτσι, γίνεται κατανοητό ότι τέτοιες συλλογές αλλαγών εμπεριέχουν πολλές χρήσιμες πληροφορίες για τον τρόπο με τον οποίο εξελίσσεται ένα έργο λογισμικού. Η εφαρμογή τεχνικών του κλάδου της εξόρυξης δεδομένων στις δημόσιες αποθήκες λογισμικού και σε όλα τα δεδομένα που αναφέρθηκαν παραπάνω θα μπορούσε να φέρει στο φως ορισμένες συχνές διορθώσεις σφαλμάτων, συστηματικές τροποποιήσεις, επαναλαμβανόμενους τύπους αλλαγών στην αρχιτεκτονική, καθώς και κάποια ευρέως χρησιμοποιούμενα σχεδιαστικά πρότυπα, γνωστά ή μη. Μία εκτενής βιβλιογραφική έρευνα σε αυτόν τον τομέα αποκαλύπτει ότι οι περισσότερες προσπάθειες επιστημόνων έχουν στραφεί στις διορθώσεις σφαλμάτων και στις συστηματικές τροποποιήσεις, με αποτέλεσμα να έχουν αγνοηθεί κάποια λιγότερο λεπτομερή, δηλαδή πιο υψηλού επιπέδου (high level) μοτίβα εξέλιξης ή συγγραφής κώδικα. Στο πλαίσιο αυτό, η παρούσα διπλωματική εργασία προσπαθεί να ανακαλύψει τις σχέσεις ανάμεσα στις διάφορες κλάσεις ενός προγράμματος, αλλά και να παρακολουθήσει τον τρόπο με τον οποίο αυτές αλλάζουν στο πέρασμα του χρόνου. Για να επιτευχθούν οι παραπάνω στόχοι, προσαρμόζεται ένα εργαλείο εξαγωγής σχέσεων (Relationships Extractor), η λειτουργία του οποίου βασίζεται στην ανάλυση των Αφηρημένων Συντακτικών Δέντρων (Abstract Syntax Trees) που αφορούν τους κώδικες μερικών από τα πιο δημοφιλή έργα λογισμικού της διαδικτυακής πλατφόρμας του Github. Αφού αναλυθούν και επεξεργαστούν αυτά τα συντακτικά δέντρα, εξάγονται πληροφορίες για τη λειτουργία των κλάσεων, την αφαιρετικότητά τους και την κληρονομικότητα, οι οποίες στη συνέχεια μοντελοποιούνται σε γράφους (με τις κλάσεις ως κόμβους και τις συνδέσεις τους ως ακμές). Αφού λοιπόν ολοκληρωθούν οι παραπάνω ενέργειες για την τελική μορφή του εκάστοτε προγράμματος, η ίδια σειρά ενεργειών ακολουθείται και για κάθε στιγμιότυπό του, εξάγοντας τη διαφορά ως προς τις σχέσεις ανάμεσα στην έκδοσή του πριν και μετά από κάθε commit ξεχωριστά. Τέλος, εφαρμόζοντας τον αλγόριθμο gSpan (graph-based Substructure pattern mining), έναν αλγόριθμο αναζήτησης συχνών πογράφων σε ένα σύνολο γράφων, ανιχνεύονται ορισμένα ευρέως χρησιμοποιούμενα από την παγκόσμια προγραμματιστική κοινότητα, μοτίβα σχεδίασης και εξέλιξης λογισμικού.
Υλοποίηση εργαλείου πλήρους στοίβας σε περιβάλλον Kubernetes για την αυτοµατο...ISSEL
Η µετάβαση των τεχνολογιών του διαδικτύου προς αρχιτεκτονικές µικροϋπηρεσιών (microservices) και η ανάπτυξη του ∆ιαδικτύου των Πραγµάτων (Internet of Things - IoT) συνέβαλλαν σηµαντικά στην αύξηση των αναγκών για νέες µεθόδους αποδοτικής επικοι νωνίας µεταξύ ανοµοιογενών και διανεµηµένων συστηµάτων. Οι µεθοδολογίες διαµεσο λάβησης µηνυµάτων (brokered messaging) λειτουργούν καλύτερα από τις τεχνολογίες / προσεγγίσεις REST (Representational State Transfer) και RPC (Remmote Procedure Call) σε συστήµατα επικοινωνίας παραγωγών-καταναλωτών (µηνυµάτων) όπου είναι επιθυµητή τόσο η µετάδοση µεγάλου όγκου δεδοµένων σε υψηλούς ϱυθµούς όπως και η απεµπλοκή των υποσυστηµάτων των παραγωγών και των καταναλωτών. Μια ελαφριά και αξιόπιστη τεχνολογία που προσφέρει τα πλεονεκτήµατα της µεσολάβησης µηνυµάτων είναι το RabbitMQ. Με τη χρήση αυτής, µπορούν να χτιστούν πολύπλοκα και αποδοτικά συστήµατα ειδικά σε συνθήκες ασύγχρονης επικοινωνίας, αναξιόπιστων δικτύων και σε περιβάλλοντα εφαρµογών µεγάλων δεδοµένων (big data). Η παρούσα διπλωµατική εστιάζει στην ανάπτυξη ενός εργαλείου πλήρους στοίβας (full-stack), το οποίο κάνει χρήση της τεχνολογίας διαµεσολάβησης µηνυµάτων για την εφαρµογή ϕίλτρων στα διακινούµενα µηνύµατα του συστήµατος. Η αυτοµατοποίηση αυτών των λειτουργιών µέσω του εργαλείου, καθιστά τα ωφέλη των εµπλεκόµενων τεχνολογιών προσβάσιµα από τους χρήστες, ανεξάρτητα από το ϐαθµό της εµπειρίας τους στις συγκεκριµένες τεχνολογίες. Η επικοινωνία των µηνυµάτων επιτελείται µέσω του διακοµιστή Rabbitmq Server, ο οποίος εφαρµόζει την τεχνολογία διαµεσολάβησης µηνυµάτων. Τέλος για τη διευκόλυνση της διαχείρισης ολόκληρου του συστήµατος, αυτό ενσωµατώθηκε στο πλαίσιο της τεχνολογίας Kubernetes, η οποία προσφέρει την αυτοµατοποίηση της ενορχήστρωσης των κοµµατιών του συστήµατος. Για τη σύσταση του περιβάλλοντος Kubernetes επιλέχθηκε η τεχνολογία minikube καθώς προσφέρει εύκο λη και γρήγορη δηµιουργία ενός περιβάλλοντος Kubernetes. Η απόδοση του συστήµατος ελέγθηκε για διαφορετικές τιµές του ϕορτίου εισαγωγής µηνυµάτων και των εφαρµοζόµενων ϕίλτρων. Τα µεγέθη που µετρήθηκαν αφορούν την συχνότητα εισόδου µηνυµάτων, τη συχνότητα κατανάλωσης µηνυµάτων, τη συχνότητα καταγραφής µηνυµάτων στη Βάση ∆εδοµένων και τον αριθµό αποθηκευµένων δεδο µένων στις ουρές του διαµεσολαβητή. Από τα πειράµατα εξάγεται το συµπέρασµα ότι είναι ιδιαίτερα σηµαντική η επιλο γή του κατάλληλου αριθµού εφαρµοζόµενων ϕίλτρων σύµφωνα µε τους διαθέσιµους πόρους επεξεργαστικής ισχύος και µνήµης του συστήµατος.
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...ISSEL
Σήμερα, η ανάπτυξη της τεχνολογίας και η αξιοποίηση της σε όλους τους τομείς της ζωής του ανθρώπου, δημιουργεί την ανάγκη για λογισμικό που είναι έυκολα προσαρμόσιμο, ευπαρουσίαστο, επιλύει πολλούς τύπους προβλημάτων, είναι οικονομικό και αξιόπιστο. Η Μοντελοστραφής Μηχανική (MDE), δηλαδή η ανάπτυξη λογισμικού που στηρίζεται σε μοντέλα, η αυτόματη παραγωγή κώδικα με βάση αυτά τα μοντέλα, η δυνατότητα γραφικής απεικόνισης του λογισμικού σε συνδυασμό με τις τεχνικές του Αυτοματοποιημένου Ελέγχου Συμπερασμών (Automated Reasoning) καλύπτουν ανά περίπτωση τις παραπάνω ανάγκες. Στην παρούσα διπλωματική εργασία, έγινε αξιοποίηση όλων των παραπάνω τεχνικών για την κατασκευή ενός ολοκληρωμένου εργαλείου, στην πλατφόρμα του Eclipse, με στόχο την κάλυψη των προαναφερθέντων αναγκών. Πιο συγκεκριμένα στα πλαίσια της Μοντελοστραφούς Μηχανικής (MDE) κατασκευάστηκε ένα μέτα-μοντέλο που αποτελεί τον πηρύνα του συστήματος και ενσωματώνει όρους από το πεδίο του Λογισμού. Στη συνέχεια, πάνω σε αυτό δημιουργήθηκε μια γραφική διεπαφή, στο περιβάλλον του Sirius, που δίνει την δυνατότητα στον ενδιαφερόμενο να καταγράψει, με γραφικό τρόπο, το μοντέλο που επιθυμεί. Η καταγραφή του μοντέλου γίνεται με την μορφή εξισώσεων σωστά διατυπωμένων στα πρότυπα της Κατηγορηματικής Λογικής Πρώτης Τάξης (FOL). Από αυτό το μοντέλο ύστερα, παράγεται αυτόματα κώδικας Java, ο οποίος αξιοποιώντας συναρτήσεις και αντικείμενα της βιβλιοθήκης TweetyProject, διαμορφώνεται κατάλληλα ώστε να αποτελεί έγκυρη είσοδο για τον built-in prover της ίδιας βιβλιοθήκης που μπορεί να πραγματοποιεί λογικούς ελέγχους στα πρότυπα του Αυτοματοποιημένου Ελέγχου Συμπερασμών. Μερικές ακόμα βοηθητικές συναρτήσεις σε Java, ολοκληρώνουν το εργαλείο της διπλωματικής. Όλα τα παραπάνω καθιστούν, το σύστημα που αναπτύχθηκε σε αυτή την διπλωματική, ικανό να χρησιμοποιηθεί από διάφορους υπάρχοντες μηχανισμούς αυτόματης παραγωγής συστημάτων, προκειμένου να ελέγξουν την εγκυρότητα των υπό σχεδίαση συστημάτων, δίχως κάποιος να απαιτείται να υλοποιήσει λογισμικό που κάνει λογικούς συμπερασμούς.
Pantelidou Eirini: Design and development of a system for incremental static ...Manos Tsardoulias
Nowadays software technology has made great progress. A detailed Internet research revealed that, there are open source software repositories (GitHub), which contain a plethora of software projects and most of them have a high level of complexity. As we refer to open source software products, we realize that these are projects, which are continuously changing in real-time, both in the number and content of their source code files. Therefore, the scheduled quality control of the entire project from the beginning, once a day or week is not enough, because delays the feedback of the developers. Generally, static analysis aims to detect and report to the developer code errors, bugs, security vulnerabilities and violations of programming rules. But every developer needs to know, how every change of a file affects the total quality of the software project. This purpose is served by static analysis with the production of quality metrics. The need for timely knowledge of the quality change of the software project, led to the realization of this diploma thesis, which aims to calculate the static analysis metrics only of changing code files and not the entire software project from the beginning. Thus, a system was designed, which directly isolates the changing and affected files from all files in the repository and then using a static analysis mechanism, extracts the new values of quality metrics exclusively for changing files. The results of the use of this system show that, it contributes dynamically to the continuous quality control of software projects, as it provides immediate and targeted information about the changes. Also, enables to time and resource savings and helps in the quality optimization of the products, as it prevents the developer from the wasteful building of software project on non-quality code parts.
Theofilos Georgiadis: Library recommendation system for the reuse of software...Manos Tsardoulias
This system helps developers when searching for python libraries. The developer constructs the query in natural language and the system returns the 10 most relevant libraries. It is based on a graph, its nodes are constructed by keywords and libraries that was extracted from a set of open source projects. For every keyword that is present with a library we connect the two nodes with an edge. For every time that a keyword is present with a library, the weight of the edge is increased by one. Using this graph we extract representations of the graph's nodes. Lastly using these representations and a method for calculating the similarity, we calculate the similarity of each library with each keyword and we extract a recommendation for the 10 libraries with the highest value of similarity.
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
Η στενή συνεργασία μεταξύ των προγραμματιστών για την ανάπτυξη καινοτόμων έργων λογισμικού κρίνεται απαραίτητη. Για αυτόν τον λόγο, υπάρχουν αρκετές διαδικτυακές πλατφόρμες φιλοξενίας προγραμμάτων, οι οποίες δίνουν τη δυνατότητα στους χρήστες τους να παρακολουθεί ο ένας τις αλλαγές, τις προτάσεις και τις παρατηρήσεις του άλλου για την εξέλιξη και τη βελτίωση του κώδικα. Επιπλέον, οι πλατφόρμες αυτές ελέγχουν τις διαφορετικές εκδόσεις του κώδικα ενός έργου, ώστε ο προγραμματιστής να μπορεί να ανατρέξει σε οποιαδήποτε από αυτές, εάν το επιθυμεί. Όλες οι τροποποιήσεις, οι οποίες διενεργούνται από ένα πρόσωπο της ομάδας ανάπτυξης λογισμικού σε μία δεδομένη χρονική στιγμή, συγκεντρώνονται σε ένα commit, όπου καταγράφονται μάλιστα όλοι οι λόγοι πίσω από αυτές. Έτσι, γίνεται κατανοητό ότι τέτοιες συλλογές αλλαγών εμπεριέχουν πολλές χρήσιμες πληροφορίες για τον τρόπο με τον οποίο εξελίσσεται ένα έργο λογισμικού. Η εφαρμογή τεχνικών του κλάδου της εξόρυξης δεδομένων στις δημόσιες αποθήκες λογισμικού και σε όλα τα δεδομένα που αναφέρθηκαν παραπάνω θα μπορούσε να φέρει στο φως ορισμένες συχνές διορθώσεις σφαλμάτων, συστηματικές τροποποιήσεις, επαναλαμβανόμενους τύπους αλλαγών στην αρχιτεκτονική, καθώς και κάποια ευρέως χρησιμοποιούμενα σχεδιαστικά πρότυπα, γνωστά ή μη. Μία εκτενής βιβλιογραφική έρευνα σε αυτόν τον τομέα αποκαλύπτει ότι οι περισσότερες προσπάθειες επιστημόνων έχουν στραφεί στις διορθώσεις σφαλμάτων και στις συστηματικές τροποποιήσεις, με αποτέλεσμα να έχουν αγνοηθεί κάποια λιγότερο λεπτομερή, δηλαδή πιο υψηλού επιπέδου (high level) μοτίβα εξέλιξης ή συγγραφής κώδικα. Στο πλαίσιο αυτό, η παρούσα διπλωματική εργασία προσπαθεί να ανακαλύψει τις σχέσεις ανάμεσα στις διάφορες κλάσεις ενός προγράμματος, αλλά και να παρακολουθήσει τον τρόπο με τον οποίο αυτές αλλάζουν στο πέρασμα του χρόνου. Για να επιτευχθούν οι παραπάνω στόχοι, προσαρμόζεται ένα εργαλείο εξαγωγής σχέσεων (Relationships Extractor), η λειτουργία του οποίου βασίζεται στην ανάλυση των Αφηρημένων Συντακτικών Δέντρων (Abstract Syntax Trees) που αφορούν τους κώδικες μερικών από τα πιο δημοφιλή έργα λογισμικού της διαδικτυακής πλατφόρμας του Github. Αφού αναλυθούν και επεξεργαστούν αυτά τα συντακτικά δέντρα, εξάγονται πληροφορίες για τη λειτουργία των κλάσεων, την αφαιρετικότητά τους και την κληρονομικότητα, οι οποίες στη συνέχεια μοντελοποιούνται σε γράφους (με τις κλάσεις ως κόμβους και τις συνδέσεις τους ως ακμές). Αφού λοιπόν ολοκληρωθούν οι παραπάνω ενέργειες για την τελική μορφή του εκάστοτε προγράμματος, η ίδια σειρά ενεργειών ακολουθείται και για κάθε στιγμιότυπό του, εξάγοντας τη διαφορά ως προς τις σχέσεις ανάμεσα στην έκδοσή του πριν και μετά από κάθε commit ξεχωριστά. Τέλος, εφαρμόζοντας τον αλγόριθμο gSpan (graph-based Substructure pattern mining), έναν αλγόριθμο αναζήτησης συχνών πογράφων σε ένα σύνολο γράφων, ανιχνεύονται ορισμένα ευρέως χρησιμοποιούμενα από την παγκόσμια προγραμματιστική κοινότητα, μοτίβα σχεδίασης και εξέλιξης λογισμικού.
Υλοποίηση εργαλείου πλήρους στοίβας σε περιβάλλον Kubernetes για την αυτοµατο...ISSEL
Η µετάβαση των τεχνολογιών του διαδικτύου προς αρχιτεκτονικές µικροϋπηρεσιών (microservices) και η ανάπτυξη του ∆ιαδικτύου των Πραγµάτων (Internet of Things - IoT) συνέβαλλαν σηµαντικά στην αύξηση των αναγκών για νέες µεθόδους αποδοτικής επικοι νωνίας µεταξύ ανοµοιογενών και διανεµηµένων συστηµάτων. Οι µεθοδολογίες διαµεσο λάβησης µηνυµάτων (brokered messaging) λειτουργούν καλύτερα από τις τεχνολογίες / προσεγγίσεις REST (Representational State Transfer) και RPC (Remmote Procedure Call) σε συστήµατα επικοινωνίας παραγωγών-καταναλωτών (µηνυµάτων) όπου είναι επιθυµητή τόσο η µετάδοση µεγάλου όγκου δεδοµένων σε υψηλούς ϱυθµούς όπως και η απεµπλοκή των υποσυστηµάτων των παραγωγών και των καταναλωτών. Μια ελαφριά και αξιόπιστη τεχνολογία που προσφέρει τα πλεονεκτήµατα της µεσολάβησης µηνυµάτων είναι το RabbitMQ. Με τη χρήση αυτής, µπορούν να χτιστούν πολύπλοκα και αποδοτικά συστήµατα ειδικά σε συνθήκες ασύγχρονης επικοινωνίας, αναξιόπιστων δικτύων και σε περιβάλλοντα εφαρµογών µεγάλων δεδοµένων (big data). Η παρούσα διπλωµατική εστιάζει στην ανάπτυξη ενός εργαλείου πλήρους στοίβας (full-stack), το οποίο κάνει χρήση της τεχνολογίας διαµεσολάβησης µηνυµάτων για την εφαρµογή ϕίλτρων στα διακινούµενα µηνύµατα του συστήµατος. Η αυτοµατοποίηση αυτών των λειτουργιών µέσω του εργαλείου, καθιστά τα ωφέλη των εµπλεκόµενων τεχνολογιών προσβάσιµα από τους χρήστες, ανεξάρτητα από το ϐαθµό της εµπειρίας τους στις συγκεκριµένες τεχνολογίες. Η επικοινωνία των µηνυµάτων επιτελείται µέσω του διακοµιστή Rabbitmq Server, ο οποίος εφαρµόζει την τεχνολογία διαµεσολάβησης µηνυµάτων. Τέλος για τη διευκόλυνση της διαχείρισης ολόκληρου του συστήµατος, αυτό ενσωµατώθηκε στο πλαίσιο της τεχνολογίας Kubernetes, η οποία προσφέρει την αυτοµατοποίηση της ενορχήστρωσης των κοµµατιών του συστήµατος. Για τη σύσταση του περιβάλλοντος Kubernetes επιλέχθηκε η τεχνολογία minikube καθώς προσφέρει εύκο λη και γρήγορη δηµιουργία ενός περιβάλλοντος Kubernetes. Η απόδοση του συστήµατος ελέγθηκε για διαφορετικές τιµές του ϕορτίου εισαγωγής µηνυµάτων και των εφαρµοζόµενων ϕίλτρων. Τα µεγέθη που µετρήθηκαν αφορούν την συχνότητα εισόδου µηνυµάτων, τη συχνότητα κατανάλωσης µηνυµάτων, τη συχνότητα καταγραφής µηνυµάτων στη Βάση ∆εδοµένων και τον αριθµό αποθηκευµένων δεδο µένων στις ουρές του διαµεσολαβητή. Από τα πειράµατα εξάγεται το συµπέρασµα ότι είναι ιδιαίτερα σηµαντική η επιλο γή του κατάλληλου αριθµού εφαρµοζόµενων ϕίλτρων σύµφωνα µε τους διαθέσιµους πόρους επεξεργαστικής ισχύος και µνήµης του συστήµατος.
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...ISSEL
Σήμερα, η ανάπτυξη της τεχνολογίας και η αξιοποίηση της σε όλους τους τομείς της ζωής του ανθρώπου, δημιουργεί την ανάγκη για λογισμικό που είναι έυκολα προσαρμόσιμο, ευπαρουσίαστο, επιλύει πολλούς τύπους προβλημάτων, είναι οικονομικό και αξιόπιστο. Η Μοντελοστραφής Μηχανική (MDE), δηλαδή η ανάπτυξη λογισμικού που στηρίζεται σε μοντέλα, η αυτόματη παραγωγή κώδικα με βάση αυτά τα μοντέλα, η δυνατότητα γραφικής απεικόνισης του λογισμικού σε συνδυασμό με τις τεχνικές του Αυτοματοποιημένου Ελέγχου Συμπερασμών (Automated Reasoning) καλύπτουν ανά περίπτωση τις παραπάνω ανάγκες. Στην παρούσα διπλωματική εργασία, έγινε αξιοποίηση όλων των παραπάνω τεχνικών για την κατασκευή ενός ολοκληρωμένου εργαλείου, στην πλατφόρμα του Eclipse, με στόχο την κάλυψη των προαναφερθέντων αναγκών. Πιο συγκεκριμένα στα πλαίσια της Μοντελοστραφούς Μηχανικής (MDE) κατασκευάστηκε ένα μέτα-μοντέλο που αποτελεί τον πηρύνα του συστήματος και ενσωματώνει όρους από το πεδίο του Λογισμού. Στη συνέχεια, πάνω σε αυτό δημιουργήθηκε μια γραφική διεπαφή, στο περιβάλλον του Sirius, που δίνει την δυνατότητα στον ενδιαφερόμενο να καταγράψει, με γραφικό τρόπο, το μοντέλο που επιθυμεί. Η καταγραφή του μοντέλου γίνεται με την μορφή εξισώσεων σωστά διατυπωμένων στα πρότυπα της Κατηγορηματικής Λογικής Πρώτης Τάξης (FOL). Από αυτό το μοντέλο ύστερα, παράγεται αυτόματα κώδικας Java, ο οποίος αξιοποιώντας συναρτήσεις και αντικείμενα της βιβλιοθήκης TweetyProject, διαμορφώνεται κατάλληλα ώστε να αποτελεί έγκυρη είσοδο για τον built-in prover της ίδιας βιβλιοθήκης που μπορεί να πραγματοποιεί λογικούς ελέγχους στα πρότυπα του Αυτοματοποιημένου Ελέγχου Συμπερασμών. Μερικές ακόμα βοηθητικές συναρτήσεις σε Java, ολοκληρώνουν το εργαλείο της διπλωματικής. Όλα τα παραπάνω καθιστούν, το σύστημα που αναπτύχθηκε σε αυτή την διπλωματική, ικανό να χρησιμοποιηθεί από διάφορους υπάρχοντες μηχανισμούς αυτόματης παραγωγής συστημάτων, προκειμένου να ελέγξουν την εγκυρότητα των υπό σχεδίαση συστημάτων, δίχως κάποιος να απαιτείται να υλοποιήσει λογισμικό που κάνει λογικούς συμπερασμούς.
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...ISSEL
Στην εποχή της ταχείας ανάπτυξης της τεχνολογίας, η χρήση ρομποτικών συστημάτων είναι ευρεία σε όλο το φάσμα της σύγχρονης ζωής, και η αυτοματοποίηση που επιτυγχάνεται με τη χρήση τους, αποφέρει μεγάλη και ταχύτερη παραγωγή με σχετικά μικρότερο κόστος. Ωστόσο, τα ρομπότ είναι συχνά ασυνεπή κατά τη δοκιμή, καθώς υπάρχουν πολλές απροσδόκητες μεταβλητές. Οι ρομποτικές προσομοιώσεις δίνουν τη λύση στο πρόβλημα αυτό, αφού παρέχουν ένα χαμηλού κόστους, εύκολης πρόσβασης εικονικό περιβάλλον ανάπτυξης ρομπότ. Χρησιμοποιούνται για τη γρήγορη δοκιμή αισθητήρων, την αξιολόγηση του σχεδιασμού ενός ρομπότ, την προσομοίωση εικονικών αισθητήρων, παρέχουν
ελαχιστοποιημένο μοντέλο για προβλέψιμους ελεγκτές μοντέλων, μια αρχιτεκτονική για πραγματικό έλεγχο των ρομπότ και ούτω καθεξής. Οι ρομποτικές προσομοιώσεις λαμβάνουν χώρα σε ειδικά λογισμικά, τους προσομοιωτές ρομποτικής. Ένας προσομοιωτής ρομποτικής είναι ένας προσομοιωτής, που χρησιμοποιείται για τη δημιουργία μιας εφαρμογής για ένα φυσικό ρομπότ χωρίς να εξαρτάται από το πραγματικό μηχάνημα, εξοικονομώντας έτσι κόστος και χρόνο. Σε ορισμένες περιπτώσεις, αυτές οι εφαρμογές μπορούν να μεταφερθούν στο φυσικό ρομπότ χωρίς τροποποιήσεις. Μία από τις πιο δημοφιλείς εφαρμογές για προσομοιωτές ρομποτικής είναι η τρισδιάστατη μοντελοποίηση και απόδοση ενός ρομπότ και του περιβάλλοντός του. Αυτός ο τύπος λογισμικού ρομποτικής έχει ένα μοντέλο, που είναι ένα εικονικό ρομπότ, ικανό να μιμείται την κίνηση ενός πραγματικού ρομπότ σε μια πραγματική κατάσταση. Oρισμένοι προσομοιωτές μάλιστα χρησιμοποιούν μια μηχανή φυσικής, για μια πιο ρεαλιστική παραγωγή κίνησης του ρομπότ. Υπάρχει ένας μεγάλος αριθμός προσομοιωτών ρομποτικής, με τον καθένα να εξυπηρετεί, σε διαφορετικό βαθμό από τους άλλους, είτε διαφορετικούς είτε ίδιους σκοπούς. Παρόλο, όμως, που οι προσομοιωτές γενικότερα προσφέρουν μια πληθώρα προτερημάτων, η ανάγκη για την παραγωγή εφαρμογών και λογισμικού υψηλής ποιότητας έχει γίνει πιο επιτακτική απο ποτέ. Η αύξηση της παραγωγικότητας, ο έλεγχος (αποσφαλμάτωση), η επαλήθευση και συντήρηση του λογισμικού παίζουν καθοριστικό ρόλο στην ποιότητα του τελικού προϊόντος. Τα σύγχρονα λογισμικά, αντιθέτως, εμπεριέχουν μεγάλη πολυπλοκότητα, αφού συχνά αποτελούνται από εκατοντάδες γραμμές κώδικα, διανεμημένες σε πολλά διαφορετικά αρχεία, και εξαρτώνται από πολυάριθμες βιβλιοθήκες. Η αλλαγή μίας και μόνο γραμμής κώδικα, μπορεί να επηρεάσει τη λειτουργικότητα ολόκληρου του συστήματος και να προκαλέσει σφάλματα, κάτι που είναι πολύ πιθανό, αφού τα περισσότερα λογισμικά απαιτούν μεγάλο πλήθος ατόμων για την ανάπτυξή τους. Τη λύση στο ζήτημα της ποιότητας έρχεται να δώσει η αυτοματοποίηση λογισμικού. (continue in full text)
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Σε Πραγματ...ISSEL
Δεδομένης της ταχείας ανάπτυξης της τεχνητής νοημοσύνης τα τελευταία χρόνια, γεννάται το ερώτημα αν θα μπορούσε να αξιοποιηθεί προκειμένου να βελτιωθεί η ασφάλεια των διαδικτυακών υπηρεσιών. Τα τελευταία χρόνια το διαδίκτυο ολοένα και με μεγαλύτερο ρυθμό καταλαμβάνει θέση στις ζωές των ανθρώπων αποτελώντας ένα από τα βασικότερα μέσα ενημέρωσης, ψυχαγωγίας, επικοινωνίας και άλλα. Ωστόσο, δεν είναι λίγοι και εκείνοι οι οποίοι χρησιμοποιούν το διαδίκτυο αποσκοπώντας να αυξήσουν τα προσωπικά τους κέρδη, όχι πάντα με νόμιμα ή ηθικά μέσα. Ανακαλύπτοντας και εκμεταλλεύοντας ευπάθειες συστημάτων κακόβουλοι χρήστες του διαδικτύου μπορούν να αποκτούν πρόσβαση σε ευαίσθητα δεδομένα, να τα μεταπωλλούν σε τρίτους είτε ακόμα και να ρίχνουν ιστοσελίδες μεγάλων εταιριών ή κυβερνήσεων. Παράλληλα, ωστόσο, με την αύξηση της υπολογιστικής ισχύος και την ανάπτυξη των μαθηματικών και της στατιστικής σημειώθηκε σημαντική πρόοδος και στον τομέα της τεχνητής νοημοσύνης. Πρόκειται για ένα τομέα με εφαρμογές σε πολλά διαφορετικά πεδία όπως η εκπαίδευση, η οικονομία, η επιστήμη, η υγεία και άλλα. Τα τελευταία χρόνια χρησιμοποιείται επίσης στον τομέα της κυβερνοασφάλειας για την ανάπτυξη συστημάτων προστασίας τα οποία επιδιώκουν να προβλέψουν ή να εντοπίσουν μία επικείμενη επίθεση μειώνοντας κατά το δυνατόν την πιθανότητα εισβολής και κλοπής δεδομένων. Στα πλαίσια της παρούσας διπλωματικής αναπτύχθηκε ένα σύστημα που μπορεί να λειτουργεί ταυτόχρονα με μία διαδικτυακή εφαρμογή με στόχο την ανίχνευση αποκλίνουσας συμπεριφοράς χρηστών. Το σύστημα αυτό λειτουργεί και εντοπίζει τις ανωμαλίες αυτές σε πραγματικό χρόνο, ενώ λαμβάνει παράλληλα και μέτρα για τον αποκλεισμό των επιτήδειων χρηστών.
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών για απομακρυσμένα ρομπότ, στο πλαίσ...ISSEL
Όπως το Διαδίκτυο άλλαξε τον τρόπο που οι άνθρωποι αλληλεπιδρούν με την πληροφορία, έτσι και τα κυβερνοφυσικά συστήματα αλλάζουν τον τρόπο που οι άνθρωποι αλληλεπιδρούν με τα υπολογιστικά συστήματα. Τα κυβερνοφυσικά συστήματα ενσωματώνουν αισθητήρες, υπολογιστικές δυνατότητες, έλεγχο και δικτύωση σε φυσικά αντικείμενα, συνδέοντάς τα στο Διαδίκτυο, αλλά και μεταξύ τους. Ενδεικτικό παράδειγμα τέτοιων συστημάτων είναι τα ρομποτικά συστήματα, καθώς συνδυάζουν αλληλεπίδραση με το περιβάλλον και υπολογιστικές ικανότητες. Παρόλο που η ρομποτική είναι παραδοσιακά συνυφασμένη με τη βιομηχανία, τα τελευταία χρόνια έχει επεκταθεί και σε άλλους κλάδους, όπως στην ιατρική, στην αυτόνομη εξερεύνηση αλλά και σε τομείς της καθημερινής ζωής, όπως για οικιακή χρήση και ψυχαγωγία. Παράλληλα, ραγδαία αύξηση παρουσιάζει και το Διαδίκτυο των Πραγμάτων (Internet of Things – IoT), όπου πλέον αντικείμενα της καθημερινότητας είναι εξοπλισμένα με αισθητήρες για τη συλλογή δεδομένων από το περιβάλλον και συνδέονται στο Διαδίκτυο για να μοιραστούν αυτά τα δεδομένα. Λόγω της κινητικότητας που προσφέρουν τα ρομποτικά συστήματα, η ενσωμάτωση τους στον IoT κόσμο θα επιτρέπει την καλύτερη επίδραση στο περιβάλλον, ενώ παράλληλα τα ρομπότ θα λαμβάνουν αποφάσεις βάσει δεδομένων άλλων συσκευών. Για να καταστεί αυτό δυνατό, πρέπει να ξεπεραστούν ορισμένοι περιορισμοί. Αφ’ ενός, είναι ιδιαίτερα σημαντικό να υπάρχει η δυνατότητα του απομακρυσμένου ελέγχου και παρακολούθησης ενός ρομπότ. Δυστυχώς, το Robot Operating System (ROS), το πιο διαδεδομένο μεσολειτουργικό σύστημα για ανάπτυξη ρομποτικών εφαρμογών, περιορίζει τη διαχείριση του ρομπότ σε τοπικό δίκτυο. Παράλληλα, είναι επιθυμητό, χρήστες χωρίς ιδιαίτερες γνώσεις ρομποτικής και προγραμματισμού να έχουν τη δυνατότητα να δημιουργήσουν τις εφαρμογές τους. Η παρούσα διπλωματική εργασία εστιάζει στην ανάπτυξη ενός συστήματος που θα αντιμετωπίζει τους παραπάνω περιορισμούς. Για την επικοινωνία μεταξύ του ρομπότ και του απομακρυσμένου υπολογιστή, χρησιμοποιείται ο μεσολαβητής μηνυμάτων RabbitMQ. Ταυτόχρονα, η ανάπτυξη των εφαρμογών και η ενσωμάτωση του ρομπότ στον IoT κόσμο πραγματοποιείται μέσω του Node-RED, ενός εργαλείου που επιτρέπει τη δημιουργία εφαρμογών για IoT συστήματα μέσω γραφικής διεπαφής, γεγονός που απλοποιεί σημαντικά τη δυσκολία της διαδικασίας του προγραμματισμού. Επιπλέον, υλοποιήθηκαν διάφορα σενάρια χρήσης που αναδεικνύουν τις δυνατότητες του συστήματος για την ανάπτυξη ρομποτικών εφαρμογών στα πλαίσια του IoT.
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...ISSEL
Τα τελευταία χρόνια η εξάπλωση του διαδικτύου και των εφαρμογών του αυξάνεται με ραγδαίους ρυθμούς, καταλαμβάνοντας ολοένα και μεγαλύτερο μέρος της καθημερινότητας των ανθρώπων. Πλέον, το διαδίκτυο αποτελεί βασικό και αναγκαίο μέσο επικοινωνίας, ψυχαγωγίας, ενημέρωσης, αγοροπωλησιών και άλλων πολλών λειτουργιών που πια γίνονται μέσω αυτού. Μαζί με την ανάπτυξη αυτών των δυνατοτήτων, δυστυχώς, αυξήθηκαν και οι παράνομες ενέργειες όπως η εξαπάτηση χρηστών, η πρόσβαση σε εμπιστευτικές και απόρρητες πληροφορίες, η προώθηση ορισμένων προϊόντων ακόμα και η διακοπή διάθεσης ιστοσελίδων από το διαδίκτυο, εκμεταλλεύοντας τις αδυναμίες και τα τρωτά σημεία στην ασφάλεια των διαδικτυακών εφαρμογών και συστημάτων. Με τον όρο κυβερνοασφάλεια ορίζουμε την ανάπτυξη συστημάτων και μεθόδων προστασίας με στόχο τον εντοπισμό και την αναγνώριση μίας επικείμενης διαδικτυακής επίθεσης συμβάλλοντας έτσι δραστικά στην προστασία από τις κακόβουλες ενέργειες. Από την άλλη, και ο τομέας της Μηχανικής Μάθησης επιδεικνύει μεγάλη άνθιση. Η Μηχανική Μάθηση ασχολείται με τον προγραμματισμό του υπολογιστή ώστε να μπορεί να «σκέφτεται» και να «αποφασίζει», και όχι μόνο να εκτελεί ρητά εντολές που του έχουν υπαγορευθεί από τον προγραμματιστή. Πλέον τεχνικές Μηχανικής Μάθησης εφαρμόζονται σε μία πλειάδα πεδίων του διαδικτύου, όπως είναι η κυβερνοασφάλεια με την οποία η παρούσα διπλωματική εργασία ασχολείται. Στο πλαίσιο της παρούσας διπλωματικής εργασίας, μοντελοποιήθηκε και αναπτύχθηκε ένα σύστημα το οποίο λαμβάνει απαραίτητες και χρήσιμες πληροφορίες για την συμπεριφορά του χρήστη σε μια διαδικτυακή εφαρμογή ηλεκτρονικού εμπορίου και αφού τις αποθηκεύει και τις επεξεργάζεται με συγκεκριμένο τρόπο, εν τέλει τις τροφοδοτεί σε μοντέλα μηχανικής μάθησης ακολουθιακής ταξινόμησης ώστε να χαρακτηριστεί η συμπεριφορά του χρήστη είτε καλόβουλη είτε κακόβουλη.
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούISSEL
Τα τελευταία χρόνια παρατηρείται μια ραγδαία ανάπτυξη στο τομέα των υπηρεσιών νέφους(cloud computing) η οποία προκάλεσε το ενδιαφέρον πολλών επιχειρήσεων, με τη ζήτησή τους να αυξάνεται συνεχώς όπως επίσης και ο αριθμός των παρόχων που προσφέρουν αυτές τις υπηρεσίες. Όμως, παρά το ότι έχει εδραιωθεί η χρήση του cloud computing προσφέροντας πολλά πλεονεκτήματα, ανακύπτουν και διάφορες προκλήσεις, όπως η ασφάλεια των δεδομένων. Βασικό στοιχείο της διαδικασίας ανάπτυξης λογισμικού αποτελεί η συχνή πραγματοποίηση ελέγχων (tests) στην εφαρμογή, που αποσκοπεί στην διασφάλιση της ποιότητας, και την ελαχιστοποίηση των σφαλμάτων (bugs) , κάτι που επιτυγχάνεται μέσω των συστημάτων συνεχούς ενσωμάτωσης (Continuous Integration, CI). Μετά την επιτυχημένη εκτέλεση των αυτοματοποιημένων ελέγχων, το CI αποστέλλει και εκτελεί την τελευταία έκδοση του κώδικα στο δοκιμαστικό (staging) ή στο τελικό (production) περιβάλλον αυτόματα μέσω των συστημάτων Continuous Deployment (CD) και Continuous Delivery (CDE). Ο σκοπός της παρούσας εργασίας είναι η σύγκριση των παρόχων cloud, και ακολούθως η ανάπτυξη μιας μεθοδολογίας, μέσω της οποίας να απλοποιείται η χρήση ενός συστήματος CI + CD/CDE. Η προσέγγισή μας ενσωματώνει επίσης στατική ανάλυση και αξιολόγηση ποιότητας κώδικα. Η υλοποίηση του CI καθώς και των διαδικασιών CD/CDE γίνονται μέσω του διαδικτυακού εργαλείου ανοιχτού κώδικα Gitlab, όπου γίνεται χρήση έτοιμων pipelines με υποστήριξη εφαρμογών Node.js και Django, ενώ η στατική ανάλυση πραγματοποιείται μέσω του Code Quality που υπάρχει ενσωματωμένο στο Gitlab και βασίζεται στο εργαλείο Code Climate. Η αυτοματοποίηση της εγκατάστασης των προαπαιτούμενων για το deployment της εφαρμογής,δηλαδή η προετοιμασία του server, και το πρώτο deployment , πραγματοποιoύνται μέσω του εργαλείου διαχείρισης διαμόρφωσης λογισμικού Ansible. Ακόμη, δίνεται η δυνατότητα στο χρήστη για deployment της εφαρμογής στη cloud πλατφόρμα Heroku χωρίς να χρειάζεται η χρήση του Ansible. Το προϊόν της εργασίας απευθύνεται κυρίως σε φοιτητές ή προγραμματιστές με μικρή εμπειρία οι οποίοι θέλουν να ασχοληθούν και να κάνουν τα πρώτα τους βήματα με το CI του Gitlab.
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ...ISSEL
Μια από τις τεχνολογίες που έκανε την εμφάνισή της την τελευταία δεκαετία είναι το Blockchain. Τα πλεονεκτήματα και ειδικότερα οι προοπτικές που δημιουργεί για αποκεντρωμένες, διανεμημένες και ασφαλείς συναλλαγές, ώθησαν την τεχνολογία αυτή εντός μικρού χρονικού διαστήματος να διεισδύσει στον τεχνολογικό κόσμο. Ξεκίνησε εστιάζοντας, κατά κύριο λόγο, στις οικονομικές συναλλαγές με τη βοήθεια του κρυπτονομίσματος Bitcoin. Στη συνέχεια, μέσω της πλατφόρμας Ethereum πραγματοποιήθηκε το επόμενο μεγάλο βήμα, όπου η τεχνολογία Blockchain μπόρεσε να βρει εφαρμογή σε μη οικονομοκεντρικά περιβάλλοντα, όπως αυτό της υγείας και κυρίως αυτό της διαχείρισης της εφοδιαστικής αλυσίδας. Όμως, το μεγαλύτερο πλεονέκτημα που κάνει το Blockchain μια πολλά υποσχόμενη εφεύρεση παραμένει το οικονομικά αποκεντρωμένο μοντέλο που μπορεί να υλοποιήσει. Σύμφωνα με το μοντέλο αυτό, όλες οι χρηματικές συναλλαγές πραγματοποιούνται μέσω ενός διανεμημένου συστήματος, το οποίο δεν ανήκει σε κάποια κεντρική αρχή, όπως για παράδειγμα μια τράπεζα. Το σύστημα αυτό λειτουργεί με τη βοήθεια των χρηστών του και προσφέρει ασφαλή εκτέλεση συναλλαγών σε άμεσο χρόνο. Πάνω σε αυτό το μοντέλο έχει προταθεί μια εναλλακτική μορφή χρηματοδότησης μικρομεσαίων επιχειρήσεων. Αυτή αναφέρεται ως αρχική προσφορά νομίσματος (στην αγγλική βιβλιογραφία αναφέρεται ως Initial Coin Offering ή εν συντομία ICO) και βοηθάει τις επιχειρήσεις να ενισχυθούν οικονομικά με αυτοματοποιημένο, ασφαλή και αποκεντρωμένο τρόπο. Ωστόσο, όπως όλες οι διαδικασίες, έτσι και το ICO, μπορεί να σχεδιαστεί με λανθασμένα κριτήρια ασφαλείας και να οδηγήσει στην οικονομική καταστροφή μιας εταιρίας. Στόχος, λοιπόν, αυτής της εργασίας είναι η τεχνική ανάλυση μιας διαδικασίας ICO που πραγματοποιείται στην πλατφόρμα του Ethereum και συγκεκριμένα η παρουσίαση των τμημάτων που μπορούν να υπονομεύσουν την ασφάλεια και την αξιοπιστία της, καθώς και να προταθούν τρόποι αντιμετώπισης και πρόληψης. Στο τέλος, υλοποιείται μια τέτοια διαδικασία στην πράξη, όπου και εφαρμόζονται όλα όσα αναλύθηκαν στα προηγούμενα στάδια.
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...ISSEL
Η αυξανόμενη χρήση του διαδικτυακού λογισμικού και η δημοφιλία του λογισμικού-ως-υπηρεσία έχει δημιουργήσει ένα μεγάλο κενό ασφαλείας στα συστήματα που μέχρι πριν από λίγα χρόνια "έτρεχαν" σε κλειστά δίκτυα: η πληροφορία (ευαίσθητη και μη) είναι πλέον διαθέσιμη στο διαδίκτυο. Κατά συνέπεια, η εφαρμογή κατάλληλων τεχνικών ασφάλειας του λογισμικού είναι μονόδρομος για τη θωράκισή της. Ο έλεγχος ασφάλειας πρέπει πλέον να γίνεται σε διάφορα και διαφορετικά επίπεδα, όπως στο επίπεδο δικτύου, στο επίπεδο του λειτουργικού, αλλά και στο επίπεδο της εφαρμογής. Στο πλαίσιο αυτό η παρούσα διπλωματική αποσκοπεί στη σχεδίαση και ανάπτυξη ενός μηχανισμού για την αναγνώριση πιθανών επιθέσεων ασφαλείας με τη χρήση τεχνικών μηχανικής μάθησης. Στόχος είναι η εφαρμογή τεχνικών μηχανικής μάθησης για την αναγνώριση "καλών" και “κακών” προτύπων συμπεριφοράς στο επίπεδο χρήστη (application-level). Ανάλυση θα γίνει σε δυναμικό επίπεδο (κατά τη λειτουργία των εφαρμογών) και θα αναπτυχθεί ένας μηχανισμός λήψης αποφάσεων.
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...ISSEL
Οι ιστοσελίδες συνιστούν το πιο διαδεδομένο και πλέον απαραίτητο μέσο για όλους τους τομείς, από την ενημέρωση μέχρι και τη διασκέδαση. Η αισθητική τους αποτελεί αναπόσπαστο κομμάτι του σχεδιασμού μιας ιστοσελίδας, καθώς o ρόλος της είναι πολυδιάστατος. Αρχικά, βοηθά στην υποστήριξη του περιεχομένου και της λειτουργικότητας μιας ιστοσελίδας ενώ ταυτόχρονα αποσκοπεί στο να κεντρίσει το ενδιαφέρον συγκεκριμένων δημογραφικών ομάδων. Επίκεντρο της παρούσας εργασίας είναι να διερευνήσει τη σημαντικότητα των δημογραφικών χαρακτηριστικών στην αξιολόγηση της αισθητικής μιας ιστοσελίδας, μέσω της χρήσης αλγορίθμων βαθιάς μάθησης. Για την επίλυση του προβλήματος εφαρμόστηκαν δύο διαφορετικές προσεγγίσεις. Η πρώτη αφορά την εκπαίδευση τριών διαφορετικών αρχιτεκτονικών συνελικτικών νευρωνικών δικτύων στο σύνολο των δεδομένων, την αρχιτεκτονική AlexNet, VGG16 και Xception. Η AlexNet έχει αξιολογηθεί ξανά στο συγκεκριμένο σετ και παρουσιάζει αξιόπιστα αποτελέσματα ενώ η VGG16 παρουσιάζεται ως μια βελτιωμένη λύση. Η Xception είναι μια σύγχρονη αρχιτεκτονική που δοκιμάζεται για πρώτη φορά στο σύνολο αυτό και ξεπέρασε τα βιβλιογραφικά αποτελέσματα. Η δεύτερη προσέγγιση περιλαμβάνει τον διαχωρισμό του σετ δεδομένων σε δημογραφικές ομάδες και την εκπαίδευση συνελικτικών δικτύων για κάθε ομάδα ξεχωριστά. Με αυτό τον τρόπο τα εκάστοτε μοντέλα μπορούν να αντιληφθούν τα χαρακτηριστικά της κάθε δημογραφικής ομάδας. Τέλος, τα μοντέλα αυτά ενώνονται με διαφορετικές συνδυαστικές μεθόδους και επιλέγεται η βέλτιστη για την αξιολόγηση και τη σύγκριση των αποτελεσμάτων. Στα πειράματα που πραγματοποιήθηκαν γίνονται συγκρίσεις μεταξύ των μοντέλων για κάθε προσέγγιση καθώς και παρουσίαση παραδειγμάτων. Σκοπός της εργασίας είναι να αναδείξει τον ρόλο και τη σημασία των δημογραφικών χαρακτηριστικών, ενώ παράλληλα επισημαίνεται και η συνεισφορά των εξελιγμένων αλγορίθμων βαθιάς μάθησης στην επίτευξη αξιόπιστων προβλεπτικών αποτελεσμάτων αναφορικά με υποκειμενικά ζητήματα, όπως είναι η πρόβλεψη αισθητικής ιστοσελίδων.
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων για την Εξαγωγή Προτύπων Διόρθωσης σε Σφ...ISSEL
Τις τελευταίες δεκαετίες, τα έργα λογισµικού γίνονται όλο και µεγαλύτερα, χρησιµότερα και διεισδύουν σε όλο και περισσότερες πτυχές του ανθρώπινου ϐίου. Κατά την ανάπτυξη και τη συντήρηση λογισµικού, οι προγραµµατιστές σπαταλούν µεγάλο µέρος του χρόνου τους στον εντοπισµό και τη διόρθωση σφαλµάτων. Τα εργαλεία στατικής ανάλυσης κώδικα αυτοµατοποιούν τη διαδικασία εντοπισµού των σφαλµάτων. Η χρήση τους, ωστόσο, παραµένει περιορισµένη, καθώς η κατανόηση και η διόρθωση σφαλµάτων παραµένουν ευθύνες των προγραµµατιστών. Τα τελευταία χρόνια, πραγµατοποιούνται έρευνες για την εξόρυξη προτύπων διόρθωσης τέτοιων σφαλµάτων άλλα και την ανάπτυξη συστηµάτων αυτοµατοποιηµένης διόρθωσης σφαλµάτων. Οι πρώτες στοχεύουν στην κατανόηση του τρόπου που οι προγραµµατιστές αντιµετωπίζουν τέτοια προβλήµατα, και πολλές ϕορές τα αποτελέσµατα τους αποτελούν ϐάση για τις δεύτερες. Η παρούσα διπλωµατική, στοχεύει στην εξόρυξη χρήσιµων προτύπων διόρ ϑωσης σφαλµάτων για σφάλµατα που ανήκουν στους κανόνες του εργαλείου στατικής ανάλυσης PMD. Αρχικά, µέσω κατάλληλων ερωτηµάτων στο API του Github, αναζητο ύνται commits που αφορούν διορθώσεις τέτοιων σφαλµάτων και λαµβάνονται οι εκδόσεις των αρχείων πριν και µετά των αλλαγών των commits. Στη συνέχεια, µέσω εκτέλεσης του PMD στις δύο εκδόσεις, εντοπίζονται οι επιµέρους διορθώσεις και δηµιουργείται κα τάλληλο σύνολο δεδοµένων, αποτελούµενο αποκλειστικά από διορθώσεις σφαλµάτων, κανόνων του PMD. Οι επιµέρους διορθώσεις αναλύονται και µε αξιοποίηση της αναπα ϱάστασης κώδικα srcML και του αλγορίθµου απόστασης επεξεργασίας δέντρου Gumtree, είναι εφικτή η εξαγωγή µιας ακολουθίας όρων που είναι αντιπροσωπευτικοί για κάθε διόρθωση. ΄Ετσι, µε εύρεση του µήκους της µέγιστης κοινής υπακολουθίας µεταξύ δύο διορθώσεων, είναι εφικτή η ανάπτυξη ενός µοντέλου οµοιότητας για τις διορθώσεις συνολικά και κατ΄ επέκταση, η οµαδοποίηση τους και η εξαγωγή προτύπων διόρθω σης. Πραγµατοποιήθηκαν δύο διαφορετικά πειράµατα οµαδοποίησης : στο ένα αξιοποιήθηκε ο αλγόριθµος K-medoids και στο άλλο ο DBSCAN. Και στα δύο πειράµα τα, άλλα ιδιαίτερα σε αυτό µε τον DBSCAN, σχεδόν κάθε εξαγόµενη οµάδα αποτελείται κυρίως από διορθώσεις σφαλµάτων ενός κανόνα του PMD. Παράλληλα, µε τον υπο λογισµό του αριθµού των commits και των αποθετηρίων από τα οποία προέρχονται οι διορθώσεις κάθε οµάδας - προτύπου, ϕανερώνεται ότι οι περισσότερες οµάδες προκύπτουν από διορθώσεις προερχόµενες από µεγάλο αριθµό commits και αποθετηρίων. ΄Ετσι αντανακλούν τον τρόπο που αρκετοί προγραµµατιστές ϑα αντιµετώπιζαν παρόµοια προβλήµατα. Συνεπώς, τα εξαγόµενα πρότυπα ϑα µπορούσαν να αποτελέσουν αφετη ϱία για κάποιον µηχανισµό αυτοµατοποιηµένης διόρθωσης σφαλµάτων, ϐασιζόµενο στο PMD για τον εντοπισµό τους.
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής ΝοημοσύνηςISSEL
To image inpainting είναι η διαδικασία επιδιόρθωσης μιας αλλοιωμένης ή/και κατεστραμμένης περιοχής σε μια εικόνα από την οποία απουσιάζει μέρος νοηματικής πληροφορίας και κατά συνέπεια παρουσιάζεται έλλειψη νοηματικής συνέχειας. Σχεδιάστηκε αρχικά με σκοπό την αποτελεσματική επιδιόρθωση κατ εστραμμένων περιοχών σε εικόνες. Γρήγορα, όμως, χρησιμοποιήθηκε με σκοπό την πλαστογράφηση και την παραπλάνηση. Τα τελευταία χρόνια, οι μέθοδοι που εφαρμόζουν inpainting σε εικόνες χρησι μοποιώντας μοντέλα τεχνητής νοημοσύνης, πετυχαίνουν όλο και ποιοτικότερα αποτελέσματα παρά γοντας εικόνες όπου η αλλοίωση τους, σε ορισμένες περιπτώσεις, είναι αδύνατον να εντοπιστεί με το ανθρώπινο μάτι. Κρίνεται αναγκαία λοιπόν η δημιουργία ενός μηχανισμού, που θα εντοπίζει αυτές ακριβώς τις αλλοιώσεις. Για το λόγο αυτό, η παρούσα διπλωματική εργασία εστιάζει στη μελέτη των μεθόδων εντοπισμού του inpainting σε εικόνες, αλλά και στην υλοποίηση ενός δικτύου τεχνητής νοημοσύνης ικανού να ανιχνεύει τις περιοχές όπου μια εικόνα έχει αλλοιωθεί μέσω inpainting. Εκ παιδεύτηκαν και έλεγχθηκαν συνολικά οχτώ δίκτυα, βασισμένα σε δύο αρχιτεκτονικές συνελικτικών νευρωνικών δικτύων, προτεινόμενες από σχετική βιβλιογραφία. Η εκπαίδευση πραγματοποιήθηκε με δύο διαφορετικά σύνολα ρυθμίσεων, για 10 και 50 εποχές αντίστοιχα και ως συνάρτηση κόστους χρησι μοποιήθηκε η Binary Cross Entropy (BCE). Επίσης, μελετήθηκε το κατά πόσο η χρήση ενός συνόλου δεδομένων αποτελούμενο από εικόνες που έχουν υποστεί inpainting σε σημασιολογικές περιοχές, βο ηθάει περισσότερο από ένα αντίστοιχο με εικόνες που έχουν υποστεί inpainting σε τυχαίες περιοχές στη διαδικασία του εντοπισμού του. Για το λόγο αυτό, δημιουργήθηκαν δύο σύνολα εκπαίδευσης (train set) από τα οποία το πρώτο αποτελείται από εικόνες με τυχαίες μάσκες inpainting, ενώ το δεύτερο απο εικόνες με μάσκες σημασιολογικής μορφής. Ο έλεγχος έγινε με τη χρήση ενός συνόλου ελέγχου (test set) αποτελούμενο και από τις 2 μορφές μασκών για να δοθεί μια αντικειμενική ερμηνεία των αποτε λεσμάτων. Σε κάθε ένα από τα εκπαιδευμένα δίκτυα, δόθηκε ως είσοδος μία έγχρωμη RGB είκονα I με σκοπό να παράξει στην έξοδο του την προβλεμόμενη μάσκα Mo. Τέλος, δεδομένης της πραγματικής μάσκας Mg πραγματοποιήθηκε 1-1 σύγκριση των αντίστοιχων εικονοστοιχείων και υπολογίστηκαν οι τιμές των μετρικών απόδοσης AUC και ΙοU. Αποδείχθηκε πως η εκπαίδευση με εικόνες που έχουν αλλοιωθεί σε τυχαίες περιοχές τους (τυχαίες μάσκες) οδηγεί σε καλύτερα αποτελέσματα εντοπισμού του inpainting, από ότι η εκπαίδευση με εικόνες που έχουν αλλοιωθεί σε σημασιολογικές περιοχές (αντικείμενα).
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...ISSEL
Το διευρυµένο τοπίο του λογισµικού ανοιχτού κώδικα OSS αποδεικνύει την αυξανόµενη παραγωγική δραστηριότητα των µηχανικών λογισµικού που συνεισφέρουν σε πολλαπλές πλατφόρµες και διάφορα έργα λογισµικού. Η συµµετοχή τους σε αυτά τα έργα αναδεικνύει το ευρύ ϕάσµα των δεξιοτήτων τους, από τη συγγραφή κώδικα έως τη συνεργασία τους µε άλλους µηχανικούς λογισµικού. Καθώς στο οικοσύστηµα του λογισµικού ανοιχτού κώδικα υπάρχει µια διαρκής και συνεχώς αυξανόµενη δραστηριότητα, είναι πολύ σηµαντική µια πιο ολοκληρωµένη κατανόηση των συνεισφορών και των δεξιοτήτων των µηχανικών λογισµικού. Σκοπός της παρούσας διπλωµατικής είναι να αξιοποιήσει δεδοµένα από την υποδοµή World of Code (WoC) που περιέχει συγκεντρωµένα δεδοµένα από τα περισσότερα δη µόσια συστήµατα ελέγχου εκδόσεων για να παρέχει µια πιο ολοκληρωµένη εικόνα του προφίλ ενός µηχανικού λογισµικού. Εξάγοντας, αναλύοντας και οπτικοποιώντας αυτά τα δεδοµένα, αναπτύχθηκε µια εφαρµογή που παρουσιάζει µια περιεκτική επισκόπηση των δραστηριοτήτων ενός µηχανικού στα έργα λογισµικού ανοικτού κώδικα. Η οπτική αναπαράσταση των δεδοµένων, µετατρέπει πολύπλοκα σύνολα δεδοµένων σε εύκολα κατανοητές γραφικές µορφές. Η αξιολόγηση της εφαρµογής σε ένα σύνολο µηχανικών λογισµικού δείχνει ότι πετυχαίνει τους στόχους της. Προσφέρει µια εικόνα της δραστηριότητας, του ϱόλου και των τεχνικών δεξιοτήτων ενός µηχανικού, ενισχύοντας τη διαφάνεια και την κατανόηση της συνεισφοράς του στο οικοσύστηµα του OSS.
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...ISSEL
Η ανάγκη για την παραγωγή νέου λογισμικού αυξάνεται διαρκώς, τόσο λόγω της ψηφιοποίησης των διαδικασιών στη βιομηχανία, όσο και λόγω των αυξανόμενων απαιτήσεων των καταναλωτών για νέες ψηφιακές εμπειρίες. Η διαδικασία παραγωγής λογισμικού παραμένει, όμως, δύσκολη και πολύπλοκη, με πολλά έργα να μην φτάνουν στο τελικό στάδιο και να παραμένουν ανολοκλήρωτα. Για την αντιμετώπιση των προβλημάτων της διαδικασίας παραγωγής λογισμικού, οι εταιρίες ωθούνται να εφαρμόσουν νέες διαδικασίες και μεθόδους παραγωγής, όπως το Ευέλικτο μοντέλο. Είναι αναγκαίο, οπότε, να προσλάβουν τους κατάλληλους προγραμματιστές για τις θέσεις, που θα κατέχουν όχι μόνο τις απαραίτητες τεχνικές γνώσεις, αλλά και τις επικοινωνιακές δεξιότητες. Τα ανοιχτά αποθετήρια κώδικα μπορούν να προσφέρουν λύση στο πρόβλημα αυτό, καθώς παρέχουν πληροφορίες για τις τεχνικές ικανότητες και τις γλώσσες προγραμματισμού που χρησιμοποιούν οι προγραμματιστές. Επιπλέον, μέσω της αλληλεπίδρασης των προγραμματιστών, με σχόλια σε Issues και Pull Requests, μπορεί να αντληθεί πληροφορία για τις δεξιότητες επικοινωνίας τους. Στο πλαίσιο αυτό, η παρούσα διπλωματική εργασία προτείνει ένα σύστημα άντλησης και ανάλυσης των συνεισφορών των προγραμματιστών από τη πλατφόρμα GitHub, για τη παραγωγή χρήσιμων μετρικών, και ένα μοντέλο μη-εποπτευόμενης μάθησης για τον διαχωρισμό των προγραμματιστών σε ομάδες ανάλογα με τις δεξιότητές τους.
Analysis and profiling of developer profiles using data mining techniques fro...ISSEL
The need to produce new software is constantly increasing, both because of the digitisation of processes in industry, as well as the growing demands of consumers for new digital experiences. However, the software development process remains a difficult and complex endeavour, with many projects being challenged or failing. To address the problems of the software development process, companies are directed towards contemporary software engineering practices, such as Agile approach. For these paradigms, it is necessary to hire the right programmers for the positions, who have not only the necessary technical knowledge, but also the communication skills. However, assessment in the later axis is extremely difficult. Open source repositories can provide a solution to this problem, as they provide information on technical skills and programming languages used by programmers. Moreover, via the interaction of programmers through comments on Issues and Pull Requests, information about the their communication skills can be extracted. In this context, this thesis proposes a system for extracting and analysing developers’ contributions from the GitHub platform, to generate useful metrics, and an unsupervised learning model to cluster developers into groups according to their skills.
Applying Data Mining Techniques to Extract Fix Patterns for Static Analysis V...ISSEL
Contemporary Software products are getting larger and more complex. Dur ing the processes of software development and maintenance, developers spend a significant amount of their work time on detecting and fixing bugs. Static Analysis Tools automate the process of bug detection. Their application, however, is lim ited as the process of understanding and fixing of bugs, remains part of developer’s responsibilities. Lately, several research approaches aspire to extract useful bug fix patterns, or to automate the bug fixing process. The first approaches focus on understanding how developers face similar problems and frequently they serve as groundwork for systems for automated bug fixing. Our research aims at the extraction of useful bug fix patterns, for bugs that trigger the rules of the static analysis tool PMD. Initially, by querying the Github API, we search for commits that correspond to fixes of these categories of bugs. Both the before and after the commit versions of the commits’ files are downloaded. Then, by executing PMD on the two versions of each file, individual fixes are detected and a proper dataset is crafted. The dataset comprises fixes of bugs detectable from rules of PMD. The fixes are analyzed, and by utilizing srcML code representation and tree edit distance algorithm Gumtree, a representative sequence is extracted from each fix. Afterwards, by utilizing the metric of longest common subsequence between two sequences of two fixes, we develop a similarity scheme for the dataset’s fixes. This similarity scheme, operates as the base for the clustering of fixes and pattern extraction. In order to cluster the fixes, two separate experiments were conducted, one with K-medoids and one with the DBSCAN algorithm. In both experiments, but mostly with the DBSCAN algorithm, almost each cluster groups mostly bug fixes of a certain PMD rule. Alongside, by computing the number of commits and repositories from which the fixes of each cluster come from, it becomes obvious, that most of the clusters arise from fixes coming from a large number of commits and repositories. Thus, the extracted patterns correspond to the way in which similar problems are faced, by a number of different developers. Consequently, our extracted patterns, can be utilized as groundwork for an automated bug fixing system, where PMD will serve for bug detection.
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης της παραμετροποίησης ρομποτι...ISSEL
Στην εποχή της ταχείας ανάπτυξης της τεχνολογίας, η χρήση ρομποτικών συστημάτων είναι ευρεία σε όλο το φάσμα της σύγχρονης ζωής, και η αυτοματοποίηση που επιτυγχάνεται με τη χρήση τους, αποφέρει μεγάλη και ταχύτερη παραγωγή με σχετικά μικρότερο κόστος. Ωστόσο, τα ρομπότ είναι συχνά ασυνεπή κατά τη δοκιμή, καθώς υπάρχουν πολλές απροσδόκητες μεταβλητές. Οι ρομποτικές προσομοιώσεις δίνουν τη λύση στο πρόβλημα αυτό, αφού παρέχουν ένα χαμηλού κόστους, εύκολης πρόσβασης εικονικό περιβάλλον ανάπτυξης ρομπότ. Χρησιμοποιούνται για τη γρήγορη δοκιμή αισθητήρων, την αξιολόγηση του σχεδιασμού ενός ρομπότ, την προσομοίωση εικονικών αισθητήρων, παρέχουν
ελαχιστοποιημένο μοντέλο για προβλέψιμους ελεγκτές μοντέλων, μια αρχιτεκτονική για πραγματικό έλεγχο των ρομπότ και ούτω καθεξής. Οι ρομποτικές προσομοιώσεις λαμβάνουν χώρα σε ειδικά λογισμικά, τους προσομοιωτές ρομποτικής. Ένας προσομοιωτής ρομποτικής είναι ένας προσομοιωτής, που χρησιμοποιείται για τη δημιουργία μιας εφαρμογής για ένα φυσικό ρομπότ χωρίς να εξαρτάται από το πραγματικό μηχάνημα, εξοικονομώντας έτσι κόστος και χρόνο. Σε ορισμένες περιπτώσεις, αυτές οι εφαρμογές μπορούν να μεταφερθούν στο φυσικό ρομπότ χωρίς τροποποιήσεις. Μία από τις πιο δημοφιλείς εφαρμογές για προσομοιωτές ρομποτικής είναι η τρισδιάστατη μοντελοποίηση και απόδοση ενός ρομπότ και του περιβάλλοντός του. Αυτός ο τύπος λογισμικού ρομποτικής έχει ένα μοντέλο, που είναι ένα εικονικό ρομπότ, ικανό να μιμείται την κίνηση ενός πραγματικού ρομπότ σε μια πραγματική κατάσταση. Oρισμένοι προσομοιωτές μάλιστα χρησιμοποιούν μια μηχανή φυσικής, για μια πιο ρεαλιστική παραγωγή κίνησης του ρομπότ. Υπάρχει ένας μεγάλος αριθμός προσομοιωτών ρομποτικής, με τον καθένα να εξυπηρετεί, σε διαφορετικό βαθμό από τους άλλους, είτε διαφορετικούς είτε ίδιους σκοπούς. Παρόλο, όμως, που οι προσομοιωτές γενικότερα προσφέρουν μια πληθώρα προτερημάτων, η ανάγκη για την παραγωγή εφαρμογών και λογισμικού υψηλής ποιότητας έχει γίνει πιο επιτακτική απο ποτέ. Η αύξηση της παραγωγικότητας, ο έλεγχος (αποσφαλμάτωση), η επαλήθευση και συντήρηση του λογισμικού παίζουν καθοριστικό ρόλο στην ποιότητα του τελικού προϊόντος. Τα σύγχρονα λογισμικά, αντιθέτως, εμπεριέχουν μεγάλη πολυπλοκότητα, αφού συχνά αποτελούνται από εκατοντάδες γραμμές κώδικα, διανεμημένες σε πολλά διαφορετικά αρχεία, και εξαρτώνται από πολυάριθμες βιβλιοθήκες. Η αλλαγή μίας και μόνο γραμμής κώδικα, μπορεί να επηρεάσει τη λειτουργικότητα ολόκληρου του συστήματος και να προκαλέσει σφάλματα, κάτι που είναι πολύ πιθανό, αφού τα περισσότερα λογισμικά απαιτούν μεγάλο πλήθος ατόμων για την ανάπτυξή τους. Τη λύση στο ζήτημα της ποιότητας έρχεται να δώσει η αυτοματοποίηση λογισμικού. (continue in full text)
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Σε Πραγματ...ISSEL
Δεδομένης της ταχείας ανάπτυξης της τεχνητής νοημοσύνης τα τελευταία χρόνια, γεννάται το ερώτημα αν θα μπορούσε να αξιοποιηθεί προκειμένου να βελτιωθεί η ασφάλεια των διαδικτυακών υπηρεσιών. Τα τελευταία χρόνια το διαδίκτυο ολοένα και με μεγαλύτερο ρυθμό καταλαμβάνει θέση στις ζωές των ανθρώπων αποτελώντας ένα από τα βασικότερα μέσα ενημέρωσης, ψυχαγωγίας, επικοινωνίας και άλλα. Ωστόσο, δεν είναι λίγοι και εκείνοι οι οποίοι χρησιμοποιούν το διαδίκτυο αποσκοπώντας να αυξήσουν τα προσωπικά τους κέρδη, όχι πάντα με νόμιμα ή ηθικά μέσα. Ανακαλύπτοντας και εκμεταλλεύοντας ευπάθειες συστημάτων κακόβουλοι χρήστες του διαδικτύου μπορούν να αποκτούν πρόσβαση σε ευαίσθητα δεδομένα, να τα μεταπωλλούν σε τρίτους είτε ακόμα και να ρίχνουν ιστοσελίδες μεγάλων εταιριών ή κυβερνήσεων. Παράλληλα, ωστόσο, με την αύξηση της υπολογιστικής ισχύος και την ανάπτυξη των μαθηματικών και της στατιστικής σημειώθηκε σημαντική πρόοδος και στον τομέα της τεχνητής νοημοσύνης. Πρόκειται για ένα τομέα με εφαρμογές σε πολλά διαφορετικά πεδία όπως η εκπαίδευση, η οικονομία, η επιστήμη, η υγεία και άλλα. Τα τελευταία χρόνια χρησιμοποιείται επίσης στον τομέα της κυβερνοασφάλειας για την ανάπτυξη συστημάτων προστασίας τα οποία επιδιώκουν να προβλέψουν ή να εντοπίσουν μία επικείμενη επίθεση μειώνοντας κατά το δυνατόν την πιθανότητα εισβολής και κλοπής δεδομένων. Στα πλαίσια της παρούσας διπλωματικής αναπτύχθηκε ένα σύστημα που μπορεί να λειτουργεί ταυτόχρονα με μία διαδικτυακή εφαρμογή με στόχο την ανίχνευση αποκλίνουσας συμπεριφοράς χρηστών. Το σύστημα αυτό λειτουργεί και εντοπίζει τις ανωμαλίες αυτές σε πραγματικό χρόνο, ενώ λαμβάνει παράλληλα και μέτρα για τον αποκλεισμό των επιτήδειων χρηστών.
Μεθοδολογία ανάπτυξης γραφικών εφαρμογών για απομακρυσμένα ρομπότ, στο πλαίσ...ISSEL
Όπως το Διαδίκτυο άλλαξε τον τρόπο που οι άνθρωποι αλληλεπιδρούν με την πληροφορία, έτσι και τα κυβερνοφυσικά συστήματα αλλάζουν τον τρόπο που οι άνθρωποι αλληλεπιδρούν με τα υπολογιστικά συστήματα. Τα κυβερνοφυσικά συστήματα ενσωματώνουν αισθητήρες, υπολογιστικές δυνατότητες, έλεγχο και δικτύωση σε φυσικά αντικείμενα, συνδέοντάς τα στο Διαδίκτυο, αλλά και μεταξύ τους. Ενδεικτικό παράδειγμα τέτοιων συστημάτων είναι τα ρομποτικά συστήματα, καθώς συνδυάζουν αλληλεπίδραση με το περιβάλλον και υπολογιστικές ικανότητες. Παρόλο που η ρομποτική είναι παραδοσιακά συνυφασμένη με τη βιομηχανία, τα τελευταία χρόνια έχει επεκταθεί και σε άλλους κλάδους, όπως στην ιατρική, στην αυτόνομη εξερεύνηση αλλά και σε τομείς της καθημερινής ζωής, όπως για οικιακή χρήση και ψυχαγωγία. Παράλληλα, ραγδαία αύξηση παρουσιάζει και το Διαδίκτυο των Πραγμάτων (Internet of Things – IoT), όπου πλέον αντικείμενα της καθημερινότητας είναι εξοπλισμένα με αισθητήρες για τη συλλογή δεδομένων από το περιβάλλον και συνδέονται στο Διαδίκτυο για να μοιραστούν αυτά τα δεδομένα. Λόγω της κινητικότητας που προσφέρουν τα ρομποτικά συστήματα, η ενσωμάτωση τους στον IoT κόσμο θα επιτρέπει την καλύτερη επίδραση στο περιβάλλον, ενώ παράλληλα τα ρομπότ θα λαμβάνουν αποφάσεις βάσει δεδομένων άλλων συσκευών. Για να καταστεί αυτό δυνατό, πρέπει να ξεπεραστούν ορισμένοι περιορισμοί. Αφ’ ενός, είναι ιδιαίτερα σημαντικό να υπάρχει η δυνατότητα του απομακρυσμένου ελέγχου και παρακολούθησης ενός ρομπότ. Δυστυχώς, το Robot Operating System (ROS), το πιο διαδεδομένο μεσολειτουργικό σύστημα για ανάπτυξη ρομποτικών εφαρμογών, περιορίζει τη διαχείριση του ρομπότ σε τοπικό δίκτυο. Παράλληλα, είναι επιθυμητό, χρήστες χωρίς ιδιαίτερες γνώσεις ρομποτικής και προγραμματισμού να έχουν τη δυνατότητα να δημιουργήσουν τις εφαρμογές τους. Η παρούσα διπλωματική εργασία εστιάζει στην ανάπτυξη ενός συστήματος που θα αντιμετωπίζει τους παραπάνω περιορισμούς. Για την επικοινωνία μεταξύ του ρομπότ και του απομακρυσμένου υπολογιστή, χρησιμοποιείται ο μεσολαβητής μηνυμάτων RabbitMQ. Ταυτόχρονα, η ανάπτυξη των εφαρμογών και η ενσωμάτωση του ρομπότ στον IoT κόσμο πραγματοποιείται μέσω του Node-RED, ενός εργαλείου που επιτρέπει τη δημιουργία εφαρμογών για IoT συστήματα μέσω γραφικής διεπαφής, γεγονός που απλοποιεί σημαντικά τη δυσκολία της διαδικασίας του προγραμματισμού. Επιπλέον, υλοποιήθηκαν διάφορα σενάρια χρήσης που αναδεικνύουν τις δυνατότητες του συστήματος για την ανάπτυξη ρομποτικών εφαρμογών στα πλαίσια του IoT.
Ανίχνευση Αποκλίνουσας Συμπεριφοράς Χρηστών Διαδικτυακής Εφαρμογής Με Χρήση Τ...ISSEL
Τα τελευταία χρόνια η εξάπλωση του διαδικτύου και των εφαρμογών του αυξάνεται με ραγδαίους ρυθμούς, καταλαμβάνοντας ολοένα και μεγαλύτερο μέρος της καθημερινότητας των ανθρώπων. Πλέον, το διαδίκτυο αποτελεί βασικό και αναγκαίο μέσο επικοινωνίας, ψυχαγωγίας, ενημέρωσης, αγοροπωλησιών και άλλων πολλών λειτουργιών που πια γίνονται μέσω αυτού. Μαζί με την ανάπτυξη αυτών των δυνατοτήτων, δυστυχώς, αυξήθηκαν και οι παράνομες ενέργειες όπως η εξαπάτηση χρηστών, η πρόσβαση σε εμπιστευτικές και απόρρητες πληροφορίες, η προώθηση ορισμένων προϊόντων ακόμα και η διακοπή διάθεσης ιστοσελίδων από το διαδίκτυο, εκμεταλλεύοντας τις αδυναμίες και τα τρωτά σημεία στην ασφάλεια των διαδικτυακών εφαρμογών και συστημάτων. Με τον όρο κυβερνοασφάλεια ορίζουμε την ανάπτυξη συστημάτων και μεθόδων προστασίας με στόχο τον εντοπισμό και την αναγνώριση μίας επικείμενης διαδικτυακής επίθεσης συμβάλλοντας έτσι δραστικά στην προστασία από τις κακόβουλες ενέργειες. Από την άλλη, και ο τομέας της Μηχανικής Μάθησης επιδεικνύει μεγάλη άνθιση. Η Μηχανική Μάθηση ασχολείται με τον προγραμματισμό του υπολογιστή ώστε να μπορεί να «σκέφτεται» και να «αποφασίζει», και όχι μόνο να εκτελεί ρητά εντολές που του έχουν υπαγορευθεί από τον προγραμματιστή. Πλέον τεχνικές Μηχανικής Μάθησης εφαρμόζονται σε μία πλειάδα πεδίων του διαδικτύου, όπως είναι η κυβερνοασφάλεια με την οποία η παρούσα διπλωματική εργασία ασχολείται. Στο πλαίσιο της παρούσας διπλωματικής εργασίας, μοντελοποιήθηκε και αναπτύχθηκε ένα σύστημα το οποίο λαμβάνει απαραίτητες και χρήσιμες πληροφορίες για την συμπεριφορά του χρήστη σε μια διαδικτυακή εφαρμογή ηλεκτρονικού εμπορίου και αφού τις αποθηκεύει και τις επεξεργάζεται με συγκεκριμένο τρόπο, εν τέλει τις τροφοδοτεί σε μοντέλα μηχανικής μάθησης ακολουθιακής ταξινόμησης ώστε να χαρακτηριστεί η συμπεριφορά του χρήστη είτε καλόβουλη είτε κακόβουλη.
Βελτίωση Τεχνικών Επαναχρησιμοποίησης Κώδικα από Αποθήκες Λογισμικού με χρήση Τεχνικών Ανάπτυξης Λογισμικού Οδηγούμενης από Ελέγχους και Τεχνικών Μετασχηματισμού Κώδικα
Ανάπτυξη αυτοματοποιημένης διαδικασίας Continuous Integration σε έργα λογισμικούISSEL
Τα τελευταία χρόνια παρατηρείται μια ραγδαία ανάπτυξη στο τομέα των υπηρεσιών νέφους(cloud computing) η οποία προκάλεσε το ενδιαφέρον πολλών επιχειρήσεων, με τη ζήτησή τους να αυξάνεται συνεχώς όπως επίσης και ο αριθμός των παρόχων που προσφέρουν αυτές τις υπηρεσίες. Όμως, παρά το ότι έχει εδραιωθεί η χρήση του cloud computing προσφέροντας πολλά πλεονεκτήματα, ανακύπτουν και διάφορες προκλήσεις, όπως η ασφάλεια των δεδομένων. Βασικό στοιχείο της διαδικασίας ανάπτυξης λογισμικού αποτελεί η συχνή πραγματοποίηση ελέγχων (tests) στην εφαρμογή, που αποσκοπεί στην διασφάλιση της ποιότητας, και την ελαχιστοποίηση των σφαλμάτων (bugs) , κάτι που επιτυγχάνεται μέσω των συστημάτων συνεχούς ενσωμάτωσης (Continuous Integration, CI). Μετά την επιτυχημένη εκτέλεση των αυτοματοποιημένων ελέγχων, το CI αποστέλλει και εκτελεί την τελευταία έκδοση του κώδικα στο δοκιμαστικό (staging) ή στο τελικό (production) περιβάλλον αυτόματα μέσω των συστημάτων Continuous Deployment (CD) και Continuous Delivery (CDE). Ο σκοπός της παρούσας εργασίας είναι η σύγκριση των παρόχων cloud, και ακολούθως η ανάπτυξη μιας μεθοδολογίας, μέσω της οποίας να απλοποιείται η χρήση ενός συστήματος CI + CD/CDE. Η προσέγγισή μας ενσωματώνει επίσης στατική ανάλυση και αξιολόγηση ποιότητας κώδικα. Η υλοποίηση του CI καθώς και των διαδικασιών CD/CDE γίνονται μέσω του διαδικτυακού εργαλείου ανοιχτού κώδικα Gitlab, όπου γίνεται χρήση έτοιμων pipelines με υποστήριξη εφαρμογών Node.js και Django, ενώ η στατική ανάλυση πραγματοποιείται μέσω του Code Quality που υπάρχει ενσωματωμένο στο Gitlab και βασίζεται στο εργαλείο Code Climate. Η αυτοματοποίηση της εγκατάστασης των προαπαιτούμενων για το deployment της εφαρμογής,δηλαδή η προετοιμασία του server, και το πρώτο deployment , πραγματοποιoύνται μέσω του εργαλείου διαχείρισης διαμόρφωσης λογισμικού Ansible. Ακόμη, δίνεται η δυνατότητα στο χρήστη για deployment της εφαρμογής στη cloud πλατφόρμα Heroku χωρίς να χρειάζεται η χρήση του Ansible. Το προϊόν της εργασίας απευθύνεται κυρίως σε φοιτητές ή προγραμματιστές με μικρή εμπειρία οι οποίοι θέλουν να ασχοληθούν και να κάνουν τα πρώτα τους βήματα με το CI του Gitlab.
Ανάλυση ασφάλειας λογισμικού για τη διεξαγωγή διαδικασίας αρχικής προσφοράς ...ISSEL
Μια από τις τεχνολογίες που έκανε την εμφάνισή της την τελευταία δεκαετία είναι το Blockchain. Τα πλεονεκτήματα και ειδικότερα οι προοπτικές που δημιουργεί για αποκεντρωμένες, διανεμημένες και ασφαλείς συναλλαγές, ώθησαν την τεχνολογία αυτή εντός μικρού χρονικού διαστήματος να διεισδύσει στον τεχνολογικό κόσμο. Ξεκίνησε εστιάζοντας, κατά κύριο λόγο, στις οικονομικές συναλλαγές με τη βοήθεια του κρυπτονομίσματος Bitcoin. Στη συνέχεια, μέσω της πλατφόρμας Ethereum πραγματοποιήθηκε το επόμενο μεγάλο βήμα, όπου η τεχνολογία Blockchain μπόρεσε να βρει εφαρμογή σε μη οικονομοκεντρικά περιβάλλοντα, όπως αυτό της υγείας και κυρίως αυτό της διαχείρισης της εφοδιαστικής αλυσίδας. Όμως, το μεγαλύτερο πλεονέκτημα που κάνει το Blockchain μια πολλά υποσχόμενη εφεύρεση παραμένει το οικονομικά αποκεντρωμένο μοντέλο που μπορεί να υλοποιήσει. Σύμφωνα με το μοντέλο αυτό, όλες οι χρηματικές συναλλαγές πραγματοποιούνται μέσω ενός διανεμημένου συστήματος, το οποίο δεν ανήκει σε κάποια κεντρική αρχή, όπως για παράδειγμα μια τράπεζα. Το σύστημα αυτό λειτουργεί με τη βοήθεια των χρηστών του και προσφέρει ασφαλή εκτέλεση συναλλαγών σε άμεσο χρόνο. Πάνω σε αυτό το μοντέλο έχει προταθεί μια εναλλακτική μορφή χρηματοδότησης μικρομεσαίων επιχειρήσεων. Αυτή αναφέρεται ως αρχική προσφορά νομίσματος (στην αγγλική βιβλιογραφία αναφέρεται ως Initial Coin Offering ή εν συντομία ICO) και βοηθάει τις επιχειρήσεις να ενισχυθούν οικονομικά με αυτοματοποιημένο, ασφαλή και αποκεντρωμένο τρόπο. Ωστόσο, όπως όλες οι διαδικασίες, έτσι και το ICO, μπορεί να σχεδιαστεί με λανθασμένα κριτήρια ασφαλείας και να οδηγήσει στην οικονομική καταστροφή μιας εταιρίας. Στόχος, λοιπόν, αυτής της εργασίας είναι η τεχνική ανάλυση μιας διαδικασίας ICO που πραγματοποιείται στην πλατφόρμα του Ethereum και συγκεκριμένα η παρουσίαση των τμημάτων που μπορούν να υπονομεύσουν την ασφάλεια και την αξιοπιστία της, καθώς και να προταθούν τρόποι αντιμετώπισης και πρόληψης. Στο τέλος, υλοποιείται μια τέτοια διαδικασία στην πράξη, όπου και εφαρμόζονται όλα όσα αναλύθηκαν στα προηγούμενα στάδια.
Σχεδίαση και ανάπτυξη μηχανισμού αναγνώρισης επιθέσεων ασφαλείας σε διαδικτυα...ISSEL
Η αυξανόμενη χρήση του διαδικτυακού λογισμικού και η δημοφιλία του λογισμικού-ως-υπηρεσία έχει δημιουργήσει ένα μεγάλο κενό ασφαλείας στα συστήματα που μέχρι πριν από λίγα χρόνια "έτρεχαν" σε κλειστά δίκτυα: η πληροφορία (ευαίσθητη και μη) είναι πλέον διαθέσιμη στο διαδίκτυο. Κατά συνέπεια, η εφαρμογή κατάλληλων τεχνικών ασφάλειας του λογισμικού είναι μονόδρομος για τη θωράκισή της. Ο έλεγχος ασφάλειας πρέπει πλέον να γίνεται σε διάφορα και διαφορετικά επίπεδα, όπως στο επίπεδο δικτύου, στο επίπεδο του λειτουργικού, αλλά και στο επίπεδο της εφαρμογής. Στο πλαίσιο αυτό η παρούσα διπλωματική αποσκοπεί στη σχεδίαση και ανάπτυξη ενός μηχανισμού για την αναγνώριση πιθανών επιθέσεων ασφαλείας με τη χρήση τεχνικών μηχανικής μάθησης. Στόχος είναι η εφαρμογή τεχνικών μηχανικής μάθησης για την αναγνώριση "καλών" και “κακών” προτύπων συμπεριφοράς στο επίπεδο χρήστη (application-level). Ανάλυση θα γίνει σε δυναμικό επίπεδο (κατά τη λειτουργία των εφαρμογών) και θα αναπτυχθεί ένας μηχανισμός λήψης αποφάσεων.
ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΒΑΘΙΑΣ ΜΑΘΗΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΗΣ ΣΗΜΑΝΤΙΚΟΤΗΤΑΣ ΔΗΜΟΓΡΑΦΙΚ...ISSEL
Οι ιστοσελίδες συνιστούν το πιο διαδεδομένο και πλέον απαραίτητο μέσο για όλους τους τομείς, από την ενημέρωση μέχρι και τη διασκέδαση. Η αισθητική τους αποτελεί αναπόσπαστο κομμάτι του σχεδιασμού μιας ιστοσελίδας, καθώς o ρόλος της είναι πολυδιάστατος. Αρχικά, βοηθά στην υποστήριξη του περιεχομένου και της λειτουργικότητας μιας ιστοσελίδας ενώ ταυτόχρονα αποσκοπεί στο να κεντρίσει το ενδιαφέρον συγκεκριμένων δημογραφικών ομάδων. Επίκεντρο της παρούσας εργασίας είναι να διερευνήσει τη σημαντικότητα των δημογραφικών χαρακτηριστικών στην αξιολόγηση της αισθητικής μιας ιστοσελίδας, μέσω της χρήσης αλγορίθμων βαθιάς μάθησης. Για την επίλυση του προβλήματος εφαρμόστηκαν δύο διαφορετικές προσεγγίσεις. Η πρώτη αφορά την εκπαίδευση τριών διαφορετικών αρχιτεκτονικών συνελικτικών νευρωνικών δικτύων στο σύνολο των δεδομένων, την αρχιτεκτονική AlexNet, VGG16 και Xception. Η AlexNet έχει αξιολογηθεί ξανά στο συγκεκριμένο σετ και παρουσιάζει αξιόπιστα αποτελέσματα ενώ η VGG16 παρουσιάζεται ως μια βελτιωμένη λύση. Η Xception είναι μια σύγχρονη αρχιτεκτονική που δοκιμάζεται για πρώτη φορά στο σύνολο αυτό και ξεπέρασε τα βιβλιογραφικά αποτελέσματα. Η δεύτερη προσέγγιση περιλαμβάνει τον διαχωρισμό του σετ δεδομένων σε δημογραφικές ομάδες και την εκπαίδευση συνελικτικών δικτύων για κάθε ομάδα ξεχωριστά. Με αυτό τον τρόπο τα εκάστοτε μοντέλα μπορούν να αντιληφθούν τα χαρακτηριστικά της κάθε δημογραφικής ομάδας. Τέλος, τα μοντέλα αυτά ενώνονται με διαφορετικές συνδυαστικές μεθόδους και επιλέγεται η βέλτιστη για την αξιολόγηση και τη σύγκριση των αποτελεσμάτων. Στα πειράματα που πραγματοποιήθηκαν γίνονται συγκρίσεις μεταξύ των μοντέλων για κάθε προσέγγιση καθώς και παρουσίαση παραδειγμάτων. Σκοπός της εργασίας είναι να αναδείξει τον ρόλο και τη σημασία των δημογραφικών χαρακτηριστικών, ενώ παράλληλα επισημαίνεται και η συνεισφορά των εξελιγμένων αλγορίθμων βαθιάς μάθησης στην επίτευξη αξιόπιστων προβλεπτικών αποτελεσμάτων αναφορικά με υποκειμενικά ζητήματα, όπως είναι η πρόβλεψη αισθητικής ιστοσελίδων.
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων για την Εξαγωγή Προτύπων Διόρθωσης σε Σφ...ISSEL
Τις τελευταίες δεκαετίες, τα έργα λογισµικού γίνονται όλο και µεγαλύτερα, χρησιµότερα και διεισδύουν σε όλο και περισσότερες πτυχές του ανθρώπινου ϐίου. Κατά την ανάπτυξη και τη συντήρηση λογισµικού, οι προγραµµατιστές σπαταλούν µεγάλο µέρος του χρόνου τους στον εντοπισµό και τη διόρθωση σφαλµάτων. Τα εργαλεία στατικής ανάλυσης κώδικα αυτοµατοποιούν τη διαδικασία εντοπισµού των σφαλµάτων. Η χρήση τους, ωστόσο, παραµένει περιορισµένη, καθώς η κατανόηση και η διόρθωση σφαλµάτων παραµένουν ευθύνες των προγραµµατιστών. Τα τελευταία χρόνια, πραγµατοποιούνται έρευνες για την εξόρυξη προτύπων διόρθωσης τέτοιων σφαλµάτων άλλα και την ανάπτυξη συστηµάτων αυτοµατοποιηµένης διόρθωσης σφαλµάτων. Οι πρώτες στοχεύουν στην κατανόηση του τρόπου που οι προγραµµατιστές αντιµετωπίζουν τέτοια προβλήµατα, και πολλές ϕορές τα αποτελέσµατα τους αποτελούν ϐάση για τις δεύτερες. Η παρούσα διπλωµατική, στοχεύει στην εξόρυξη χρήσιµων προτύπων διόρ ϑωσης σφαλµάτων για σφάλµατα που ανήκουν στους κανόνες του εργαλείου στατικής ανάλυσης PMD. Αρχικά, µέσω κατάλληλων ερωτηµάτων στο API του Github, αναζητο ύνται commits που αφορούν διορθώσεις τέτοιων σφαλµάτων και λαµβάνονται οι εκδόσεις των αρχείων πριν και µετά των αλλαγών των commits. Στη συνέχεια, µέσω εκτέλεσης του PMD στις δύο εκδόσεις, εντοπίζονται οι επιµέρους διορθώσεις και δηµιουργείται κα τάλληλο σύνολο δεδοµένων, αποτελούµενο αποκλειστικά από διορθώσεις σφαλµάτων, κανόνων του PMD. Οι επιµέρους διορθώσεις αναλύονται και µε αξιοποίηση της αναπα ϱάστασης κώδικα srcML και του αλγορίθµου απόστασης επεξεργασίας δέντρου Gumtree, είναι εφικτή η εξαγωγή µιας ακολουθίας όρων που είναι αντιπροσωπευτικοί για κάθε διόρθωση. ΄Ετσι, µε εύρεση του µήκους της µέγιστης κοινής υπακολουθίας µεταξύ δύο διορθώσεων, είναι εφικτή η ανάπτυξη ενός µοντέλου οµοιότητας για τις διορθώσεις συνολικά και κατ΄ επέκταση, η οµαδοποίηση τους και η εξαγωγή προτύπων διόρθω σης. Πραγµατοποιήθηκαν δύο διαφορετικά πειράµατα οµαδοποίησης : στο ένα αξιοποιήθηκε ο αλγόριθµος K-medoids και στο άλλο ο DBSCAN. Και στα δύο πειράµα τα, άλλα ιδιαίτερα σε αυτό µε τον DBSCAN, σχεδόν κάθε εξαγόµενη οµάδα αποτελείται κυρίως από διορθώσεις σφαλµάτων ενός κανόνα του PMD. Παράλληλα, µε τον υπο λογισµό του αριθµού των commits και των αποθετηρίων από τα οποία προέρχονται οι διορθώσεις κάθε οµάδας - προτύπου, ϕανερώνεται ότι οι περισσότερες οµάδες προκύπτουν από διορθώσεις προερχόµενες από µεγάλο αριθµό commits και αποθετηρίων. ΄Ετσι αντανακλούν τον τρόπο που αρκετοί προγραµµατιστές ϑα αντιµετώπιζαν παρόµοια προβλήµατα. Συνεπώς, τα εξαγόµενα πρότυπα ϑα µπορούσαν να αποτελέσουν αφετη ϱία για κάποιον µηχανισµό αυτοµατοποιηµένης διόρθωσης σφαλµάτων, ϐασιζόµενο στο PMD για τον εντοπισµό τους.
Εντοπισμός του Image Inpainting με Μεθόδους Τεχνητής ΝοημοσύνηςISSEL
To image inpainting είναι η διαδικασία επιδιόρθωσης μιας αλλοιωμένης ή/και κατεστραμμένης περιοχής σε μια εικόνα από την οποία απουσιάζει μέρος νοηματικής πληροφορίας και κατά συνέπεια παρουσιάζεται έλλειψη νοηματικής συνέχειας. Σχεδιάστηκε αρχικά με σκοπό την αποτελεσματική επιδιόρθωση κατ εστραμμένων περιοχών σε εικόνες. Γρήγορα, όμως, χρησιμοποιήθηκε με σκοπό την πλαστογράφηση και την παραπλάνηση. Τα τελευταία χρόνια, οι μέθοδοι που εφαρμόζουν inpainting σε εικόνες χρησι μοποιώντας μοντέλα τεχνητής νοημοσύνης, πετυχαίνουν όλο και ποιοτικότερα αποτελέσματα παρά γοντας εικόνες όπου η αλλοίωση τους, σε ορισμένες περιπτώσεις, είναι αδύνατον να εντοπιστεί με το ανθρώπινο μάτι. Κρίνεται αναγκαία λοιπόν η δημιουργία ενός μηχανισμού, που θα εντοπίζει αυτές ακριβώς τις αλλοιώσεις. Για το λόγο αυτό, η παρούσα διπλωματική εργασία εστιάζει στη μελέτη των μεθόδων εντοπισμού του inpainting σε εικόνες, αλλά και στην υλοποίηση ενός δικτύου τεχνητής νοημοσύνης ικανού να ανιχνεύει τις περιοχές όπου μια εικόνα έχει αλλοιωθεί μέσω inpainting. Εκ παιδεύτηκαν και έλεγχθηκαν συνολικά οχτώ δίκτυα, βασισμένα σε δύο αρχιτεκτονικές συνελικτικών νευρωνικών δικτύων, προτεινόμενες από σχετική βιβλιογραφία. Η εκπαίδευση πραγματοποιήθηκε με δύο διαφορετικά σύνολα ρυθμίσεων, για 10 και 50 εποχές αντίστοιχα και ως συνάρτηση κόστους χρησι μοποιήθηκε η Binary Cross Entropy (BCE). Επίσης, μελετήθηκε το κατά πόσο η χρήση ενός συνόλου δεδομένων αποτελούμενο από εικόνες που έχουν υποστεί inpainting σε σημασιολογικές περιοχές, βο ηθάει περισσότερο από ένα αντίστοιχο με εικόνες που έχουν υποστεί inpainting σε τυχαίες περιοχές στη διαδικασία του εντοπισμού του. Για το λόγο αυτό, δημιουργήθηκαν δύο σύνολα εκπαίδευσης (train set) από τα οποία το πρώτο αποτελείται από εικόνες με τυχαίες μάσκες inpainting, ενώ το δεύτερο απο εικόνες με μάσκες σημασιολογικής μορφής. Ο έλεγχος έγινε με τη χρήση ενός συνόλου ελέγχου (test set) αποτελούμενο και από τις 2 μορφές μασκών για να δοθεί μια αντικειμενική ερμηνεία των αποτε λεσμάτων. Σε κάθε ένα από τα εκπαιδευμένα δίκτυα, δόθηκε ως είσοδος μία έγχρωμη RGB είκονα I με σκοπό να παράξει στην έξοδο του την προβλεμόμενη μάσκα Mo. Τέλος, δεδομένης της πραγματικής μάσκας Mg πραγματοποιήθηκε 1-1 σύγκριση των αντίστοιχων εικονοστοιχείων και υπολογίστηκαν οι τιμές των μετρικών απόδοσης AUC και ΙοU. Αποδείχθηκε πως η εκπαίδευση με εικόνες που έχουν αλλοιωθεί σε τυχαίες περιοχές τους (τυχαίες μάσκες) οδηγεί σε καλύτερα αποτελέσματα εντοπισμού του inpainting, από ότι η εκπαίδευση με εικόνες που έχουν αλλοιωθεί σε σημασιολογικές περιοχές (αντικείμενα).
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...ISSEL
Το διευρυµένο τοπίο του λογισµικού ανοιχτού κώδικα OSS αποδεικνύει την αυξανόµενη παραγωγική δραστηριότητα των µηχανικών λογισµικού που συνεισφέρουν σε πολλαπλές πλατφόρµες και διάφορα έργα λογισµικού. Η συµµετοχή τους σε αυτά τα έργα αναδεικνύει το ευρύ ϕάσµα των δεξιοτήτων τους, από τη συγγραφή κώδικα έως τη συνεργασία τους µε άλλους µηχανικούς λογισµικού. Καθώς στο οικοσύστηµα του λογισµικού ανοιχτού κώδικα υπάρχει µια διαρκής και συνεχώς αυξανόµενη δραστηριότητα, είναι πολύ σηµαντική µια πιο ολοκληρωµένη κατανόηση των συνεισφορών και των δεξιοτήτων των µηχανικών λογισµικού. Σκοπός της παρούσας διπλωµατικής είναι να αξιοποιήσει δεδοµένα από την υποδοµή World of Code (WoC) που περιέχει συγκεντρωµένα δεδοµένα από τα περισσότερα δη µόσια συστήµατα ελέγχου εκδόσεων για να παρέχει µια πιο ολοκληρωµένη εικόνα του προφίλ ενός µηχανικού λογισµικού. Εξάγοντας, αναλύοντας και οπτικοποιώντας αυτά τα δεδοµένα, αναπτύχθηκε µια εφαρµογή που παρουσιάζει µια περιεκτική επισκόπηση των δραστηριοτήτων ενός µηχανικού στα έργα λογισµικού ανοικτού κώδικα. Η οπτική αναπαράσταση των δεδοµένων, µετατρέπει πολύπλοκα σύνολα δεδοµένων σε εύκολα κατανοητές γραφικές µορφές. Η αξιολόγηση της εφαρµογής σε ένα σύνολο µηχανικών λογισµικού δείχνει ότι πετυχαίνει τους στόχους της. Προσφέρει µια εικόνα της δραστηριότητας, του ϱόλου και των τεχνικών δεξιοτήτων ενός µηχανικού, ενισχύοντας τη διαφάνεια και την κατανόηση της συνεισφοράς του στο οικοσύστηµα του OSS.
Ανάλυση και μοντελοποίηση προφίλ προγραμματιστών μέσω τεχνικών εξόρυξης γνώση...ISSEL
Η ανάγκη για την παραγωγή νέου λογισμικού αυξάνεται διαρκώς, τόσο λόγω της ψηφιοποίησης των διαδικασιών στη βιομηχανία, όσο και λόγω των αυξανόμενων απαιτήσεων των καταναλωτών για νέες ψηφιακές εμπειρίες. Η διαδικασία παραγωγής λογισμικού παραμένει, όμως, δύσκολη και πολύπλοκη, με πολλά έργα να μην φτάνουν στο τελικό στάδιο και να παραμένουν ανολοκλήρωτα. Για την αντιμετώπιση των προβλημάτων της διαδικασίας παραγωγής λογισμικού, οι εταιρίες ωθούνται να εφαρμόσουν νέες διαδικασίες και μεθόδους παραγωγής, όπως το Ευέλικτο μοντέλο. Είναι αναγκαίο, οπότε, να προσλάβουν τους κατάλληλους προγραμματιστές για τις θέσεις, που θα κατέχουν όχι μόνο τις απαραίτητες τεχνικές γνώσεις, αλλά και τις επικοινωνιακές δεξιότητες. Τα ανοιχτά αποθετήρια κώδικα μπορούν να προσφέρουν λύση στο πρόβλημα αυτό, καθώς παρέχουν πληροφορίες για τις τεχνικές ικανότητες και τις γλώσσες προγραμματισμού που χρησιμοποιούν οι προγραμματιστές. Επιπλέον, μέσω της αλληλεπίδρασης των προγραμματιστών, με σχόλια σε Issues και Pull Requests, μπορεί να αντληθεί πληροφορία για τις δεξιότητες επικοινωνίας τους. Στο πλαίσιο αυτό, η παρούσα διπλωματική εργασία προτείνει ένα σύστημα άντλησης και ανάλυσης των συνεισφορών των προγραμματιστών από τη πλατφόρμα GitHub, για τη παραγωγή χρήσιμων μετρικών, και ένα μοντέλο μη-εποπτευόμενης μάθησης για τον διαχωρισμό των προγραμματιστών σε ομάδες ανάλογα με τις δεξιότητές τους.
Analysis and profiling of developer profiles using data mining techniques fro...ISSEL
The need to produce new software is constantly increasing, both because of the digitisation of processes in industry, as well as the growing demands of consumers for new digital experiences. However, the software development process remains a difficult and complex endeavour, with many projects being challenged or failing. To address the problems of the software development process, companies are directed towards contemporary software engineering practices, such as Agile approach. For these paradigms, it is necessary to hire the right programmers for the positions, who have not only the necessary technical knowledge, but also the communication skills. However, assessment in the later axis is extremely difficult. Open source repositories can provide a solution to this problem, as they provide information on technical skills and programming languages used by programmers. Moreover, via the interaction of programmers through comments on Issues and Pull Requests, information about the their communication skills can be extracted. In this context, this thesis proposes a system for extracting and analysing developers’ contributions from the GitHub platform, to generate useful metrics, and an unsupervised learning model to cluster developers into groups according to their skills.
Applying Data Mining Techniques to Extract Fix Patterns for Static Analysis V...ISSEL
Contemporary Software products are getting larger and more complex. Dur ing the processes of software development and maintenance, developers spend a significant amount of their work time on detecting and fixing bugs. Static Analysis Tools automate the process of bug detection. Their application, however, is lim ited as the process of understanding and fixing of bugs, remains part of developer’s responsibilities. Lately, several research approaches aspire to extract useful bug fix patterns, or to automate the bug fixing process. The first approaches focus on understanding how developers face similar problems and frequently they serve as groundwork for systems for automated bug fixing. Our research aims at the extraction of useful bug fix patterns, for bugs that trigger the rules of the static analysis tool PMD. Initially, by querying the Github API, we search for commits that correspond to fixes of these categories of bugs. Both the before and after the commit versions of the commits’ files are downloaded. Then, by executing PMD on the two versions of each file, individual fixes are detected and a proper dataset is crafted. The dataset comprises fixes of bugs detectable from rules of PMD. The fixes are analyzed, and by utilizing srcML code representation and tree edit distance algorithm Gumtree, a representative sequence is extracted from each fix. Afterwards, by utilizing the metric of longest common subsequence between two sequences of two fixes, we develop a similarity scheme for the dataset’s fixes. This similarity scheme, operates as the base for the clustering of fixes and pattern extraction. In order to cluster the fixes, two separate experiments were conducted, one with K-medoids and one with the DBSCAN algorithm. In both experiments, but mostly with the DBSCAN algorithm, almost each cluster groups mostly bug fixes of a certain PMD rule. Alongside, by computing the number of commits and repositories from which the fixes of each cluster come from, it becomes obvious, that most of the clusters arise from fixes coming from a large number of commits and repositories. Thus, the extracted patterns correspond to the way in which similar problems are faced, by a number of different developers. Consequently, our extracted patterns, can be utilized as groundwork for an automated bug fixing system, where PMD will serve for bug detection.
Εφαρµογή τεχνικών µηχανικής µάθησης και ευφυούς διαχείρισης πληροφορίας για τ...ISSEL
Η σωστή σύνταξη των λειτουργικών απαιτήσεων αποτελεί ϐασική προϋπόθεση για την ανάπτυξη ενός έργου λογισµικού. Σφάλµατα στον ορισµό των λειτουργικών απαι τήσεων και ο ορισµός ελλιπούς λειτουργικότητας αποτελούν τα σηµαντικότερα προ ϐλήµατα που οδηγούν στην αποτυχία της διαδικασίας ανάπτυξης λογισµικού. Ο µη ολοκληρωµένος ορισµός των λειτουργικών απαιτήσεων έχει ως αποτέλεσµα τον λανθασµένο προγραµµατισµό των απαραίτητων εργασιών και ακολούθως την αποτυχία της υλοποίησης του έργου λογισµικού. Η παρούσα διπλωµατική εργασία αρχικά συγκεντρώνει ένα σύνολο δεδοµένων από λειτουργικές απαιτήσεις έργων λογισµικού από διάφορες πηγές. Σε πρώτο στάδιο ορίζεται η οντολογία που καλείται να περιγράψει την στατική όψη ενός έργου λογισµικού. Οι οντότητες που ορίζονται εντοπίζονται στις λειτουργικές απαιτήσεις του συνόλου δεδοµένων και δίνεται η δυνατότητα της αποδοτικής αποθήκευσης των δεδοµένων µε τη µορφή της οντολογίας. Σε επόµενο στάδιο γίνεται χρήση αλγορίθµων µηχανικής µάθησης µε στόχο την ε ξαγωγή προτάσεων ϐελτίωσης σε όλα τα επίπεδα ανάλυσης απαιτήσεων λογισµικού. Για την αξιολόγηση της απόδοσης των αλγορίθµων, µετά την εκπαίδευσή τους στο σύνολο δεδοµένων, δέχονται ως είσοδο ένα νέο έργο λογισµικού µε µη ολοκληρωµένη λειτουργικότητα και εξετάζεται η πληροφορία που εξάγεται από τον κάθε αλγόριθµο. Πιο συγκεκριµένα, υλοποιείται ο αλγόριθµος Apriori για την εξαγωγή κανόνων συσχέτισης µε στόχο τον εντοπισµό απούσας λειτουργικότητας. Επιπλέον, χρησιµοποιείται ο αλγόριθµος Λανθάνουσας Κατανοµής Dirichlet που εκτελεί τη ϑεµατική µοντελοποίηση των έργων λογισµικού του συνόλου δεδοµένων. Τέλος, γίνεται χρήση ενός αλγορίθµου Ιεραρχικής Οµαδοποίησης κειµένου και συγκρίνονται τα αποτελέσµατά του µε αυτά του προηγούµενου αλγορίθµου.
Employing Machine Learning and Intelligent Information Management Techniques ...ISSEL
Proper definition of functional requirements is a prerequisite for succesful software project development. Inaccurate and/or missing functional requirements are among the top reasons that lead to failure of the software development process, since incomplete definition of functional requirements results in erroneous scheduling of necessary tasks and subsequently failure in the implementation of the software project. This dissertation initially builds a dataset of functional requirements of software projects from various sources, which is missing from bibliography. Then an ontology is defined, that captures the static view of a software project. The functional require ments of the dataset are mapped to the defined entities and the data is efficiently stored using the ontology format. In the next step, machine learning algorithms are employed in order to extract recommendations for better software requirements elicitation. For the evaluation of their performance the models are fed with take a new software project with incomplete functionality as input and the extracted recommendations are evaluated.
Πρόταση Βιβλιοθηκών Σχετικών με Λέξεις-Κλειδιά για Εκκίνηση της Διαδικασίας Α...ISSEL
Η χρήση βιβλιοθηκών κώδικα µειώνει το χρόνο ανάπτυξης νέου λογισµικού, δίνει τη δυνατότητα στους προγραµµατιστές να εστιάσουν περισσότερο στην υλοποίηση νέων λειτουργικών απαιτήσεων, και αυξάνει την αξιοπιστία του παραγόµενου κώδικα. Έτσι, η αναζήτηση κατάλληλων βιβλιοθηκών είναι απαραίτητη για τη γρήγορη ανάπτυξη λογισµικού υψηλής ποιότητας. Ταυτόχρονα, όµως, απαιτείται χρόνος (και αντίστοιχο κόστος) για διερεύνηση και επιλογή βιβλιοθηκών µεταξύ των χιλιάδων σχετικών λύσεων που διαµοιϱάζονται µέσω αποθετηρίων λογισµικού. Στην εργασία αυτή, εστιάζουµε στο αρχικό στάδιο της ανάπτυξης έργων λογισµικού, όπου η διαθέσιµη πληροφορία για αναζήτηση συνίσταται στην περιγραφή των έργων προς ανάπτυξη µε λέξεις-κλειδιά. Υπάρχοντα συστήµατα µελετάνε την εξαγωγή σχετικών βιβλιοθηκών ϐάσει της οµοιότητας των περιγραφών τους µε λέξεις-κλειδιά. Αλλά αυτή η πρακτική αγνοεί τη δηµοτικότητα των σχετικών βιβλιοθηκών και τις σηµασιολογικές συσχετίσεις µεταξύ λέξεων που δε βρίσκονται στις περιγραφές τους, όπως λέξεις που βρίσκονται στις περιγραφές έργων λογισµικού που τις χρησιµοποιούν. Για την ταυτόχρονη ενσωµάτωση των παραπάνω σηµασιολογικών συσχετίσεων και της δηµοτικότητας σε µοντέλα πρόβλεψης βιβλιοθηκών, προτείνουµε µια προσέγγιση συνεργατικού ϕιλτραρίσµατος. Για την ακρίβεια, οργανώνουµε βιβλιοθήκες και λέξεις-κλειδιά σε γράφους συσχετίσεων, όπου οι ακµές αντιστοιχούν σε εµφάνιση των λέξεων σε έργα λογισµικού που χρησιµοποιούν τις βιβλιοθήκες. ∆εδοµένης αυτής της οργάνωσης, εφαρµόζουµε παραλλαγές του αλγορίθµου PageRank για τη βαθµολόγηση των κόµβων του γράφου ϐάσει της σχετικότητάς τους µε λέξεις-κλειδιά που περιγράφουν το λογισµικό προς ανάπτυξη και προτείνουµε χρήση των βιβλιοθηκών µε την υψηλότερη βαθµολογία. Αυτή η πρακτική συγκρίνεται πειραµατικά µε υπάρχουσες εναλλακτικές σε δύο σύνολα δεδοµένων της γλώσσας Java, όπου χρησιµοποιούµε τα ονόµατα των έργων λογισµικού ως σύντοµες περγραφές. Η µέθοδός µας παρουσιάζει µεγαλύτερη προβλεπτική ικανότητα σε σχέση µε απλή αναζήτηση λέξεων-κλειδιών σε κλάσµατα του δευτερολέπτου και µπορεί να µεταβληθεί ώστε να παράγει ετερογενείς προβλέψεις.
Keyword-based software library recommendation in order to bootstrap software ...ISSEL
Software library reuse promotes efficient and effective software development, as it leads to improvement in the overall quality, reduces time-to-market and lets developers write application specific code instead of reinventing the wheel. The availability of a huge amount of reusable libraries facilitates effective software development. Code repositories provide an increasingly large number of such libraries. However, manually identifying which ones are relevant for a specific implementation is a fastidious and time consuming task for developers. In this work we focus at the early stages of software development, where finding appropriate libraries is based solely on a keyword-based description of the software. Existing recommendation systems rely on the similarity of such keywords with the descriptions of reusable libraries. This method, however, does not take into consideration the popularity of each library and the semantic similarity of searched keywords with other software entities, other than the library itself, like, for example, the descriptions of projects that use these libraries. In order to encompass in one model both the semantic similarity and the popularity of reusable libraries, we propose a collaborative filtering approach. More specifically, we organize in a relational graph keywords and libraries, such that an edge between a keyword and a library corresponds to the usage of this keyword in the description of a software project that uses this library. Given this structure, we use variants of the PageRank algorithm in order to rank the nodes of this graph depending on their relevance to a set of keywords that describe the software we want to develop. Based on this ranking, we recommend the libraries with the highest rank. We compare our method to existing library search methods on two datasets that list dependencies of Java projects, where we use the Project title as a short description. Our method performs better than the simple similarity based approach, with an execution time of a fraction of a second and could be modified in order to make heterogeneous predictions.
Development of an automatic procedure for Continuous IntegrationISSEL
In recent years there has been a rapid growth in the field of cloud computing which has aroused the interest of many companies, with their demand constantly growing as well as the number of providers offering these services. However, despite the fact that the use of cloud computing has been established, offering many advantages, various challenges arise, such as data security. A key element of the software development process is the frequent testing of the application, in order to ensure quality and minimize bugs, which is achieved through Continuous Integration (CI) systems. Upon successful execution of the automated tests, CI deploys the latest version of the code in a pre-production (staging) or production environment automatically through Continuous Deployment (CD) and Continuous Delivery (CDE). The purpose of this thesis is comparing cloud providers, and then developing a method that simpifies the usage of a CI + CD/CDE system. Our approach also integrates static code analysis and evaluation. CI and CD/CDE processes are implemented through Gitlab, an open source software, with ready-to-use pipelines(Templates) supporting Node.js and Django web applications, while static analysis is performed through Code Quality which is embedded in Gitlab and is based on the Code Climate tool. The automatic installation of the prerequisites for the application deployment, in other words the server setup, and the first deployment , are performed through the Ansible software configuration management tool. Moreover, is given the capability to the user to deploy the app on the cloud platform Heroku without the need of using Ansible. The outcome of the thesis is aimed primarily at students or software developers with little experience who want to get involved and take their first steps with Gitlab CI.
Design and Implementation of a Mechanism that automates the generation of Sof...ISSEL
Today, the development of technology and its utilization in all areas of human life, creates the need for software that is easily customizable, presentable, solves many types of problems, is economical and reliable. Model-Driven Engineering (MDE), ie software development based on models, the automatic production of code based on these models, the ability to graphically display the software, in combination with the techniques of Automated Reasoning meet the above needs. In the current diploma thesis, in order to meet the aforementioned needs, all the above techniques were utilized for the construction of a complete software tool, on the Eclipse platform. More specifically, in the framework of Model-Driven Engineering (MDE), a meta model was constructed which constitutes the core of the system and incorporates terms from the field of Logic. Expanding on this, a graphical interface was created, in the Sirius environment, which allows the interested party to construct, in a graphic way, the model he wants. The construction of the model is done in the form of equations, correctly formulated in the standards of First Order Logic (FOL). From this model, Java code is automatically generated, which utilizing functions and objects of the TweetyProject library, is properly configured to be a valid input for the built-in prover of the same library, that can perform logical tests in the standards of Automated Logic. Some more functions written in Java, complete the software tool of this diploma thesis. All of the above, constitute the software tool developed in this diploma, capable of being used by various mechanisms that automatically produce systems, in order to check the validity of the systems under design, without the need to implement additional software that draws logical conclusions.
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...ISSEL
Στη σημερινή εποχή, η ραγδαία ανάπτυξη της τεχνολογίας, έχει οδηγήσει και στη γρήγορη ανάπτυξη έργων λογισµικού πολλών γραμμών κώδικα, τα οποία έχουν επηρεάσει πολλές πτυχές της καθημερινής µας ζωής. Η αναγνωσιμότητας του κώδικα, αποτελεί χρήσιμο ποιοτικό χαρακτηριστικό ενός έργου λογισµικού. Μάλιστα, έρευνες έχουν δείξει ότι επηρεάζει το έργο τόσο κατά το στάδιο ανάπτυξής του όσο και κατά τη διάρκεια συντήρησης του έργου. Για τον σκοπό αυτό, έχουν αναπτυχθεί διάφορα μοντέλα αναγνωσιμότητας κώδικα. Κάθε ένα από αυτά τα μοντέλα βασίζεται σε διαφορετικά χαρακτηριστικά, αναλύοντας πτυχές όπως η δομή του κώδικα, η όψη του κώδικα, αλλά και το περιεχόµενο. Στην παρούσα διπλωματική εργασία, επιχειρούμε, βασιζόμενοι στα ήδη υπάρχοντα μοντέλα αξιολόγησης αναγνωσιμότητας κώδικα, να αναλύσουμε περαιτέρω την έννοια της αναγνωσιμότητας. Αναλύθηκαν commits χρηστών από την πλατφόρμα GitHub, τα οποία είναι συνδεδεμένα µε την αναγνωσιμότητα του κώδικα, µε βάση κάποια από τα ήδη υπάρχοντα μοντέλα αξιολόγησης αναγνωσιμότητας. Αρχικός στόχος ήταν µε βάση τα δεδοµένα που προέκυψαν από αυτά τα commits των προγραμματιστών να διερευνηθεί εάν τα commits, τα οποία ισχυρίζονται τη βελτίωση της αναγνωσιμότητας πράγματι τη βελτιώνουν, καθώς και ποιες αλλαγές ή συνδυασμός αυτών είναι υπεύθυνες για τη βελτίωση ή µη της αναγνωσιμότητας. Ένας δεύτερος στόχος, ο οποίος µας απασχόλησε ήταν εάν θα µπορούσαμε µέσα από τις διαφορές των χαρακτηριστικών του κώδικα πριν και µετά το commit να καταλάβουμε ποια μοντέλα αναγνωσιμότητας είναι ικανά να κατηγοριοποιήσουν ποιες αλλαγές έχουν πραγματοποιηθεί στον κώδικα, καθώς και να προτείνουμε ένα πιο αποδοτικό μοντέλο. Και στα δύο παραπάνω ερωτήματα για την ανάπτυξη των μοντέλων χρησιμοποιήθηκαν μετρικές από διαφορετικά μοντέλα αξιολόγησης αναγνωσιμότητας κώδικα, τα οποία συγκρίθηκαν ως προς την απόδοσή τους.
Μία περιεκτική εισαγωγή στo Rails framework γραμμένη εξ'ολοκλήρου στα ελληνικά.
Έκδοση 1.0,
12 Ιαν 2007
Δημητρακόπουλος Νικόλαος,
Άδεια Χρήσης Ελεύθερης Τεκμηρίωσης GNU
Στα πλαίσια του ACM Student Chapter του Πανεπιστημίου Πελοποννήσου και του Ruby Hellenic Users Group
Σχεδιασμός και υλοποίηση πλήρους και αυτοματοποιημένου εργαλείου ελέγχων ασφά...ISSEL
Με την ολοένα και αυξανόμενη υιοθέτηση των πρακτικών DevOps και την άνοδο του Continuous Integration/Continuous Deployment (CI/CD) στην ανάπτυξη λογισμικού, ο κύκλος ζωής ανάπτυξης λογισμικού (SDLC) έχει επιφέρει σημαντικές αλλαγές στη βιομηχανία. Αν και αυτές οι μέθοδοι προσφέρουν πολλά πλεονεκτήματα, παρουσιάζουν επίσης μοναδικές προ κλήσεις ασφαλείας, καθώς οι εφαρμογές που αναπτύσσονται με αυτές είναι πιο επιρρεπείς σε κυβερνοεπιθέσεις συγκριτικά με τις παραδοσιακές μεθόδους ανάπτυξης λογισμικού. Το DevSecOps, ένας συνδυασμός πρακτικών ανάπτυξης (Dev), ασφάλειας (Sec) και λειτουργιών (Ops), έχει αναδειχθεί ως μια κρίσιμη προσέγγιση στην ασφάλεια λογισμικού στο σημερινό ταχέως εξελισσόμενο τεχνολογικό τοπίο. Αυτή η μεθοδολογία είναι ουσιαστική και σχετική για διάφορους λόγους. Πρώτον, αντιμετωπίζει την αυξανόμενη ανάγκη για ασφάλεια στην ανάπτυξη λογισμικού. Καθώς οι απειλές και οι επιθέσεις στον κυβερνοχώρο γίνονται πιο εξελιγμένες, η ενσωμάτωση της ασφάλειας στον αγωγό DevOps βοηθά τους οργανισμούς να εντοπίζουν και να μετριάζουν προληπτικά τις ευπάθειες από το πρώιμο στάδιο ανάπτυξης του λογισμικού, μειώνοντας τον κίνδυνο παραβίασης δεδομένων και διακοπής λειτουργίας. Δεύτερον, η ανάγκη για ταχύτερες και συχνότερες εκδόσεις λογισμικού απαιτεί μια μετατόπιση από τις παραδοσιακές πρακτικές ασφαλείας, οι οποίες συχνά προκαλούν καθυστε ρήσεις. Το DevSecOps απλοποιεί την ασφάλεια αυτοματοποιώντας τις δοκιμές και τους ελέγχους συμμόρφωσης, επιτρέποντας τη συνεχή παράδοση (CD) χωρίς να θυσιάζεται η ασφάλεια. Επιπλέον, το DevSecOps ενθαρρύνει μια κουλτούρα κοινής ευθύνης, ενισχύοντας τη συνεργασία μεταξύ προγραμματιστών, επαγγελματιών ασφάλειας και ομάδων επιχειρήσεων. Αυτή η συλλογική προσέγγιση οδηγεί σε βελτιωμένη επικοινωνία, βελτιωμένη επίγνωση των ανη συχιών για την ασφάλεια και ταχύτερη απόκριση σε αναδυόμενες απειλές. Σε μια εποχή όπου ο ψηφιακός μετασχηματισμός βρίσκεται στην πρώτη γραμμή των επιχει ρηματικών στρατηγικών, το DevSecOps είναι απαραίτητο για τη διασφάλιση της ανθεκτικότητας, της ακεραιότητας και της εμπιστευτικότητας των συστημάτων λογισμικού. Ευθυγραμμίζει την ασφάλεια με το ρυθμό της σύγχρονης ανάπτυξης λογισμικού, καθιστώντας το ένα κρίσιμο και επίκαιρο παράδειγμα για τη διαφύλαξη των ψηφιακών δεδομένων και περιουσιακών στοιχείων. Η παρούσα διπλωματική προτείνει μια μέθοδο για τη συμπλήρωση και την αυτοματοποίηση σαρώσεων ασφάλειας έργων λογισμικού με χρήση αποκλειστικά εργαλείων ανοιχτού κώδικα (Open-source software) για την πραγματοποίηση των σαρώσεων ασφάλειας, την παρακολούθηση των αποτελεσμάτων και την αυτοματοποίηση επιδιορθώσεων ευπαθειών. Η προτεινόμενη έρευνα έχει ενσωματωθεί σε υποδομή Continuous Integration/Continuous Delivery, επιτρέποντας την αυτόματη σάρωση και επιδιόρθωση τρωτών σημείων κατά τη διαδικασία και τον κύκλο ανάπτυξης και παράδοσης του λογισμικού.
Αυτοματοποίηση Ανάθεσης Εργασιών Λογισμικοπύ με εφαρμογή τεχνικών Θεματικής Μ...ISSEL
Η σύγχρονη ευέλικτη (agile) προσέγγιση στην ανάπτυξη λογισµικού βασίζεται σε συστήµατα διαχείρισης εργασιών, υπεύθυνα για την οργάνωση της διαδικασίας προγραµµατισµού και τον καταµερισµό του ϕόρτου στα µέλη της οµάδας. Η ανάθεση εργασιών στο πιο κατάλληλο µέλος (triaging) είναι µια σηµαντική και απαιτητική διαδικασία και υλοποιείται από την αξιολόγηση των χαρακτηριστικών µιας αναφοράς εργασίας (τίτλος, περιγραφή, ετικέτες, σηµαντικότητα κτλ). Προηγούµενες προσπάθειες να αντιµετωπιστεί η περίπλοκη και χρονοβόρα διαδικασία αυτοµατοποίησης της ανάθεσης εργασιών περιορίζονται συνήθως στην ανάλυση αναφορών σφαλµάτων. Η παρούσα διπλωµατική εισάγει µια µέθοδο αυτοµατοποίησης της διαδικασίας ανάθεσης εργασιών, χωρίς περιοϱισµό στο είδος της εργασίας. Συγκεκριµένα, στοχεύει να διερευνήσει τη δυνατότητα πρόβλεψης του καταλληλότερου προγραµµατιστή για να εκτελέσει µια εργασία, χρησιµοποιώντας την αναφορά εργασίας. Αξιοποιήθηκαν δεδοµένα από διαφορετικά αποθετήρια, µε επίκεντρο τα δεδοµένα κειµένου (τίτλος, περιγραφή, ετικέτες). Η µεθοδολογία µας ϐασίζεται πάνω στην εφαρµογή τεχνικών επεξεργασίας κειµένου και ανάλυσης δεδοµένων. Σε αντίθεση µε την υπάρχουσα βιβλιογραφία που περιορίζεται σε απλές µεθόδους προεπεξεργασίας (tokenization, lemmatization κτλ.), εφαρµόστηκαν τεχνικές θεµατικής µοντελοποίησης (LDA), µε στόχο την εξαγωγή θεµάτων της κάθε αναφοράς και τον εµπλουτισµό των ετικετών. Τέλος, τα επεξεργασµένα δεδοµένα χωρίζονται σε σύνολα εκπαίδευσης και ελέγχου και εισάγονται σε βασικά µοντέλα ταξινόµησης (Naive Bayes και SVM). Η µεθοδολογία αποδείχθηκε αποτελεσµατική, αναθέτοντας εργασίες µε καλή ακρίβεια σε οµάδες προγραµµατιστών διαφορετικών µεγεθών και γνωστικών αντικειµένων, µε τις τεχνικές θεµατικές µοντελοποίησης να συνεισφέρουν σηµαντικά στη βελτίωση της απόδοσης.
Similar to Kagiafas Nikolaos Thesis Presentation (20)
Implementation of a platform for assessing indoor spaces regarding their frie...ISSEL
This thesis presents an innovative tool specifically designed to assess the dementia friendliness of indoor spaces. With the rise in dementia cases globally, the need to adapt environments to the unique needs of those affected is becoming increasingly important. This research focuses on evaluating how friendly and suitable these spaces are for individuals with dementia, with a particular emphasis on flooring. The developed tool leverages the power of deep learning and machine learning to analyze images of indoor spaces, identifying objects within these images to evaluate their suitability for dementia-friendly environments. The tool currently focuses on evaluating rugs, equipped with an easy to navigate and effective web application that allows caregivers, designers (or other users) to easily upload photos for assessment. This specialized approach ensures that users can quickly understand how these floor coverings align with dementia-friendly design principles. The tool is user-friendly and efficient, designed for quick assessment of indoor areas. Rather than suggesting changes, it rates how dementia-friendly these spaces are, providing valuable insights for caregivers and designers. This feature is essential for public places such as care homes, private residences or even hotels that aim to be dementia-friently, where creating safe, understandable, and comfortable environments for people with dementia is crucial. Overall, this thesis merges technology with the principles of interior design in the context of dementia care. It offers a significant contribution to the field, providing a practical and innovative approach to assess and understand dementia-friendly environments.
Autonomous car position calculation with particle filters using traffic data ...ISSEL
As autonomous vehicle technology progresses, the need for precise real-time positioning in dynamic urban environments becomes increasingly vital. This thesis explores the utilization of particle filters to calculate the position of autonomous cars, using traffic data within a simulated environment. The primary goal is to improve accuracy and reliability in vehicle localization by integrating information from dynamic traffic conditions into the positioning algorithm. A simulated environment is employed to replicate realistic traffic scenarios, generating diverse and dynamic datasets. Particle filters are implemented as a probabilistic framework, assimilating information from various sources such as sensor data and traffic patterns to estimate the vehicle’s position. Through extensive experimentation, the efficacy of the proposed approach is assessed across diverse traffic conditions and scenarios. Results indicate that real time traffic data significantly enhances the precision and robustness of autonomous car positioning. The particle filter algorithm seamlessly adapts to changing traffic situations, demonstrating its potential for practical implementation in autonomous driving systems. Additionally, the thesis investigates the influence of different parameters and configurations on the particle filter algorithm’s performance. Insights gained from these studies contribute to optimizing the algorithm for a range of urban driving conditions. In summary, this research advances autonomous vehicle positioning by introducing an innovative approach that integrates particle filters with traffic data in a simulated environment. The findings hold implications for developing more accurate and adaptable autonomous navigation systems, laying the foundation for safer and more reliable self-driving vehicles in intricate urban settings.
Ανίχνευση αντικειµένων από λίγα δείγµατα µε χρήση γραφηµάτων και τεχνικών ΜΕΤ...ISSEL
Η ανίχνευση αντικειµένων από λίγα δείγµατα (FSOD) αποσκοπεί στην ανίχνευση αντικειµένων κλάσεων για τις οποίες υπάρχουν περιορισµένα δεδοµένα. Η προσαρµογή των σύγχρονων ανιχνευτών στο σενάριο περιορισµένων δεδοµένων παραµένει µια πρόκλη ση, καθώς τα περισσότερα µοντέλα απαιτούν τεράστιες ποσότητες δειγµάτων για να εκπαιδευτούν σωστά. Το FSOD αντιµετωπίζει αυτό το πρόβληµα µε την τεχνική ΜΕΤΑ εκπαίδευσης δύο κλάδων, κατά την οποία το µοντέλο εκπαιδεύεται επεισοδιακά. Χρησιµοποιώντας αυτή τη µέθοδο, ένα µοντέλο είναι σε θέση να ανιχνεύει νέες κατηγορίες δίχως ποτέ να έχει εκπαιδευτεί σε αυτές (meta-testing). Μια κοινή µέθοδος ανίχνευσης είναι η δηµιουργία προτύπων κατηγοριών από ένα σύνολο εικόνων υποστήριξης σε κάθε επεισόδιο και η εκµάθηση του τρόπου αντιστοίχησης αυτών µε κάθε εικόνα ερώτησης. Ωστόσο, οι περισσότερες προσεγγίσεις δηµιουργούν αυτά τα πρότυπα µεµονωµένα, χωϱίς να λαµβάνουν υπόψη όλες τις άλλες κλάσεις και τις συσχετίσεις τους, οι οποίες θα µπορούσαν να προσφέρουν κρίσιµη πληροφορία και να εµπλουτίσουν σηµαντικά κάθε ένα από αυτά. Στην παρούσα εργασία, προσπαθούµε να ενσωµατώσουµε αυτές τις συσχετίσεις σε ένα σύγχρονο µοντέλο χρησιµοποιώντας ένα γράφηµα προτύπων. Μέσω της αποτελεσµατικής µεταβίβασης µηνυµάτων µεταξύ όλων των κόµβων, κάθε πρότυπο εµπλουτίζεται από τους πιο παρόµοιους γείτονές του, γεγονός που µπορεί να αντισταθµίσει την περίπτωση των θορυβωδών προτύπων και να βελτιώσει την ακρίβεια ανίχνευσης νέων κλάσεων. Τα πειραµατικά αποτελέσµατα δείχνουν ότι οι προτεινόµενες µέθοδοι βελτιώνουν σηµαντικά την ακρίβεια ανίχνευσης meta-testing του βασικού µοντέλου στο PASCAL VOC σετ δεδοµένων, υπό διαφορετικό αριθµό δειγµάτων (shots) και µετρικών.
Ανάπτυξη ∆υναµικού και Προσωποποιηµένου Συστήµατος Ερωταπαντήσεων µε Πηγή το ...ISSEL
Η Τεχνητή Νοηµοσύνη αποτελεί έναν τοµέα της τεχνολογίας που καθηµερινά πραγµατοποιεί άλµατα. Αποτελεί την αιχµή του δόρατος στην επίλυση πληθώρας προβληµάτων αλλά και στην παροχή υπηρεσιών υψηλού επιπέδου. Οι εµπορικές εφαρµογές, αν και µε απεριόριστες προοπτικές, τα τελευταία χρόνια εστιάζουν κυϱίως στη Συνοµιλητική Τεχνητή Νοηµοσύνη ή στην Τεχνητή Νοηµοσύνη Επεξεργασίας Βίντεο και Εικόνας, µε αποτέλεσµα τον ενθουσιασµό της αγοράς και των χρηστών, οι οποίοι αποκτούν όλο και µεγαλύτερες απαιτήσεις, ως προς την ποιότητα και τις δυνατότητες των εργαλείων τους. Οι συνοµιλητικοί ϐοηθοί, Chatbots, έχουν διεισδύσει στην καθηµερινότητά, µε πληθώρα µορφών και χρήσεων. Η παραδοσιακή µορφή τους, που απαντούσε ένα κλειστό σύνολο απλοϊκών ερωτήσεων, αντικαταστάθηκε από µοντέρνα συστήµατα και εφαρµογές που προτείνουν, συζητούν, συνοµιλούν, διασκεδάζουν, συµβουλεύουν. Είτε ως εφαρµογές στο κινητό του χρήστη, είτε διαθέσιµοι online, οι σύγχρονοι βοηθοί αποτελούν πλέον κοµµάτι της καθηµερινής ϱουτίνας και των εργαλείων που την καθιστούν πιο ανεκτή και ευχάριστη. Αυτή η καθολική πλέον παρουσία τους καθιστά αναγκαίο τον εκλεκτισµό αυτών των υπηρεσιών προσθέτοντας νέα στοιχεία και παραµέτρους, ανάλογα µε την εξειδίκευση κάθε χρήστη και των αναγκών του. Αυτές οι εφαρµογές, όντας συνεχώς συνδεδεµένες στο διαδίκτυο, θυσιάζουν την ιδιωτικότητα του χρήστη, καθιστώντας τον επιρρεπή σε κακόβουλο λογισµικό ή απάτες. Παράλληλα ,όµως, η πλειοψηφία αυτών των εφαρµογών αδυνατούν να χρησιµοποιήσουν τον µεγαλύτερο όγκο της πληροφορίας η οποία είναι διαθέσιµη στο διαδίκτυο, παρότι είναι συνδεδεµένες σε αυτό. Τέλος, τα υπάρχοντα συστήµατα δεν έχουν προσωποποιηµένο χαρακτήρα. Οι απαντήσεις και οι υπηρεσίες τους σπανίως προσαρµόζονται στον εκάστοτε χρήστη. Σε αυτήν τη διπλωµατική εργασία γίνεται µια προσπάθεια ανάπτυξης ενός ψηφιακού βοηθού ερωταπαντήσεων που αναζητά δυναµικά τις απαντήσεις στον ιστό. Αυτό το σύστηµα, χρησιµοποιώντας προεκπαιδευµένα µοντέλα αλλά και τεχνολογίες λογισµικού, απαντάει τις ερωτήσεις του χρήστη αξιοποιώντας το σύνολο της online πληροφορίας. Η ϕορητότητα του συστήµατος µπορεί να εξασφαλίσει µια ιδιωτική εµπειρία καθώς και απαντήσεις από εξειδικευµένες πηγές δεδοµένων. Τα πειραµατικά αποτελέσµατα αποδεικνύουν ότι το συγκεκριµένο σύστηµα είναι επαρκώς ακριβές, ενώ ταυτόχρονα επιτυγχάνει τους σκοπούς για τους οποίους αναπτύχθηκε. Θυσιάζεται η αναλυτικότητα και το συνοµιλητικό ύφος των συµβατικών ψηφιακών βοηθών, για να αξιοποιηθεί το µέγιστο πλήθος πληροφορίας. Επιπλέον, οι προεκτάσεις του συστήµατος µπορούν να οδηγήσουν σε χρήση του σε εξειδικευµένα συστήµατα όπου η πληροφορία που είναι διαθέσιµη είναι περιορισµένη και προέρχεται πάλι από το διαδίκτυο αλλά µόνο από µια συγκεκριµένη πηγή.
Ανάπτυξη Φίλτρων Ανεπιθύμητων Μηνυμάτων με Χρήση Τεχνικών Τεχνητής ΝοημοσύνηςISSEL
Το ”spamming”, δηλαδή η αποστολή ανεπιθύμητων μηνυμάτων σε πολλούς χρήστες, έχει ευνοηθεί με την ανάπτυξη των ψηφιακών επικοινωνιών και την τεχνοκεντρική στροφή στη ζωή του ανθρώπου. Οι συνθήκες αυτές, διευκολύνουν την αποστολή spam μηνυμάτων, αλλά και ο άνθρωπος είναι περισσότερο εκτεθειμένος σ’ αυτά. Ωστόσο, η ερευνητική κοινότητα έχει αναπτύξει συστήματα ανίχνευσης των ανεπιθύμητων μηνυμάτων για να προστατεύσει τους χρήστες και τον απρόσκοπτο χαρακτήρα της επικοινωνίας, που πραγματοποιείται μέσω των ψηφιακών μέσων. Η αγγλική βιβλιογραφία είναι πλούσια σε μεθόδους που μπορούν να χρησιμοποιηθούν για τον περιορισμό του spam. Από την άλλη, η έρευνα σε άλλες γλώσσες είναι αρκετά περιορισμένη. Η παρούσα διπλωματική στοχεύει στην επέκταση των μεθόδων και συστημάτων ανίχνευσης από τα αγγλικά στα ελληνικά. Λόγω της έλλειψης διαθέσιμων ελληνικών δεδομένων, πραγματοποιείται αυτόματη μετάφραση από τα αγγλικά στα ελληνικά, με τη χρήση της υπηρεσίας μετάφρασης Google translate. Οπότε, τα ελληνικά φίλτρα ανίχνευσης, εκπαιδεύονται στα μεταφρασμένα δεδομένα. Ειδικότερα, εξετάζει διαφόρους αλγορίθμους Μηχανικής Μάθησης και Επεξεργασίας Φυσικής Γλώσσας για την ανάπτυξη των συστημάτων ανίχνευσης. Η διπλωματική, καταλήγει ότι η επανεκπαίδευση μοντέλων BERT, στα δεδομένα του προβλήματος, έχουν τις καλύτερες αποδόσεις και στις δυο γλώσσες. Επίσης, πετυχαίνουν τη μικρότερη δυνατή διαφορά στις αποδόσεις των δυο γλωσσών. Οπότε, προτείνει υλοποιήσεις που βασίζονται στo επανεκπαιδευμένo BERT για τα αγγλικά και στο Greek BERT για τα ελληνικά. Ειδικότερα υλοποιεί ένα Καθολικό Φίλτρο, που συνδυάζει τα διαθέσιμα δεδομένα, Θεματικά Φίλτρα που ανιχνεύουν συγκεκριμένες κατηγορίες spam αλλά και ένα Σύστημα Θεματικών Φίλτρων για την ανίχνευση όλων των κατηγοριών. Τελικά, μέσω της σύγκρισης των αποδόσεων των αγγλικών φίλτρων στα πρωτότυπα αγγλικά δεδομένα και των ελληνικών φίλτρων στα μεταφρασμένα ελληνικά (ανθρωπίνως και αυτοματοποιημένα), η συμβολή της μηχανικής μετάφρασης στην ανάπτυξη ελληνικού συστήματος ανίχνευσης, κρίνεται επιτυχημένη.
Ανάπτυξη Ελληνικών Μοντέλων Εντοπισμού Ρητορικής Μίσους.pptxISSEL
Η ραγδαία και συνεχής εξάπλωση των μέσων κοινωνικής δικτύωσης έχει οδηγήσει σε έξαρση της ρητορικής μίσους και της χρήσης προσβλητικής γλώσσας στη σύγχρονη εποχή. Πολλές έρευνες δείχνουν ότι η ρητορική μίσους στα μέσα κοινωνικής δικτύωσης έχει δυσμενείς επιπτώσεις στην ψυχική και σωματική ευεξία των ατόμων που τα χρησιμοποιούν. Κατά συνέπεια, υπάρχει αυξανόμενη ανάγκη για την αυτοματοποίηση της ανίχνευσης της ρητορικής μίσους και του προσβλητικού περιεχομένου. Είναι σημαντικό να σημειωθεί ότι η πλειονότητα των ερευνητικών προσπαθειών επικεντρώνονται στην ανίχνευση ρητορικής μίσους στην αγγλική γλώσσα. Αυτό οφείλεται κυρίως στη διαθεσιμότητα των απαραίτητων μοντέλων και συνόλων δε δομένων για τη εκπαίδευση τους για την ανίχνευση ρητορικής μίσους. Η ανάγκη ανίχνευσης της ρητορικής μίσους σε γλώσσες εκτός της αγγλικής είναι υψίστης σημασίας. Για να γεφυρωθεί αυτό το κενό, η παρούσα εργασία στοχεύει στην αύξηση των διαθέσιμων ελληνικών δεδομένων με την δημιουργία ενός χειροκίνητα σχολιασμένου συνόλου δεδομένων που αποτελείται από ελληνικά tweets με ετικέτα που αφορά την παρουσία ή την απουσία προσβλητικού περιεχομένου. Επιπλέον, δημιουργήθηκε ένα ακόμα σετ δεδομένων από τα tweets που περιείχαν μόνο ρητορική μίσους, τα οποία επιπλέον διαχωρίστηκαν σε υποκατηγορίες ρητορικής μίσους. Στη συνέχεια, χρησιμοποιούμε τα δύο νέα αυτά σύνολα δεδομένων καθώς και ένα προϋπάρχον ελληνικό σύνολο δεδομένων, εκπαιδεύουμε μοντέλα μηχανικής μάθησης, καθώς και γλωσσικά μοντέλα στηριζόμενα σε νευρωνικά δίκτυα για το ζήτημα της ανίχνευσης ρητορικής μίσους.
Ανάπτυξη συστήματος ιεραρχικής ομαδοποίησης και διαχείρισης κειμένων για αποκ...ISSEL
Η ανάκτηση πληροφορίας ανέκαθεν ήταν μια πλέον σημαντική πτυχή κάθε διεργασίας και δεδομένης της ταχείας αύξησης της απαίτησης γρήγορης και εύστοχης παροχής και ανάκτησης πληροφοριών, δεν είναι τίποτα παρά φυσικό να γίνεται συλλογική προσπάθεια προς την βελτιστοποίηση αυτής της διαδικασίας με οποιαδήποτε μέσα είναι διαθέσιμα, όπως η Τεχνητή Νοημοσύνη. Με αυτό τον τρόπο θα μπορεί ένας υπολογιστής να “εκπαιδευτεί” και να βοηθάει στο έργο αυτό, αντί να είναι μονάχα ένα εργαλείο για μαθηματικά πιθανοτήτων και στατιστική. Σε μία εποχή όπου τα πάντα είναι καθοδηγούμενα από την πληροφορία και τα δεδομένα, η ανάγκη για δομημένα δεδομένα και ορθή ανάκτηση πληροφορίας είναι τουλάχιστον επιτακτική. Η δομή και η οργάνωση στα δεδομένα διευκολύνει την λήψη αποφάσεων και μέσω αυτού επιβεβαιώνεται πάντα η σημασία και η συνεισφορά της τεχνητής νοημοσύνης και των μοντέλων μηχανικής μάθησης. Η εφαρμογή και η υλοποίηση μεθόδων και τεχνικών βαθιάς μάθησης μπορεί σταδιακά μπορεί να βοηθήσει στην απαλλαγή μας από την εξάρτηση από λέξεις κλειδιά και να οδεύσουμε προς την διδασκαλία της σημασιολογικής κατανόησης της φυσικής γλώσσας από τους υπολογιστές. Σε αυτό μπορεί να συνεισφέρει εν μέρει από ένα πλήρως αυτόνομο σύστημα ικανό να οργανώνει, να διαχειρίζεται και να ταξινομεί έγγραφα σημασιολογικά, με ελάχιστη εκπαίδευση. Η αξιοποίηση των δυνατοτήτων και της πολυχρηστικότητας της μάθησης και ταξινόμησης μηδενικών και λίγων βολών, καθώς και των σύγχρονων τεχνικών θεματικής μοντελοποίησης, μπορεί κανείς να αναπτύξει μια εφαρμογή που ως είσοδο λαμβάνει ακατέργαστα μη επισημειωμένα ή επεξεργασμένα δεδομένα και να επιστρέφει μια πλήρως λειτουργική εφαρμογή ερωτοαπαντήσεων. Στην προσπάθεια μεγιστοποίησης της πολυχρηστικότητας του εν λόγω συστήματος, η παρούσα διπλωματική εργασία ερευνεί και αξιολογεί την βιωσιμότητα ενός συστήματος τέτοιας φύσεως. Δεδομένου ότι ο τελικός σκοπός είναι η δομημένη πληροφορία και η αποτελεσματική ανάκτηση της, θα εξεταστεί η υπόθεση της αποκεντρωμένης προσέγγισης, καθώς μειώνονται σημαντικά οι απαιτήσεις υπολογιστικής ισχύος και αποθηκευτικού χώρου. Μέσω δοκιμών και πειραμάτων τα παραγόμενα δεδομένα φαίνεται να υποστηρίζουν την υπόθεση υπέρ ενός τέτοιου συστήματος, και δυνητικά με διάφορα πλεονεκτήματα υπέρ ενός αντίστοιχου αλλά ενιαίου συστήματος.
Ανάπτυξη γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στό...ISSEL
Η συνεχής ανάπτυξη της τεχνολογίας έχει εδραιώσει τη χρήση γραφικών διεπαφών ως έναν εύχρηστο και χρήσιμο τρόπο αλληλεπίδρασης με έναν υπολογιστή. Παράλληλα η εξάπλωση του ηλεκτρονικού εμπορίου, που αποτελεί πλέον κυρίαρχο τρόπο πραγματοποίησης εμπορικών συναλλαγών, αλλάζει τα εμπορικά δεδομένα. Αυτά καθιστούν απαραίτητο τον εκσυγχρονισμό των επιχειρήσεων και την αναπροσαρμογή των πολιτικών και στρατηγικών τιμολόγησης που θα υιοθετήσουν, ώστε οι τιμές και οι προωθητικές τους ενέργειες να είναι ανταγωνιστικές, να συμβάλλουν στην επίτευξη των στόχων τους και στην μεγιστοποίηση των κερδών τους μέσα από ένα φιλικό γραφικό περιβάλλον διεπαφής. Η παρούσα διπλωματική εργασία πραγματεύεται τον σχεδιασμό και την ανάπτυξη μιας γραφικής διεπαφής σε σύστημα προσομοίωσης ηλεκτρονικών αγορών με στόχο την εξέλιξη τεχνικών δυναμικής τιμολόγησης. Η γραφική διεπαφή που αναπτύσσεται περιέχει μια φόρμα συμπλήρωσης των παραμέτρων ενός αλγοριθμικού μοντέλου στρατηγικών τιμολόγησης, ένα περιβάλλον γραφικής οπτικοποίησης των εισόδων του χρήστη και ένα αντίστοιχο περιβάλλον προβολής των αποτελεσμάτων του συστήματος.
Δημιουργία Ολοκληρωμένου Συστήματος Επαλήθευσης Ορθότητας ΙσχυρισμώνISSEL
Βασικό χαρακτηριστικό της σημερινής εποχής είναι η ταχύτατη διακίνηση της πληροφορίας. Η ποικιλία και ο τεράστιος όγκος των μεταδιδόμενων πληροφοριών δεν επιτρέπουν πάντα τον έλεγχο της εγκυρότητάς τους πριν τη μαζική αναπαραγωγή τους, με αποτέλεσμα να εμφανίζεται έντονα το φαινόμενο της παραπληροφόρησης. Παλαιότερα ο έλεγχος των ειδήσεων πραγματοποιούνταν χειροκίνητα, ωστόσο πλέον η ανάγκη ανάπτυξης αυτόματων συστημάτων διασταύρωσης της πληροφορίας κρίνεται επιτακτική. Στο πλαίσιο της παρούσας διπλωματικής εργασίας αναπτύσσεται ένα end to end σύστημα ανίχνευσης ψευδών ειδήσεων, το οποίο αποτελείται από επιμέρους εξαρτήματα που ακολουθούν την παρακάτω συλλογιστική πορεία. Σε πρώτη φάση ανιχνεύονται προτάσεις που αξίζει να ελεγχθούν ως προς την ορθότητά τους. Για κάθε μία από αυτές, συγκεντρώνεται ένας αριθμός εγγράφων από μια βάση ‘αλήθειας’, τα οποία λειτουργούν ως αποδεικτικά στοιχεία. Τέλος, με βάση τα παραπάνω αποδεικτικά έγγραφα λαμβάνεται μία απόφαση σχετικά με την εγκυρότητα των προτάσεων που επιλέγονται. Για τη δημιουργία του παραπάνω συστήματος αξιοποιείται το σύνολο δεδομένων FEVER, το οποίο περιέχει προτάσεις γενικού ενδιαφέροντος. Εξετάζεται η απόδοση των προ-εκπαιδευμένων μοντέλων BERT, RoBERTa, DistilBERT και SqueezeBERT τα οποία εκπαιδεύονται σε τμήμα του συνόλου. Διερευνάται η επιρροή του ρυθμού και του αριθμού εποχών εκπαίδευσης στην επίδοσή τους, καθώς και η συμπεριφορά τους σε απλές και σύνθετες διεργασίες, όπως είναι ο εντοπισμός των προτάσεων προς εξέταση και η επαλήθευσή τους αντίστοιχα. Για την ανάκτηση των απαραίτητων εγγράφων που χρησιμοποιούνται για την επαλήθευση της ορθότητας των προτάσεων, αξιοποιούνται αλγόριθμοι που στηρίζονται στα λεξιλογικά χαρακτηριστικά των κειμένων, BM25, αλλά και Sentence Transformers, msmarco distilbert-base-tas-b, που έχουν την ικανότητα να αντιλαμβάνονται τα συμφραζόμενα των κειμένων. Τέλος, δημιουργείται μια εφαρμογή η οποία προσφέρει τη δυνατότητα στο χρήστη να καταθέτει την πρόταση του συνόλου ελέγχου που επιθυμεί να ελέγξει και παράλληλα οπτικοποιεί τα αποτελέσματα του συστήματος παρέχοντας αιτιολόγηση για κάθε απόφαση που λαμβάνεται. Τα πειραματικά αποτελέσματα καταδεικνύουν την απόδοση των επιλεγόμενων υλοποιήσεων στο σύνολο ελέγχου του FEVER Shared Task για κάθε διεργασία ξεχωριστά και το πως επηρεάζει την απόδοση ο συνδυασμός τους. Το σύστημα που προτείνεται επιτυγχάνει ακρίβεια πρόβλεψης 60.2% στο FEVER Shared Task, υπολείπεται 8% της καλύτερης υλοποίησης, και 58.12% στο σύνολο της διεργασίας, συμπεριλαμβανομένης της διαδικασίας ανίχνευσης ισχυρισμών, φανερώνοντας την πολυπλοκότητα δημιουργίας τέτοιων συστημάτων.
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταISSEL
Η κατανεµηµένη φύση της τεχνολογίας Εξόρυξης ∆εδοµένων έχει στο παρελθόν
αντιµετωπιστεί επιτυχώς µε τη χρήση και αξιοποίηση της τεχνολογίας των Πρακτόρων Λογισµικού, οι οποίοι καταµερίζουν τις εργασίες, συνεργάζονται και συγχρονίζονται έτσι ώστε να φτάσουν στον τελικό τους στόχο, την εξαγωγή χρήσιµης γνώσης. Μια σειρά από εξελιγµένα εργαλεία Εξόρυξης ∆εδοµένων έχουν ήδη αναπτυχθεί, αποδεικνύοντας ότι η Πολυπρακτορική Τεχνολογία µπορεί πράγµατι να χρησιµοποιηθεί για να επιλύσει τέτοιου είδους προβλήµατα. Αντιστρέφοντας τους ρόλους του σκοπού και του µέσου, όµως, γνώση η οποία εξάγεται µε τη χρήση τεχνικών Εξόρυξης ∆εδοµένων δεν έχει χρησιµοποιηθεί για τη βελτίωση Πολυπρακτορικών Συστηµάτων. Περιορισµοί οι οποίοι σχετίζονται µε τη
διαφορετική φύση της λογικής που υιοθετούν οι δυο εµπλεκόµενες τεχνολογίες
(επαγωγική για την Εξόρυξη ∆εδοµένων και συµπερασµατική για τα Πολυπρακτορικά
Συστήµατα), εµποδίζουν την απρόσκοπτη εφαρµογή της εξαγόµενης γνώσης στο
λογικό µοντέλο των πρακτόρων. Εάν αυτοί οι περιορισµοί υπερκεραστούν, τότε ο
συγκερασµός των δυο τεχνολογιών θα καταστεί εφικτός.
Στα πλαίσια της διατριβής αυτής παρουσιάζεται µια ενοποιηµένη µεθοδολογία, η
οποία επιτρέπει την εφαρµογή δυναµικών, σύνθετων και ανανεώσιµων κανόνων σε
πολυπρακτορικά συστήµατα. Οι κανόνες αυτοί εξάγονται µε τη χρήση τεχνικών
Εξόρυξης ∆εδοµένων, σε πράκτορες και πολυπρακτορικά συστήµατα. Η µεθοδολογία
αυτή αναγνωρίζει τρεις διαφορετικούς τύπους γνώσης, η οποία προέρχεται από την
εφαρµογή τεχνικών Εξόρυξης ∆εδοµένων, και ανάλογα διαφοροποιεί το µοντέλο
διάχυσής της. Οι τρεις αυτοί τύποι γνώσης είναι: α) γνώση η οποία εξάγεται µε τη
χρήση τεχνικών Εξόρυξης ∆εδοµένων στα ιστορικά δεδοµένα µιας εφαρµογής, β)
γνώση η οποία εξάγεται µε τη χρήση τεχνικών Εξόρυξης ∆εδοµένων στα ιστορικά
δεδοµένα των συµπεριφορών των πρακτόρων µιας εφαρµογής και, γ) γνώση η οποία
εξάγεται µε τη χρήση εξελικτικών τεχνικών Εξόρυξης ∆εδοµένων σε πολυπρακτορικές κοινωνίες. Στη διατριβή αυτή µελετάται η δυνατότητα εφαρµογής των τεσσάρωνκυρίαρχων τεχνικών Εξόρυξης ∆εδοµένων σε πολυπρακτορικά συστήµατα:
Οµαδοποίηση για διαχωρισµό, Ταξινόµηση για κατηγοριοποίηση και πρόβλεψη,
εξαγωγή Κανόνων Συσχέτισης για ανακάλυψη συσχετισµών και Γενετικοί αλγόριθµοι
για αυτό-οργάνωση. Για την υλοποίηση και επίδειξη της δυναµικής ενσωµάτωσης
γνώσης σε πράκτορες αναπτύχθηκε ο Data Miner, ένα εργαλείο που περιγράφεται στο Κεφάλαιο 4. Για κάθε έναν από τους τρεις διαφορετικούς τύπους γνώσης αναπτύχθηκε και ένα αντιπροσωπευτικό Πολυπρακτορικό Σύστηµα, του οποίου και γίνεται εκτενής παρουσίαση (Κεφάλαια 5-7). Τέλος, η παρούσα διατριβή πραγµατεύεται και το θέµα της βελτίωσης του γνωσιακού µοντέλου των πρακτόρων, µε την επανάληψη της διαδικασίας χρήσης τεχνικών Εξόρυξης ∆εδοµένων πάνω σε σύγχρονα και ενηµερωµένα δεδοµένα (Επανεκπαίδευση – Κεφάλαιο 8). Τα συµπεράσµατα από την εκπόνηση της διατριβής και πιθανές µελλοντικές επεκτάσεις συνοψίζονται στο Κεφάλαιο 9.
Ανάπτυξη Μηχανισμών Αυτοματοποίησης των διαδικασιών κατασκευής συστημάτων λο...ISSEL
Όπως έχει αποτυπωθεί στην ιστορία μέσω των συντελεσθεισών βιομηχανικών
επαναστάσεων, βαρύνουσας σημασίας στην εξέλιξη της ανθρωπότητας υπήρξε, και συνεχίζει να είναι, η αυτοματοποίηση διαδικασιών στην επαγγελματική και ιδιωτική ζωή του ανθρώπου. Η εξάπλωση της τεχνολογίας σε αυτές και η δεσπόζουσα θέση του διαδικτυακού «παράλληλου σύμπαντος», οδηγούν στην ψηφιοποίηση ολοένα και περισσότερων διαδικασιών, που επομένως βασίζονται σε Λογισμικό. Συνεπώς, το στοίχημα κάλυψης της ταχέως αυξανόμενης ανάγκης ψηφιοποίησης αποτελεί η έτι περαιτέρω αυτοματοποίηση της παραγωγής Λογισμικού μέσω της ανάπτυξης νέων μεθοδολογιών, στοχεύοντας στην παραγωγή ορθού και ποιοτικού Λογισμικού. Στο πλαίσιο αυτό, η παρούσα διατριβή πραγματεύεται τη σχεδίαση και εφαρμογή καινοτόμων μηχανισμών για την αυτοματοποίηση των διαδικασιών παραγωγής λογισμικού, εν προκειμένω RESTful Διαδικτυακών Υπηρεσιών. Προς επίτευξη των στόχων αυτής (μεταξύ άλλων και η ανάπτυξη αντίστοιχου Μηχανισμού Αυτοματοποίησης), χρησιμοποιείται ως μέσο αυτοματοποίησης η Μηχανική Λογισμικού Οδηγούμενη από Μοντέλα, με τους βασικούς δομικούς λίθους της οποίας (μετα-μοντέλα και μετασχηματισμούς) επιχειρείται η επίτευξη αυτοματοποίησης στο ευρύτερο πεδίο
των RESTful διαδικτυακών υπηρεσιών.
Στη συνεισφορά της παρούσας διατριβής στον τομέα της αυτοματοποίησης
συγκαταλέγεται καταρχάς, η διδιάστατη Αρχιτεκτονική Μηχανισμών αυτοματοποίησης με χρήση Μηχανικής Λογισμικού Οδηγούμενης από Μοντέλα, η οποία διευκολύνει την παραλληλοποίηση της ανάπτυξής τους, τη μείωση της πολυπλοκότητάς τους και αυξάνει την συντηρησιμότητα και επεκτασιμότητά τους. Επιπλέον, συνοδεύεται από μία συνεκτική στρατηγική διάσπασης του συνολικού προβλήματος σε μικρότερα, τόσο σε επίπεδο μετα-μοντέλων όσο και σε επίπεδο μετασχηματισμών, λαμβάνοντας υπόψιν τα εγγενή αίτια πολυπλοκότητας της μεθοδολογίας, προκειμένου να διευκολύνει επιπλέον την κατασκευή τους.
Ακολούθως, συνεισφέρει μετα-μοντέλα και μετασχηματισμούς που αφορούν την
αυτοματοποίηση των πτυχών των Διαδικτυακών Υπηρεσιών με τις οποίες ασχολείται όπως: α) δόμηση συστημάτων αρχιτεκτονικής REST, β) με δυνατότητες ταυτοποίησης χρήστη, γ) εξουσιοδότησης χρήστη, δ) αυτόματης εφαρμογής Προτύπων Σχεδίασης για την ικανοποίηση μη λειτουργικών πτυχών αυτών, ε) αναζήτησης δεδομένων, ζ) αλληλεπίδρασης με υπάρχουσες υπηρεσίες στο Διαδίκτυο και, τέλος, η) δυνατότητας μετασχηματισμού υπηρεσιών σε RESTful με ταυτόχρονη διατήρηση των δεδομένων τους.
Τέλος, η παρούσα διατριβή απαντά σε ερευνητικά ερωτήματα που άπτονται: α) της βελτίωσης της παραγωγικότητας των Μηχανικών Λογισμικού για την παραγωγή RESTful Διαδικτυακών Υπηρεσιών, β) της βελτίωσης της παραγωγικότητάς τους κατά την εφαρμογή Προτύπων Σχεδίασης για την επίλυση συχνά συναντώμενων προβλημάτων, γ) την εκτίμηση του χάσματος προσπάθειας ανάμεσα σε ...
ΕΥΦΥΗΣ ΜΕΘΟΔΟΛΟΓΙΑ ΑΠΟΤΙΜΗΣΗΣ ΤΟΥ ΒΑΘΜΟΥ ΔΙΑΤΗΡΗΣΙΜΟΤΗΤΑΣ ΕΡΓΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ...ISSEL
Οι ολοένα αυξανόμενες απαιτήσεις των σύγχρονων έργων λογισμικού τόσο σε
λειτουργικό, όσο και σε μη λειτουργικό επίπεδο έχουν καταστήσει παραπάνω από
εμφανή την ανάγκη επόπτευσης της ποιότητάς τους. Το γεγονός αυτό
καταδεικνύεται από το μεγάλο ποσοστό των έργων λογισμικού που αποτυγχάνουν,
καθώς αδυνατούν να ικανοποιήσουν τις προδιαγραφές που έχουν τεθεί στα
πλαίσια ενός σαφούς χρονοδιαγράμματος και εντός προϋπολογισμού. Η απάντηση
στην πρόκληση αυτή εντοπίζεται στην ανάπτυξη μεθοδολογιών και τεχνικών
αποτίμησης της ποιότητας λογισμικού, διαδικασία που αποτελεί ανοιχτό πεδίο
ερευνητικού ενδιαφέροντος και συγκεντρώνει μεγάλη απήχηση εδώ και δεκαετίες.
...
Μηχανισμοί αυτοματοποίησης διαδικασιών σχεδίασης, υλοποίησης και ανάπτυξης λο...ISSEL
Ως γνωστόν, οι επιστήμες της ρομποτικής και των Κυβερνοφυσικών Συστημά-
των (ΚΦΣ) καλύπτουν/απαιτούν ένα ευρύ φάσμα γνώσεων στα πεδία του υλικού,
του λογισμικού, των συστημάτων, των αλγορίθμων μηχανικής μάθησης κ.α., καθι-
στώντας τον έλεγχο ενός ρομπότ, ή μίας συσκευής, μία χρονοβόρα και δύσκολη
διαδικασία, ακόμη και για κάποιον εξοικειωμένο με τους συγκεκριμένους τομείς.
Από την άλλη, η ραγδαία εξέλιξη στους κλάδους της ρομποτικής, του διαδικτύου
των πραγμάτων (IoT) και των σύγχρονων ΚΦΣ, έχει ως αποτέλεσμα την ανάπτυ-
ξη διάφορων τεχνολογιών και εργαλείων υποστήριξης της ανάπτυξης συστημάτων
και εφαρμογών τα τελευταία χρόνια. Η υψηλή ετερογένεια που συναντάμε στα
συστήματα αυτά, βασίζεται κυρίως στην διασύνδεση του φυσικού και του ψηφια-
κού κόσμου, αλλά και στην πληθώρα των διαθέσιμων τεχνολογιών και εργαλείων
σχεδίασης, ανάπτυξης και εγκατάστασης. Παραδείγματα σύγχρονων ΚΦΣ είναι τα
έξυπνα σπίτια και οι έξυπνες υποδομές γενικότερα, καθώς και τα ψηφιακά δίδυμα.
Τα συστήματα αυτά αποτελούνται από φυσικές συσκευές, οι οποίες αλληλεπιδρούν
με το φυσικό περιβάλλον μέσω των αισθητήρων και ενεργοποιητών που διαχειρί-
ζονται, καθώς και από ψηφιακές οντότητες, οι οποίες είναι υπεύθυνες για την δια-
σύνδεση, την επεξεργασία, την παρακολούθηση, τον έλεγχο και την ενορχήστρωση
σε επίπεδο συστήματος και εφαρμογής.
Η παρούσα διδακτορική διατριβή επικεντρώνεται στο πρόβλημα της μέτα-μοντε-
λοποίησης των φάσεων σχεδίασης (design), υλοποίησης (implementation) και α-
νάπτυξης (deployment) Κυβερνοφυσικών Συστημάτων (ΚΦΣ). Συγκεκριμένα, στα
πλαίσια της διατριβής μελετήθηκαν και εφαρμόστηκαν τεχνικές μηχανικής λογισμι-
κού οδηγούμενης από μοντέλα για την ανάπτυξη μιας μεθοδολογίας και αντίστοι-
χων Γλωσσών Ειδικού Πεδίου (Domain Specific Languages - DSLs) για την αυτο-
ματοποίηση των προαναφερθεισών φάσεων. Βασικός στόχος της διατριβής είναι η
συστηματοποίηση των διαδικασιών ανάπτυξης σύγχρονων συστημάτων και εφαρ-
μογών ΚΦΣ, με χρήση υψηλού επιπέδου εργαλείων, μεσολογισμικού και γλωσσών
ειδικού πεδίου. Η διατριβή εστιάζει σε συσκευές ανοικτού υλικού και λογισμι-
κού (open hardware/open software), ενώ στοχεύει να διευκολύνει την ανάπτυξη
εφαρμογών από μη ειδικούς του πεδίου (citizen developers) μέσω της χρήσης των
μέτα-μοντέλων και των γλωσσών που αναπτύχθηκαν στα πλαίσια της διατριβής.
Εξόρυξη δεδομένων τεχνολογίας λογισμικού για επαναχρησιμοποίηση λογισμικούISSEL
Η ανάγκη για την αποτελεσματική ανάπτυξη και συντήρηση λογισμικού έχει εντοπιστεί εδώ και αρκετό καιρό στο σχετικό κλάδο της Τεχνολογίας Λογισμικού. Σήμερα, ωστόσο, με την εισαγωγή νέων πρακτικών ανάπτυξης λογισμικού και πρωτοβουλιών λογισμικού ανοικτού κώδικα, τα δεδομένα λογισμικού που μπορεί να βρει κανείς στο διαδίκτυο είναι άφθονα, επομένως η πρόκληση που προκύπτει είναι η αποτελεσματική αξιοποίησή τους για την παραγωγή καλύτερων προϊόντων λογισμικού. Και η πρόκληση αυτή αποτελεί στην πραγματικότητα ένα πρόβλημα επαναχρησιμοποίησης. Στο πλαίσιο αυτής της διατριβής προτείνουμε μια ενιαία προσέγγιση που περιλαμβάνει την εφαρμογή τεχνικών εξόρυξης δεδομένων σε δεδομένα τεχνολογίας λογισμικού για τη διευκόλυνση της επαναχρησιμοποίησης σε διάφορες φάσεις του κύκλου ζωής του λογισμικού. Η μεθοδολογία μας προτείνει λύσεις για τη φάση του καθορισμού των απαιτήσεων και της εξαγωγής προδιαγραφών, τις φάσεις της σχεδίασης και ανάπτυξης λογισμικού, ενώ συμβάλλει επίσης στην αξιολόγηση της ποιότητας και τον έλεγχο του λογισμικού.
Ανάλυση ∆εδοµένων ΄Εργων Λογισµικού για Ανάπτυξη σε Νέα Πεδία ΕφαρµογήςISSEL
Η ταχεία παραγωγή έργων λογισµικού σε ανταγωνιστικές αγορές πλέον επιτάσσει
αυτοµατοποίηση των ϕάσεων σχεδίασης και ανάπτυξης. Οι µηχανικοί λογισµικο-
ύ εξοικειώνονται συνεχώς µε νέα εργαλεία και τεχνολογίες που εξασφαλίζουν την
ορθή εφαρµογή σύγχρονων µεθοδολογιών, αλλά καλούνται συχνά να παράξουν
λογισµικό και σε πεδία εφαρµογής µε τα οποία δεν είναι εξοικειωµένοι, πάντο-
τε προσπαθώντας να ικανοποιήσουν τον προϊοντικό χάρτη στον οποίο εργάζονται.
Η παρούσα διδακτορική διατριβή έχει ως στόχο να ϐοηθήσει τους µηχανικούς
σε αυτήν τους την προσπάθεια εισάγοντας µια επικουρική µεθοδολογία ανάπτυ-
ξης. Αυτή ϐασίζεται στην ανάλυση της διαθέσιµης πεδιακής γνώσης προηγούµενων
έργων λογισµικού µε συστήµατα τεχνητής νοηµοσύνης και στη µερικώς αυτοµα-
τοποιηµένη συγγραφή πηγαίου κώδικα µε νέες τεχνικές. Για την ακρίβεια, προ-
τείνεται µια ϱοή ανάπτυξης και µια σειρά ϑεωρητικών και πρακτικών εργαλείων
τα οποία ϐοηθούν στη διερεύνηση υπαρχουσών λύσεων, την κατανόησή τους, και
τη συγγραφή πηγαίου κώδικα για την παραγωγή επαναχρησιµοποιήσιµων έργων
λογισµικού. Η προτεινόµενη µεθοδολογία µπορεί να υιοθετηθεί τόσο από νέους
όσο και από πεπειραµένους µηχανικούς για την επιτάχυνση της διαδικασίας α-
νάπτυξης λογισµικού σε νέα (για αυτούς) πεδία εφαρµογής.
Camera-based localization of annotated objects in indoor environmentsISSEL
As the demands increases, the detection and monitoring of motion are increasingly recognized as significant features in every vision system designed to operate in an uncontrolled, indoor environment. From the autonomous navigation and execution of tasks that require interaction with the environments, to simple monitoring, position detection is considered essential. Due to the variety of the system requirements, several detection approaches have been implemented based on indoor or outdoor sensors. However, one of the most important cases of external sensors are cameras. This dissertation aims to introduce the usage of visual patterns as landmarks to detect the pattern’s exact position by a camera system located in the environment. This attempt could be possibly considered as the main contribution of this thesis, since it introduces a universal way of position detection that can be integrated in various systems regardless of type and task to be implemented. To achieve these goals, three patterns were created, -one with LEDs, one with colors and QR codes, which are based on different recognition principles in order to conclude which one results to more accurate detection over a wide range of conditions. The methodology built has proven to be effective and highly accurate during the experimental process on a small scale environment for all different patterns.
Εντοπισμός θέσης επισημασμένου αντικειμένου σε εσωτερικό χώρο με χρήση πολλαπ...ISSEL
Η ανίχνευση και η παρακολούθηση κίνησης αναγνωρίζονται όλο και περισσότερο ως σημαντικές δυνατότητες σε κάθε σύστημα όρασης σχεδιασμένο να λειτουργεί σε μη ελεγχόμενο, εσωτερικό περιβάλλον καθώς αυξάνονται όλο ένα και περισσότερο οι απαιτήσεις. Από την αυτόνομη πλοήγηση και την επιτέλεση εργασιών που απαιτούν αλληλεπίδραση με το περιβάλλον, μέχρι και την απλή παρακολούθηση αποτελούν δραστηριότητες που ωθούν την ανάπτυξη τεχνολογιών για την δημιουργία ενός εύρωστου τρόπου εντοπισμού της θέσης. Λόγω της ποικιλομορφίας των απαιτήσεων των συστημάτων, έχουν αναπτυχθεί τρόποι εντοπισμού που βασίζονται είτε σε εσωτερικούς είτε σε εξωτερικούς αισθητήρες. Στην περίπτωση των εξωτερικών αισθητήρων από τους πιο σημαντικούς αποτελούν οι κάμερες. Στη διπλωματική αυτή, εισάγεται η χρήση εξωτερικών μοτίβων σαν ορόσημα για την αναγνώριση και τον εντοπισμό της ακριβούς θέσης από ένα σύστημα καμερών που είναι τοποθετημένο στο περιβάλλον. Αυτό μπορεί να θεωρηθεί ενδεχομένως και ως η σημαντικότερη συνεισφορά της διπλωματικής καθώς εισάγει έναν καθολικό τρόπο εντοπισμού, που μπορεί να ενσωματωθεί σε διάφορα συστήματα ανεξάρτητα από το είδος τους και τις εργασίες που επιθυμούμε να υλοποιούν. Για να επιτευχθούν αυτοί οι στόχοι δημιουργήθηκαν τρία διαφορετικά μοτίβα, -ένα με led, ένα με χρώματα και QR Codes βασισμένα σε διαφορετικές αρχές αναγνώρισης με σκοπό να μελετήσουμε ποιο λειτουργεί πιο εύρωστα σε μεγαλύτερο εύρος συνθηκών. Η μεθοδολογία αποδείχθηκε αποτελεσματική και με μεγάλη ακρίβεια στην πειραματική διαδικασία σε ένα περιβάλλον μικρής κλίμακας για όλα τα διαφορετικά μοτίβα.
Design and implementation of an automation mechanism to automatically develop...ISSEL
As the internet acquires an increasingly important role in society, computer systems tend to become larger and more complex. That means there is a greater need for quicker development of reliable software. A promising answer to that need are automated code generation mechanisms. The use of those mechanisms can provide a great increase, both in productivity and in the quality of the final product. However, developing such a mechanism usually follows the “traditional” ways of developing software, therefore exhibits the downsides of those ways such as increased effort in debugging requires a high level in technical skills. Aiming to solve the problems presented in the development of automated code generation mechanisms, in the current diploma thesis, model driven engineering (MDE) is utilized. Specifically, once a subtractive model has been defined, a series of transformations take place, resulting in a fully functional system. In this way, the software development process is accelerated and software is produced with greater reliability. This thesis implements the DeGraCom (Designing Graphical Commands) system. DeGraCom offers a user-friendly interface, which allows its user, even if they do not have any expertise when it comes to web programming, to design and implement web components-commands in an automated way. These components follow the client-server architecture, so that they can be easily integrated to existing automated mechanisms, in order to expand their functionality. To test and evaluate the DeGraCom system, the components-commands produced by DeGraCom are tested on the TekTrain platform. TekTrain offers a number of tools and interfaces, along with a series of smart devices, and aims to ease the learning process of new technologies for children. The main interface offered by TekTrain, allows its users to define a number of commands for its smart devices to perform. DeGraCom aims to automate the process of creating such a command.
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...ISSEL
Καθώς το διαδίκτυο αποκτά ολοένα και σημαντικότερο ρόλο στην κοινωνία, τα υπολογιστικά συστήματα γίνονται ολοένα και μεγαλύτερα, και συγχρόνως πολυπλοκότερα. Διογκώνεται έτσι η ανάγκη για γρήγορη παραγωγή αξιόπιστου λογισμικού. Μία υποσχόμενη απάντηση στην ανάγκη αυτή είναι οι μηχανισμοί αυτοματοποίησης παραγωγής κώδικα για συγκεκριμένα προβλήματα. Η χρήση των μηχανισμών αυτών, αποφέρει σημαντικά κέρδη παραγωγικότητας και ποιότητας του τελικού αποτελέσματος. Ωστόσο η ανάπτυξή τους ακολουθεί ως επί το πλείστων τον «παραδοσιακό» τρόπο ανάπτυξης και συνεπώς παρουσιάζει τα μειονεκτήματα αυτού, όπως αυξημένη προσπάθεια εκσφαλμάτωσης και μεγαλύτερη ανθρωποπροσπάθεια ενώ ταυτοχρόνως απαιτεί σημαντικές τεχνικές γνώσεις. Με στόχο να αντιμετωπιστούν οι αγκυλώσεις που παρουσιάζει η ανάπτυξη μηχανισμών αυτοματοποίησης παραγωγής κώδικα, στην παρούσα διπλωματική εργασία, αξιοποιείται η μηχανική οδηγούμενη από μοντέλα ή μοντελοστρεφής μηχανική (Model Driven Engineering ή MDE). Συγκριμένα, αφού οριστεί ένα αφαιρετικό μοντέλο, πραγματοποιείται μια σειρά από μετασχηματισμούς, με τελικό αποτέλεσμα μια πλήρως λειτουργική εφαρμογή. Με αυτό τον τρόπο, επιταχύνεται διαδικασία ανάπτυξης λογισμικού και παράγεται λογισμικό με μεγαλύτερη αξιοπιστία. Η παρούσα διπλωματική εργασία υλοποιεί το σύστημα DeGraCom (Developing Graphical Commands). Το DeGraCom παρέχει μία φιλική γραφική διεπαφή επιτρέπει στους χρήστες του, ακόμη και αν δεν γνωρίζουν διαδικτυακό προγραμματισμό, να παράγουν διαδικτυακά τμήματα-εντολές με αυτοματοποιημένο τρόπο. Τα τμήματα αυτά ακολουθούν την αρχιτεκτονική Client-Server ούτως ώστε να είναι εύκολη η ενσωμάτωσή τους που σε υπάρχοντες διαδικτυακούς Αυτόματους Μηχανισμούς προς επέκταση των δυνατοτήτων τους. Για την δοκιμή και αξιολόγηση αυτού του συστήματος, τα τμήματα-εντολές που παράγονται δοκιμάστηκαν στην πλατφόρμα TekTrain. Το τελευταίο, παρέχει ένα σύνολο από εργαλεία και διεπαφές, παράλληλα με μία σειρά από έξυπνες συσκευές, με στόχο την διευκόλυνση την εκπαίδευσης των παιδιών στις νέες τεχνολογίες. Η βασική γραφική διεπαφή του επιτρέπει στους χρήστες της να ορίσουν ένα σύνολο από δράσεις/εντολές για τις έξυπνες συσκευές του. Το σύστημα DeGraCom στοχεύει στο να αυτοματοποιήσει την διαδικασία δημιουργίας νέων εντολών.
Static Analysis of Python code and Identification of Potential Security Vulne...ISSEL
The advent of computational systems has brought forth significant advancements, but concurrently, it has accentuated the urgency for secure and robust software. Security analysis techniques, specifically static code analysis, have been at the forefront of this pursuit. Inspired by the ability to examine code without executing it, these techniques offer the potential to detect vulnerabilities in systems effectively, including data flow issues, control flow complications, and complex security vulnerabilities. Compared to their traditional counterparts, modern computational systems present unique challenges. These systems often operate in environments where system integrity is paramount and any potential security vulnerability could lead to significant damage. This necessitates the implementation of mechanisms that provide rigorous vulnerability detection while maintaining system performance. The focal point of the present thesis is the application of static Python code analysis for the detection of security vulnerabilities in computational systems. A variety of techniques have been explored, including linting, control flow analysis, data flow analysis, complexity analysis, and pattern matching. Various methodologies for identifying security vulnerabilities are also investigated, such as input validation, output encoding, authentication and access control, cryptography, exception handling, buffer overflow, SQL injection, and file handling. A Python-based program is developed, utilizing these static code analysis techniques for comprehensive security evaluation. This tool probes IP addresses, URLs, API calls, and deploys anti-debugging and anti-virtualization strategies. Further, it scrutinizes the entropy of a file for potential obfuscation and contrasts the file against databases of known viruses via a cloud-based solution. It concludes with a basic dynamic analysis of the application’s source code, performed in a virtual environment. The outcomes of this research emphasize the significant role of Python static code analysis in maintaining the integrity of computational systems. The effective implementation of these techniques, along with appropriate software and a series of optimization steps, have the potential to provide solutions to prevalent security issues in computational systems, solidifying their place in a rapidly evolving digital landscape.
Static Analysis of Python code and Identification of Potential Security Vulne...
Kagiafas Nikolaos Thesis Presentation
1. Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με
σκοπό την Εξαγωγή Προτύπων Σχεδίασης και Εξέλιξης
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ
ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ
Τμήμα Ηλεκτρολόγων Μηχανικών και
Μηχανικών Υπολογιστών
Εργαστήριο Επεξεργασίας Πληροφορίας και
Υπολογισμών
Διπλωματική Εργασία
Φοιτητής: Καγιάφας Νικόλαος
Αριθμός Ειδικού Μητρώου (A.E.M.): 8817
Επιβλέποντες:
Συμεωνίδης Ανδρέας,
Αναπληρωτής Καθηγητής
Διαμαντόπουλος Θεμιστοκλής,
Μεταδιδακτορικός Ερευνητής
Ομάδα Ευφυών Συστημάτων και
Τεχνολογίας Λογισμικού
Θεσσαλονίκη, 14 Απριλίου 2021
2. Διάρθρωση Παρουσίασης
• Εισαγωγή
• Υλοποίηση του Συστήματος – Μεθοδολογία
• Πειράματα και Αποτελέσματα
• Συμπεράσματα
• Μελλοντική Εργασία
2
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
3. Διάρθρωση Παρουσίασης
Εισαγωγή
Υλοποίηση του Συστήματος –
Μεθοδολογία
Πειράματα και
Αποτελέσματα
Συμπεράσματα
Μελλοντική
Εργασία
3
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
4. Κίνητρο – Περιγραφή του Προβλήματος
4
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
• Αποθήκες λογισμικού στο Διαδίκτυο, μία
πλούσια πηγή δεδομένων
• Συνεργασία μεταξύ των προγραμματιστών
• Διενέργεια αλλαγών για βελτίωση,
διόρθωση και εξέλιξη ενός έργου
λογισμικού
Εύρεση συχνών τύπων αλλαγών
Εξέταση σχεδιαστικών αρχών για την
οικοδόμηση ενός προγράμματος
Κατανόηση και επίλυση παρόμοιων
προβλημάτων
Μοτίβα
αλλαγών
Διόρθωση λαθών
Συστηματικές
τροποποιήσεις
Βελτίωση χωρίς αλλαγές
στη λειτουργικότητα
Χρήση υπαρχόντων
σχολίων
Αλλαγές στην
αρχιτεκτονική
• Δεν έχουν εξεταστεί σε βάθος
• Δυνατότητα ανίχνευσης προτύπων
σχεδίασης και εξέλιξης λογισμικού
• Τίθενται οι βάσεις για ανάπτυξη
εργαλείων προτάσεων αλλαγών στην
αρχιτεκτονική
5. Στόχοι της διπλωματικής
5
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
Εύρεση συχνών
σχεδιαστικών προτύπων
και προτύπων εξέλιξης
Παρακολούθηση της
εξέλιξης των σχέσεων
μεταξύ των κλάσεων
Υλοποίηση εργαλείου
εξαγωγής των
σχέσεων ανάμεσα
στις διάφορες κλάσεις
ενός προγράμματος
Επιλογή και άντληση
του κατάλληλου
συνόλου δεδομένων
Ανάλυση των εξαγόμενων
προτύπων
Συλλογή στοιχείων σχετικά
με τη σημασιολογία και
τον στόχο τους
Ενίσχυση της δυνατότητας κατανόησης
του προγράμματος στο οποίο
χρησιμοποιούνται (program
comprehension)
Χρησιμοποιούν σήμερα οι προγραμματιστές
πρότυπα, συνειδητά ή μη;
Αν ναι, υπάρχουν και πρότυπα που δεν είναι μέχρι
σήμερα γνωστά;
6. Διάρθρωση Παρουσίασης
Εισαγωγή
Υλοποίηση του Συστήματος
– Μεθοδολογία
Πειράματα και
Αποτελέσματα
Συμπεράσματα
Μελλοντική
Εργασία
6
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
7. Αρχιτεκτονική του Συστήματος
7
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
8. Επιλογή και άντληση των κατάλληλων δεδομένων
8
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
Δημοφιλέστερη πλατφόρμα φιλοξενίας κώδικα με παραπάνω
από 56M χρήστες και 100M αποθετήρια
3000 πιο δημοφιλή
έργα λογισμικού
Καλά σχεδιασμένη δομή, σωστές
τεχνικές, αποτελεσματικότητα
Γραμμένα κατά κύριο
λόγο στην Java
GitHub, GitLab, Assembla, SourceForge
επιλογή εκείνων
με 15 έως 80
commits Επεξεργασία και
αρχειοθέτηση των
αλλαγών κάθε έργου
9. Το εργαλείο εξαγωγής σχέσεων
9
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
Abstract Syntax Tree
Επίπεδο αφαιρετικότητας κλάσεων
(Abstraction level of classes): Normal,
Abstract, Interface, Unknown
• Εξαγωγή σχέσεων ανάμεσα στις ενδογενείς κλάσεις ενός
προγράμματος
• Δυνατότητα επιλογής να συμπεριληφθούν και εκείνες
ανάμεσα στις ενδογενείς και τις εξωγενείς κλάσεις
(προέρχονται από εξωτερικές βιβλιοθήκες)
Κατευθυνόμενοι
γράφοι με ετικέτες σε
κόμβους και ακμές…??
10. Γραφική απεικόνιση των εξαγόμενων σχέσεων
10
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
• Χρήση του εργαλείου Graphviz
• Ενδεικτική απεικόνιση των σχέσεων
μεταξύ των ενδογενών κλάσεων του
προγράμματος kikoso/android-
stackblur
• Εξαγωγή στοιχείων σχετικά με την
αρχιτεκτονική του
11. Παρακολούθηση της εξέλιξης των σχέσεων - 1
11
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
Στιγμιότυπο του
προγράμματος πριν το
commit i
Στιγμιότυπο του
προγράμματος μετά το
commit i
commit i
Σχέσεις πριν το
commit i
Σχέσεις μετά το
commit i
Σχέσεις που δεν
υπάρχουν μετά
Σχέσεις που δεν
υπάρχουν πριν
Αφαιρούμενες (-) Προστιθέμενες (+)
• Λαμβάνονται υπ’ όψιν μόνο τα αρχεία
των commits του κυρίου βρόχου (main
branch)
• Αλλαγή ενός ή περισσότερων αρχείων
Java σε ένα commit
• Χρήση του εργαλείου pydriller
12. Παρακολούθηση της εξέλιξης των σχέσεων - 2
12
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
Τύποι τροποποιήσεων
• Delete: Διαγραφή του εν λόγω
αρχείου από το πρόγραμμα
• Modify: Διαφοροποίηση
ορισμένων τμημάτων του κώδικα
• Rename: Αλλαγή της θέσης ή/και
του ονόματος του συγκεκριμένου
αρχείου ή/και ορισμένων τμημάτων
του κώδικα σε αυτό
• Add: Προσθήκη νέου αρχείου στο
πρόγραμμα
Στη διαφορά των σχέσεων δε
λαμβάνονται υπ’ όψιν εκείνες που
προέρχονται από Add ή Delete
Δεν μας ενδιαφέρουν σχέσεις που δεν περνούν από το στάδιο της εξέλιξης
Σημαντικές μόνο για αλλαγή της μορφής του προγράμματος ανά commit
13. Εξόρυξη δεδομένων με τη βοήθεια του gSpan - 1
13
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
• gSpan (graph-based Substructure pattern mining)
• D: ένα σύνολο γράφων
• support(g): ο αριθμός των γράφων του D,
στους οποίους ο g εμφανίζεται ως υπογράφος
• minSup: ένα κάτω όριο συχνότητας που
επιλέγεται από τον χρήστη στην είσοδο
• Ανίχνευση μόνο των συχνών υπογράφων που είναι
συνδεδεμένοι
• Δεν υπάρχει πρόβλημα, όταν ένας γράφος του D
είναι μη συνδεδεμένος
• Μείωση του χρόνου εκτέλεσης σε σχέση με
προγενέστερους αλγορίθμους ακόμα και κατά μία
τάξη μεγέθους
• Σε ποιες τεχνικές όμως στηρίζει την καινοτομία του,
δεδομένης της δυσκολίας του προβλήματος;
Πρόβλημα
Εύρεση όλων των υπογράφων
g, έτσι ώστε support(g) ≥
minSup
Όσο το minSup ↓, τόσο ο
χρόνος εκτέλεσης ↑
• Κάθε γράφος αντιστοιχεί σε έναν κωδικό DFS
(Depth-First Search)
• Λεξικογραφική ταξινόμηση όλων των
παραπάνω κωδικών
• Με βάση αυτήν τη σειρά, κατασκευάζεται ένα
δέντρο αναζήτησης
14. Εξόρυξη δεδομένων με τη βοήθεια του gSpan - 2
14
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
Ds το σύνολο όλων των γράφων που
περιέχουν τον s ως υπογράφο
Αναδρομική κλήση για εύρεση
όλων των συχνών υπογράφων
Μείωση μεγέθους του
συνόλου γράφων
S το σύνολο των
αποτελεσμάτων
D το σύνολο όλων
των γράφων
Αρχικά βήματα του
αλγορίθμου
15. Διάρθρωση Παρουσίασης
Εισαγωγή
Υλοποίηση του Συστήματος –
Μεθοδολογία
Πειράματα και
Αποτελέσματα
Συμπεράσματα
Μελλοντική
Εργασία
15
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
16. Εύρεση συχνών σχεδιαστικών προτύπων
16
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
Σύνολο δεδομένων
576 έργα
λογισμικού
576 γράφοι 576 ομάδες σχέσεων μεταξύ
ενδογενών κλάσεων
• Εφαρμογή του gSpan για διάφορα επίπεδα υποστήριξης
• Για χαμηλές τιμές υποστήριξης ο αλγόριθμος δεσμεύει αρκετή
μνήμη και καθυστερεί
• Ανάγκη διαμόρφωσης του συνόλου δεδομένων → προγράμματα
με 100 έως και 400 σχέσεις
• Προκύπτουν κυρίως πρότυπα με χαρακτηρισμούς κλάσεων
“Normal”
• Θεώρηση ότι οι χαρακτηρισμοί Abstract και Interface ταυτίζονται
• Προκύπτουν πρότυπα με Abstracted ( Abstract or Interface)
χαρακτηρισμούς
…
17. Ανάλυση των εξαγόμενων σχεδιαστικών προτύπων - 1
17
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
• Δενδροειδές σχεδιαστικό πρότυπο, 162
από 576 έργα λογισμικού
• Κεντρική κλάση (Α) → επίτευξη στόχων του
προγράμματος
• Χρήση αντικειμένων δύο άλλων κλάσεων
(Β και D) → πιο ειδικοί στόχοι
• Οι B και D επικαλούνται δύο ακόμη με τη
σειρά τους (C και E)
Παράδειγμα
Διαχείριση πληροφοριών για την πρόσβαση υπαλλήλων
εταιρίας σε έγγραφα
Πληροφορίες για
τους υπαλλήλους
Αφαίρεση δικαιωμάτων
πρόσβασης με κάποια κριτήρια
18. Ανάλυση των εξαγόμενων σχεδιαστικών προτύπων - 2
18
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
Παράδειγμα
• Εφαρμογή σε πρόγραμμα γραφικής επεξεργασίας
• Υλοποίηση κλάσης για την απεικόνιση αντικειμένων
ή κειμένου
• Δημιουργία αντικειμένων όπως πλαίσιο κειμένου,
γραμμές ή σχήματα
• Κλάση ευθείας γραμμής κληρονομεί στοιχεία από
μία αφηρημένη κλάση → γραμμή
Ομοιότητα με γνωστό πρότυπο
• Δημιουργικό πρότυπο Factory Method
• Κλάση D → Creator
• Κλάση C → ConcreteCreator
• Κλάση E → ConcreteProduct
• Κλάση F → Product
25 από 105 προγράμματα με 100-400 σχέσεις
19. Ανάλυση των εξαγόμενων σχεδιαστικών προτύπων - 3
19
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
Ομοιότητα με γνωστό πρότυπο
• Δομικό πρότυπο Façade
• 35 από 105 έργα λογισμικού με αριθμό
σχέσεων από 100 έως και 400
• Κλάση Α ένας δίαυλος επικοινωνίας με όλες τις
υπόλοιπες κλάσεις (B, C, D, E, F)
• B, C, D, E, F → ένα υποσύστημα που
επικοινωνεί με τον υπόλοιπο κόσμο μέσω της Α
• Ο υπόλοιπος κόσμος δεν χρειάζεται
πληροφορίες για το υποσύστημα, τον
ενδιαφέρουν μόνο τα αποτελέσματα
• Διαχωρισμός συστήματος σε υποσυστήματα →
μείωση της πολυπλοκότητας
20. Εύρεση συχνών προτύπων εξέλιξης σχέσεων
20
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
Σύνολο δεδομένων
2693 commits με αλλαγές
σχέσεων
2693 γράφοι 2693 ομάδες προσθαφαιρούμενων
σχέσεων
• Εφαρμογή του αλγορίθμου gSpan για διάφορα επίπεδα
υποστήριξης
• Ανάγκη για εντοπισμό μεγαλύτερων προτύπων → μείωση
του επιπέδου υποστήριξης
• Προσαρμογή του συνόλου δεδομένων
• Φιλτράρισμα ως προς τον αριθμό των διαφοροποιημένων
σχέσεων
• Έλλειψη προτύπων εξέλιξης με Abstracted (Abstract ή
Interface) χαρακτηρισμούς
• Η θεώρηση Abstract = Interface δεν προσφέρει ιδιαίτερη
βοήθεια
21. Ανάλυση των εξαγόμενων προτύπων εξέλιξης
21
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
• Κινήσεις από τους προγραμματιστές για
δημιουργία κάποιων από τα πρότυπα που
αναλύθηκαν προηγουμένως
• Στόχος ο σχηματισμός κάποιων δομών ή
η απαλλαγή από αυτές
• Διεύρυνση δυνατοτήτων μίας κλάσης ή
περιορισμός τους
188 commits από 2693
43 από 683 commits με
αριθμό διαφοροποιημένων
σχέσεων 8-40
14 από 683 commits με
αριθμό διαφοροποιημένων
σχέσεων 8-40
Δενδροειδής
σχεδιαστική
δομή
Χρήση
λανθασμένου
αντικειμένου,
διαγραφή, χρήση
του σωστού
22. Διάρθρωση Παρουσίασης
Εισαγωγή
Υλοποίηση του Συστήματος –
Μεθοδολογία
Πειράματα και
Αποτελέσματα
Συμπεράσματα
Μελλοντική
Εργασία
22
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
23. Συμπεράσματα
23
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
• Εντοπισμός συχνών σχεδιαστικών λύσεων και μοτίβων εξέλιξης πηγαίου κώδικα
• Ανακάλυψη μοτίβων σχεδίασης που δεν ήταν μέχρι σήμερα γνωστά
• Ύπαρξη προτύπων σχεδίασης που χρησιμοποιούν οι προγραμματιστές, χωρίς να το συνειδητοποιούν
• Προκύπτουν χρήσιμα πρότυπα, τόσο στον τομέα της σχεδίασης όσο και της εξέλιξης
• Η χρηστικότητά τους είναι εμφανής από τον πολύ συχνό βαθμό εμφάνισής τους
• Η ανάλυση των προτύπων που εντοπίζονται διευκολύνει την κατανόηση του προγράμματος στο οποίο
συναντώνται (program comprehension)
24. Διάρθρωση Παρουσίασης
Εισαγωγή
Υλοποίηση του Συστήματος –
Μεθοδολογία
Πειράματα και
Αποτελέσματα
Συμπεράσματα
Μελλοντική
Εργασία
24
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
25. Μελλοντική εργασία
25
Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού
με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης
Θεσσαλονίκη, Απρίλιος 2021
• Εκπαίδευση του συστήματος, ώστε να προτείνει μόνο του αλλαγές στις σχέσεις κλάσεων που δίνονται στην είσοδό του
• Εκμετάλλευση περισσότερων σημασιολογικών στοιχείων
• Προσθήκη δεδομένων σχετιζόμενων με τη συντακτική δομή μίας κλάσης
• Ενσωμάτωση της γνώσης και της εμπειρίας προγραμματιστών (human-like way of thinking)
• Χρήση των προτύπων για την κατανόηση ενός προγράμματος που δίνεται στην είσοδο
• Ανακάλυψη περισσότερων μοτίβων εξέλιξης με χαρακτηρισμούς πέρα από τον Normal
• Επέκταση του συστήματος και σε άλλες αντικειμενοστραφείς γλώσσες πέραν της Java
Βασικός στόχος της περιοχής η αυτοματοποιημένη δημιουργία σχεδιαστικών προτάσεων