Ευφυής Μεθοδολογία Αποτίμησης του Βαθμού Διατηρησιμότητας Έργων Λογισμικού με τη χρήση Τεχνικών Εξόρυξης Δεδομένων
Creators: name: Παπαμιχαήλ, Μιχαήλ Δ.
Publisher: name: Aristotle University of Thessaloniki
Year: 2021
Subjects: Ποιότητα λογισμικού
Τεχνολογία λογισμικού
Ανάλυση λογισμικού
Μετρικές ποιότητας λογισμικού
Software quality
Software engineering
Software analysis
Software quality metrics

description: Οι ολοένα αυξανόμενες απαιτήσεις των σύγχρονων έργων λογισμικού τόσο σε λειτουργικό, όσο και σε μη λειτουργικό επίπεδο έχουν καταστήσει παραπάνω από εμφανή την ανάγκη επόπτευσης της ποιότητάς τους. Το γεγονός αυτό καταδεικνύεται από το μεγάλο ποσοστό των έργων λογισμικού που αποτυγχάνουν, καθώς αδυνατούν να ικανοποιήσουν τις προδιαγραφές που έχουν τεθεί στα πλαίσια ενός σαφούς χρονοδιαγράμματος και εντός προϋπολογισμού. Η απάντηση στην πρόκληση αυτή εντοπίζεται στην ανάπτυξη μεθοδολογιών και τεχνικών αποτίμησης της ποιότητας λογισμικού, διαδικασία που αποτελεί ανοιχτό πεδίο ερευνητικού ενδιαφέροντος και συγκεντρώνει μεγάλη απήχηση εδώ και δεκαετίες. Η αποτίμηση ποιότητας λογισμικού αποτελεί ένα σύνθετο και πολυπαραγοντικό πρόβλημα με δεδομένο ότι περιλαμβάνει πολυάριθμους άξονες που πρέπει να ληφθούν υπόψη. Οι άξονες αυτοί διαφοροποιούνται τόσο από τα ιδιαίτερα χαρακτηριστικά κάθε έργου λογισμικού όσο και από το πεδίο εφαρμογής του. Οι πρώτες ερευνητικές προσπάθειες στο πεδίο ανέδειξαν ως πρωταρχική ανάγκη την εύρεση ενός ορισμού της έννοιας της ποιότητας με τρόπο που να εξασφαλίζει όσο το δυνατόν μεγαλύτερη σαφήνεια στο πεδίο εφαρμογής. Προς την κατεύθυνση αυτή και με γνώμονα την ενιαία και συστηματική προσέγγιση της έννοιας της ποιότητας λογισμικού ανάμεσα στην επιστημονική κοινότητα, προτάθηκαν μια σειρά από πρότυπα, τα οποία στοχεύουν στην ανάλυσή της σε μια σειρά από άξονες/χαρακτηριστικά, τα οποία και αυτά με τη σειρά τους αναλύονται σε μια σειρά από ιδιότητες που συνδέονται με συγκεκριμένες μετρήσιμες ποσότητες. Κατά συνέπεια, δημιουργείται ένα οικοδόμημα, το οποίο αποσαφηνίζει την «γενική» έννοια ενός χαρακτηριστικού, όπως είναι η διατηρησιμότητα, σε μια σειρά από συγκεκριμένα υπο-χαρακτηριστικά από τα οποία επηρεάζεται και τα οποία μπορούν να ποσοτικοποιηθούν μέσω συγκεκριμένων μετρήσιμων ποσοτήτων. Το οικοδόμημα αυτό στο πεδίο της αποτίμησης της διατηρησιμότητας αποτελεί τον κεντρικό άξονα μελέτης στα πλαίσια της παρούσας διδακτορικής διατριβής, η οποία προτείνει ένα ιεραρχικό μοντέλο αποτίμησης της διατηρησιμότητας έργων λογισμικού βασισμένο στα ίδια τα δεδομένα. Στα πλαίσια της παρούσας διδακτορικής διατριβής το προτεινόμενο μοντέλο αποτίμησης του βαθμού διατηρησιμότητας έργων λογισμικού αξιοποιεί την υπάρχουσα γνώση στο πεδίο και την εξελίσσει εστιάζοντας σε μια σειρά από σχεδιαστικούς στόχους. Ο πρώτος στόχος εντοπίζεται στη δυνατότητα πλήρους αυτοματοποίησης της αποτίμησης διατηρησιμότητας, γεγονός που στοχεύει στην εισαγωγή της ως συνεχή μηχανισμό παρακολούθησης της διαδικασίας ανάπτυξης λογισμικού. Η αυτοματοποίηση αποτελεί σημαντική προϋπόθεση καθώς έρχεται σε αντίθεση με πληθώρα παραδοσιακών τεχνικών που βασίζονται σε χειροκίνητη επόπτευση του πηγαίου κώδικα, διαδικασία άκρως δαπανηρή τόσο σε χρόνο, όσο και σε ανθρωποπροσπάθεια (ιδιαίτερα σε έργα λογισμικού με μεγάλο μέγεθος και πολυπλοκότητα). Στον άξονα αυτό, η προτεινόμενη προσέγγιση βασίζεται στην αξιοποίηση πληροφορίας που εντοπίζεται στα ευρέως χρησιμοποιούμενα αποθετήρια κώδικα, με στόχο τη δημιουργία σετ δεδομένων αναφοράς που αποτελούν τη βάση των μοντέλων αποτίμησης διατηρησιμότητας. Με δεδομένες τις αρχές της αντικειμενοστρέφειας, όπου κάθε επίπεδο του κώδικα (μέθοδος, κλάση, πακέτο) σχετίζεται με διαφορετικούς σχεδιαστικούς στόχους, οι οποίοι είναι αλληλένδετοι με την αποτίμηση του βαθμού διατηρησιμότητας, ο δεύτερος σχεδιαστικός στόχος αποτελεί την αποτίμηση του βαθμού διατηρησιμότητας σε πολλαπλά επίπεδα. Προς την κατεύθυνση αυτή, το προτεινόμενο μοντέλο εφαρμόζεται τόσο σε επίπεδο κλάσης, όσο σε επίπεδο μεθόδου, αλλά και πακέτου, παρέχοντας αποτελέσματα που καλύπτουν συνολικά τις ιδιότητες του πηγαίου κώδικα, καθώς και την εξέλιξή τους στο χρόνο. Δύο ακόμα σημαντικοί σχεδιαστικοί στόχοι του προτεινόμενου μοντέλου αποτίμησης διατηρησιμότητας αποτελούν η δυνατότητα πρόβλεψης μηδιατηρησιμότητας σε προγενέστερο επίπεδο και η παροχή ερμηνεύσιμων αποτελεσμάτων. Η δυνατότητα έγκαιρης πρόβλεψης και συνεπώς η διαπίστωση προβλημάτων που σχετίζονται με τη διατηρησιμότητα σε πρωταρχικά στάδια του κύκλου ζωής του έργου είναι εξέχουσας σημασίας, καθώς διαμορφώνει τόσο το πλήθος των αλλαγών που απαιτούνται, όσο και τον χρόνο υλοποίησης και ελέγχου που συνεπάγεται των αλλαγών αυτών. Τέλος, η παροχή ερμηνεύσιμων αποτελεσμάτων στοχεύει στην ευχρηστία του προτεινόμενου μηχανισμού, γεγονός που επιτρέπει την παροχή στοχευμένων συστάσεων αναφορικά με την πηγή των προβλημάτων που έχουν αναγνωριστεί, καθώς και μεγαλύτερη ιχνηλασιμότητα των τμημάτων κώδικα όπου χρειάζονται αλλαγές. Με βάση τα παραπάνω, το προτεινόμενο μοντέλο αποτίμησης του βαθμού διατηρησιμότητας έργων λογισμικού αξιοποιεί δεδομένα τεχνολογίας λογισμικού και χρησιμοποιεί τεχνικές μηχανικής μάθησης με στόχο τη δημιουργία μιας αυτοματοποιημένης λύσης. Η λύση αυτή μπορεί να αποτελέσει αναπόσπαστο κομμάτι της διαδικασίας παραγωγής λογισμικού με στόχο την αποδοτικότερη διαχείριση του τεχνικού χρέους.
description: The modern software development lifecycle requires fast development sprints, incremental integration of features and the ability to change fast. In such a volatile environment, software quality control is of utmost importance. This fact is more than evident considering that numerous software projects fail because they are unable to meet their technical specifications in the context of a constrained timeframe and/or budget. The answer to this difficult challenge of managing technical debt lies in the development of tools and methodologies that enable effective quality assessment, minimize risks and set up a proper mitigation plan. Obviously, evaluating the extent to which a software project adheres to certain quality-related characteristics is an open research question that has drawn the attention of researchers for decades. Given its nature, software quality assessment is a complex and multifaceted problem that requires examining numerous factors varying with respect to the special characteristics of each software project as well as its field of application. This complexity has been identified since the first research efforts in the area of software quality, which highlight the need to disaggregate the high-level concept of software quality into certain entities that provide clarity and broad applicability. To that end and in an effort to create a common ground among the scientific community, several quality standards have been proposed that decompose quality into certain quantifiable characteristics, each related to certain metrics. One of the most important quality-related characteristics is maintainability, which expresses the degree of effectiveness and efficiency with which a product or system can be modified based on the changes in its functional and non-functional requirements. The current doctoral thesis focuses exactly on maintainability and proposes a data-driven methodology for assessing the extent to which a software component is maintainable. The proposed methodology employs data mining techniques for building a hierarchical maintainability evaluation model that harnesses software engineering data while focusing on certain design objectives. The first objective of the doctoral thesis is directed towards providing a fully-automated methodology able to be integrated into the software development process in a continuous manner. Automating the maintainability assessment process is of vital importance given that manually examining the source code, a process widely accepted by the traditional evaluation approaches, is extremely time and effort consuming, especially in large and complex software projects. In this context, the proposed approach utilizes the deluge of data residing in online code hosting facilities and constructs several benchmark datasets that constitute the information basis upon which the constructed maintainability evaluation models are built. Given the principles of object-oriented programming that software artifacts under investigation follow different design objectives, our second design objective refers to constructing a methodology applicable at multiple levels (method, class, and package). This multi-level analysis enables providing a holistic maintainability assessment that covers modelling the behavior of a wide range of software properties along with their progress in time. The remaining objectives of the proposed approach refer to the ability to provide predictions at an early project stage, as well as the provision of interpretable evaluation results. The ability to provide early predictions and identify maintainability-related issues in the early stages of the software development process is critical, as it warns developers for the need of the required refactoring. On the other hand, an interpretable evaluation mechanism provides developers with targeted recommendations on the risks identified as well as the certain code fragments that require auditing. Overall, the proposed maintainability evaluation approach harnesses software engineering data residing in online source code hosting facilities and employs data mining techniques towards constructing various models that enable automated maintainability control. It also enables thorough evaluation using a hierarchical approach that can be easily integrated in the software development process in a continuous and actionable manner.