Nowoczesne samochody polegają na s / w. Kiedy zawodzą nowoczesne samochody, na przykład zawodzi komputer z silnikiem, zwykle (choć nie zawsze, ale zwykle) elektronika, a nie s / w.
Zapytaj każdego właściciela nowoczesnego samochodu z ECU, ile czasu przed jego kosztowną awarią. Będę oszołomiony, jeśli dostaniesz 10 lat. Nowoczesne samochody pełne elektroniki i czujników są zadziwiająco zawodne.
Jeśli przestudiujesz teorię niezawodności, odpowiedź stanie się zupełnie oczywista. Wszystko, co mechaniczne (oprogramowanie oczekuje), ma niezawodność w stanie ustalonym, czyli wskaźnik awaryjności poza obszarami śmiertelności niemowląt i ich zużycia. Współczynnik awaryjności elementu końcowego jest sumą wskaźników awaryjności części. Dodaj więcej części: łączna liczba awarii staje się większa. Wyzwanie polega zatem na tym, aby wskaźniki awarii wszystkich tych komponentów były naprawdę niskie.
Jeśli chodzi o rzeczy takie jak paski rozrządu i zużycie cylindrów i czujniki tlenu pełne bzdur, a złącza stają się oporne, a przewody pękają z powodu wibracji - istnieją techniki, które można zastosować w celu zmniejszenia wskaźnika awaryjności. Koszty również rosną, gdy to robisz.
Z drugiej strony oprogramowanie ma stały wskaźnik awaryjności. Pomimo trudności w znajdowaniu wad, czasami całe oprogramowanie jest maszyną do kiełbas. Wejścia -> Wykonaj czynności -> Wyjścia. Czasami ZAMÓWIENIE wejść i ich kombinacje prowadzą do awarii w wykrywalnych trybach. Kiedy to się stanie, znajdziesz wadę, naprawisz ją i idziesz dalej.
Oprogramowanie, które nie ma (znanych) defektów, ma współczynnik awaryjności równy 0. Będzie działać wiecznie bez awarii. (Średni czas między awariami = 1 / wskaźnik awaryjności). Platforma sprzętowa najpierw zawiedzie.
Oprogramowanie z defektami może działać tylko do momentu, gdy odpowiednia kombinacja warunków wejściowych z czasem spowoduje, że defekt pojawi się.
FALLACY w tym wszystkim polega na próbie porównania wskaźników awaryjności rzeczy fizycznych (spowodowanych zużyciem, migracją metali w układach scalonych, wnikaniem wody, wibracji itp.) Ze stopniem awaryjności tego, co jest zasadniczo maszyną o stanie skończonym, która po prostu robi dokładnie co nakazuje jej sekwencja instrukcji.
(Nawet rzeczy, takie jak cząstki alfa przerzucające bity w pamięci RAM, są zjawiskiem fizycznym, a nie defektem oprogramowania. Sposób obsługi takiej równomiernej MOŻE jednak być wadą oprogramowania, ale pamiętaj, że ta paskudna cząstka alfa była tylko kolejnym wejściem do oprogramowania. )