Πώς να αποφύγετε προβλήματα λογισμικού
Miscellanea / / November 29, 2021
Σε αυτήν την ψηφιακή εποχή, πρέπει να έχετε ακούσει για τους γίγαντες των μέσων κοινωνικής δικτύωσης όπως το Facebook και το Twitter και πλατφόρμες ηλεκτρονικού εμπορίου όπως η Alibaba και η Amazon. Αυτοί οι διαδικτυακοί ιστότοποι βασίζονται σε διάφορα πακέτα λογισμικού για τη λειτουργία τους. Αυτά τα προγράμματα έχουν ειλικρινά αλλάξει τον τρόπο που εργαζόμαστε, σκεφτόμαστε και ζούμε.
Εξάλλου, πολλές συσκευές που παλαιότερα ήταν αποκλειστικά μηχανικής φύσης, τώρα ελέγχονται από λογισμικό. Για παράδειγμα, οι θερμοστάτες ήταν κάποτε ηλεκτρομηχανικές συσκευές. Ωστόσο, τώρα βασίζονται σε μεγάλο βαθμό στο λογισμικό για τη λειτουργία τους.
Ωστόσο, σφάλματα λογισμικού μπορεί να είναι αρκετά προβληματική, ειδικά με την αυξημένη εξάρτησή μας από αυτά για καθημερινές δραστηριότητες. Στην πραγματικότητα, υπήρξαν πολλές περιπτώσεις όπου το λογισμικό δεν ανταποκρίθηκε στον προορισμό του, οδηγώντας σε δυσάρεστα αποτελέσματα.
Σε αυτό το άρθρο, μιλάμε για 4 περιπτώσεις όπου η απόδοση του λογισμικού έχει χάσει σε μεγάλο βαθμό το σημάδι της και πώς να αποφύγετε τέτοια προβλήματα λογισμικού.
1. Διακοπή λειτουργίας 911 πολλαπλών πολιτειών των ΗΠΑ
Το 911 είναι μια κρίσιμη υπηρεσία, η οποία επιτρέπει στα άτομα να επικοινωνούν με το προσωπικό έκτακτης ανάγκης όποτε χρειάζεται. Κατά καιρούς, η επαφή με τους αποστολείς έκτακτης ανάγκης μέσω του 911 μπορεί κυριολεκτικά να κάνει τη διαφορά μεταξύ ζωής και θανάτου.
Ως εκ τούτου, ήταν πολύ η καταστροφή όταν στις 9 Απριλίου 2014, Η δρομολόγηση κλήσης 911 απέτυχε σε επτά πολιτείες των ΗΠΑ, συμπεριλαμβανομένων των Καλιφόρνια, Φλόριντα, Μινεσότα, Βόρεια Καρολίνα, Πενσυλβάνια, Νότια Καρολίνα και Ουάσιγκτον.
Αυτή η διακοπή προκλήθηκε από ένα σφάλμα κωδικοποίησης που μπορούσε να αποφευχθεί, το οποίο παρουσιάστηκε σε ένα κέντρο διαχείρισης κλήσεων έκτακτης ανάγκης στο Κολοράντο που ανήκε στην Intrado.
2. Απογείωση του στόλου της United Airlines
Τον Ιούλιο του 2015, η United Airlines αναγκάστηκε να καθηλώσει ολόκληρο τον στόλο της αεροσκάφους λόγω σφάλματος λογισμικού. Αυτό επηρέασε περισσότερες από 4.900 πτήσεις παγκοσμίως και άφησε πολλούς επιβάτες αποκλεισμένους στα αεροδρόμια και προφανώς απογοητευμένους.
Υπήρχε πιθανώς και οικονομικός αντίκτυπος, καθώς η αεροπορική εταιρεία θα έπρεπε να αποζημιώσει πολλούς επιβάτες για την ταλαιπωρία. Υπήρχαν επίσης πιθανώς αρκετές σημαντικές επαγγελματικές συναντήσεις που ακυρώθηκαν λόγω της γείωσης.
3. Δυσλειτουργία πεντάλ γκαζιού Toyota Camry
Τον Σεπτέμβριο του 2007, η Jean Bookout ταξίδευε στον Interstate Highway 69 στην Οκλαχόμα με την επιβάτη Barbara Schwarz, όταν αντιμετώπισε δυσκολίες ελέγχοντας το Toyota Camry της.
Προσπάθησε να σηκώσει τα πόδια της από το γκάζι αλλά το αυτοκίνητο συνέχισε να επιταχύνει. Το πεντάλ του φρένου δεν σταμάτησε το αυτοκίνητο και αναγκάστηκε να χρησιμοποιήσει το φρένο έκτακτης ανάγκης.
Δυστυχώς, αυτό έστειλε το αυτοκίνητο σε ένα ανάχωμα. Ο Schwarz πέθανε ως αποτέλεσμα και ο Bookout νοσηλεύτηκε για πέντε μήνες λόγω σοβαρών τραυματισμών.
Εικάζεται ότι το ατύχημα συνέβη λόγω πολλών ανεπάρκειων κωδικοποίησης που οδήγησαν στη συντριβή μιας εργασίας στην CPU του Camry. Αυτή η CPU θα έλεγχε έναν ασυνήθιστα τεράστιο αριθμό λειτουργιών, συμπεριλαμβανομένων της ανάφλεξης, του ελέγχου γκαζιού και του cruise control.
Ο κωδικός της Toyota έγινε ένα μπερδεμένο χάος μετά από πολλά χρόνια νέων κωδικών που στοιβάζονται σε παλιούς. Αυτό συνήθως αναφέρεται ως «κώδικας σπαγγέτι».
Ωστόσο, το ατύχημα του Bookout έφερε αυτό το ζήτημα στο φως και τόνισε τα ελαττώματα της Toyota στη διαδικασία λογισμικού της. Διαπιστώθηκε μάλιστα ότι υπήρχαν περισσότεροι από 10 εκατομμύρια τρόποι για πιθανή ανεπιθύμητη επιτάχυνση, με βάση τον τρόπο δομής του κώδικα της Toyota.
Βλάβη Nest Thermostat
Η Nest είναι μια εταιρεία, ιδιοκτησία της Alphabet, που κάνει έξυπνους θερμοστάτες. Αυτοί οι θερμοστάτες είναι αρκετά έξυπνοι και επιτρέπουν στους χρήστες να ελέγχουν τη θερμοκρασία στα σπίτια τους από τα smartphone τους.
Τον περασμένο χειμώνα, θερμοστάτες Nest αντιμετώπισε ένα πρόβλημα με τη μορφή μιας ελαττωματικής ενημέρωσης λογισμικού, η οποία προκάλεσε εξάντληση των μπαταριών τους. Δυστυχώς, αυτό το σφάλμα συνέβη στα μέσα του χειμώνα, αφήνοντας αρκετούς χρήστες χωρίς θερμότητα προσωρινά. Αυτό είναι σίγουρα κάτι που δεν θέλετε να συμβεί αυτή την εποχή του χρόνου.
Μια σύντομη ανάλυση θεμάτων λογισμικού
Προσεγγίσεις όπως ο σχεδιασμός βάσει μοντέλου και το TLA+ επιτρέπουν στους προγραμματιστές να αποκτήσουν μια ευρύτερη εικόνα του τρόπου λειτουργίας του λογισμικού τους.
Ο Brett Victor, ένας εξέχων ερευνητής υπολογιστών, πιστεύει ότι υπάρχει μια αποσύνδεση μεταξύ των προγραμματιστών και των προβλημάτων που προσπαθούν να λύσουν με κωδικούς.
Λόγω αυτής της αποσύνδεσης, γίνεται δύσκολο για τους προγραμματιστές να οραματιστούν τι προσπαθούν να βάλουν σε κωδικούς. Ο Victor πιστεύει ότι αυτός είναι ένας από τους παράγοντες που συμβάλλουν στο να είναι γεμάτο σφάλματα λογισμικού.
Ωστόσο, υπάρχει ελπίδα. Προσεγγίσεις όπως π.χ σχεδιασμός βάσει μοντέλου και TLA+ επιτρέπουν στους προγραμματιστές να αποκτήσουν μια ευρύτερη εικόνα του τρόπου λειτουργίας του λογισμικού τους.
Ο σχεδιασμός που βασίζεται σε μοντέλα, όπως υποδηλώνει το όνομα, επιτρέπει την ανάπτυξη λογισμικού μέσω οπτικών μοντέλων. Η TLA+, η συντομογραφία του Temporal Logic of Actions, είναι μια γλώσσα σχεδιασμένη για τη σύνταξη των προδιαγραφών ενός προγράμματος υπολογιστή. Αυτό που είναι υπέροχο με το TLA+ είναι ότι επιτρέπει εξαντλητικές δοκιμές και επαλήθευση του λογισμικού πριν δημοσιοποιηθεί.
Τόσο ο σχεδιασμός που βασίζεται σε μοντέλα όσο και το TLA+ έχουν ήδη αποδείξει την αξία τους. Τεχνολογίες Esterel, μια εταιρεία ανάπτυξης λογισμικού, χρησιμοποιεί σχεδιασμό που βασίζεται σε μοντέλα για να δημιουργήσει λογισμικό κρίσιμο για την ασφάλεια, ενώ το TLA+ έχει χρησιμοποιηθεί από Η Microsoft να διορθώσει ένα πιθανό καταστροφικό σφάλμα Xbox και από την Ευρωπαϊκή Διαστημική Υπηρεσία να ξαναγράψει τους κωδικούς για μια ανιχνευτή που προσγειώθηκε σε κομήτης.
Η διαδικασία γραφής κώδικα χαίρει μεγάλης εκτίμησης από τους προγραμματιστές. Πολλοί από αυτούς ενδιαφέρονται πολύ απλά από τη διαδικασία σύνταξης κωδίκων. Είναι, επομένως, μια πρόκληση να πείσουμε ορισμένους προγραμματιστές να αποδεχτούν προσεγγίσεις όπως ο σχεδιασμός βάσει μοντέλου και το TLA+. Αυτές οι προσεγγίσεις συχνά γίνονται αντιληπτές ως αυστηρά ακαδημαϊκές χωρίς βιωσιμότητα στον πραγματικό κόσμο. Ωστόσο, μια αλλαγή άποψης πρέπει να έρθει όσο το δυνατόν νωρίτερα.
Τελικές σκέψεις
Το λογισμικό χρησιμοποιείται όλο και περισσότερο σε εφαρμογές που απαιτούν ενσωματωμένες προφυλάξεις ασφαλείας. Καλύτερες μέθοδοι σχεδιασμού λογισμικού πρέπει να εισαχθούν σε όλους τους τομείς, καθώς τέτοιες εφαρμογές είναι ζωτικής σημασίας στη ζωή μας.
Διαδικασίες όπως ο αυτοματισμός βασίζονται σε μεγάλο βαθμό στο λογισμικό αυτές τις μέρες, αλλά ένα σφάλμα σε μια γραμμή κώδικα μπορεί να μας οδηγήσει σε σημαντικές αναποδιές, όπως δείχνουν οι παραπάνω περιπτώσεις.
Τώρα, φανταστείτε κάτι σαν Τεχνητή Νοημοσύνη (AI) να ενσωματώνεται σε αυτές τις εφαρμογές. Το AI είναι αρκετά τρομακτικό από μόνο του χωρίς σφάλματα λογισμικού. Προσθέστε σφάλματα στο μείγμα και δεν μπορείτε να πείτε τι θα μπορούσε να συμβεί.
Ωστόσο, υπάρχει μια ασημένια επένδυση εδώ. Με λίγη δουλειά και μερικά νέα εργαλεία, μπορούμε να φτιάξουμε καλύτερο λογισμικό και τεχνητή νοημοσύνη σχεδιάζοντάς το πιο σωστά και δοκιμάζοντάς το στα καρφιά του.
Ας ελπίσουμε ότι αυτό το κρίσιμο ζήτημα θα ληφθεί σοβαρά υπόψη από τις αρμόδιες αρχές, ώστε να μπορέσουμε να χρησιμοποιήσουμε το λογισμικό στο μέγιστο των δυνατοτήτων του, αλλά μόνο για να οικοδομήσουμε ένα ασφαλέστερο και πιο έξυπνο μέλλον.