Κύκλος ζωής έκδοσης λογισμικού

Ο όρος κύκλος ζωής έκδοσης λογισμικού (αγγλ. software release life cycle) αναφέρεται στις φάσεις ανάπτυξης και ύπαρξης ενός λογισμικού. Ξεκινά από την σύλληψη της ιδέας και την μελέτη για τις απαιτήσεις και τις προδιαγραφές του. Ακολουθεί η υλοποίησή του, με την δημιουργία του κώδικα και την αποσφαλμάτωση ή βελτίωση του. Η διάθεση του τελικού προϊόντος στον καταναλωτή. Η υποστήριξή με ενημερώσεις (updates), οι οποίες βελτιώνουν την λειτουργικότητά του ή διορθώνουν σφάλματα (bugs). Και τέλος φτάνει στην απόσυρσή του, όταν αντικαθίσταται από άλλο λογισμικό, που εκμεταλλεύεται πληρέστερα τις νεότερες τεχνολογικές εξελίξεις. Ενώ η ακολουθία των φάσεων, είναι γενικά αποδεκτή, ο τρόπος εφαρμογής τους ποικίλει, ανάλογα με το είδος του λογισμικού και την συνολική προσέγγιση της ομάδας που κάνει την διαχείριση.

Ιστορία 
Παρόμοια ορολογία για τις φάσεις δοκιμών, όπως οι «alpha» και «beta», πρωτοχρησιμοποιήθηκε από την IBM την δεκαετία του 1950, για την ανάπτυξη των προϊόντων της (hardware). Τις είχε ονομάσει φάσεις A,B και C. «Α» φάση, ήταν η επεξεργασία της «ιδέας» του νέου προϊόντος, πριν αυτό ανακοινωθεί δημόσια. «B» φάση, ήταν η όλη απαιτούμενη εργασία και δοκιμασία του προϊόντος, πριν αυτό δοθεί για παραγωγή. Η φάση "C" ήταν η τελική δοκιμή πριν από τη γενική διαθεσιμότητα του προϊόντος στην αγορά. Όταν η IBM άρχισε την παραγωγή λογισμικού, ο όρος «alpha», αναφερόταν στην επεξεργασία και δοκιμή πριν την ανακοίνωση του και ο όρος «beta», στην διαδικασία μέχρι το προϊόν φτάσει να είναι έτοιμο για διάθεση. Η IBM σταμάτησε να χρησιμοποιεί την ορολογία «alpha/beta» την δεκαετία του 1960, αλλά ήδη είχε επικρατήσει στην τεχνολογία ανάπτυξης λογισμικού. Η IBM χρησιμοποίησε τον όρο «δοκιμή πεδίου» (αγγλ. "field test"), αντί για τον γνωστό σήμερα όρο "beta test", όταν η δοκιμή γίνεται από τους πελάτες.

Στάδιο ανάπτυξης 
Στο στάδιο ανάπτυξης ακολουθούνται τέσσερις φάσεις, ώστε το προϊόν να είναι αξιόπιστο όταν θα φτάσει στον καταναλωτή. Η Pre-Alpha όπου γίνεται ο μεγάλος όγκος της κωδικοποίησης του λογισμικού. Η Alpha όπου γίνεται ο έλεγχος σφαλμάτων από τους δημιουργούς. Η Beta όπου γίνεται ο έλεγχος σφαλμάτων από κατά κανόνα έμπειρους καταναλωτές/χρήστες και τελικά η Release Candidate, όπου θεωρείται ότι το λογισμικό είναι αρκετά αξιόπιστο για χρήση από το σύνολο των καταναλωτών.

Pre-Alpha 
Η φάση Pre-Alpha χαρακτηρίζει όλες τις διαδικασίες που συντελούνται κατά την διάρκεια της αρχικής ανάπτυξης του προϊόντος. Οι διαδικασίες αυτές περιλαμβάνουν συγκέντρωση και ανάλυση απαιτήσεων (Requirements analysis), την σχεδίαση λογισμικού (Software design), την ανάπτυξη λογισμικού (Software development) και την δοκιμή των επιμέρους κομματιών του (Unit testing). Οι διάφορες λειτουργίες του δεν είναι έτοιμες και το προϊόν δεν είναι έτοιμο να χρησιμοποιηθεί από άλλους εκτός από την ομάδα που το αναπτύσσει.

Alpha 
Η φάση Alpha του κύκλου έκδοσης είναι η πρώτη φάση κατά την οποία αρχίζει η δοκιμή του λογισμικού. Σε αυτή τη φάση όλη η προβλεπόμενη λειτουργικότητα και οι προδιαγραφές έχουν κωδικοποιηθεί, το προϊόν είναι έτοιμο για δοκιμή. Σε αυτή τη φάση ελέγχου οι προγραμματιστές χρησιμοποιούν τεχνικές «Διαφανούς Κουτιού», για να εντοπίσουν τα σφάλματα και να καταστήσουν το λογισμικό όσο πιο σταθερό και αξιόπιστο γίνεται. Ακολουθεί ο έλεγχος με δοκιμές «Μαύρου Κουτιού», η οποία γίνεται από διαφορετική ομάδα. Αν το λογισμικό παραδοθεί για έλεγχο «Μαύρου Κουτιού», σε έναν περιορισμένο αριθμό χρηστών (π.χ. στους εργαζόμενους μιας επιχείρησης ή οργανισμού), τότε λέμε ότι γίνεται χρήση της «έκδοσης alpha» του λογισμικού.

Συνήθως το λογισμικό σε αυτή τη φάση είναι πολύ ασταθές και μπορεί να προκαλέσει εκτός από πρόβλημα στην χρήση του, πλήρη κατάρρευση και απώλεια δεδομένων του χρήστη. Η έκδοση Alpha ενδέχεται να μην περιλαμβάνει όλες τις λειτουργίες που προβλέπονται για την τελική έκδοση. Δεν συνηθίζεται η δημοσίευση του λογισμικού σε αυτή την φάση, ιδίως όταν αυτό εκδίδεται με άδεια περιορισμένης χρήσης. Αντίθετα, πολλές εφαρμογές ανοιχτού κώδικα παρέχουν συχνά κάποιες Alpha εκδόσεις είτε έτοιμες για χρήση είτε μόνο τον πηγαίο κώδικά τους. Στην περίπτωση κατασκευής εξατοµικευµένου λογισµικού (custom software) ενδείκνυται σε αυτή τη φάση μία πρόχειρη παρουσίαση και αποδοχή από τον πελάτη για την περίπτωση δομικών διορθώσεων.

Beta 
Τις Alpha εκδόσεις ακολουθούν οι Beta, που είναι γνωστές και σαν betaware λογισμικό. Σε αυτή τη φάση το λογισμικό για πρώτη φορά γίνεται διαθέσιμο στους πραγματικούς χρήστες και σε ένα περιορισμένο αριθμό πελατών. Το λογισμικό στην φάση αυτή περιλαμβάνει όλες τις προβλεπόμενες λειτουργίες του, όμως δεν είναι ακόμα έτοιμο, γιατί πιθανότατα περιέχει αρκετά σφάλματα (bugs). Μεγάλος αριθμός σφαλμάτων εντοπίζεται στην φάση Alpha, αλλά στην φάση Beta δοκιμάζεται κάτω από πραγματικές συνθήκες, από περισσότερους χρήστες και μεγαλύτερο όγκο δεδομένων, με αποτέλεσμα να εμφανίζονται επιπλέον σφάλματα, προβλήματα στις επιδόσεις και ασταθείς συμπεριφορές του συστήματος. Δεν αποκλείεται η κατάρρευση του συστήματος και η απώλεια δεδομένων. Στην περίπτωση που το λογισμικό προορίζεται για το ευρύ κοινό και πρέπει να λειτουργήσει σε διαφορετικές πλατφόρμες (μηχανές, λειτουργικά συστήματα, κλπ), που η κάθε μια μπορεί να έχει διαφορετικές παραμετροποιήσεις, τότε επιβάλλεται η beta έκδοση να δοκιμαστεί από όσο το δυνατόν περισσότερους χρήστες, το οποίο είναι εφικτό λόγω του Διαδικτύου. Ουσιαστικά πρόκειται για σφάλματα που δεν μπορούν να εντοπιστούν διαφορετικά, γιατί προκαλούνται από άλλα προγράμματα ή από το λειτουργικό σύστημα.

Υπάρχουν άτομα ή οργανισμοί που δοκιμάζουν την έκδοση αυτή και ονομάζονται δοκιμαστές Beta (Beta testers)- συνήθως είναι τωρινοί ή μελλοντικοί πελάτες της εταιρείας που αναπτύσσει το λογισμικό. Αυτοί είναι πρόθυμοι να δοκιμάσουν την ασταθή έκδοση χωρίς ανταμοιβή και καμιά φορά λαμβάνουν την τελική έκδοση δωρεάν ή με κάποια έκπτωση. Δουλειά τους είναι να δοκιμάσουν το λογισμικό και να αναφέρουν στην ομάδα ανάπτυξης τα προβλήματα που αντιμετώπισαν. Η Beta έκδοση μπορεί να χρησιμοποιηθεί και ως δείγμα για την παρουσίαση του ανερχόμενου προϊόντος και των χαρακτηριστικών του, σε υποψήφιους πελάτες.

Beta διαρκείας 
Επειδή η χρήση του Διαδικτύου διευκολύνει την γρήγορη και ανέξοδη διανομή λογισμικού, αυξάνονται οι περιπτώσεις όπου εταιρείες διατηρούν το λογισμικό αρκετό καιρό στη φάση Beta με σκοπό να συνεχίσουν να προσθέτουν λειτουργίες και δυνατότητες (Perpetual Beta). Το «beta διαρκείας», λόγω των συνεχών τροποποιήσεων, εύκολα θα μπορούσε να χαρακτηριστεί σαν «alpha έκδοση» της πρό-Διαδικτύου εποχής. Τον Φεβρουάριο του 2005, ο ιστότοπος τεχνολογικών ειδήσεων ZDNet, δημοσίευσε ένα άρθρο σχετικά με το «beta διαρκείας», που συχνά διαρκεί χρόνια, δίνοντας την εντύπωση, ότι το λογισμικό είναι σε συνεχή κατάσταση παραγωγής. Στο άρθρο αυτό παρουσίαζε σαν παραδειγματα το Gmail και το Google News, που βρισκόταν σε beta για μεγάλο χρονικό διάστημα, παρά το γεγονός ότι χρησιμοποιούταν ευρέως. Τελικά, το Google News βγήκε από την κατάσταση beta τον Ιανουάριο του 2006 και αργότερα, τον Ιούλιο του 2009, το Google Apps, συμπεριλαμβανομένου και του Gmail. Αυτή η πολιτική επιτρέπει στον δημιουργό του λογισμικού να καθυστερεί την πλήρη υποστήριξη και την ανάληψη της ευθύνης των προβλημάτων που είναι σε εκκρεμότητα. Από την διάθεση των Windows 8, η Microsoft δεν αποκαλεί το λογισμικό της beta, αλλά «προεπισκόπηση». Η Microsoft, μετά την έναρξη το 2014, του «Προγράμματος Windows Insider», παρακινεί τους πελάτες της να γίνουν μέλη της «κοινότητας Insider», ώστε να λαμβάνουν όλες τις τελευταίες εκδόσεις και να ανταποκρίνονται με σχόλια και προτάσεις για βελτίωση.

Ανοιχτό και κλειστό Beta 
Κλειστό Beta σημαίνει ότι η δοκιμαστική έκδοση είναι προσβάσιμη από ένα στενό κύκλο προσώπων.Έτσι τα άτομα για να αποκτήσουν πρόσβαση πρέπει να λάβουν πρόσκληση από τους υπεύθυνους (συνήθως μέσω ηλεκτρονικού ταχυδρομείου). Αντίθετα, το ανοιχτό Beta μπορούν να το δοκιμάσουν είτε χρήστες ενός ευρέος περιβάλλοντος είτε όλοι οι ενδιαφερόμενοι.

Release candidate 
Είναι η τελική δοκιμαστική έκδοση η οποία πιθανώς θα καταλήξει ως το τελικό προϊόν, εκτώς αν παρουσιαστούν σημαντικά σφάλματα. Σε αυτή τη φάση σταθεροποίησης του λογισμικού όλες οι λειτουργίες του έχουν ήδη σχεδιαστεί και ο κώδικας έχει σχεδόν ολοκληρωθεί. Η έκδοση RC έχει ένα τελικό στάδιο στο οποίο οι προγραμματιστές έχουν συμφωνήσει να μην προσθέσουν νέο κώδικα στο πρόγραμμα, όμως συνεχίζουν να τροποποιούν τον ήδη υπάρχοντα κώδικα προκειμένου να διορθώσουν λάθη. Όταν διορθωθούν, είτε εκδίδεται μια νέα έκδοση RC είτε κατευθείαν η τελική, σταθερή έκδοση του λογισμικού.

Στάδιο έκδοσης 
Αφού περάσει τα προηγούμενα στάδια δοκιμών και βελτιώσεων, το λογισμικό είναι έτοιμο για κυκλοφορία και αυτή η τελική κατάστασή του λέγεται «σταθερή έκδοση» (αγγλ. stable release ή stable edition).

Γενική διαθεσιμότητα 
Η γενική διαθεσιμότητα (αγγλ. General availability - GA) είναι το στάδιο προετοιμασίας για την εμπορία του λογισμικού, κυρίως όταν αυτό πρόκειται να διατεθεί από τα καταστήματα μέσω κάποιας συσκευασίας. Γίνονται οι τελευταίες εργασίες από το εμπορικό τμήμα (marketing) και όλες οι εμπορικές τακτοποιήσεις σε τοπικό και αν είναι απαραίτητο σε παγκόσμιο επίπεδο. Οριστικοποιούνται οι αναγκαίες προσαρμογές και συμμορφώσεις τοπικότητας (γλώσσα, περιοχή) του προϊόντος, όπως και τα ανάλογα εγχειρίδια χρήσης (manuals). Μετά από αυτές τις διευθετήσεις, το λογισμικό είναι έτοιμο για διάθεση στον καταναλωτή.

Προώθηση στην Αγορά / Παραγωγή 
Προώθηση στην Αγορά /  Παραγωγή (αγγλ. Release to Μarketing / Μanufacturing, RTM). Είναι η φάση που το τελικό προϊόν γίνεται διαθέσιμο στον χρήστη επίσημα. Ο όρος RTM χαρακτηρίζει την κατάσταση του λογισμικού, ότι δηλαδή αυτό είναι αρκετά υψηλής ποιότητας ώστε να χρησιμοποιηθεί από το ευρύ κοινό και δεν υποδηλώνει τον τρόπο διάθεσής του, που μπορεί να είναι Διαδικτυακά ή με μαγνητικά και οπτικά μέσα.

Προώθηση στο Διαδίκτυο 
Η έκδοση του λογισμικού που γίνεται διαθέσιμη μέσω του Διαδικτύου (αγγλ. Release to Web ή Web release, RTW). Αυτή η μέθοδος διανομής γίνεται όλο και πιο συνήθης, όσο αυξάνεται η χρήση του Διαδικτύου, και επιτυγχάνεται είτε επιγραμμικά (online), είτε είναι Διαδικτυακή εφαρμογή (web application). Έχει μειωμένο κόστος, λόγω μη ύπαρξης φυσικού μέσου, συσκευασίας και μεταφορικών.

Στάδιο υποστήριξης 
Το λογισμικό υπόκειται σε ενδελεχή έλεγχο για σφάλματα στις φάσεις alpha και beta. Στην πράξη όμως, ανάλογα και το πόσο πολύπλοκο είναι, δεν επιτυγχάνεται ποτέ πλήρη αποσφαλμάτωση. Ακόμα και μετά την κυκλοφορία της «σταθερής έκδοσης», οι δημιουργοί του είναι υποχρεωμένοι να εκδίδουν διορθώσεις ή ακόμα λόγω ανταγωνιστικότητας να προσθέτουν βελτιώσεις και επιπλέον λειτουργικότητα. Σε αυτή τη φάση λέγεται ότι το λογισμικό είναι στο «στάδιο υποστήριξης» (αγγλ. support stage).

Τρόποι 
Οι δημιουργοί, σε αυτό το στάδιο, κυκλοφορούν μικρές «ενημερώσεις» (αγγλ. updates), που είναι «πρόχειρες διορθώσεις» (αγγλ. patches) ή μεγάλες που λέγονται «πακέτα υπηρεσιών υποστήριξης» (αγγλ. service packs). Μεγάλες τροποποιήσεις μπορούν να θεωρηθούν «ενδιάμεσες εκδόσεις». Σε κάποιες κατηγορίες λογισμικών, από την φύση τους είναι απαραίτητες οι συχνές ενημερώσεις, όπως στα προγράμματα προστασίας από ιούς (αγγλ. anti-virus).

Κόστος 
Για τις βελτιώσεις κάποιες φορές χρεώνεται ο κατασκευαστής, ιδίως αν το λογισμικό είναι εξατομικευμένο (custom). Ειδικά στα εξατομικευμένα συνηθίζεται η συμφωνία της «μετα την πώληση υποστήριξης» (αγγλ. after sales support), η οποία χρεώνεται στον καταναλωτή ετησίως. Στην περίπτωση που ο κατασκευαστής θέλει το λογισμικό του να είναι ανταγωνιστικό στην αγορά, επιζητά τις προτάσεις βελτίωσης του καταναλωτή, οπότε οι βελτιώσεις προσφέρονται δωρεάν, παρακινώντας τον με αυτό τον τρόπο να συμβάλει στην βελτίωσή του. Η ύπαρξη του Διαδικτύου συντελεί, ώστε όλα αυτά να γίνονται ευκολότερα και με μικρότερο κόστος.

Στάδιο εγκατάλειψης 
 Αυτό το στάδιο λέγεται «τέλος ζωής λογισμικού» (αγγλ. end-of-life) ή το λογισμικό αποκαλείται «εγκαταλελειμένο» (αγγλ. abandonware). Κυρίως λόγω της δημιουργίας νέου, εντελώς διαφορετικού προϊόντος, που καλύπτει σε λειτουργικότητα το υπάρχον, ο κατασκευαστής εγκαταλείπει την υποστήριξη του και διακόπτει την πώλησή του. Βέβαια αυτής της ενέργειας προηγείται ανακοίνωση, που γίνεται ένα εύλογο χρονικό διάστημα πριν, και δεδομένης της κυκλοφορίας στην αγορά του νέου λογισμικού, που θα το αντικαταστήσει. Ο χρήσης μπορεί να συνεχίσει να το χρησιμοποιεί, όμως με δική του ευθύνη στην περίπτωση δυσλειτουργίας ή και κατάρρευσης. Αυτό το στάδιο του λογισμικού διαρκεί όσο ο χρήστης συνεχίζει να το χρησιμοποιεί, κάτι που εξαρτάται από την γενική βελτίωση της τεχνολογίας.

Σε κάποια λογισμικά αυτό το στάδιο αναγκαστικά είναι πολύ μικρό ή ανύπαρκτο, όπως είναι στα προγράμματα προστασίας από ιούς και κακόβουλες ενέργειες.

Σημειώσεις

Παραπομπές

Πηγές 
Release To Manufacturing
Release To Web
Development Stages 
Free Software Project Management HOWTO
Software Release Decisions
A Methodology to Support Software Release Decisions
Software Testing Life Cycle
Semantic versioning

Ανάπτυξη λογισμικού