.
Η συντήρηση λογισμικού στη μηχανική λογισμικού είναι η τροποποίηση ενός προϊόντος λογισμικού μετά την παράδοση για τη διόρθωση σφαλμάτων, τη βελτίωση της απόδοσης ή άλλων χαρακτηριστικών.
Μια κοινή αντίληψη για τη συντήρηση είναι ότι περιλαμβάνει απλώς την επιδιόρθωση ελαττωμάτων. Ωστόσο, μια μελέτη έδειξε ότι πάνω από το 80% της προσπάθειας συντήρησης χρησιμοποιείται για μη διορθωτικές ενέργειες. Αυτή η αντίληψη διαιωνίζεται από τους χρήστες που υποβάλλουν αναφορές προβλημάτων που στην πραγματικότητα είναι βελτιώσεις λειτουργικότητας στο σύστημα . Πιο πρόσφατες μελέτες τοποθετούν το ποσοστό επιδιόρθωσης σφαλμάτων πιο κοντά στο 21%.
Ιστορία
Η συντήρηση λογισμικού και η εξέλιξη των συστημάτων αναφέρθηκε για πρώτη φορά από τον Meir M. Lehman το 1969. Σε μια περίοδο είκοσι ετών, η έρευνά του οδήγησε στη διατύπωση των νόμων του Lehman (Lehman 1997). Τα βασικά ευρήματα της έρευνάς του καταλήγουν στο συμπέρασμα ότι η συντήρηση είναι πραγματικά εξελικτική εξέλιξη και ότι οι αποφάσεις συντήρησης βοηθούνται από την κατανόηση του τι συμβαίνει στα συστήματα (και στο λογισμικό) με την πάροδο του χρόνου. Ο Lehman έδειξε ότι τα συστήματα συνεχίζουν να εξελίσσονται με την πάροδο του χρόνου. Καθώς εξελίσσονται, γίνονται πιο πολύπλοκα, εκτός εάν ληφθούν κάποια μέτρα όπως η αναδιαμόρφωση κώδικα για τη μείωση της πολυπλοκότητας. Στα τέλη της δεκαετίας του 1970, μια διάσημη και ευρέως αναφερόμενη έρευνα από τους Lientz και Swanson, αποκάλυψε το πολύ υψηλό κλάσμα του κόστους του κύκλου ζωής που δαπανόταν για συντήρηση.
Η έρευνα έδειξε ότι περίπου το 75% της προσπάθειας συντήρησης αφορούσε τους δύο πρώτους τύπους και η διόρθωση σφαλμάτων καταναλώθηκε περίπου 21%. Πολλές μεταγενέστερες μελέτες υποδηλώνουν παρόμοιο μέγεθος προβλήματος. Μελέτες δείχνουν ότι η συμβολή των τελικών χρηστών είναι ζωτικής σημασίας κατά τη συλλογή και ανάλυση δεδομένων νέων απαιτήσεων. Αυτή είναι η κύρια αιτία οποιουδήποτε προβλήματος κατά την εξέλιξη και τη συντήρηση του λογισμικού. Η συντήρηση λογισμικού είναι σημαντική επειδή καταναλώνει μεγάλο μέρος του συνολικού κόστους του κύκλου ζωής και επίσης η αδυναμία αλλαγής λογισμικού γρήγορα και αξιόπιστα σημαίνει ότι χάνονται επιχειρηματικές ευκαιρίες.
Σημασία συντήρησης λογισμικού
Τα βασικά ζητήματα συντήρησης λογισμικού είναι διαχειριστικά και τεχνικά. Τα θέματα διαχείρισης περιλαμβάνουν την ευθυγράμμιση με τις προτεραιότητες των πελατών, τη στελέχωση, την ανάθεση ευθυνών και την εκτίμηση του κόστους. Τα τεχνικά ζητήματα περιλαμβάνουν: περιορισμένη κατανόηση, ανάλυση επιπτώσεων, δοκιμές και μέτρηση συντηρησιμότητας.
Η συντήρηση λογισμικού είναι μια ευρεία δραστηριότητα που περιλαμβάνει διόρθωση σφαλμάτων, βελτιώσεις δυνατοτήτων, αφαίρεση απαρχαιωμένων δυνατοτήτων και βελτιστοποίηση. Επειδή η αλλαγή είναι αναπόφευκτη, πρέπει να αναπτυχθούν μηχανισμοί για την αξιολόγηση, τον έλεγχο και την πραγματοποίηση τροποποιήσεων.
Οποιαδήποτε εργασία γίνεται σε λογισμικό μετά την ανάπτυξή του θεωρείται συντήρηση. Η συντήρηση διατηρεί την αξία του λογισμικού με την πάροδο του χρόνου. Η αξία μπορεί να βελτιωθεί με τη διεύρυνση της πελατειακής βάσης, την ικανοποίηση νέων και πρόσθετων απαιτήσεων, την ευκολότερη χρήση, την αποτελεσματικότητα και τη χρήση νεότερης τεχνολογίας. Η συντήρηση μπορεί να διαρκέσει δεκαετίες, ενώ η αρχική ανάπτυξη είναι συνήθως λιγότερο από 3 χρόνια.
Σχεδιασμός συντήρησης λογισμικού
Αναπόσπαστο μέρος του λογισμικού είναι η συντήρηση, η οποία απαιτεί την κατασκευή ενός ακριβούς σχεδίου συντήρησης κατά την ανάπτυξη λογισμικού. Θα πρέπει να προσδιορίζει πώς οι χρήστες θα ζητούν τροποποιήσεις ή θα αναφέρουν προβλήματα. Ο προϋπολογισμός θα πρέπει να περιλαμβάνει εκτιμήσεις πόρων και κόστους και θα πρέπει να ληφθεί νέα απόφαση για την ανάπτυξη κάθε νέου χαρακτηριστικού συστήματος και των ποιοτικών στόχων του. Η συντήρηση λογισμικού, η οποία μπορεί να διαρκέσει για 5+ χρόνια (ή ακόμα και δεκαετίες) μετά τη διαδικασία ανάπτυξης, απαιτεί ένα αποτελεσματικό σχέδιο που μπορεί να αντιμετωπίσει το εύρος της συντήρησης λογισμικού, την προσαρμογή της διαδικασίας μετά την παράδοση/ανάπτυξη, τον προσδιορισμό του ποιος θα παρέχει συντήρηση και εκτίμηση του κόστους του κύκλου ζωής.
Διαδικασίες συντήρησης λογισμικού
Αυτή η ενότητα περιγράφει τις έξι διαδικασίες συντήρησης λογισμικού ως εξής:
Εφαρμογή - προετοιμασία λογισμικού και δραστηριότητες μετάβασης, όπως η δημιουργία του σχεδίου συντήρησης. την προετοιμασία για την αντιμετώπιση προβλημάτων που εντοπίστηκαν κατά την ανάπτυξη· και η παρακολούθηση της διαχείρισης της διαμόρφωσης του προϊόντος.
Ανάλυση προβλημάτων και τροποποιήσεων - Τα αιτήματα και τα προβλήματα επιβεβαιώνονται (αναπαράγονται), αναλύονται και διερευνώνται. Λύσεις προτείνονται και τεκμηριώνονται. Λαμβάνεται εξουσιοδότηση για την εφαρμογή τροποποιήσεων.
Υλοποίηση τροποποίησης - Ο κώδικας λογισμικού, τα δεδομένα και/ή οι ρυθμίσεις παραμέτρων ενημερώνονται, μεταγλωττίζονται και αναπτύσσονται εκ νέου.
Αποδοχή τροποποίησης - το άτομο που υπέβαλε το αίτημα χειρίζεται/δοκιμάζει το λογισμικό για να επιβεβαιώσει ότι το ζήτημα έχει επιλυθεί.
Η μετεγκατάσταση (μετάβαση πλατφόρμας, για παράδειγμα) είναι εξαιρετική και δεν αποτελεί μέρος των καθημερινών εργασιών συντήρησης. Εάν το λογισμικό πρέπει να μεταφερθεί σε άλλη πλατφόρμα χωρίς καμία αλλαγή στη λειτουργικότητα, αυτή η διαδικασία θα χρησιμοποιηθεί και μια ομάδα έργου συντήρησης είναι πιθανό να ανατεθεί σε αυτήν την εργασία.
Απόσυρση απαρχαιωμένων/αντικατασταθέντων στοιχείων λογισμικού. Αυτό, συνήθως, δεν συμβαίνει σε καθημερινή βάση.
Υπάρχει ένας αριθμός διεργασιών, δραστηριοτήτων και πρακτικών που είναι μοναδικές για τους συντηρητές, για παράδειγμα:
Μετάβαση: μια ελεγχόμενη και συντονισμένη ακολουθία δραστηριοτήτων κατά την οποία ένα σύστημα μεταφέρεται σταδιακά από τον προγραμματιστή στον συντηρητή. Στην ιδανική περίπτωση, θα πρέπει να περιλαμβάνει μια μεταφορά γνώσης (KT) που θα πραγματοποιείται κατά τη διάρκεια μιας τυπικής παράδοσης.
Συμφωνίες επιπέδου υπηρεσιών (SLA) και εξειδικευμένες (συγκεκριμένες για τον τομέα) συμβάσεις συντήρησης που διαπραγματεύονται οι συντηρητές
Γραφείο βοήθειας αιτήματος τροποποίησης και αναφοράς προβλημάτων: μια διαδικασία αντιμετώπισης προβλημάτων που χρησιμοποιείται από τους συντηρητές για την ιεράρχηση, τεκμηρίωση και δρομολόγηση αιτημάτων.
Κατηγορίες συντήρησης λογισμικού
Ε.Β. Ο Swanson αρχικά προσδιόρισε τρεις κατηγορίες συντήρησης: διορθωτική, προσαρμοστική και τελειωτική.[8] Το πρότυπο IEEE 1219 αντικαταστάθηκε τον Ιούνιο του 2010 από το P14764.[9] Από τότε έχουν ενημερωθεί και το ISO/IEC 14764 παρουσιάζει:
Διορθωτική συντήρηση: Αντιδραστική τροποποίηση ενός προϊόντος λογισμικού που πραγματοποιείται μετά την παράδοση για τη διόρθωση προβλημάτων που ανακαλύφθηκαν. Η διορθωτική συντήρηση μπορεί να αυτοματοποιηθεί με αυτόματη διόρθωση σφαλμάτων.
Προσαρμοστική συντήρηση: Τροποποίηση ενός προϊόντος λογισμικού που πραγματοποιείται μετά την παράδοση για να διατηρείται ένα προϊόν λογισμικού χρησιμοποιήσιμο σε αλλαγμένο ή μεταβαλλόμενο περιβάλλον.
Τέλεια συντήρηση: Τροποποίηση ενός προϊόντος λογισμικού μετά την παράδοση για βελτίωση της απόδοσης ή της δυνατότητας συντήρησης.
Προληπτική συντήρηση: Τροποποίηση ενός προϊόντος λογισμικού μετά την παράδοση για τον εντοπισμό και τη διόρθωση λανθάνουσας βλάβης στο προϊόν λογισμικού προτού καταστούν αποτελεσματικά σφάλματα.
Υπάρχει επίσης η έννοια της συντήρησης πριν από την παράδοση/προ-έκδοση που είναι όλα τα καλά πράγματα που κάνετε για να μειώσετε το συνολικό κόστος ιδιοκτησίας του λογισμικού. Πράγματα όπως η συμμόρφωση με πρότυπα κωδικοποίησης που περιλαμβάνουν στόχους συντήρησης λογισμικού. Η διαχείριση της σύζευξης και της συνοχής του λογισμικού. Η επίτευξη των στόχων υποστήριξης λογισμικού (για παράδειγμα SAE JA1004, JA1005 και JA1006). Ορισμένα ακαδημαϊκά ιδρύματα πραγματοποιούν έρευνα για να ποσοτικοποιήσουν το κόστος της συνεχούς συντήρησης λογισμικού λόγω της έλλειψης πόρων, όπως εγγράφων σχεδιασμού και εκπαίδευσης και πόρων κατανόησης συστήματος/λογισμικού (πολλαπλασιάστε το κόστος κατά περίπου 1,5-2,0 όπου δεν υπάρχει διαθέσιμα δεδομένα σχεδιασμού).
Hellenica World - Scientific Library
Από τη ελληνική Βικιπαίδεια http://el.wikipedia.org . Όλα τα κείμενα είναι διαθέσιμα υπό την GNU Free Documentation License