Mars Polar Lander mógł wziąć drganie rozkładanej nogi za sygnał „już wylądowaliśmy”
Za najbardziej prawdopodobny scenariusz utraty Mars Polar Landera NASA uznała przedwczesne wyłączenie silników podczas końcowego zniżania. Czujniki dotknięcia podłoża mogły wygenerować krótkie impulsy już podczas rozkładania nóg. Charakterystyka ta była znana, ale wymagania software’u nie uwzględniły prawidłowego filtrowania takich transientów. Gdy program później zaczął odczytywać stan czujników, mógł zinterpretować zapisany sygnał jako kontakt z gruntem i wyłączyć silniki wysoko nad powierzchnią.
Czujnik nie musiał być uszkodzony
Mechaniczny przełącznik może podczas rozkładania konstrukcji na moment zmienić stan. Elektrycznie jest to realny sygnał, ale semantycznie nie oznacza lądowania. To fundamentalny problem systemów cyber-fizycznych: software nie może rozumieć bitu `1` bez wiedzy o zachowaniu fizycznego urządzenia.
Transient był znaną cechą sprzętu
NASA Lessons Learned podaje, że chwilowe sygnały podczas rozkładania nóg były znane. Problem polegał na tym, że wymagania i plany testowe nie zapewniły odporności software’u na tę właściwość. Wiedza istniała w projekcie, ale nie została skutecznie przeniesiona do implementacji i weryfikacji.
Błąd mógł zostać „zapamiętany”
Typowy sposób działania systemu touchdown polega na rejestrowaniu zdarzenia czujnika i późniejszym wykorzystaniu go przez logikę sterującą. Jeśli fałszywy impuls zostanie zapisany, samo to, że czujnik po chwili wróci do poprawnego stanu, nie musi pomóc. Program może odczytać wcześniejszy znacznik i potraktować go jak prawdziwe lądowanie.
Test, który mógł ujawnić problem, nie został prawidłowo powtórzony
Podczas testów wykryto problem z okablowaniem czujników. Po korekcie nie powtórzono pełnego testu rozkładania nóg w konfiguracji, która pozwoliłaby zweryfikować odporność na transienty. To klasyczna luka procesu: poprawka jednego defektu może unieważniać wyniki wcześniejszego testu.
To pozostaje najbardziej prawdopodobnym scenariuszem, nie nagranym faktem
Lander nie przesyłał danych telemetrycznych z ostatnich sekund w sposób pozwalający odtworzyć każdy krok. NASA wyraźnie zaznaczała, że nie ma bezpośredniego potwierdzenia końcowego zdarzenia. Pełny rekord musi więc mówić o probable scenario, a nie udawać stuprocentową pewność.
Software musi modelować niedoskonałość sensorów
Czujniki drgają, odbijają styki, mają szum i opóźnienia. Dobry system filtruje transienty, wymaga potwierdzenia przez określony czas albo koreluje kilka źródeł. Mars Polar Lander pokazuje, że najgroźniejszy bug może polegać na założeniu, iż fizyczny sygnał jest idealny. Ta historia pokazuje też wagę traceability: jeśli inżynier sprzętu wie o transiencie, wymaganie software’owe powinno jednoznacznie opisywać, jak go obsłużyć, a konkretny test powinien wykazać spełnienie wymagania. Wiedza „gdzieś w zespole” nie jest jeszcze zabezpieczeniem technicznym.
Debouncing i potwierdzanie zdarzeń to część logiki bezpieczeństwa
W elektronice mechaniczny przełącznik rzadko zmienia stan idealnie z 0 na 1. Styki mogą przez kilka milisekund drgać i generować serię impulsów. W prostym przycisku użytkownika rozwiązuje się to debouncingiem programowym albo sprzętowym. W lądowniku problem jest bardziej złożony, bo sygnał może pojawić się także wskutek drgań całej konstrukcji. Bezpieczna logika mogłaby wymagać, aby kontakt utrzymywał się przez określony czas, wystąpił w więcej niż jednej nodze albo był zgodny z wysokością i prędkością z innych sensorów. Każda taka reguła ma jednak trade-off: zbyt agresywne filtrowanie może opóźnić prawdziwe wykrycie lądowania. Dlatego wymagania muszą wynikać z charakterystyki fizycznego czujnika i dynamiki pojazdu. Mars Polar Lander pokazuje, że „czytaj pin i reaguj” jest w systemie cyber-fizycznym tylko początkiem projektu, a nie kompletną funkcją. W praktyce takie wymaganie powinno być zapisane jednocześnie w specyfikacji sprzętu, software’u i w scenariuszu testowym. Jeśli jedna warstwa wie o zjawisku, a druga go nie modeluje, problem komunikacyjny staje się technicznym defektem systemu.