scholarly journals Graph-based software evolution analysis of object-oriented systems

2016 ◽  
Author(s):  
Θεόδωρος Χαϊκάλης

Τα σύγχρονα αντικειμενοστρεφή συστήματα λογισμικού εξελίσσονται συνεχώς, οδηγούμενα από τις συνεχείς ανάγκες, αφενός για προσθήκη νέων λειτουργικών χαρακτηριστικών και αφετέρου για διόρθωση σφαλμάτων. Η διάρκεια και το κόστος αυτής της διαδικασίας καθιστούν επιτακτική την ανάπτυξη ευέλικτων συστημάτων λογισμικού, τα οποία δύνανται να προσαρμόζονται σε αλλαγές εύκολα και γρήγορα. Γι’ αυτόν τον σκοπό, η συντηρησιμότητα των συστημάτων μπορεί να βελτιωθεί με την χρήση ιστορικών δεδομένων με σκοπό την ανάλυση της μέχρι σήμερα εξέλιξής τους. Σε αυτό το πλαίσιο, εμπνεόμενη από τις εφαρμογές των γράφων σε διάφορα πεδία, η παρούσα διατριβή προτείνει ένα σύνολο από τεχνικές και μεθοδολογίες βασισμένες σε γράφους. Οι τεχνικές αυτές εφαρμόζονται σε διάφορες φάσεις του κύκλου ζωής λογισμικού, έχοντας πάντα σαν απώτερο στόχο την ανάλυση της ιστορικής εξέλιξης και όχι κάποιας συγκεκριμένης χρονικής αποτύπωσης.Μια θεμελιώδης διαδικασία στην ανάπτυξη αντικειμενοστρεφούς λογισμικού, η οποία καθορίζει όχι μόνο την δομή των μονάδων λογισμικού αλλά και το επίπεδο της μελλοντικής συντηρησιμότητας, είναι η διαδικασία κατανομής του κώδικα που υλοποιεί τις λειτουργικές απαιτήσεις στις υπό-μονάδες λογισμικού. Έχοντας ως στόχο την καλύτερη κατανόηση αυτής της διαδικασίας, προτείνουμε μια σειρά από εργαλεία και απεικονίσεις για την ανάλυση της εξέλιξης του τρόπου υλοποίησης των λειτουργικών απαιτήσεων. Η ανάλυση περιλαμβάνει την ανίχνευση των κλάσεων και των μεθόδων που παίρνουν μέρος στην υλοποίηση κάθε λειτουργικής απαίτησης. Οι προτεινόμενες μέθοδοι ανάλυσης εφαρμόσθηκαν σε τέσσερα συστήματα λογισμικού ανοικτού κώδικα και σε γενιές που κάλυπταν όλη τη διάρκεια ζωής τους. Σύμφωνα με τα αποτελέσματα, οι προτεινόμενες τεχνικές είναι ελπιδοφόρες, καθώς επιτρέπουν στην ομάδα διαχείρισης λογισμικού να εκτιμήσει με εύκολο τρόπο την εξέλιξη του τρόπου υλοποίησης κάθε λειτουργικής απαίτησης, καθώς και τις μονάδες λογισμικού στις οποίες ‘εξαπλώνεται’.Επιπροσθέτως, στην παρούσα διατριβή προτείνεται ένα μοντέλο πρόβλεψης της εξέλιξης λογισμικού συστημάτων σε γλώσσα Java. Το μοντέλο δημιουργείται αναλύοντας την ιστορία της εξέλιξης του κάθε έργου και ενσωματώνει συγκεκριμένα χαρακτηριστικά όπως αυτό της επιλεκτικής προσκόλλησης νέων κόμβων, το μοντέλο αναπαραγωγής με πανομοιότυπο τρόπο, την ηλικία των κλάσεων και τις διαγραφές ακμών. Επίσης, αναγνωρίζοντας το γεγονός πως μια προσπάθεια αποτύπωσης του τρόπου εξέλιξης του λογισμικού δεν μπορεί να αγνοεί κανόνες και αρχές που διέπουν την ανάπτυξή του, το προτεινόμενο μοντέλο, για πρώτη φορά ενσωματώνει συγκεκριμένες αρχές σχεδίασης οι οποίες θα πρέπει να ακολουθούνται κατά τη διάρκεια προσομοίωσης της εξέλιξης. Η αξιολόγηση του μοντέλου έγινε σε δέκα συστήματα λογισμικού ανοικτού κώδικα και κατέδειξε την δύναμή του, η οποία του επιτρέπει να προβλέπει με σημαντική ακρίβεια τη δομή συστημάτων λογισμικού στο εγγύς μέλλον. Ο τομέας της συντήρησης λογισμικού μπορεί να επωφεληθεί από τη χρήση ενός μοντέλου σαν το προτεινόμενο, καθώς μπορεί να επικεντρώσει ή και να εντείνει τις προσπάθειες συντήρησης σε τμήματα του λογισμικού στα οποία υπάρχουν ενδείξεις μεταβολής επί το χείρον.Τέλος, αναγνωρίζοντας την έλλειψη ενός εύκολου στη χρήση εργαλείου για εξελικτική ανάλυση λογισμικού, υλοποιήθηκε μια πλατφόρμα για την απρόσκοπτη ανάλυση της εξέλιξης αντικειμενοστρεφών συστημάτων γραμμένων στην γλώσσα Java. Η πλατφόρμα με όνομα SEAgle είναι προσβάσιμη από οποιαδήποτε συσκευή μέσω του διαδικτύου και επιτρέπει στους χρήστες της ανάλυση οποιουδήποτε δημόσιου αποθετηρίου λογισμικού ανοικτού κώδικα. To SEAgle υπολογίζει και προσφέρει μέσω δημόσιας διεπαφής προγραμματισμού εφαρμογών μια πληθώρα μετρικών από τρεις κατηγορίες: γράφου, πηγαίου κώδικα και δραστηριότητας αποθετηρίου.

Author(s):  
Bharti Bisht, Dr Parul Gandhi

In order to meet the fast software evolution, there is a call for the work on software development based process by reducing time as well as efforts. The aim of the development process should not only be developing software products and services but also focus on improving the quality of the particular software. Software Reusability can be considered as one of the solutions to achieve both objectives i.e. productivity as well as quality. There has been an evolution of various methods and techniques related to construction of reusable components over many years. Object-oriented approach also assures increased software reusability. It is easier to reuse object-oriented software rather than conventional software. The notion of reusability related to Object-oriented software can be achieved through inheritance which in turn contributes to development of reusable components. In this paper different metrics related to software reusability of Object-oriented software systems has been summarized and evaluated using Python. Three python-based programs are considered as datasets for this study-the first dataset depicts single-level inheritance, the second dataset depicts hierarchical inheritance whereas the third dataset depicts multilevel inheritance. This study shows more impact of multilevel inheritance on the reusability of Object-oriented software systems and also helped to understand the important role of metrics in evaluation of object-oriented systems.


2000 ◽  
Vol 147 (3) ◽  
pp. 61 ◽  
Author(s):  
V. Cortellessa ◽  
G. Iazeolla ◽  
R. Mirandola

2018 ◽  
Vol 6 (7) ◽  
pp. 530-534
Author(s):  
B. Nagaveni ◽  
A. Ananda Rao ◽  
P. Radhika Raju

1990 ◽  
Vol 33 (9) ◽  
pp. 142-159 ◽  
Author(s):  
Brian Henderson-Sellers ◽  
Julian M. Edwards

1998 ◽  
Vol 1 (1) ◽  
pp. 26-65 ◽  
Author(s):  
Elisa Bertino ◽  
Sabrina De Capitani Di Vimercati ◽  
Elena Ferrari ◽  
Pierangela Samarati

1997 ◽  
Vol 9 (4) ◽  
pp. 524-538 ◽  
Author(s):  
P. Samarati ◽  
E. Bertino ◽  
A. Ciampichetti ◽  
S. Jajodia

Sign in / Sign up

Export Citation Format

Share Document