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

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

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

## Στάδιο ανάπτυξης
Στο στάδιο ανάπτυξης ακολουθούνται τέσσερις φάσεις, ώστε το προϊόν να είναι αξιόπιστο όταν θα φτάσει στον καταναλωτή. Η Προ-άλφα όπου γίνεται ο μεγάλος όγκος της κωδικοποίησης του λογισμικού. Η Αλφα όπου γίνεται ο έλεγχος σφαλμάτων από τους δημιουργούς. Η Βήτα όπου γίνεται ο έλεγχος σφαλμάτων από κατά κανόνα έμπειρους καταναλωτές/χρήστες και τελικά η Υποψήφια κυκλοφορία, όπου θεωρείται ότι το λογισμικό είναι αρκετά αξιόπιστο για χρήση από το σύνολο των καταναλωτών.

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

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

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

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

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

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

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

### Υποψήφια κυκλοφορία
Είναι η τελική δοκιμαστική εκδοχη η οποία πιθανώς θα καταλήξει ως το τελικό προϊόν, εκτώς αν παρουσιαστούν σημαντικά σφάλματα. Σε αυτή τη φάση σταθεροποίησης του λογισμικού όλες οι λειτουργίες του έχουν ήδη σχεδιαστεί και ο κώδικας έχει σχεδόν ολοκληρωθεί. Η έκδοση 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). Έχει μειωμένο κόστος, λόγω μη ύπαρξης φυσικού μέσου, συσκευασίας και μεταφορικών.
## Στάδιο υποστήριξης
Το λογισμικό υπόκειται σε ενδελεχή έλεγχο για σφάλματα στις φάσεις *άλφα* και *βήτα*. Στην πράξη όμως, ανάλογα και το πόσο πολύπλοκο είναι, δεν επιτυγχάνεται ποτέ πλήρη αποσφαλμάτωση. Ακόμα και μετά την κυκλοφορία της «*σταθερής έκδοσης*», οι δημιουργοί του είναι υποχρεωμένοι να εκδίδουν διορθώσεις ή ακόμα λόγω ανταγωνιστικότητας να προσθέτουν βελτιώσεις και επιπλέον λειτουργικότητα. Σε αυτή τη φάση λέγεται ότι το λογισμικό είναι στο «*στάδιο υποστήριξης*» (αγγλ. 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

Κατηγορία:Ανάπτυξη λογισμικού