Bug del software vs. corruzione del software

Sep 29 2020

Mentre indagavo sull'articolo di Wikipedia sul volo Qantas 72, ho trovato la sezione " Potenziali tipi di trigger " che dice (enfasi mia):

Sono stati studiati numerosi potenziali tipi di trigger, inclusi bug del software , danneggiamento del software , guasti hardware, interferenze elettromagnetiche e particelle secondarie ad alta energia generate dai raggi cosmici.

Mi chiedo se ci sia qualche differenza distintiva e definitiva tra "bug" e "corruzione" (se sì, qual è la differenza) o è solo la formulazione di un articolo e nient'altro?

Risposte

93 Christophe Sep 29 2020 at 21:58

La corruzione del software è il contrario dell'integrità del software. È la stessa cosa del danneggiamento dei dati , tranne per il fatto che i dati sono il codice del software.

Può influenzare:

  • il binario del software archiviato in memoria: i codici binari delle istruzioni del software sono alterati ad esempio a causa di interferenze fisiche ("spegnere i dispositivi elettronici durante il decollo e l'atterraggio"), difetti hardware (chip di memoria), attività dannose (es. vulnerabilità del martello di riga ) o bug del software (cioè come conseguenza di un overflow del buffer).
  • il software binario prima che venga caricato in memoria, ovvero il file eseguibile contenuto in un file system (es. memoria SSD, hard disk, ...) o in transito attraverso la rete (es. caricato da un file server remoto).
  • il codice sorgente del software prima che venga prodotto l'eseguibile: il codice sorgente è un dato come un altro, che può essere danneggiato nella stessa situazione di qualsiasi dato. Un tipico esempio è quando il repository del codice sorgente di un'azienda di software viene violato (i casi accidentali generalmente impediscono la compilazione e hanno un impatto molto limitato)

Si noti che "danneggiamento del software" può essere utilizzato in modo ambiguo per indicare il danneggiamento causato dal software anziché il danneggiamento del software stesso.

28 candied_orange Sep 29 2020 at 21:24

È possibile correggere la corruzione ripristinando da un buon backup. La corruzione significa che alcuni dei bit in qualche modo sono stati modificati da quello che dovevano essere.

Puoi correggere un bug * eseguendo più sviluppo e ridistribuzione. Qui i bit sono ciò che dovevano essere. Semplicemente non fanno quello che abbiamo bisogno che facciano.

* Ovviamente questo presuppone che un bug significhi un difetto nel codice sorgente, non una falena bloccata tra i contatti del relè.

20 vsz Sep 30 2020 at 14:38

Un bug si verifica quando un software fa esattamente ciò che il programmatore gli ha detto di fare, invece di ciò che il programmatore voleva che facesse.

Un danneggiamento si verifica quando un software fa qualcosa di diverso da ciò che il programmatore gli ha detto di fare, probabilmente a causa di un guasto hardware o di altri problemi non direttamente correlati allo sviluppo del software.

15 AlexD Sep 29 2020 at 15:28

Presumibilmente ciò che intendono per "danneggiamento del software" sono modifiche non intenzionali al contenuto di un file eseguibile a causa di cose come un guasto del supporto di memorizzazione.

Un "bug" significherebbe che i binari sono gli stessi degli originali forniti dal fornitore o sviluppatore del software, ma che si è verificato un errore di programmazione, il che significa che non si comportano esattamente come previsto.

7 gnasher729 Sep 29 2020 at 15:27

Scrivo un programma, viene compilato, inviato a te, tu lo installi sul tuo computer. Ma alcuni bit sono cambiati lungo la strada. Questa è la corruzione del software.

5 JoelCoehoorn Sep 30 2020 at 01:44

Un bug è un errore commesso da uno sviluppatore di software.

La corruzione non è un errore di uno sviluppatore; è quando qualcosa altera il programma dopo (o durante) la consegna, anche qualcosa di accidentale / benigno come un errore di archiviazione o un errore di trasmissione di rete.

2 PauloMerson Oct 07 2020 at 23:26

Dal 2003, il termine corruzione nel software è stato anche associato a un accoppiamento indesiderato tra due moduli software . DDD prescrive la creazione di un livello anticorruzione (ACL) tra due sistemi software (o "contesti limitati" in termini DDD). Se il sistema A deve interagire con il sistema B e l'API di B utilizza standard di progettazione, strutture di dati e formati diversi, un ACL può impedire la diffusione di elementi dell'API di B e "corrompere" i componenti in A.

Questo uso del termine "corruzione" chiaramente non era l'intento dell'articolo Qantas Flight 72, ma aiuta a chiarire la terminologia comune. O almeno così spero.