Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταISSEL
Η κατανεµηµένη φύση της τεχνολογίας Εξόρυξης ∆εδοµένων έχει στο παρελθόν
αντιµετωπιστεί επιτυχώς µε τη χρήση και αξιοποίηση της τεχνολογίας των Πρακτόρων Λογισµικού, οι οποίοι καταµερίζουν τις εργασίες, συνεργάζονται και συγχρονίζονται έτσι ώστε να φτάσουν στον τελικό τους στόχο, την εξαγωγή χρήσιµης γνώσης. Μια σειρά από εξελιγµένα εργαλεία Εξόρυξης ∆εδοµένων έχουν ήδη αναπτυχθεί, αποδεικνύοντας ότι η Πολυπρακτορική Τεχνολογία µπορεί πράγµατι να χρησιµοποιηθεί για να επιλύσει τέτοιου είδους προβλήµατα. Αντιστρέφοντας τους ρόλους του σκοπού και του µέσου, όµως, γνώση η οποία εξάγεται µε τη χρήση τεχνικών Εξόρυξης ∆εδοµένων δεν έχει χρησιµοποιηθεί για τη βελτίωση Πολυπρακτορικών Συστηµάτων. Περιορισµοί οι οποίοι σχετίζονται µε τη
διαφορετική φύση της λογικής που υιοθετούν οι δυο εµπλεκόµενες τεχνολογίες
(επαγωγική για την Εξόρυξη ∆εδοµένων και συµπερασµατική για τα Πολυπρακτορικά
Συστήµατα), εµποδίζουν την απρόσκοπτη εφαρµογή της εξαγόµενης γνώσης στο
λογικό µοντέλο των πρακτόρων. Εάν αυτοί οι περιορισµοί υπερκεραστούν, τότε ο
συγκερασµός των δυο τεχνολογιών θα καταστεί εφικτός.
Στα πλαίσια της διατριβής αυτής παρουσιάζεται µια ενοποιηµένη µεθοδολογία, η
οποία επιτρέπει την εφαρµογή δυναµικών, σύνθετων και ανανεώσιµων κανόνων σε
πολυπρακτορικά συστήµατα. Οι κανόνες αυτοί εξάγονται µε τη χρήση τεχνικών
Εξόρυξης ∆εδοµένων, σε πράκτορες και πολυπρακτορικά συστήµατα. Η µεθοδολογία
αυτή αναγνωρίζει τρεις διαφορετικούς τύπους γνώσης, η οποία προέρχεται από την
εφαρµογή τεχνικών Εξόρυξης ∆εδοµένων, και ανάλογα διαφοροποιεί το µοντέλο
διάχυσής της. Οι τρεις αυτοί τύποι γνώσης είναι: α) γνώση η οποία εξάγεται µε τη
χρήση τεχνικών Εξόρυξης ∆εδοµένων στα ιστορικά δεδοµένα µιας εφαρµογής, β)
γνώση η οποία εξάγεται µε τη χρήση τεχνικών Εξόρυξης ∆εδοµένων στα ιστορικά
δεδοµένα των συµπεριφορών των πρακτόρων µιας εφαρµογής και, γ) γνώση η οποία
εξάγεται µε τη χρήση εξελικτικών τεχνικών Εξόρυξης ∆εδοµένων σε πολυπρακτορικές κοινωνίες. Στη διατριβή αυτή µελετάται η δυνατότητα εφαρµογής των τεσσάρωνκυρίαρχων τεχνικών Εξόρυξης ∆εδοµένων σε πολυπρακτορικά συστήµατα:
Οµαδοποίηση για διαχωρισµό, Ταξινόµηση για κατηγοριοποίηση και πρόβλεψη,
εξαγωγή Κανόνων Συσχέτισης για ανακάλυψη συσχετισµών και Γενετικοί αλγόριθµοι
για αυτό-οργάνωση. Για την υλοποίηση και επίδειξη της δυναµικής ενσωµάτωσης
γνώσης σε πράκτορες αναπτύχθηκε ο Data Miner, ένα εργαλείο που περιγράφεται στο Κεφάλαιο 4. Για κάθε έναν από τους τρεις διαφορετικούς τύπους γνώσης αναπτύχθηκε και ένα αντιπροσωπευτικό Πολυπρακτορικό Σύστηµα, του οποίου και γίνεται εκτενής παρουσίαση (Κεφάλαια 5-7). Τέλος, η παρούσα διατριβή πραγµατεύεται και το θέµα της βελτίωσης του γνωσιακού µοντέλου των πρακτόρων, µε την επανάληψη της διαδικασίας χρήσης τεχνικών Εξόρυξης ∆εδοµένων πάνω σε σύγχρονα και ενηµερωµένα δεδοµένα (Επανεκπαίδευση – Κεφάλαιο 8). Τα συµπεράσµατα από την εκπόνηση της διατριβής και πιθανές µελλοντικές επεκτάσεις συνοψίζονται στο Κεφάλαιο 9.
Nowadays, the concept of software has prevailed in all aspects of human daily life, offering
significant solutions to a wide variety of issues. The need for producing reliable and functional
software within short timeframes that can adapt to possible changes is constantly increasing.
In recent years, there has been significant research activity in the field of software
development process optimization, while the vast availability of open-source software projects
in repositories such as GitHub makes accessing large volumes of code data easy. Leveraging
this information can serve as a catalyst for creating useful tools that can greatly accelerate the
software development process while improving communication and collaboration among
development teams.
This thesis presents an integrated system for automated source code formatting using
machine learning techniques. The primary goal of the system is to detect and correct
formatting errors that deviate from the standards set by the development team, ensuring its
readability and thus facilitating easier maintenance. The system utilizes LSTM deep neural
network models in combination with N-gram statistical language models for detecting
formatting errors, while a specific mechanism for correcting these errors is proposed.
Additionally, an evaluation mechanism for code formatting is proposed, aiming to quantify this
abstract concept.
The system designed within the scope of this thesis is evaluated on 8000 Java code files
obtained from the CodRep 2019 competition. Through the observation of the final results, we
conclude that the system performs effectively in both detecting and correcting formatting
errors.
Εξόρυξη δεδοµένων για τη δυναµική ενσωµάτωση γνώσης σε πολυπρακτορικά συστήµαταISSEL
Η κατανεµηµένη φύση της τεχνολογίας Εξόρυξης ∆εδοµένων έχει στο παρελθόν
αντιµετωπιστεί επιτυχώς µε τη χρήση και αξιοποίηση της τεχνολογίας των Πρακτόρων Λογισµικού, οι οποίοι καταµερίζουν τις εργασίες, συνεργάζονται και συγχρονίζονται έτσι ώστε να φτάσουν στον τελικό τους στόχο, την εξαγωγή χρήσιµης γνώσης. Μια σειρά από εξελιγµένα εργαλεία Εξόρυξης ∆εδοµένων έχουν ήδη αναπτυχθεί, αποδεικνύοντας ότι η Πολυπρακτορική Τεχνολογία µπορεί πράγµατι να χρησιµοποιηθεί για να επιλύσει τέτοιου είδους προβλήµατα. Αντιστρέφοντας τους ρόλους του σκοπού και του µέσου, όµως, γνώση η οποία εξάγεται µε τη χρήση τεχνικών Εξόρυξης ∆εδοµένων δεν έχει χρησιµοποιηθεί για τη βελτίωση Πολυπρακτορικών Συστηµάτων. Περιορισµοί οι οποίοι σχετίζονται µε τη
διαφορετική φύση της λογικής που υιοθετούν οι δυο εµπλεκόµενες τεχνολογίες
(επαγωγική για την Εξόρυξη ∆εδοµένων και συµπερασµατική για τα Πολυπρακτορικά
Συστήµατα), εµποδίζουν την απρόσκοπτη εφαρµογή της εξαγόµενης γνώσης στο
λογικό µοντέλο των πρακτόρων. Εάν αυτοί οι περιορισµοί υπερκεραστούν, τότε ο
συγκερασµός των δυο τεχνολογιών θα καταστεί εφικτός.
Στα πλαίσια της διατριβής αυτής παρουσιάζεται µια ενοποιηµένη µεθοδολογία, η
οποία επιτρέπει την εφαρµογή δυναµικών, σύνθετων και ανανεώσιµων κανόνων σε
πολυπρακτορικά συστήµατα. Οι κανόνες αυτοί εξάγονται µε τη χρήση τεχνικών
Εξόρυξης ∆εδοµένων, σε πράκτορες και πολυπρακτορικά συστήµατα. Η µεθοδολογία
αυτή αναγνωρίζει τρεις διαφορετικούς τύπους γνώσης, η οποία προέρχεται από την
εφαρµογή τεχνικών Εξόρυξης ∆εδοµένων, και ανάλογα διαφοροποιεί το µοντέλο
διάχυσής της. Οι τρεις αυτοί τύποι γνώσης είναι: α) γνώση η οποία εξάγεται µε τη
χρήση τεχνικών Εξόρυξης ∆εδοµένων στα ιστορικά δεδοµένα µιας εφαρµογής, β)
γνώση η οποία εξάγεται µε τη χρήση τεχνικών Εξόρυξης ∆εδοµένων στα ιστορικά
δεδοµένα των συµπεριφορών των πρακτόρων µιας εφαρµογής και, γ) γνώση η οποία
εξάγεται µε τη χρήση εξελικτικών τεχνικών Εξόρυξης ∆εδοµένων σε πολυπρακτορικές κοινωνίες. Στη διατριβή αυτή µελετάται η δυνατότητα εφαρµογής των τεσσάρωνκυρίαρχων τεχνικών Εξόρυξης ∆εδοµένων σε πολυπρακτορικά συστήµατα:
Οµαδοποίηση για διαχωρισµό, Ταξινόµηση για κατηγοριοποίηση και πρόβλεψη,
εξαγωγή Κανόνων Συσχέτισης για ανακάλυψη συσχετισµών και Γενετικοί αλγόριθµοι
για αυτό-οργάνωση. Για την υλοποίηση και επίδειξη της δυναµικής ενσωµάτωσης
γνώσης σε πράκτορες αναπτύχθηκε ο Data Miner, ένα εργαλείο που περιγράφεται στο Κεφάλαιο 4. Για κάθε έναν από τους τρεις διαφορετικούς τύπους γνώσης αναπτύχθηκε και ένα αντιπροσωπευτικό Πολυπρακτορικό Σύστηµα, του οποίου και γίνεται εκτενής παρουσίαση (Κεφάλαια 5-7). Τέλος, η παρούσα διατριβή πραγµατεύεται και το θέµα της βελτίωσης του γνωσιακού µοντέλου των πρακτόρων, µε την επανάληψη της διαδικασίας χρήσης τεχνικών Εξόρυξης ∆εδοµένων πάνω σε σύγχρονα και ενηµερωµένα δεδοµένα (Επανεκπαίδευση – Κεφάλαιο 8). Τα συµπεράσµατα από την εκπόνηση της διατριβής και πιθανές µελλοντικές επεκτάσεις συνοψίζονται στο Κεφάλαιο 9.
Nowadays, the concept of software has prevailed in all aspects of human daily life, offering
significant solutions to a wide variety of issues. The need for producing reliable and functional
software within short timeframes that can adapt to possible changes is constantly increasing.
In recent years, there has been significant research activity in the field of software
development process optimization, while the vast availability of open-source software projects
in repositories such as GitHub makes accessing large volumes of code data easy. Leveraging
this information can serve as a catalyst for creating useful tools that can greatly accelerate the
software development process while improving communication and collaboration among
development teams.
This thesis presents an integrated system for automated source code formatting using
machine learning techniques. The primary goal of the system is to detect and correct
formatting errors that deviate from the standards set by the development team, ensuring its
readability and thus facilitating easier maintenance. The system utilizes LSTM deep neural
network models in combination with N-gram statistical language models for detecting
formatting errors, while a specific mechanism for correcting these errors is proposed.
Additionally, an evaluation mechanism for code formatting is proposed, aiming to quantify this
abstract concept.
The system designed within the scope of this thesis is evaluated on 8000 Java code files
obtained from the CodRep 2019 competition. Through the observation of the final results, we
conclude that the system performs effectively in both detecting and correcting formatting
errors.
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
Η σωστή σύνταξη των λειτουργικών απαιτήσεων αποτελεί ϐασική προϋπόθεση για την ανάπτυξη ενός έργου λογισµικού. Σφάλµατα στον ορισµό των λειτουργικών απαι τήσεων και ο ορισµός ελλιπούς λειτουργικότητας αποτελούν τα σηµαντικότερα προ ϐλήµατα που οδηγούν στην αποτυχία της διαδικασίας ανάπτυξης λογισµικού. Ο µη ολοκληρωµένος ορισµός των λειτουργικών απαιτήσεων έχει ως αποτέλεσµα τον λανθασµένο προγραµµατισµό των απαραίτητων εργασιών και ακολούθως την αποτυχία της υλοποίησης του έργου λογισµικού. Η παρούσα διπλωµατική εργασία αρχικά συγκεντρώνει ένα σύνολο δεδοµένων από λειτουργικές απαιτήσεις έργων λογισµικού από διάφορες πηγές. Σε πρώτο στάδιο ορίζεται η οντολογία που καλείται να περιγράψει την στατική όψη ενός έργου λογισµικού. Οι οντότητες που ορίζονται εντοπίζονται στις λειτουργικές απαιτήσεις του συνόλου δεδοµένων και δίνεται η δυνατότητα της αποδοτικής αποθήκευσης των δεδοµένων µε τη µορφή της οντολογίας. Σε επόµενο στάδιο γίνεται χρήση αλγορίθµων µηχανικής µάθησης µε στόχο την ε ξαγωγή προτάσεων ϐελτίωσης σε όλα τα επίπεδα ανάλυσης απαιτήσεων λογισµικού. Για την αξιολόγηση της απόδοσης των αλγορίθµων, µετά την εκπαίδευσή τους στο σύνολο δεδοµένων, δέχονται ως είσοδο ένα νέο έργο λογισµικού µε µη ολοκληρωµένη λειτουργικότητα και εξετάζεται η πληροφορία που εξάγεται από τον κάθε αλγόριθµο. Πιο συγκεκριµένα, υλοποιείται ο αλγόριθµος Apriori για την εξαγωγή κανόνων συσχέτισης µε στόχο τον εντοπισµό απούσας λειτουργικότητας. Επιπλέον, χρησιµοποιείται ο αλγόριθµος Λανθάνουσας Κατανοµής Dirichlet που εκτελεί τη ϑεµατική µοντελοποίηση των έργων λογισµικού του συνόλου δεδοµένων. Τέλος, γίνεται χρήση ενός αλγορίθµου Ιεραρχικής Οµαδοποίησης κειµένου και συγκρίνονται τα αποτελέσµατά του µε αυτά του προηγούµενου αλγορίθµου.
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
Η στενή συνεργασία μεταξύ των προγραμματιστών για την ανάπτυξη καινοτόμων έργων λογισμικού κρίνεται απαραίτητη. Για αυτόν τον λόγο, υπάρχουν αρκετές διαδικτυακές πλατφόρμες φιλοξενίας προγραμμάτων, οι οποίες δίνουν τη δυνατότητα στους χρήστες τους να παρακολουθεί ο ένας τις αλλαγές, τις προτάσεις και τις παρατηρήσεις του άλλου για την εξέλιξη και τη βελτίωση του κώδικα. Επιπλέον, οι πλατφόρμες αυτές ελέγχουν τις διαφορετικές εκδόσεις του κώδικα ενός έργου, ώστε ο προγραμματιστής να μπορεί να ανατρέξει σε οποιαδήποτε από αυτές, εάν το επιθυμεί. Όλες οι τροποποιήσεις, οι οποίες διενεργούνται από ένα πρόσωπο της ομάδας ανάπτυξης λογισμικού σε μία δεδομένη χρονική στιγμή, συγκεντρώνονται σε ένα commit, όπου καταγράφονται μάλιστα όλοι οι λόγοι πίσω από αυτές. Έτσι, γίνεται κατανοητό ότι τέτοιες συλλογές αλλαγών εμπεριέχουν πολλές χρήσιμες πληροφορίες για τον τρόπο με τον οποίο εξελίσσεται ένα έργο λογισμικού. Η εφαρμογή τεχνικών του κλάδου της εξόρυξης δεδομένων στις δημόσιες αποθήκες λογισμικού και σε όλα τα δεδομένα που αναφέρθηκαν παραπάνω θα μπορούσε να φέρει στο φως ορισμένες συχνές διορθώσεις σφαλμάτων, συστηματικές τροποποιήσεις, επαναλαμβανόμενους τύπους αλλαγών στην αρχιτεκτονική, καθώς και κάποια ευρέως χρησιμοποιούμενα σχεδιαστικά πρότυπα, γνωστά ή μη. Μία εκτενής βιβλιογραφική έρευνα σε αυτόν τον τομέα αποκαλύπτει ότι οι περισσότερες προσπάθειες επιστημόνων έχουν στραφεί στις διορθώσεις σφαλμάτων και στις συστηματικές τροποποιήσεις, με αποτέλεσμα να έχουν αγνοηθεί κάποια λιγότερο λεπτομερή, δηλαδή πιο υψηλού επιπέδου (high level) μοτίβα εξέλιξης ή συγγραφής κώδικα. Στο πλαίσιο αυτό, η παρούσα διπλωματική εργασία προσπαθεί να ανακαλύψει τις σχέσεις ανάμεσα στις διάφορες κλάσεις ενός προγράμματος, αλλά και να παρακολουθήσει τον τρόπο με τον οποίο αυτές αλλάζουν στο πέρασμα του χρόνου. Για να επιτευχθούν οι παραπάνω στόχοι, προσαρμόζεται ένα εργαλείο εξαγωγής σχέσεων (Relationships Extractor), η λειτουργία του οποίου βασίζεται στην ανάλυση των Αφηρημένων Συντακτικών Δέντρων (Abstract Syntax Trees) που αφορούν τους κώδικες μερικών από τα πιο δημοφιλή έργα λογισμικού της διαδικτυακής πλατφόρμας του Github. Αφού αναλυθούν και επεξεργαστούν αυτά τα συντακτικά δέντρα, εξάγονται πληροφορίες για τη λειτουργία των κλάσεων, την αφαιρετικότητά τους και την κληρονομικότητα, οι οποίες στη συνέχεια μοντελοποιούνται σε γράφους (με τις κλάσεις ως κόμβους και τις συνδέσεις τους ως ακμές). Αφού λοιπόν ολοκληρωθούν οι παραπάνω ενέργειες για την τελική μορφή του εκάστοτε προγράμματος, η ίδια σειρά ενεργειών ακολουθείται και για κάθε στιγμιότυπό του, εξάγοντας τη διαφορά ως προς τις σχέσεις ανάμεσα στην έκδοσή του πριν και μετά από κάθε commit ξεχωριστά. Τέλος, εφαρμόζοντας τον αλγόριθμο gSpan (graph-based Substructure pattern mining), έναν αλγόριθμο αναζήτησης συχνών πογράφων σε ένα σύνολο γράφων, ανιχνεύονται ορισμένα ευρέως χρησιμοποιούμενα από την παγκόσμια προγραμματιστική κοινότητα, μοτίβα σχεδίασης και εξέλιξης λογισμικού.
Applying Data Mining Techniques on Software Repositories to Extract Design an...ISSEL
Close collaboration between software developers is considered essential in order to build innovative software projects. For this reason, there are several online program-hosting platforms, which enable their users to watch each other’s changes, recommendations and comments towards the improvement and evolution of code. These platforms also control different versions of the software code so that the developer can revert to previous ones if desired. All the modifications performed at a given time by a member of the software development team are bundled in a commit, where the main reasons behind them are also recorded. As a consequence, it goes without saying that these series of changes include a lot of useful information about the way a software project evolves. Applying data mining techniques on public software repositories and the data we discussed above could unveil some common bug fixes, systematic edits, frequent types of changes in a project’s architecture and frequently-used design patterns either known or unknown ones. An extensive bibliographic research in this domain reveals that the majority of scientific efforts has focused on bug fixes and systematic edits ignoring some more coarse-grained (high-level) code evolution or design patterns. In this context, this dissertation tries to extract the relationships between the classes of an object-oriented program, while also seeking to monitor the way they evolve over time. To achieve these goals, this diploma thesis adapts a Relationship Extractor tool based on the Abstract Syntax Trees analysis of some of the most popular software projects in Github web platform. After analyzing and processing those syntax trees, useful information is extracted concerning the operation, the abstraction level as well as the inheritance of classes. This information is then modeled as graphs (with classes as nodes and the connections between them as edges). These steps are not only executed for the latest version of a project, but also in each and every commit with a view to extracting the difference in relationships between the versions of a project before and after the specific commit. Finally, gSpan, which is a frequent-subgraph mining algorithm, is applied, in order to detect code design and evolution patterns used by the software community worldwide.
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
Η σωστή σύνταξη των λειτουργικών απαιτήσεων αποτελεί ϐασική προϋπόθεση για την ανάπτυξη ενός έργου λογισµικού. Σφάλµατα στον ορισµό των λειτουργικών απαι τήσεων και ο ορισµός ελλιπούς λειτουργικότητας αποτελούν τα σηµαντικότερα προ ϐλήµατα που οδηγούν στην αποτυχία της διαδικασίας ανάπτυξης λογισµικού. Ο µη ολοκληρωµένος ορισµός των λειτουργικών απαιτήσεων έχει ως αποτέλεσµα τον λανθασµένο προγραµµατισµό των απαραίτητων εργασιών και ακολούθως την αποτυχία της υλοποίησης του έργου λογισµικού. Η παρούσα διπλωµατική εργασία αρχικά συγκεντρώνει ένα σύνολο δεδοµένων από λειτουργικές απαιτήσεις έργων λογισµικού από διάφορες πηγές. Σε πρώτο στάδιο ορίζεται η οντολογία που καλείται να περιγράψει την στατική όψη ενός έργου λογισµικού. Οι οντότητες που ορίζονται εντοπίζονται στις λειτουργικές απαιτήσεις του συνόλου δεδοµένων και δίνεται η δυνατότητα της αποδοτικής αποθήκευσης των δεδοµένων µε τη µορφή της οντολογίας. Σε επόµενο στάδιο γίνεται χρήση αλγορίθµων µηχανικής µάθησης µε στόχο την ε ξαγωγή προτάσεων ϐελτίωσης σε όλα τα επίπεδα ανάλυσης απαιτήσεων λογισµικού. Για την αξιολόγηση της απόδοσης των αλγορίθµων, µετά την εκπαίδευσή τους στο σύνολο δεδοµένων, δέχονται ως είσοδο ένα νέο έργο λογισµικού µε µη ολοκληρωµένη λειτουργικότητα και εξετάζεται η πληροφορία που εξάγεται από τον κάθε αλγόριθµο. Πιο συγκεκριµένα, υλοποιείται ο αλγόριθµος Apriori για την εξαγωγή κανόνων συσχέτισης µε στόχο τον εντοπισµό απούσας λειτουργικότητας. Επιπλέον, χρησιµοποιείται ο αλγόριθµος Λανθάνουσας Κατανοµής Dirichlet που εκτελεί τη ϑεµατική µοντελοποίηση των έργων λογισµικού του συνόλου δεδοµένων. Τέλος, γίνεται χρήση ενός αλγορίθµου Ιεραρχικής Οµαδοποίησης κειµένου και συγκρίνονται τα αποτελέσµατά του µε αυτά του προηγούµενου αλγορίθµου.
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξα...ISSEL
Η στενή συνεργασία μεταξύ των προγραμματιστών για την ανάπτυξη καινοτόμων έργων λογισμικού κρίνεται απαραίτητη. Για αυτόν τον λόγο, υπάρχουν αρκετές διαδικτυακές πλατφόρμες φιλοξενίας προγραμμάτων, οι οποίες δίνουν τη δυνατότητα στους χρήστες τους να παρακολουθεί ο ένας τις αλλαγές, τις προτάσεις και τις παρατηρήσεις του άλλου για την εξέλιξη και τη βελτίωση του κώδικα. Επιπλέον, οι πλατφόρμες αυτές ελέγχουν τις διαφορετικές εκδόσεις του κώδικα ενός έργου, ώστε ο προγραμματιστής να μπορεί να ανατρέξει σε οποιαδήποτε από αυτές, εάν το επιθυμεί. Όλες οι τροποποιήσεις, οι οποίες διενεργούνται από ένα πρόσωπο της ομάδας ανάπτυξης λογισμικού σε μία δεδομένη χρονική στιγμή, συγκεντρώνονται σε ένα commit, όπου καταγράφονται μάλιστα όλοι οι λόγοι πίσω από αυτές. Έτσι, γίνεται κατανοητό ότι τέτοιες συλλογές αλλαγών εμπεριέχουν πολλές χρήσιμες πληροφορίες για τον τρόπο με τον οποίο εξελίσσεται ένα έργο λογισμικού. Η εφαρμογή τεχνικών του κλάδου της εξόρυξης δεδομένων στις δημόσιες αποθήκες λογισμικού και σε όλα τα δεδομένα που αναφέρθηκαν παραπάνω θα μπορούσε να φέρει στο φως ορισμένες συχνές διορθώσεις σφαλμάτων, συστηματικές τροποποιήσεις, επαναλαμβανόμενους τύπους αλλαγών στην αρχιτεκτονική, καθώς και κάποια ευρέως χρησιμοποιούμενα σχεδιαστικά πρότυπα, γνωστά ή μη. Μία εκτενής βιβλιογραφική έρευνα σε αυτόν τον τομέα αποκαλύπτει ότι οι περισσότερες προσπάθειες επιστημόνων έχουν στραφεί στις διορθώσεις σφαλμάτων και στις συστηματικές τροποποιήσεις, με αποτέλεσμα να έχουν αγνοηθεί κάποια λιγότερο λεπτομερή, δηλαδή πιο υψηλού επιπέδου (high level) μοτίβα εξέλιξης ή συγγραφής κώδικα. Στο πλαίσιο αυτό, η παρούσα διπλωματική εργασία προσπαθεί να ανακαλύψει τις σχέσεις ανάμεσα στις διάφορες κλάσεις ενός προγράμματος, αλλά και να παρακολουθήσει τον τρόπο με τον οποίο αυτές αλλάζουν στο πέρασμα του χρόνου. Για να επιτευχθούν οι παραπάνω στόχοι, προσαρμόζεται ένα εργαλείο εξαγωγής σχέσεων (Relationships Extractor), η λειτουργία του οποίου βασίζεται στην ανάλυση των Αφηρημένων Συντακτικών Δέντρων (Abstract Syntax Trees) που αφορούν τους κώδικες μερικών από τα πιο δημοφιλή έργα λογισμικού της διαδικτυακής πλατφόρμας του Github. Αφού αναλυθούν και επεξεργαστούν αυτά τα συντακτικά δέντρα, εξάγονται πληροφορίες για τη λειτουργία των κλάσεων, την αφαιρετικότητά τους και την κληρονομικότητα, οι οποίες στη συνέχεια μοντελοποιούνται σε γράφους (με τις κλάσεις ως κόμβους και τις συνδέσεις τους ως ακμές). Αφού λοιπόν ολοκληρωθούν οι παραπάνω ενέργειες για την τελική μορφή του εκάστοτε προγράμματος, η ίδια σειρά ενεργειών ακολουθείται και για κάθε στιγμιότυπό του, εξάγοντας τη διαφορά ως προς τις σχέσεις ανάμεσα στην έκδοσή του πριν και μετά από κάθε commit ξεχωριστά. Τέλος, εφαρμόζοντας τον αλγόριθμο gSpan (graph-based Substructure pattern mining), έναν αλγόριθμο αναζήτησης συχνών πογράφων σε ένα σύνολο γράφων, ανιχνεύονται ορισμένα ευρέως χρησιμοποιούμενα από την παγκόσμια προγραμματιστική κοινότητα, μοτίβα σχεδίασης και εξέλιξης λογισμικού.
Applying Data Mining Techniques on Software Repositories to Extract Design an...ISSEL
Close collaboration between software developers is considered essential in order to build innovative software projects. For this reason, there are several online program-hosting platforms, which enable their users to watch each other’s changes, recommendations and comments towards the improvement and evolution of code. These platforms also control different versions of the software code so that the developer can revert to previous ones if desired. All the modifications performed at a given time by a member of the software development team are bundled in a commit, where the main reasons behind them are also recorded. As a consequence, it goes without saying that these series of changes include a lot of useful information about the way a software project evolves. Applying data mining techniques on public software repositories and the data we discussed above could unveil some common bug fixes, systematic edits, frequent types of changes in a project’s architecture and frequently-used design patterns either known or unknown ones. An extensive bibliographic research in this domain reveals that the majority of scientific efforts has focused on bug fixes and systematic edits ignoring some more coarse-grained (high-level) code evolution or design patterns. In this context, this dissertation tries to extract the relationships between the classes of an object-oriented program, while also seeking to monitor the way they evolve over time. To achieve these goals, this diploma thesis adapts a Relationship Extractor tool based on the Abstract Syntax Trees analysis of some of the most popular software projects in Github web platform. After analyzing and processing those syntax trees, useful information is extracted concerning the operation, the abstraction level as well as the inheritance of classes. This information is then modeled as graphs (with classes as nodes and the connections between them as edges). These steps are not only executed for the latest version of a project, but also in each and every commit with a view to extracting the difference in relationships between the versions of a project before and after the specific commit. Finally, gSpan, which is a frequent-subgraph mining algorithm, is applied, in order to detect code design and evolution patterns used by the software community worldwide.
11. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
1. Γίνεται φιλτράρισμα και επικύρωση
των τύπων των μεταβλητών =>
filter_input(), intval().
2. Χρήση προκατασκευασμένων
(prepared) εντολών PDO.
3. Χρήση κανόνων επικύρωσης που
ορίζονται στις εισόδους των πεδίων
τη βοήθεια του HTML5 Constraint
Validation API και του Bootstrap
Validator.
12. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
1. Απαιτείται από τους χρήστες η
εισαγωγή «δύσκολων» κωδικών
πρόσβασης.
2. Γίνεται κρυπτογράφηση των
κωδικών (hash).
3. Οι κωδικοί δεν αποθηκεύονται σε
τοπικό αρχείο.
4. Απαιτείται σύνδεση και έλεγχος
δικαιωμάτων πρόσβασης σε όλες τις
σελίδες.
17. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
1. Η εφαρμογή δεν εμφανίζει κανένα
προειδοποιητικό μήνυμα, έχοντας
ενεργοποιήσει όλα τα warnings μέσω
του αρχείου check_err_warn.php.
2. Ελέγχθηκαν και διορθώθηκαν όλα τα
πιθανά λάθη (errors) και warnings των
ιστοσελίδων του συστήματός μας με τη
βοήθεια της κονσόλας του Google
Chrome.
18. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
Λειτουργίες &
Διεπαφή Χρήστη
Διαχειριστής
ΟδηγόςΤαξί
Χρήστης Επιβάτης
Πλήρη Δικαιώματα.
Εκτέλεση όλων των διαθέσιμων
λειτουργιών του συστήματος.
Περιορισμένα Δικαιώματα.
Εκτέλεση μόνο συγκεκριμένων
λειτουργιών του συστήματος.
Πιο Περιορισμένα Δικαιώματα.
Εκτέλεση μόνο βασικών
λειτουργιών του συστήματος.
26. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
Λειτουργίες &
Διεπαφή Χρήστη
Αναλυτική προβολή μιας διαδρομής
Επεξεργασία των στοιχείων μιας διαδρομής
Αποστολή αιτήματος ανάθεσης της διαδρομής σε έναν οδηγό
Σύνδεση σε μια νέα κούρσα ή σύνδεση σε μια υπάρχουσα κούρσα, στην περίπτωση
που οι διαδρομές έχουν επιλεγεί να είναι κοινές.
Περιβάλλον Διαχειριστή
28. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
Λειτουργίες &
Διεπαφή Χρήστη
Περιβάλλον Διαχειριστή
Τα πεδία: αριθμός επιβατών, αριθμός αποσκευών, ημερομηνία και ώρα, είναι ήδη
συμπληρωμένα, καθώς το «έξυπνο» σύστημα τα ορίζει με βάση τα αποθηκευμένα
στοιχεία της διαδρομής, η οποία πρόκειται να συνδεθεί στην κούρσα.
Το πεδίο της διάρκειας και της χιλιομετρικής απόστασης υπολογίζονται με τη
βοήθεια του Google Maps Distance Matrix API.
29. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
Λειτουργίες &
Διεπαφή Χρήστη
Περιβάλλον Διαχειριστή
Η σύνδεση μιας διαδρομής σε υπάρχουσα κούρσα γίνεται στις διαδρομές, η
κατάσταση των οποίων είναι “εκκρεμής” ή “αποδεχτή" και το πεδίο «Κοινή» έχει
οριστεί από τον επιβάτη με Ναι.
34. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
Λειτουργίες &
Διεπαφή Χρήστη
Περιβάλλον Διαχειριστή
Δυνατότητα προβολής των προγραμματισμένων κουρσών και των εκκρεμών
διαδρομών ανά ημέρα, εβδομάδα, μήνα και έτος.
Το ημερολόγιο αναπτύχθηκε με τη βοήθεια του Bootstrap Calendar .
37. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
Λειτουργίες &
Διεπαφή Χρήστη
Διαχειριστής
ΟδηγόςΤαξί
Χρήστης Επιβάτης
Πλήρη Δικαιώματα.
Εκτέλεση όλων των διαθέσιμων
λειτουργιών του συστήματος.
Περιορισμένα Δικαιώματα.
Εκτέλεση μόνο συγκεκριμένων
λειτουργιών του συστήματος.
Πιο Περιορισμένα Δικαιώματα.
Εκτέλεση μόνο βασικών
λειτουργιών του συστήματος.
39. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
Λειτουργίες &
Διεπαφή Χρήστη
Περιβάλλον Οδηγού
Η σελίδα αυτή παρουσιάζει στον οδηγό τις αναλυτικές πληροφορίες του αιτήματος που του
στάλθηκε. Πιο συγκεκριμένα, στη σελίδα της προβολής φαίνονται:
η διαδρομή για την οποία στάλθηκε το αίτημα
ο αποστολέας του αιτήματος
το μήνυμα ανάθεσης προς τον οδηγό
η κατάσταση του αιτήματος
η ημερομηνία λήξης του αιτήματος
και τα κουμπιά αποδοχής ή απόρριψης του αιτήματος
40. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
Λειτουργίες &
Διεπαφή Χρήστη
Περιβάλλον Οδηγού
Προβολή βασικών πληροφοριών μόνο όσων κουρσών έχει αναλάβει
Δυνατότητα μετάβασης στη σελίδα προβολής αναλυτικών πληροφοριών μιας
κούρσας
Άμεση ενημέρωση της κατάστασης μιας κούρσας μόλις ολοκληρωθεί
41. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
Λειτουργίες &
Διεπαφή Χρήστη
Περιβάλλον Οδηγού
Ενημέρωση της τρέχουσας κατάστασης και της τρέχουσας τοποθεσίας του ταξί.
Η τοποθεσία του ταξί εντοπίζεται αυτόματα. Εναλλακτικά ο οδηγός μπορεί να την
πληκτρολογήσει μόνος του ή να την επιλέξει από τον χάρτη που εμφανίζεται.
42. Πληροφοριακό
Σύστημα - iTaξι
Εισαγωγή
Θεωρητικό
Υπόβαθρο
ΕλένηΣακέρογλου,
Μάρτιος 2017
Σχεδιασμός
& Ανάπτυξη
Λειτουργίες &
Διεπαφή Χρήστη
Διαχειριστής
ΟδηγόςΤαξί
Χρήστης Επιβάτης
Πλήρη Δικαιώματα.
Εκτέλεση όλων των διαθέσιμων
λειτουργιών του συστήματος.
Περιορισμένα Δικαιώματα.
Εκτέλεση μόνο συγκεκριμένων
λειτουργιών του συστήματος.
Πιο Περιορισμένα Δικαιώματα.
Εκτέλεση μόνο βασικών
λειτουργιών του συστήματος.