Oba opisują spójność zachowania aplikacji, ale „odporność” opisuje reakcję aplikacji na dane wejściowe , a „odporność na awarie” opisuje odpowiedź aplikacji na środowisko .
Aplikacja jest niezawodna, gdy może działać spójnie z niespójnymi danymi. Na przykład: aplikacja do map jest niezawodna, gdy może analizować adresy w różnych formatach z różnymi błędami ortograficznymi i zwracać przydatną lokalizację. Odtwarzacz muzyczny jest solidny, jeśli po napotkaniu zniekształconej klatki może kontynuować dekodowanie pliku MP3. Edytor obrazów jest niezawodny, gdy może modyfikować obraz za pomocą osadzonych metadanych EXIF, których może nie rozpoznać - zwłaszcza jeśli może dokonywać zmian w obrazie bez niszczenia danych EXIF.
Aplikacja jest odporna na awarie, gdy może działać konsekwentnie w niespójnym środowisku. Aplikacja bazy danych jest odporna na uszkodzenia, gdy może uzyskać dostęp do alternatywnego fragmentu, gdy podstawowy nie jest dostępny. Aplikacja internetowa jest odporna na uszkodzenia, gdy może kontynuować obsługę żądań z pamięci podręcznej, nawet gdy host API jest nieosiągalny. Podsystem pamięci masowej jest odporny na uszkodzenia, gdy może zwrócić wyniki obliczone na podstawie parzystości, gdy element dyskowy jest w trybie offline.
W obu przypadkach oczekuje się, że aplikacja pozostanie stabilna, zachowa się jednolicie, zachowa integralność danych i zapewni przydatne wyniki nawet w przypadku wystąpienia błędu. Ale podczas oceny niezawodności możesz znaleźć kryteria dotyczące danych, podczas gdy podczas oceny odporności na błędy znajdziesz kryteria dotyczące dostępności.
Jedno niekoniecznie prowadzi do drugiego. Mobilna aplikacja do rozpoznawania głosu może być bardzo niezawodna, zapewniając niesamowitą zdolność do konsekwentnego rozpoznawania mowy w różnych regionalnych akcentach z ogromnym hałasem w tle. Ale jeśli jest bezużyteczne bez szybkiego połączenia danych komórkowych, nie jest zbyt odporne na uszkodzenia. Podobnie aplikacja do publikowania w Internecie może być niezwykle odporna na awarie, z wieloma redundantami na każdym poziomie, zdolna do utraty całych centrów danych bez awarii, ale jeśli upuści tabelę użytkowników i zawiesi się przy pierwszej rejestracji kogoś z apostrofem w swoim nazwisku , wcale nie jest solidny.
Jeśli szukasz literatury naukowej, która pomogłaby w opisaniu tego rozróżnienia, możesz szukać w konkretnych domenach, które wykorzystują oprogramowanie, a nie ogólnie oprogramowanie. Badania aplikacji rozproszonych mogą być podatnym gruntem dla kryteriów odporności na uszkodzenia, a Google opublikował niektóre z ich badań, które mogą być istotne. Badania w zakresie modelowania danych prawdopodobnie dotyczą kwestii solidności, ponieważ naukowcy są szczególnie zainteresowani właściwościami niezawodności, które dają powtarzalne wyniki. Prawdopodobnie można znaleźć artykuły opisujące zastosowania statystyczne, które mogą być pomocne, na przykład w modelowaniu klimatu, modelowaniu propagacji RF lub sekwencjonowaniu genomu. Znajdziesz również inżynierów omawiających „solidną konstrukcję” w takich dziedzinach, jak systemy sterowania.
Oficjalny dokument systemu plików Google opisuje ich podejście do problemów związanych z odpornością na uszkodzenia, które zasadniczo obejmuje założenia, że awarie komponentów są rutynowe, dlatego aplikacja musi się do nich dostosować:
Ten projekt dla klasy w Rutgers obsługuje definicję „odporności na awarie” zorientowaną na „uszkodzenie elementu”:
Istnieje mnóstwo dokumentów na temat „solidnego modelowania XYZ”, w zależności od badanego pola. Większość opisuje streszczenia kryteriów „solidne”, a przekonasz się, że wszystko to ma związek z tym, jak model radzi sobie z danymi wejściowymi.
W tym streszczeniu naukowca ds. Klimatu z NASA opisuje się solidność jako kryterium oceny modeli klimatycznych:
Ten artykuł badacza MIT bada aplikacje protokołu bezprzewodowego, domenę, w której tolerancja na awarie i niezawodność pokrywają się, ale autorzy używają „niezawodnej” do opisywania aplikacji, protokołów i algorytmów, podczas gdy używają „odporności na awarie” w odniesieniu do topologii i komponenty: