Πολλοί από εμάς έχουν μπει στον πειρασμό ή στην διαδικασία να συγκρίνουν διάφορα λογισμικά για να διαπιστώσουν ποιο είναι το καλύτερο.Η υπεροχή ενός λογισμικού σε σχέση με κάποιο άλλο μπορεί να καθοριστεί με βάση πλήθος κριτηρίων (τεχνικά χαρακτηριστικά,φιλικότητα στον χρήστη,κόστος συντήρησης , ελάχιστες απαιτήσεις λειτουργίας,φάσμα κάλυψης συγκεκριμένων αναγκών κλπ) που χρειάζονται πολλές παράγραφοι για να αναλυθούν .Υπάρχει όμως το τέλειο λογισμικό?Ακόμα και ο χαρακτηρισμός “τέλειο” είναι συζητήσιμος.Τι αποτελεί το τέλειο?Έχει παραχθεί?Και αν όχι γιατί?

Για το μεγαλύτερο μέρος της ανθρώπινης ιστορίας, δημιουργήσαμε κάθε προϊόν με το χέρι, και κάναμε το κάθε προϊόν λίγο καλύτερο από το προηγούμενο. Δηλαδή, οι πρόγονοί μας χρησιμοποιούσαν την φυσική και  συνεχή εξέλιξη των προϊόντων.

Αλλά κατά τη διάρκεια της βιομηχανικής επανάστασης, επινοήσαμε την ιδέα της μαζικής παραγωγής. Ξαφνικά ο σχεδιασμός έγινε πολύ πιο σημαντικός. Σχεδιαστικά λάθη δεν μπορούσαν να διορθωθούν άμεσα στην επόμενη παραγωγή προϊόντων, αλλά να τίθενται αμέσως σε χιλιάδες προϊόντα.

Τότε εφευρέθηκε το λογισμικό, κάνοντας τα πράγματα χειρότερα. Το λογισμικό ελαχιστοποιεί το κόστος παραγωγής θέτοντας ακόμα μεγαλύτερη πίεση στους σχεδιαστές. Αυτό οδήγησε σε δεκαετίες προσπαθειών μέχρι να τελειοποιηθεί το λογισμικό για πρώτη φορά. Εφηύραμε διαδικασίες, τυπικές μεθόδους, προδιαγραφές, περίπλοκα κριτήρια δοκιμών, γλώσσες μοντελοποίησης σχεδιασμού … όλα με στόχο την παραγωγή  σωστού λογισμικού  πριν από την μαζική παραγωγή του σε χιλιάδες αντίτυπα.

Με μεγάλες προσπάθειες από ακαδημαϊκούς ερευνητές, βιομηχανικά ερευνητικά εργαστήρια, και τους επαγγελματίες της βιομηχανίας, έχουμε σημειώσει πρόοδο προς την κατεύθυνση δημιουργίας σωστού λογισμικού. Το λογισμικό μας έχει βελτιωθεί αρκετά. Αλλά στην πραγματικότητα, οι προσπάθειες στην ανάπτυξη λογισμικού για την επίτευξη της τελειότητας είναι δονκιχωτική κλίση σε ανεμόμυλους, ενάντια στην βασική ανθρώπινη φύση.

Με απλά λόγια: Ο άνθρωπος δεν είναι εκ φύσεως καλός στο να είναι τέλειος!

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

Μεγάλα τμήματα της βιομηχανίας λογισμικού έχουν δει πρόσφατα τεράστιες αλλαγές στη διαδικασία ανάπτυξης. Web εφαρμογές, ενημερώσεις που παραδίδονται μέσω του διαδικτύου, τεχνολογία cloud,καθώς και η δυνατότητα να προωθούνται ενημερώσεις σε κινητές συσκευές που μας επιτρέπουν να αναβαθμίζουμε το λογισμικό σε καθημερινή ή ακόμα και σε ωριαία βάση. Δηλαδή, έχουμε την επιστροφή στις ρίζες μας, της συνεχής εξέλιξης, όπως ακριβώς και οι πρόγονοί μας έκαναν εδώ και χιλιετίες.

Η δημιουργία συχνών αναβαθμίσεων όπου θα δοκιμάζουμε κάτι, θα γίνεται ο εντοπισμός πιθανών προβλημάτων και στη συνέχεια θα γίνονται γρήγορα οι αλλαγές είναι μια φυσική ανθρώπινη διαδικασία που εφαρμόζεται κατά κόρον και στη βιομηχανία. Η Google π.χ εν μέρει δίνει έμφαση στον “γρήγορο καθορισμό” παρά στην “πρόληψη”, μέσα από την εφαρμογή ενός πολύ σύντομου εξελικτικού κύκλου (test-fix-update) [1].

Αυτή η προσέγγιση θα είναι ύποπτη για πολλούς ακαδημαϊκούς. Πολλοί έμαθαν την τέχνη σε ένα περιβάλλον όπου οι νέες εκδόσεις βγαίνουν κάθε 4 ή 5 χρόνια, και από δασκάλους που τόνιζαν την κρισιμότητα ασφαλούς λογισμικού, όπου εξελικτική test-fix-update διαδικασία θεωρείται επικίνδυνη (αν συντρίψουμε το αεροπλάνο, δεν περιμένουμε άλλη μια ευκαιρία!). Αλλά για ένα μεγάλο (και αυξανόμενο) τμήμα της βιομηχανίας λογισμικού, αυτή η διαδικασία λειτουργεί. Οι γοργοί ρυθμοί ανάπτυξης και εξέλιξης της τεχνολογίας αλλά και του περιβάλλοντος που ζούμε , επιβάλλουν ταχύτατους μηχανισμούς ενεργειών και διαρκής προσαρμογή στα νέα δεδομένα που διαμορφώνονται.Και ναι, αυτό έχει σοβαρό αντίκτυπο στο λογισμικό. Η συνεχής προσπάθεια όμως για την εξέλιξη, την καλύτερη προσέγγιση και την βελτίωση του λογισμικού κρίνεται απαραίτητη.Ίσως (?) να μην παραχθεί ποτέ το “τέλειο” λογισμικό.Αυτό που όμως δεν θα εκλείψει , είναι η προσπάθεια και το όραμα για την συνεχή βελτίωσή του.

 

[1] Patrick Copeland. Testing, Culture, and Infrastructure: Google’s Innovation Feature Factory (Keynote Address), proceedings of the 3rd International Conference on Software Testing, Verification and Validation, April 2010, IEEE Computer Society Press.



Ο σχολιασμός δεν είναι διαθέσιμος.