Please use this identifier to cite or link to this item: http://dspace.lib.uom.gr/handle/2159/19458
Author: Χαϊκάλης, Θεόδωρος
Title: Graph-based software evolution analysis of object-oriented systems
Alternative Titles: Ανάλυση της εξέλιξης αντικειμενοστρεφών συστημάτων λογισμικού βασισμένη σε γράφους
Date Issued: 2016
Department: Πανεπιστήμιο Μακεδονίας. Τμήμα Εφαρμοσμένης Πληροφορικής (ΕΠ)
Supervisor: Χατζηγεωργίου, Αλέξανδρος
Abstract: Contemporary software systems evolve over a large number of versions due to the need for continuous adaptive and corrective maintenance. The duration and cost of this process call for software systems that can be extended or modified in an effortless and rapid way. To this end, the maintainability of such systems can be enhanced by taking advantage of software history and analyzing the evolution of the source code and other artifacts stored in version control systems. In this context, inspired by applications of networks in other domains, this thesis proposes graph-based tools and techniques for different aspects of software lifecycle that facilitate the evolutionary analysis of object-oriented systems. A fundamental process that determines not only the structure of a software system but also the future maintainability, is the distribution of feature implementation code to different software modules, also known as feature scattering. Towards the better understanding of this phenomenon, a set of techniques for the analysis of the evolution of feature scattering, based on the classes and methods involved in the implementation of high-level, distinct and observable pieces of functionality is introduced. The proposed analyses have been applied on several versions of four open-source projects. Based on the results, the applied techniques appear to be promising since they allow software stakeholders to assess the evolution of feature scattering in various ways, thus gaining insight into the associated implications. Furthermore, in this thesis an attempt to develop a prediction model capable of forecasting trends in the evolution of networks representing Java systems has been made. The proposed model incorporates findings regarding the growth patterns of software networks, such as the conformance to the preferential attachment model, the duplication model, the effect of node age, and the number of node and edge removals. Moreover, by acknowledging the importance of domain specific characteristics, the model has been enhanced by rules specific to object-oriented design. Evaluation against ten open-source projects showed that the proposed forecasting approach can provide sufficient insight to the future evolution trends. Software maintenance can benefit from the application of such models by focusing on parts of the network whose properties tend to deteriorate. Finally, by acknowledging the lack of a tool for effortless software evolution analysis, a platform for the facilitation of software engineering research has been developed. The tool under the name ‘SEAgle’ is a web-based platform that enables users to analyze any git open source repository that is freely available on the internet. SEAgle calculates a multitude of metrics of three different categories and publishes the results in a free online web page and renders them available through well documented REST web services.
Τα σύγχρονα αντικειμενοστρεφή συστήματα λογισμικού εξελίσσονται συνεχώς, οδηγούμενα από τις συνεχείς ανάγκες, αφενός για προσθήκη νέων λειτουργικών χαρακτηριστικών και αφετέρου για διόρθωση σφαλμάτων. Η διάρκεια και το κόστος αυτής της διαδικασίας καθιστούν επιτακτική την ανάπτυξη ευέλικτων συστημάτων λογισμικού, τα οποία δύνανται να προσαρμόζονται σε αλλαγές εύκολα και γρήγορα. Γι’ αυτόν τον σκοπό, η συντηρησιμότητα των συστημάτων μπορεί να βελτιωθεί με την χρήση ιστορικών δεδομένων με σκοπό την ανάλυση της μέχρι σήμερα εξέλιξής τους. Σε αυτό το πλαίσιο, εμπνεόμενη από τις εφαρμογές των γράφων σε διάφορα πεδία, η παρούσα διατριβή προτείνει ένα σύνολο από τεχνικές και μεθοδολογίες βασισμένες σε γράφους. Οι τεχνικές αυτές εφαρμόζονται σε διάφορες φάσεις του κύκλου ζωής λογισμικού, έχοντας πάντα σαν απώτερο στόχο την ανάλυση της ιστορικής εξέλιξης και όχι κάποιας συγκεκριμένης χρονικής αποτύπωσης. Μια θεμελιώδης διαδικασία στην ανάπτυξη αντικειμενοστρεφούς λογισμικού, η οποία καθορίζει όχι μόνο την δομή των μονάδων λογισμικού αλλά και το επίπεδο της μελλοντικής συντηρησιμότητας, είναι η διαδικασία κατανομής του κώδικα που υλοποιεί τις λειτουργικές απαιτήσεις στις υπό-μονάδες λογισμικού. Έχοντας ως στόχο την καλύτερη κατανόηση αυτής της διαδικασίας, προτείνουμε μια σειρά από εργαλεία και απεικονίσεις για την ανάλυση της εξέλιξης του τρόπου υλοποίησης των λειτουργικών απαιτήσεων. Η ανάλυση περιλαμβάνει την ανίχνευση των κλάσεων και των μεθόδων που παίρνουν μέρος στην υλοποίηση κάθε λειτουργικής απαίτησης. Οι προτεινόμενες μέθοδοι ανάλυσης εφαρμόσθηκαν σε τέσσερα συστήματα λογισμικού ανοικτού κώδικα και σε γενιές που κάλυπταν όλη τη διάρκεια ζωής τους. Σύμφωνα με τα αποτελέσματα, οι προτεινόμενες τεχνικές είναι ελπιδοφόρες, καθώς επιτρέπουν στην ομάδα διαχείρισης λογισμικού να εκτιμήσει με εύκολο τρόπο την εξέλιξη του τρόπου υλοποίησης κάθε λειτουργικής απαίτησης, καθώς και τις μονάδες λογισμικού στις οποίες ‘εξαπλώνεται’. Επιπροσθέτως, στην παρούσα διατριβή προτείνεται ένα μοντέλο πρόβλεψης της εξέλιξης λογισμικού συστημάτων σε γλώσσα Java. Το μοντέλο δημιουργείται αναλύοντας την ιστορία της εξέλιξης του κάθε έργου και ενσωματώνει συγκεκριμένα χαρακτηριστικά όπως αυτό της επιλεκτικής προσκόλλησης νέων κόμβων, το μοντέλο αναπαραγωγής με πανομοιότυπο τρόπο, την ηλικία των κλάσεων και τις διαγραφές ακμών. Επίσης, αναγνωρίζοντας το γεγονός πως μια προσπάθεια αποτύπωσης του τρόπου εξέλιξης του λογισμικού δεν μπορεί να αγνοεί κανόνες και αρχές που διέπουν την ανάπτυξή του, το προτεινόμενο μοντέλο, για πρώτη φορά ενσωματώνει συγκεκριμένες αρχές σχεδίασης οι οποίες θα πρέπει να ακολουθούνται κατά τη διάρκεια προσομοίωσης της εξέλιξης. Η αξιολόγηση του μοντέλου έγινε σε δέκα συστήματα λογισμικού ανοικτού κώδικα και κατέδειξε την δύναμή του, η οποία του επιτρέπει να προβλέπει με σημαντική ακρίβεια τη δομή συστημάτων λογισμικού στο εγγύς μέλλον. Ο τομέας της συντήρησης λογισμικού μπορεί να επωφεληθεί από τη χρήση ενός μοντέλου σαν το προτεινόμενο, καθώς μπορεί να επικεντρώσει ή και να εντείνει τις προσπάθειες συντήρησης σε τμήματα του λογισμικού στα οποία υπάρχουν ενδείξεις μεταβολής επί το χείρον. Τέλος, αναγνωρίζοντας την έλλειψη ενός εύκολου στη χρήση εργαλείου για εξελικτική ανάλυση λογισμικού, υλοποιήθηκε μια πλατφόρμα για την απρόσκοπτη ανάλυση της εξέλιξης αντικειμενοστρεφών συστημάτων γραμμένων στην γλώσσα Java. Η πλατφόρμα με όνομα SEAgle είναι προσβάσιμη από οποιαδήποτε συσκευή μέσω του διαδικτύου και επιτρέπει στους χρήστες της ανάλυση οποιουδήποτε δημόσιου αποθετηρίου λογισμικού ανοικτού κώδικα. To SEAgle υπολογίζει και προσφέρει μέσω δημόσιας διεπαφής προγραμματισμού εφαρμογών μια πληθώρα μετρικών από τρεις κατηγορίες: γράφου, πηγαίου κώδικα και δραστηριότητας αποθετηρίου.
Keywords: Software modeling
Graph
Software metric
Network modeling
Forecasting model
Prediction model
Feature scattering
Formal concept analysis
Multidimensional scaling
Preferential attachment
Μοντελοποίηση λογισμικού
Γράφος
Μετρική λογισμικού
Μοντελοποίηση δικτύων
Μοντέλο πρόβλεψης
Προβλεπτικό μοντέλο
Εξελικτικό μοντέλο
Διάχυση λειτουργιών
Διασκόρπιση λειτουργιών
Εξάπλωση λειτουργιών
Ανάλυση τυπικών εννοιών
Πολυδιαστατική αποτύπωση
Πολυδιαστατική ταξινόμηση
Πολυδιαστασιακή αποτύπωση
Information: Η βιβλιοθήκη διαθέτει αντίτυπο της διατριβής σε έντυπη μορφή.
Διατριβή (Διδακτορική)--Πανεπιστήμιο Μακεδονίας, Θεσσαλονίκη, 2016.
Περιλαμβάνει βιβλιογραφικές αναφορές (σ. 127-137).
Χαϊκάλης, θεόδωρος
010/2016
Appears in Collections:Τμήμα Εφαρμοσμένης Πληροφορικής (Δ)

Files in This Item:
File Description SizeFormat 
ChaikalisTheodoros_Phd2016.pdf4.89 MBAdobe PDFView/Open


This item is licensed under a Creative Commons License Creative Commons