Περίληψη
Ο όρος «τεχνικό χρέος» είναι μια επιτυχημένη μεταφορά η οποία εισήχθη το 1992 ώστε να περιγράψει το φαινόμενο κατά το οποίο τεχνικοί συμβιβασμοί που αφορούν την ποιότητα σε ένα σύστημα λογισμικού (π.χ. σχεδίαση ή κώδικας) και πραγματοποιούνται ώστε να αποφέρουν βραχυπρόθεσμα οφέλη, ενδέχεται να οδηγήσουν σε μακροπρόθεσμα προβλήματα εάν δεν επιλυθούν άμεσα. Λόγω της οικονομικής φύσης του, χρησιμοποιήθηκε ευρέως για να περιγράψει τις συνέπειες που φέρουν τα προβλήματα στην ποιότητα του λογισμικού, αλλά και να τονίσει τις ανάγκες εξάλειψής τους, τόσο σε τεχνικά- όσο και σε μη τεχνικά-καταρτισμένους ενδιαφερόμενους. Τα τελευταία χρόνια, το τεχνικό χρέος έχει προσελκύσει την προσοχή τόσο του ακαδημαϊκού χώρου όσο και της βιομηχανίας. Ως αποτέλεσμα, έχει υπάρξει μια σημαντική αύξηση στον αριθμό και την παρεχόμενη λειτουργικότητα των μεθόδων και των εργαλείων που υποστηρίζουν δραστηριότητες διαχείρισης τεχνικού χρέους.Ωστόσο, λόγω της έλλειψης ενός κοινά αποδεκτού προτύπου για την αναγνώριση ...
Ο όρος «τεχνικό χρέος» είναι μια επιτυχημένη μεταφορά η οποία εισήχθη το 1992 ώστε να περιγράψει το φαινόμενο κατά το οποίο τεχνικοί συμβιβασμοί που αφορούν την ποιότητα σε ένα σύστημα λογισμικού (π.χ. σχεδίαση ή κώδικας) και πραγματοποιούνται ώστε να αποφέρουν βραχυπρόθεσμα οφέλη, ενδέχεται να οδηγήσουν σε μακροπρόθεσμα προβλήματα εάν δεν επιλυθούν άμεσα. Λόγω της οικονομικής φύσης του, χρησιμοποιήθηκε ευρέως για να περιγράψει τις συνέπειες που φέρουν τα προβλήματα στην ποιότητα του λογισμικού, αλλά και να τονίσει τις ανάγκες εξάλειψής τους, τόσο σε τεχνικά- όσο και σε μη τεχνικά-καταρτισμένους ενδιαφερόμενους. Τα τελευταία χρόνια, το τεχνικό χρέος έχει προσελκύσει την προσοχή τόσο του ακαδημαϊκού χώρου όσο και της βιομηχανίας. Ως αποτέλεσμα, έχει υπάρξει μια σημαντική αύξηση στον αριθμό και την παρεχόμενη λειτουργικότητα των μεθόδων και των εργαλείων που υποστηρίζουν δραστηριότητες διαχείρισης τεχνικού χρέους.Ωστόσο, λόγω της έλλειψης ενός κοινά αποδεκτού προτύπου για την αναγνώριση και την ποσοτικοποίηση του τεχνικού χρέους, δεν είναι σαφές πώς τα υπάρχοντα εργαλεία διαχειρίζονται τις παραπάνω δραστηριότητες, καθώς το καθένα υιοθετεί το δικό του σύνολο κανόνων. Ως αποτέλεσμα, οι αποκλίνουσες εκτιμήσεις τεχνικού χρέους που παράγονται από αυτά τα εργαλεία θέτουν υπό αμφισβήτηση την αξιοπιστία των ευρημάτων τους. Το παραπάνω πρόβλημα τονίζει την ανάγκη για νέες μεθόδους που θα ενσωματώνουν τη συλλογική γνώση που εξάγεται από πολλαπλά εργαλεία τεχνικού χρέους, αξιοποιώντας με αυτόν τον τρόπο μια κοινά αποδεκτή «βάση γνώσης τεχνικού χρέους» για τη βελτίωση των δραστηριοτήτων αναγνώρισης και ποσοτικοποίησης του τεχνικού χρέους.Από την άλλη πλευρά, οι υπάρχουσες μέθοδοι και εργαλεία επικεντρώνονται κυρίως στην αξιολόγηση του τεχνικού χρέους ενός συστήματος λογισμικού στην τρέχουσα κατάστασή του. Ωστόσο, μια απόφαση σχετικά με το εάν θα αποπληρωθεί ή όχι ένα αντικείμενο τεχνικού χρέους έχει διαφορετικές συνέπειες ανάλογα με το πότε λαμβάνεται. Το παραπάνω τονίζει την ανάγκη δημιουργίας μεθόδων και συνοδευτικών εργαλείων τα οποία θα επιτρέπουν την μακροπρόθεσμη αποτελεσματική συντήρηση λογισμικού, προβλέποντας την εξέλιξη του τεχνικού χρέους ενός συστήματος λογισμικού και παρέχοντας πληροφορίες σχετικά με το πώς και πότε πρέπει να αποπληρωθεί.Με βάση τα παραπάνω ζητήματα, σκοπός της παρούσας διατριβής είναι να συνδράμει στους τομείς της εκτίμησης και της πρόβλεψης τεχνικού χρέους, προτείνοντας νέες προσεγγίσεις οι οποίες βασίζονται κυρίως σε τεχνικές μηχανικής μάθησης. Οι προσεγγίσεις αυτές στοχεύουν στην διευκόλυνση των δραστηριοτήτων διαχείρισης τεχνικού χρέους και επιτρέπουν τη λήψη αποφάσεων υπό συνθήκες αβεβαιότητας.Πιο συγκεκριμένα, δεδομένης της έλλειψης συγκεκριμένων προσεγγίσεων σχετικά με την έννοια της πρόβλεψης τεχνικού χρέους, η παρούσα διατριβή εξέτασε ένα πλήθος διαφορετικών μεθόδων πρόβλεψης, οι οποίες κυμαίνονται από απλά μοντέλα χρονοσειρών έως πιο εξελιγμένα μοντέλα μηχανικής μάθησης, για την ικανότητά τους να προβλέπουν με ακρίβεια τη μελλοντική εξέλιξη του τεχνικού χρέους σε συστήματα λογισμικού με μακροχρόνιο ιστορικό ανάπτυξης. Τα αποτελέσματα έδειξαν ότι τα μοντέλα χρονοσειρών είναι σε θέση να παρέχουν ικανοποιητικές προβλέψεις τεχνικού χρέους για βραχυπρόθεσμους ορίζοντες πρόβλεψης. Ωστόσο, παρατηρήθηκε ότι η προγνωστική τους ισχύς μειώνεται σημαντικά όταν προσπαθούν να προβλέψουν στο πιο μακρινό μέλλον. Από την άλλη πλευρά, οι τεχνικές μηχανικής μάθησης αποδείχθηκαν πιο αποτελεσματικές στη μοντελοποίηση της μελλοντικής εξέλιξης του τεχνικού χρέους κατά την εξέταση τόσο βραχυπρόθεσμων όσο και μακροπρόθεσμων οριζόντων πρόβλεψης. Πιο συγκεκριμένα, αποδείχθηκε ότι τα μοντέλα μηχανικής μάθησης αποτελούν μια κατάλληλη και αποτελεσματική προσέγγιση για την πρόβλεψη τεχνικού χρέους, καθώς είναι σε θέση να παρέχουν ουσιαστικές εκτιμήσεις της εξέλιξης του τεχνικού χρέους για μια σχετικά μεγάλη περίοδο, πετυχαίνοντας στις περισσότερες περιπτώσεις επαρκή επίπεδα ακρίβειας.Εκτός από την πρόβλεψη της εξέλιξης του τεχνικού χρέους σε συστήματα λογισμικού με μακροχρόνιο ιστορικό ανάπτυξης, η παρούσα διατριβή διερεύνησε επίσης την ικανότητα των τεχνικών ομαδοποίησης δεδομένων να βελτιώσουν την ακρίβεια της πρόβλεψης τεχνικού χρέους μεταξύ έργων, επιτρέποντας με αυτόν τον τρόπο την παροχή αξιόπιστων προβλέψεων για έργα με ανεπαρκή ιστορικά δεδομένα, όπως νέα έργα ή έργα από τα οποία δεν είναι δυνατό να ανακτηθούν παρελθοντικά δεδομένα. Χρησιμοποιώντας μετρικές κώδικα για την ομαδοποίηση «παρόμοιων» έργων λογισμικού, παρατηρήσαμε ότι η ακρίβεια πρόβλεψης μοντέλων μηχανικής μάθησης τα οποία είχαν εκπαιδευτεί σε κάποιο έργο λογισμικού μιας συγκεκριμένης ομάδας ήταν υψηλότερη για τα έργα λογισμικού που ανήκαν στην ίδια ομάδα, σε σύγκριση με την ακρίβεια για έργα λογισμικού που εκχωρήθηκαν σε διαφορετικές ομάδες. Αυτό υποδηλώνει ότι η ομοιότητα μεταξύ έργων λογισμικού μπορεί να αποτελέσει ένα βασικό παράγοντα για τη βελτίωση της πρόβλεψης τεχνικού χρέους μεταξύ έργων λογισμικού και, κατά συνέπεια, ότι η ομαδοποίηση μπορεί να είναι μια βιώσιμη λύση για την ανάπτυξη μοντέλων πρόβλεψης για αυτό το σκοπό.Τέλος, αναγνωρίζοντας την έλλειψη μιας κοινά αποδεκτής βάσης σχετικά με την αναγνώριση και την ποσοτικοποίηση του τεχνικού χρέους, η παρούσα διατριβή διερεύνησε την ικανότητα των μοντέλων μηχανικής μάθησης να αξιοποιούν τη συλλογική γνώση που εξάγεται συνδυάζοντας αποτελέσματα διαφορετικών εργαλείων τεχνικού χρέους. Χρησιμοποιώντας διάφορες μετρήσεις που σχετίζονται με τον πηγαίο κώδικα και τη δραστηριότητα αποθετηρίου ως είσοδο, αλλά και ένα σύνολο κλάσεων που μοιράζονται παρόμοια επίπεδα τεχνικού χρέους ως σημείο αναφοράς, η μέθοδος ταξινόμησης που προτείνουμε αποδείχθηκε ικανή να προσδιορίσει με ακρίβεια υποψήφιες κλάσεις υψηλού τεχνικού χρέους, εξαλείφοντας αυτό τρόπο την ανάγκη καταφυγής σε ένα πλήθος εμπορικών εργαλείων για την παραπάνω διαπίστωση. Επιπλέον, με βάση τα εξαγόμενα αποτελέσματα, υλοποιήσαμε ένα πρωτότυπο εργαλείο το οποίο αυτοματοποιεί την παραπάνω διαδικασία.
περισσότερα
Περίληψη σε άλλη γλώσσα
Technical Debt (TD) is a successful metaphor in conveying the consequences of software inefficiencies and their elimination to both technical and non-technical stakeholders, primarily due to its monetary nature. In recent years, TD has attracted the attention of both academia and industry. As a result, there has been a considerable increase in the number and provided functionality of methods and tools that support TD management activities.However, due to the lack of a commonly accepted standard for identifying and quantifying TD, it is not clear how the existing TD tools map to these activities, as each adopts its own ruleset. As a result, the divergent TD estimates produced by these tools call into question the reliability of their findings. This highlights the need for novel methods that would incorporate the collective knowledge extracted by multiple TD tools, exploiting in that way a commonly agreed “TD knowledge base” to improve TD identification and estimation activities.On the o ...
Technical Debt (TD) is a successful metaphor in conveying the consequences of software inefficiencies and their elimination to both technical and non-technical stakeholders, primarily due to its monetary nature. In recent years, TD has attracted the attention of both academia and industry. As a result, there has been a considerable increase in the number and provided functionality of methods and tools that support TD management activities.However, due to the lack of a commonly accepted standard for identifying and quantifying TD, it is not clear how the existing TD tools map to these activities, as each adopts its own ruleset. As a result, the divergent TD estimates produced by these tools call into question the reliability of their findings. This highlights the need for novel methods that would incorporate the collective knowledge extracted by multiple TD tools, exploiting in that way a commonly agreed “TD knowledge base” to improve TD identification and estimation activities.On the other hand, existing methods and tools focus mostly on assessing the TD of a software system at its current state. However, a decision on whether or not to repay a TD item has different consequences depending on when it is made. This stresses the need for methods and accompanying tools that would enable long-term effective software maintenance by forecasting the TD evolution of a software system, and providing insights regarding where and when to apply refactoring.To this end, the purpose of the present dissertation is to advance the state of the art in the fields of TD estimation and TD forecasting, exploring new approaches, based mainly on ML techniques, that facilitate TD management activities and enable decision-making under uncertainty.More specifically, given the lack of concrete approaches regarding the TD Forecasting concept, the present dissertation examined a multitude of different forecasting methods, ranging from simple time series to more sophisticated ML models, for their ability to accurately predict the future TD evolution of long-lived, open-source software systems. The results showed that statistical time series models are able provide satisfactory TD predictions for short-term forecasting horizons. However, it was observed that their predictive power dropped significantly when trying to forecast longer into the future. On the other hand, ML techniques proved more effective in modelling TD patterns when considering both short- and long-term forecasting horizons. More specifically, it was shown that ML models constitute a suitable and effective approach for TD forecasting, as they are able to fit and provide meaningful estimates of TD evolution over a relatively long horizon, while in most of the cases, the future TD value is captured with a sufficient level of accuracy.Besides predicting the TD evolution of long-lived software systems, the present thesis also investigated the ability of data clustering techniques to improve the accuracy of cross-project TD forecasting, allowing in that way the provision of reliable forecasts for projects with insufficient historical data, such as new projects or projects whose past evolution cannot be retrieved. By grouping “similar” software projects into clusters based on code metrics, we observed that the cross-project prediction accuracy of cluster-specific ML models was higher when forecasting for projects assigned to the same cluster, compared to forecasting for projects assigned to a different cluster. This suggests that similarity between software projects may be a key factor for enhancing cross-project TD forecasting, and, in turn, that clustering may be a viable solution for achieving better results in cross-project forecasting.Finally, by acknowledging the lack of a commonly accepted basis regarding the identification and estimation of TD, this dissertation investigated the ability of ML models to leverage the collective knowledge extracted by combining the results of different leading TD tools. Using various metrics pertaining to source code and repository activity as features and an empirical benchmark of classes sharing similar levels of TD as ground truth, the proposed classification framework was proven able to accurately identify candidate high-TD software classes in software systems, eliminating in that way the need to resort to a multitude of tools for establishing the ground truth. Based on the results, a tool prototype for automatically assessing the TD software projects has been implemented.
περισσότερα