Περίληψη
Σχεδόν όλα τα συστήματα λογισμικού εξελίσσονται συνεχώς για να ικανοποιήσουν νέες ανάγκες και να προσαρμοστούν στις μεταβαλλόμενες απαιτήσεις της εποχής. Η ανάλυση εξέλιξης λογισμικού μπορεί να αποκαλύψει σημαντικές πληροφορίες σχετικά με τις πρακτικές συντήρησης που ακολουθούνται από τις ομάδες προγραμματιστών. Ο στόχος της διδακτορικής διατριβής είναι να μελετήσει την εξέλιξη των εφαρμογών ανοικτού κώδικα διερευνώντας την εξέλιξη της ποιότητας του λογισμικού καθώς και του κόστους συντήρησης, όπως αποτυπώνεται από τη έννοια του Τεχνικού Χρέους (ΤΧ). Το Τεχνικό Χρέος είναι μια έννοια στον προγραμματισμό που αντικατοπτρίζει την επιπλέον προσπάθεια συντήρησης που προκύπτει όταν αναπτύσσεται «μη-βέλτιστος» κώδικας, που είναι εύκολο να παραδοθεί γρήγορα, αντί να εφαρμόζονται οι βέλτιστες πρακτικές. Η διατριβή διερευνά την διαχρονική εξέλιξη ενός μεγάλου αριθμού εφαρμογών ανοιχτού κώδικα. Οι εφαρμογές αναλύθηκαν στο πλαίσιο των οκτώ (8) νόμων του Lehman περί εξέλιξης λογισμικού και ειδικότ ...
Σχεδόν όλα τα συστήματα λογισμικού εξελίσσονται συνεχώς για να ικανοποιήσουν νέες ανάγκες και να προσαρμοστούν στις μεταβαλλόμενες απαιτήσεις της εποχής. Η ανάλυση εξέλιξης λογισμικού μπορεί να αποκαλύψει σημαντικές πληροφορίες σχετικά με τις πρακτικές συντήρησης που ακολουθούνται από τις ομάδες προγραμματιστών. Ο στόχος της διδακτορικής διατριβής είναι να μελετήσει την εξέλιξη των εφαρμογών ανοικτού κώδικα διερευνώντας την εξέλιξη της ποιότητας του λογισμικού καθώς και του κόστους συντήρησης, όπως αποτυπώνεται από τη έννοια του Τεχνικού Χρέους (ΤΧ). Το Τεχνικό Χρέος είναι μια έννοια στον προγραμματισμό που αντικατοπτρίζει την επιπλέον προσπάθεια συντήρησης που προκύπτει όταν αναπτύσσεται «μη-βέλτιστος» κώδικας, που είναι εύκολο να παραδοθεί γρήγορα, αντί να εφαρμόζονται οι βέλτιστες πρακτικές. Η διατριβή διερευνά την διαχρονική εξέλιξη ενός μεγάλου αριθμού εφαρμογών ανοιχτού κώδικα. Οι εφαρμογές αναλύθηκαν στο πλαίσιο των οκτώ (8) νόμων του Lehman περί εξέλιξης λογισμικού και ειδικότερα, εξετάστηκε εάν οι νόμοι επιβεβαιώνονται στην πράξη για διαδικτυακές εφαρμογές ανοιχτού κώδικα. Οι οκτώ νόμοι του Lehman αναφορικά είναι: Συνεχής Αλλαγή (Νόμος I), Αυξανόμενη Πολυπλοκότητα (Νόμος II), Αυτορρύθμιση (Νόμος III), Διατήρηση της Οργανωτικής Σταθερότητας (Νόμος IV), Διατήρηση της Eξοικείωσης (Νόμος V), Συνεχής Ανάπτυξη (Νόμος VI) Φθίνουσα Ποιότητα (VII) και Σύστημα Ανατροφοδότησης (VIII). Τα αποτελέσματα παρέχουν ευρήματα ότι η εξέλιξη των διαδικτυακών εφαρμογών συμμορφώνεται με τους περισσότερους νόμους. Τα τελευταία χρόνια, η έννοια του ΤΧ έχει γνωρίσει αυξανόμενη προσοχή από την ερευνητική κοινότητα. Συγκεκριμένα, μεγάλο μέρος των ερευνητικών μελετών επικεντρώθηκε στην έννοια του επιτοκίου Τεχνικού Χρέους, το οποίο αντικατοπτρίζει την πρόσθετη προσπάθεια συντήρησης που προκύπτει λόγω της ύπαρξης μη-βέλτιστου λογισμικού (δηλαδή, λόγω της ύπαρξης τεχνικού χρέους). Ακολουθώντας τις τάσεις της σύγχρονης έρευνας στη διαχείριση του TD, η διατριβή είχε ως στόχο τη διερεύνηση του αντίκτυπου του ΤΧ στη διορθωτική συντήρηση και συγκεκριμένα, σε ποιο βαθμό η παρουσία του ΤΧ καθυστερεί τον ρυθμό ανάπτυξης του λογισμικού αυξάνοντας τον χρόνο και την προσπάθεια που απαιτείται για τη διόρθωση σφαλμάτων. Παρόλο που το ΤΧ εκτιμάται και ποσοτικοποιείται συνήθως είτε σε ολόκληρο το σύστημα είτε σε μεμονωμένες μονάδες λογισμικού (αρχεία ή κλάσεις), η πραγματική αιτία για την συσσώρευση του ΤΧ είναι οι ίδιοι οι προγραμματιστές μέσω των πρακτικών που ακολουθούν κατά την ανάπτυξη κώδικα. Έτσι, η διατριβή επιχειρεί να διερευνήσει τη σχέση μεταξύ των χαρακτηριστικών των προγραμματιστών και της τάσης που έχουν να εισαγάγουν ΤΧ στο λογισμικό. Παρά το γεγονός ότι το ΤΧ έχει καθιερωθεί στην κοινότητα της Τεχνολογίας Λογισμικού, παραμένει μια μεταφορά και όπως όλες οι μεταφορές, αποτελεί μια αφηρημένη έννοια. Αυτό σημαίνει ότι ο τρόπος που ορίζεται και ερμηνεύεται από τους μηχανικούς λογισμικού είναι υποκειμενικός. Κάθε προγραμματιστής έχει τη δική του αντίληψη σχετικά με την σοβαρότητα του ΤΧ που εντοπίζεται στο λογισμικό του. Υπάρχουν πολλές φωνές που αμφισβητούν την εγκυρότητα του τρόπου ανίχνευσης και υπολογισμού του ΤΧ με τη χρήση αυτοματοποιημένων εργαλείων στατικής ανάλυσης (static analysis of source code). Με αφορμή τα παραπάνω, στο πλαίσιο αυτής της διατριβής εστάλη μια έρευνα σε ένα μεγάλο αριθμό προγραμματιστών που εμπλέκονται στην ανάπτυξη διαδικτυακών εφαρμογών ανοιχτού κώδικα. Η έρευνα, που είχε την μορφή online ερωτηματολογίου, στόχο είχε να αντλήσει πληροφορίες σχετικά με τους παράγοντες που οδηγούν τους προγραμματιστές να αποδεχτούν ή να απορρίψουν διορθώσεις που προτείνονται από αυτοματοποιημένα εργαλεία μέτρησης ΤΧ. Τα υπάρχοντα εργαλεία αξιολόγησης ΤΧ ακολουθούν διαφορετική προσέγγιση και κανόνες για την ποσοτικοποίηση του ΤΧ το καθένα. Κατά συνέπεια, το κάθε εργαλείο παράγει διαφορετικά αποτελέσματα από τα άλλα με αποτέλεσμα να μην υπάρχει μία αντικειμενική βάση για τα ποιο εργαλείο παράγει τα πιο ρεαλιστικά αποτελέσματα. Η προτεινόμενη διατριβή, προσπαθώντας να προσφέρει μία λύση στην έλλειψη της αντικειμενικότητας γύρω από την μέτρηση του ΤΧ, επιχειρεί να εντοπίσει σύνολα αρχείων/κλάσεων στα οποία εντοπίστηκε υψηλό ΤΧ ταυτόχρονα από τρία (3) ευρέως χρησιμοποιούμενα εργαλεία ΤΧ (CAST AIP, Squore και SonarQube). Αυτά τα αρχεία/κλάσεις υψηλού ΤΧ μπορούν να αποτελέσουν σημείο αναφοράς επικυρωμένων μονάδων υψηλού ΤΧ και με αυτόν τον τρόπο μπορεί να δημιουργηθεί μια βάση που θα συνδράμει στην κατάρτιση πιο εξελιγμένων τεχνικών αναγνώρισης ΤΧ. Παράλληλα, η διατριβή προτείνει μια στατιστική μεθοδολογία για την έγκυρη εξαγωγή του προαναφερόμενου συνόλου αρχείων/κλάσεων με υψηλό ΤΧ.
περισσότερα
Περίληψη σε άλλη γλώσσα
Almost all software systems around us evolve constantly to accommodate new requirements, to adapt in changing environments and to fix known issues. Software evolution analysis can reveal important information concerning maintenance practices followed by development teams. The goal of this dissertation is to study the evolution of open source web applications by investigating the evolution of software quality and maintenance cost as captured by the metaphor of Technical Debt (TD). Technical Debt is a concept in programming which reflects the extra maintenance effort that arises when “sub-optimal” code, that is easy to implement in the short run, is used instead of applying best practices. This research work investigates the evolution of a large number of open source web applications. The applications were analyzed in the context of Lehman’s eight (8) laws of software evolution and particularly, it has been examined whether the laws are confirmed in practice for open source web applicati ...
Almost all software systems around us evolve constantly to accommodate new requirements, to adapt in changing environments and to fix known issues. Software evolution analysis can reveal important information concerning maintenance practices followed by development teams. The goal of this dissertation is to study the evolution of open source web applications by investigating the evolution of software quality and maintenance cost as captured by the metaphor of Technical Debt (TD). Technical Debt is a concept in programming which reflects the extra maintenance effort that arises when “sub-optimal” code, that is easy to implement in the short run, is used instead of applying best practices. This research work investigates the evolution of a large number of open source web applications. The applications were analyzed in the context of Lehman’s eight (8) laws of software evolution and particularly, it has been examined whether the laws are confirmed in practice for open source web applications. Lehman’s Laws are, Continuing Change (Law I), Increasing Complexity (Law II), Self-Regulation (Law III), Conservation of Organizational Stability (Law IV), Conservation of Familiarity (Law V), Continuing Growth (Law VI) Declining Quality (VII) and Feedback System (VIII). The results provide evidence that the evolution of web applications comply with most of the laws. The TD metaphor has received increasing attention from the research community in the last years. Particularly, a large portion of research studies have focused on the notion of TD Interest, which reflects the additional maintenance effort that is incurred due to the existence of sub-optimal software (i.e., due to the existence of Technical Debt). Adopting the state-of-research on TD Management, this dissertation has aimed at investigating the impact of TD on corrective maintenance and particularly, to what extent does the presence of TD in software modules slows down development pace by increase the time and effort required for fixing bugs. Although TD is usually assessed on either the entire system or on individual software modules and most studies focus on the identified inefficiencies, it is the actual craftsmanship of developers that causes the accumulation of TD. Driven by the fact that TD is introduced by the developers themselves, this dissertation attempts to explore the relation between developers’ characteristics and the tendency to introduce inefficiencies that lead to TD. Despite the fact that TD is an established and recognized concept in the software engineering community, it also remains a metaphor and like all metaphors it is inherently abstract. This means that the way it is defined and interpreted by software engineering stakeholders constitutes a subjective matter. Each software professional has developed his/her own perception around TD prioritization and management. Thus, many voices question the validity of the way it is detected and calculated by automated static analysis tools. To this end, in the context of this research a survey has been sent to a large number of developers that contribute to open source web applications in order to gain insights into the factors that lead developers to adopt or reject fixes as suggested by automated static code analysis. By acknowledging the lack of a ground truth regarding the assessment of TD among the existing TD tools, this dissertation attempts to extract a set of classes with high TD, as detected by three (3) major TD tools (CAST AIP, Squore and SonarQube). These classes can serve as benchmark of validated high-TD classes and this way a basis can be established that can be used either for prioritization of maintenance activities or for training more sophisticated TD identification techniques. To this end, the current research work proposes a methodology to extract a benchmark set of validated high-TD classes while at the same time, it reveals three types of class profiles that successfully capture the spectrum of TD measurements provided by the three TD tools. Finally, the overall contribution of this dissertation comprises five (5) points; (a) it provides valuable undiscovered information on how open source web applications evolve over time since web-based systems had received limited attention in contrast to desktop ones, (b) considering the lack of empirical evidence on the relation between TD amount and TD Interest, it investigates to what extent the presence of TD in software modules slows down development pace by increasing the time and effort required for fixing bugs, (c) by acknowledging that it is the actual craftsmanship of the developers that causes the accumulation of TD, this work outlines the characteristics of the developers who tend to add TD in open source applications, (d) it sheds light into the reasons that drive developers to agree or disagree with automatically detected TD whose urgency is very often questionable by developers and (e) by acknowledging the lack of a basis regarding the detection and prioritization of TD among the existing TD tools, the current work proposes a methodology to extract a benchmark set of modules which are ranked as high-TD modules by three (3) TD tools altogether.
περισσότερα