Błąd oprogramowania a uszkodzenie oprogramowania
Podczas przeglądania artykułu Wikipedii na temat lotu Qantas 72 znalazłem sekcję „ Potencjalne typy wyzwalaczy ”, w której (moje wyróżnienie):
Pewna liczba potencjalnych typów wyzwalania badano, w tym błędów oprogramowania , korupcji oprogramowania , awarii sprzętu, zakłócenia elektromagnetyczne i wtórnych cząstek o wysokiej energii generowanych przez promieniowanie kosmiczne.
Zastanawiam się, czy istnieje jakaś wyraźna i ostateczna różnica między „błędem” a „korupcją” (jeśli tak, to jaka jest różnica), czy też jest to tylko sformułowanie artykułu i nic więcej?
Odpowiedzi
Uszkodzenie oprogramowania jest przeciwieństwem integralności oprogramowania. To to samo, co uszkodzenie danych , z wyjątkiem tego, że dane to kod oprogramowania.
Może wpływać na:
- binarne oprogramowanie przechowywane w pamięci: kody binarne instrukcji oprogramowania są zmieniane, na przykład z powodu zakłóceń fizycznych („proszę wyłączać urządzenia elektroniczne podczas startu i lądowania”), usterek sprzętu (chip pamięci), złośliwych działań (np. podatność na uderzenie młotkiem) ) lub błędy oprogramowania (np. jako konsekwencja przepełnienia bufora).
- oprogramowanie binarne przed załadowaniem do pamięci, tj. plik wykonywalny przechowywany w systemie plików (np. pamięć SSD, dysk twardy, ...) lub przesyłany przez sieć (np. ładowany ze zdalnego serwera plików).
- kod źródłowy oprogramowania przed utworzeniem pliku wykonywalnego: kod źródłowy to dane jak wszystkie inne, które mogą zostać uszkodzone w takiej samej sytuacji, jak inne dane. Typowym przykładem jest włamanie do repozytorium kodu źródłowego firmy programistycznej (przypadkowe przypadki zazwyczaj uniemożliwiają kompilację i mają bardzo ograniczony wpływ)
Należy pamiętać, że termin „uszkodzenie oprogramowania” może być niejednoznacznie używany na oznaczenie uszkodzenia spowodowanego przez oprogramowanie zamiast uszkodzenia samego oprogramowania.
Możesz naprawić uszkodzenie, przywracając z dobrej kopii zapasowej. Korupcja oznacza, że niektóre elementy w jakiś sposób zmieniły się w stosunku do tego, czym miały być.
Możesz naprawić błąd *, wykonując więcej prac programistycznych i wdrażając ponownie. Tutaj bity są tym, czym miały być. Po prostu nie robią tego, czego od nich potrzebujemy.
* Oczywiście zakłada się, że błąd oznacza defekt w kodzie źródłowym, a nie ćmę, która utknęła między stykami przekaźnika.
Błąd występuje wtedy, gdy oprogramowanie robi dokładnie to, co nakazał mu programista, zamiast tego, czego chciał programista.
Korupcja ma miejsce, gdy oprogramowanie robi coś innego niż to, co nakazał mu programista, prawdopodobnie z powodu awarii sprzętu lub innych problemów niezwiązanych bezpośrednio z tworzeniem oprogramowania.
Prawdopodobnie przez „uszkodzenie oprogramowania” rozumieją niezamierzone zmiany zawartości pliku wykonywalnego spowodowane takimi rzeczami, jak awaria nośnika pamięci.
„Błąd” oznaczałby, że pliki binarne są takie same, jak oryginały dostarczone przez dostawcę lub programistę oprogramowania, ale wystąpił jakiś błąd programistyczny, co oznacza, że nie zachowują się dokładnie tak, jak powinny.
Piszę program, jest kompilowany, wysyłany do Ciebie, instalujesz go na swoim komputerze. Ale po drodze zmieniło się kilka rzeczy. To jest uszkodzenie oprogramowania.
Błąd to błąd popełniony przez programistę.
Korupcja nie jest błędem dewelopera; dzieje się tak, gdy coś zmienia program po dostarczeniu (lub w trakcie) - nawet coś przypadkowego / łagodnego, jak awaria pamięci lub błąd transmisji sieciowej.
Od 2003 r. Termin „ korupcja” w oprogramowaniu jest również kojarzony z niepożądanym sprzężeniem między dwoma modułami oprogramowania . DDD nakazuje utworzenie warstwy antykorupcyjnej (ACL) między dwoma systemami oprogramowania (lub „kontekstami ograniczonymi” w terminologii DDD). Jeśli system A musi współdziałać z systemem B, a interfejs API B używa różnych standardów projektowych, struktur danych i formatów, lista ACL może zapobiec rozprzestrzenianiu się elementów API B i „uszkodzeniu” komponentów w A.
Takie użycie terminu „korupcja” najwyraźniej nie było zamierzone w artykule Qantas Flight 72, ale pomaga wyjaśnić powszechną terminologię. Tak przynajmniej mam nadzieję.