Softwarefehler vs. Softwarebeschädigung

Sep 29 2020

Bei der Untersuchung des Wikipedia-Artikels zu Qantas Flight 72 habe ich den Abschnitt " Mögliche Auslösertypen " gefunden, in dem es heißt (Schwerpunkt meiner):

Eine Reihe potenzieller Auslösertypen wurde untersucht, darunter Softwarefehler , Softwarebeschädigungen , Hardwarefehler, elektromagnetische Interferenzen und die durch kosmische Strahlung erzeugten sekundären hochenergetischen Partikel.

Ich frage mich, ob es einen eindeutigen und endgültigen Unterschied zwischen "Bug" und "Korruption" gibt (wenn ja, was ist dann der Unterschied), oder ist dies nur der Wortlaut eines Artikels und sonst nichts?

Antworten

93 Christophe Sep 29 2020 at 21:58

Software-Korruption ist das Gegenteil von Software-Integrität. Es ist dasselbe wie Datenbeschädigung , außer dass die Daten der Software-Code sind.

Es kann Folgendes beeinflussen:

  • Die im Speicher gespeicherte Software-Binärdatei: Die Binärcodes der Softwareanweisungen werden beispielsweise aufgrund von physischen Störungen („Bitte elektronische Geräte während des Starts und der Landung ausschalten“), Hardwaredefekten (Speicherchip) und böswilligen Aktivitäten (z. B. Sicherheitslücke durch Reihenhammer ) geändert ) oder Softwarefehler (dh als Folge eines Pufferüberlaufs).
  • die Software-Binärdatei, bevor sie in den Speicher geladen wird, dh die ausführbare Datei, die in einem Dateisystem gespeichert ist (z. B. SSD-Speicher, Festplatte, ...) oder über das Netzwerk übertragen wird (z. B. von einem Remote-Dateiserver geladen).
  • Der Software-Quellcode, bevor die ausführbare Datei erstellt wird: Der Quellcode besteht aus Daten wie allen anderen, die in derselben Situation wie alle Daten beschädigt werden können. Ein typisches Beispiel ist, wenn das Quellcode-Repository eines Softwareunternehmens gehackt wird (zufällige Fälle verhindern im Allgemeinen die Kompilierung und haben nur sehr begrenzte Auswirkungen).

Beachten Sie, dass "Software-Beschädigung" möglicherweise mehrdeutig verwendet wird , um eine durch die Software verursachte Beschädigung anstelle einer Beschädigung der Software selbst zu bezeichnen.

28 candied_orange Sep 29 2020 at 21:24

Sie können Beschädigungen beheben, indem Sie sie von einem guten Backup wiederherstellen. Korruption bedeutet, dass einige der Teile irgendwie von dem geändert wurden, was sie sein sollten.

Sie können einen Fehler * beheben, indem Sie mehr entwickeln und erneut bereitstellen. Hier sind die Bits so, wie sie sein sollten. Sie tun einfach nicht das, wofür wir sie brauchen.

* Dies setzt natürlich voraus, dass ein Fehler einen Fehler im Quellcode bedeutet, nicht eine Motte , die zwischen den Relaiskontakten steckt.

20 vsz Sep 30 2020 at 14:38

Ein Fehler ist, wenn eine Software genau das tut, was der Programmierer ihm befohlen hat, anstatt das, was der Programmierer wollte.

Eine Beschädigung liegt vor, wenn eine Software etwas anderes tut als vom Programmierer vorgeschrieben, möglicherweise aufgrund eines Hardwarefehlers oder anderer Probleme, die nicht direkt mit der Softwareentwicklung zusammenhängen.

15 AlexD Sep 29 2020 at 15:28

Vermutlich verstehen sie unter "Software-Beschädigung" unbeabsichtigte Änderungen am Inhalt einer ausführbaren Datei, beispielsweise aufgrund eines Ausfalls des Speichermediums.

Ein "Fehler" würde bedeuten, dass die Binärdateien mit den vom Softwareanbieter oder Entwickler bereitgestellten Originalen identisch sind, dass jedoch ein Programmierfehler aufgetreten ist, der bedeutet, dass sie sich nicht genau wie beabsichtigt verhalten.

7 gnasher729 Sep 29 2020 at 15:27

Ich schreibe ein Programm, es wird kompiliert, an Sie gesendet, Sie installieren es auf Ihrem Computer. Aber ein paar Kleinigkeiten haben sich auf dem Weg geändert. Das ist Software-Korruption.

5 JoelCoehoorn Sep 30 2020 at 01:44

Ein Fehler ist ein Fehler eines Softwareentwicklers.

Korruption ist kein Fehler eines Entwicklers. Dies ist der Fall, wenn etwas das Programm nach (oder während) der Auslieferung ändert - selbst wenn es versehentlich oder harmlos ist, z. B. ein Speicherfehler oder ein Netzwerkübertragungsfehler.

2 PauloMerson Oct 07 2020 at 23:26

Seit 2003 ist der Begriff Korruption in Software auch mit einer unerwünschten Kopplung zwischen zwei Softwaremodulen verbunden . DDD schreibt die Erstellung einer Antikorruptionsschicht (ACL) zwischen zwei Softwaresystemen (oder "begrenzten Kontexten" in DDD-Begriffen) vor. Wenn System A mit System B interagieren muss und die API von B unterschiedliche Entwurfsstandards, Datenstrukturen und Formate verwendet, kann eine ACL verhindern, dass Elemente der API von B Komponenten in A verbreiten und "beschädigen".

Diese Verwendung des Begriffs "Korruption" war im Artikel von Qantas Flight 72 eindeutig nicht beabsichtigt, hilft jedoch bei der Klärung der gängigen Terminologie. Zumindest hoffe ich.