Managing technical debt in modern software applications
Authors: Νικολαΐδης Νικόλαος 
Published: November 2024

Ο όρος «τεχνικό χρέος» (ΤΧ) είναι μια μεταφορά που χρησιμοποιείται για να περιγράψει τεχνικούς συμβιβασμούς που αφορούν την ποιότητα που εισάγονται στον κώδικα ως προϊόν του ταχύτερου χρόνου παράδοσης του προϊόντος. Λόγω της ικανότητας που έχει αυτή η μεταφορά, να κλείνει το χάσμα μεταξύ μελών μια εταιρίας και προγραμματιστών, τα τελευταία χρόνια έχει προσελκύσει μεγάλη προσοχή από τον ακαδημαϊκό χώρο και τη βιομηχανία. Ως αποτέλεσμα, έχει δοθεί αυξανόμενη προσοχή στη διαχείριση του ΤΧ, με εργαλεία ή συγκεκριμένες δραστηριότητες από την ποσοτικοποίηση μέχρι την αποπληρω-μή του. Παρόλο που η μεταφορά του ΤΧ έχει εισαχθεί στην βιβλιογραφία πριν από περισσότερες από τρεις δεκαετίες, υπάρχουν ακόμα πολλές πτυχές της που δεν καλύπτονται ή πρέπει να εξετάζονται συνεχώς μαζί με την εξέλιξη της ανάπτυξης λογισμικού: •Είναι ευρέως γνωστό ότι για να μειωθεί το ΤΧ ένας μηχανικός λογισμικού χρειά-ζεται να εκτελέσει ανακατασκευές (η πιο σημαντική μέθοδος αποπληρωμής ΤΧ). Ωστόσο, αυτή η δραστηριότητα από μόνη της δεν είναι ικανή να αποτρέψει τη συσσώρευση ΤΧ. Ως αποτέλεσμα, υπάρχει ανάγκη να διερευνηθεί ποιες δραστη-ριότητες στη διαδικασία ανάπτυξης επηρεάζουν τη συσσώρευση ΤΧ και εάν αυτές οι δραστηριότητες μπορούν να εκτελεστούν σε επίπεδο διαχείρισης του έρ-γου ή σε επίπεδο ανάπτυξης. Για το σκοπό αυτό, οι προγραμματιστές και οι δια-χειριστές πρέπει να γνωρίζουν την επίδραση που μπορεί να έχει κάθε δραστηριότη-τα στο ΤΧ και ποιες ενέργειες μπορούν να κάνουν για να το μειώσουν. •Δεδομένου του γεγονότος ότι οι πρακτικές ανάπτυξης λογισμικού εξελίσσονται γρήγορα και αλλάζουν συνεχώς, οι προσεγγίσεις διαχείρισης ΤΧ πρέπει συνέχεια να ενημερώνονται. Πιο συγκεκριμένα, συγκεκριμένες σύγχρονες μέθοδοι ανάπτυ-ξης λογισμικού (π.χ. αρχιτεκτονικές προσανατολισμένες στις υπηρεσίες) ενδέχεται να απαιτούν διαφορετική προσέγγιση για την ποσοτικοποίηση και διαχείριση του ΤΧ. Για παράδειγμα, η οργάνωση των εφαρμογών που βασίζονται σε υπηρεσίες (πχ SOA) είναι διαφορετική σε σύγκριση με τις παραδοσιακές αντικειμενοστρα-φείς εφαρμογές, επομένως χρειάζονται διαφορετικό επίπεδο ανάλυσης. Αυτό υπο-γραμμίζει την ανάγκη για νέες μεθόδους που θα είναι πιο ακριβείς για αναδυό-μενους τομείς και τρόπους ανάπτυξης λογισμικού. Επομένως, ο σκοπός αυτής της διατριβής είναι να προωθήσει την τελευταία λέξη της τεχνολογίας στους το-μείς της διαχείρισης του ΤΧ, της αποπληρωμής, και της ποσοτικοποίησης έχοντας υπόψη και την προσαρμογή στις νέες πρακτικές ανάπτυξης που προκύπτουν. Η πρώτη γραμμή έρευνας, σε αυτό το διδακτορικό έργο είναι να επιχειρήσουμε να κατα-νοήσουμε τους λόγους συσσώρευσης TX. Αρχικά, κατηγοριοποιήσαμε τις δραστηριότητες βελτίωσης της ποιότητας σε δύο κατηγορίες: (α) μικρο-διαχείριση: παρεμβάσεις που εφαρμόζονται σε επίπεδο κλάσης ή μεθόδου, με εφαρμογή αναδιαμόρφωσης, και (β) μακροδιαχείριση: παρεμβάσεις που εφαρμόζονται σε μεγάλη κλίμακα (π.χ., σε επίπεδο έργου, χρησιμοποιώντας ένα νέο framework ή επιβάλλοντας μια πύλη ποιότητας), και στη συνέχεια εξετάζουμε τη σχέση αυτών των δραστηριοτήτων με τη συσσώρευση ΤΧ. Με βάση τα αποτελέσματα, επιβεβαιώνουμε ότι οι παράμετροι μικρο-διαχείρισης συσχετίζονται με την πιθανότητα μια κλάση να έχει υψηλό ΤΧ, αλλά τα αποτελέσματα μπορούν να βελτιωθούν περαιτέρω ελέγχοντας και ορισμένες παραμέτρους σε επίπεδο έργου. Επιπλέον, προχωρήσαμε βαθύτερα σε αυτόν τον τομέα εξετάζοντας συγκεκριμένες δραστηριό-τητες ανάπτυξης ως συνεισφορές (pull requests) σε λογισμικό ανοιχτού κώδικα (OSS). Αυτό μας έδειξε ότι η προσθήκη νέων δυνατοτήτων σε έργα λογισμικού τείνει να αυξάνει το Κεφάλαιο ΤΧ, οι δραστηριότητες ανακατασκευής έχουν σχεδόν σταθερό θετικό αποτέλεσμα (μειώνοντας το Κεφάλαιο ΤΧ) και οι δραστηριότητες διόρθωσης σφαλμάτων δεν έχουν κάποιο σταθερό αντίκτυπο στο ΤΧ. Επιπλέον, έχουμε επικεντρωθεί παραπάνω στις δραστηριότητες αναδιαμόρφωσης, καθώς φαίνεται να είναι ο de facto τρόπος μείωσης του ΤΧ. Από τα αποτελέσματά μας, είναι προφανές ότι οι ανακατασκευές δεν επηρεάζουν πάντα θετικά την ποιότητα του έργου και ότι η λίστα ευκαιριών ανακατασκευής μπορεί να είναι πολύ μεγάλη και δαπανηρή για να τις εφαρμόσουμε όλες. Έχοντας αυτό κατά νου, και επαναχρησιμοποιώντας έναν τρόπο ιεράρχησης, προτείναμε μια προσέγγιση βασισμένη σε μετρήσεις για την καθοδήγηση των επαγγελματιών σχετικά με το πώς να δίνουν προτεραιότητα στις ευκαιρίες ανακατασκευής. Η δεύτερη γραμμή έρευνας σε αυτό το διδακτορικό έργο προσπαθεί να προσφέρει μια ενημερωμένη προοπτική για τη διαχείριση ΤΧ για σύγχρονες εφαρμογές, όπως υπηρεσίες cloud και web. Πρώτον, αναγνωρίζοντας ότι στις υπηρεσίες web, οι προγραμματιστές οργανώνουν την επιθυμητή λειτουργικότητα σε αυτόνομες και ανεξάρτητες υπηρεσίες (κλή-σεις API), είναι φυσικό και η συντήρησή τους να είναι ανεξάρτητη μέχρι έναν βαθμό. Ως εκ τούτου, είναι λογικό να χρησιμοποιείται ως μονάδα ανάλυσης η υπηρεσία αυτή κα-θαυτή, παρά το πλήρες έργο ή οι συγκεκριμένες κλάσεις κάθε φορά. Επομένως, προτείναμε μια νέα μεθοδολογία για τη μέτρηση του ΤΧ κάθε υπηρεσίας λαμβάνοντας υπόψη τον υποκείμενο κώδικα που υποστηρίζει το αντίστοιχο endpoint. Η προτεινόμενη μεθοδο-λογία βασίζεται στο γράφημα κλήσης της μεθόδου, που ξεκινά από το endpoint μιας υ-πηρεσίας και διασχίζει όλες τις μεθόδους που παρέχουν τη λειτουργικότητα της υπηρεσί-ας. Επιπλέον, προτείναμε και παρουσιάζουμε μια μεθοδολογία και πλαίσιο ανάπτυξης cloud, το SmartCLIDE. Αυτή η μεθοδολογία και το πλαίσιο έχουν στον πυρήνα τους την επαναχρησιμοποίηση των υπηρεσιών ώστε να είναι πιο αποτελεσματικές (από άποψη χρόνου, ποιότητας, ελαττωμάτων και διαδικασίας). Τέλος, για να παρέχει μια πιο συγκεκριμένη προσέγγιση στην ανάπτυξη λογισμικού, αυτό το διδακτορικό έργο επεκτείνεται στον τομέα σχεδιασμού και αρχιτεκτονικής της μηχανικής λογισμικού. Δεδομένης της έλλειψης μετρήσεων για τη χρήση των βιβλιοθηκών, προτείναμε 5 μετρήσεις που αποτυ-πώνουν τον βαθμό στον οποίο κάθε βιβλιοθήκη χρησιμοποιείται στον κώδικα, παρέχοντας πληροφορίες στους μηχανικούς λογισμικού για την πραγματική χρησιμότητα της βιβλιοθήκης στο τελικό προϊόν.