Zanim zaczniemy, ważne jest, aby powiedzieć, że Twoje obawy nie są irracjonalne. Gdyby tak się stało lub gdyby systemy sterowania twojego samolotu uległy awarii w inny sposób w niebezpieczny sposób, twoje życie naprawdę byłoby w niebezpieczeństwie.
Nie jesteś pierwszą osobą, która pomyślała o tym. . Z tego powodu mamy kategorię systemów sterowania, które technicznie opisujemy jako związane z bezpieczeństwem , i istnieje cała gałąź inżynierii zwana inżynierią bezpieczeństwa poświęcone formalnej ocenie tych systemów i próbom zapobiegania wypadkom. Obejmuje to systemy sterowania samolotem, ale także przeciwblokujące hamulce, urządzenia medyczne i wszelkie inne systemy, w których ludzie mogą zostać zranieni w wyniku nieprawidłowego działania. Stopień, w jakim ludzie mogą zostać w ten sposób skrzywdzeni, jest formalnie oceniany jako Poziom nienaruszalności bezpieczeństwa na podstawie ryzyka. Ryzyko to kombinacja prawdopodobieństwa zdarzenia, złego wyniku oraz tego, czy zaangażowane osoby mogą podjąć jakiekolwiek działania łagodzące, i jest oceniane pod kątem wszystkich możliwych nieprawidłowości w zachowaniu systemu związanego z bezpieczeństwem.
Pamiętaj, że ta ocena może nie być tak intuicyjna, jak myślisz. Kiedyś pracowałem nad systemem dozowania plew i pochodni do samolotów wojskowych. Można by pomyśleć, że ryzyko braku środków zaradczych i zestrzelenia pilota byłoby twoim głównym ryzykiem - ale ocena bezpieczeństwa (zastosowaliśmy FMEA) wykazała, że pilot miał inne opcje łagodzące, takie jak zbroja i fotel wyrzutnika, zestrzelenie to szansa, którą już zaakceptowali, kiedy podjęli pracę, a ryzyko, że rozbijający się samolot uderzy w budynki, było znikome i coś, co zostało już instytucjonalnie zaakceptowane jako część posiadania sił powietrznych. Najpoważniejszym zagrożeniem było w rzeczywistości niewypalenie systemu podczas przeładowywania go przez zbrojmistrza, ponieważ wtedy z bliskiej odległości trafiali w głowę salwą 36 nabojów do strzelby. Płatnerz nie zgodził się skorzystać z tej szansy i nie było praktycznego sposobu, aby ich chronić. W rezultacie nasz system musiał domyślnie nie uruchamiać się, jeśli były jakieś rozbieżności.
Istnieje wiele sposobów zapewnienia niezawodności. Najpopularniejsza jest redundancja. Możesz mieć wiele czujników w wielu lokalizacjach, więc system zawsze może ustalić, co się dzieje, jeśli jeden (lub może więcej) zawiedzie. Zwykle jest wiele siłowników dla ważnych powierzchni lotu lub wiele powierzchni, na których statek powietrzny może zachować kontrolę, jeśli jeden lub więcej zostanie uszkodzonych. Samoloty pasażerskie na ogół mają również wiele silników i wiele zbiorników paliwa, które można odizolować od siebie w przypadku uszkodzenia. W wielu przypadkach może istnieć wiele systemów sterowania, które „głosują” na właściwe działanie, więc jedna niesprawna jednostka zostanie zignorowana. W skrajnym przypadku każdy system sterowania mógł być nawet zaprogramowany przez inny zespół programistów, więc jest bardzo mało prawdopodobne, że błąd w oprogramowaniu jednego zespołu będzie obecny w oprogramowaniu innego zespołu. I mogą istnieć inne systemy zapasowe, takie jak mechaniczna kontrola.
Kolejną dobrą metodą łagodzenia skutków jest szkolenie. Jest całkowicie dopuszczalne, że coś pójdzie nie tak, jeśli ludzie, którzy go obsługują, są w stanie poradzić sobie z tą awarią i kontynuować pracę. Ważne jest, aby nie lekceważyć tego, jak dobrzy potrafią być ludzie. Ludzie mogą również powodować awarie, więc szkolenie może również polegać na powiedzeniu im „nie rób tego”. Duże samoloty stosunkowo wolno reagują na sterowanie, więc piloci dość często mogą nadmiernie poprawiać i pogarszać sytuację. W przypadku niektórych samolotów komercyjnych standardową reakcją, jakiej uczą się piloci w przypadku niestabilności, jest puszczenie drążka i umożliwienie dronowi poprawienia się.
Warto zauważyć, że oba te czynniki są powodem, dla którego Boeing-737MAX klęski żywiołowe są do tego stopnia, że należy postawić sprawę karną pojedynczo i całej organizacji. Przedmiotowy system nie wykorzystywał nadmiarowych danych wejściowych, mimo że były one dostępne; wpływ systemu, który nie reaguje poprawnie, nie został oceniony ani złagodzony; a załodze nie dano żadnego szkolenia w zakresie radzenia sobie z awarią, ani nawet nie powiedziano, że istnieje. W Wielkiej Brytanii przestępstwo „zabójstwa korporacyjnego” istnieje po to, by ścigać dokładnie tego rodzaju błędy.
Innym elementem tego wszystkiego jest jednak jakość , tak aby w pierwszej kolejności upewnić się, że systemy nie ulegną awarii. Niezawodność oprogramowania jest prawie całkowicie zależna od ilości przeglądów i testów, które mają miejsce. Obecnie pracuję nad oprogramowaniem do sprzętu naukowego i szacuję, że około 10-20% czasu programistycznego poświęcam na testowanie. Komputery i telefony komórkowe będą mniej więcej takie same. Kiedy pracowałem nad systemami motoryzacyjnymi i kosmicznymi, sytuacja była całkowicie odwrotna - liczyliśmy, że około 5-10% czasu poświęcamy na kodowanie, 10-20% na projektowanie, a resztę poświęcamy na przeglądanie i testowanie .
Kontrola zmian jest również radykalnie bardziej ograniczona. Microsoft może wydać aktualizację, a następnie przeprowadzić kontrolę uszkodzeń w kilku przypadkach, w których źle się zachowuje, i wkraść się w kilka dodatkowych funkcji w tym samym czasie. Jednak w programowaniu związanym z bezpieczeństwem nie zmienia się ani jednej linii kodu bez formalnego potwierdzenia, że (a) wszyscy rozumieją, co zrobi ta zmiana, (b) że ta zmiana naprawia ten błąd i nic innego nie zmienia i (c) że ta zmiana jest nawet potrzebna. Wiele sesji selekcji błędów polega na wykrywaniu błędów, w wyniku których ostatecznie decydujemy, że wpływ błędu jest niewielki (być może na przykład 10 ms później włączamy lampkę ostrzegawczą), ale ryzyko próby naprawienia błędu może być potencjalnie wysokie, jeśli zdarzyło nam się źle to zrobić, więc bezpieczniej jest trzymać się tego trywialnego błędu.
Jak pokazuje przypadek Boeinga-737MAX, wszystkie te procesy są warte cholery tylko wtedy, gdy ludzie ich przestrzegają. Te procesy jednak istnieją i są najlepszą praktyką w branży dziesiątek tysięcy inżynierów na całym świecie, która ma wiele międzynarodowych standardów formalnych, które to potwierdzają. Nieprzestrzeganie tych standardów jest niemal z definicji rażącym zaniedbaniem, a większość krajów posiada przepisy, które pozwalają ścigać osoby i firmy, które dopuściły się tego stopnia zaniedbania. Większość inżynierów i tak chciałaby wykonywać dobrą robotę; ale prawo gwarantuje, że organizacja jako całość pozostaje uczciwa i nie idzie na skróty.