Bug de software vs. corrupção de software
Ao investigar o artigo da Wikipedia sobre o voo 72 da Qantas, encontrei a seção " Tipos de gatilhos potenciais " que diz (ênfase minha):
Vários tipos de gatilhos potenciais foram investigados, incluindo bugs de software , corrupção de software , falhas de hardware, interferência eletromagnética e as partículas secundárias de alta energia geradas por raios cósmicos.
Eu me pergunto se há alguma diferença distinta e definitiva entre "bug" e "corrupção" (se sim, qual é a diferença) ou isso é apenas o texto de um artigo e nada mais?
Respostas
A corrupção do software é o contrário da integridade do software. É a mesma coisa que corrupção de dados , exceto que os dados são o código do software.
Pode afetar:
- o binário do software armazenado na memória: os códigos binários das instruções do software são alterados, por exemplo, por causa de interferência física ("desligue os dispositivos eletrônicos durante a decolagem e pouso"), defeitos de hardware (chip de memória), atividades maliciosas (por exemplo, vulnerabilidade de martelo de linha ), ou bugs de software (ou seja, como consequência de um estouro de buffer).
- o binário do software antes de ser carregado na memória, ou seja, o arquivo executável armazenado em um sistema de arquivos (por exemplo, memória SSD, disco rígido, ...) ou em trânsito pela rede (por exemplo, carregado de um servidor de arquivos remoto).
- o código-fonte do software antes de o executável ser produzido: o código-fonte são dados como qualquer outro, que podem ser corrompidos na mesma situação que quaisquer dados. Um exemplo típico é quando o repositório de código-fonte de uma empresa de software é hackeado (casos acidentais geralmente impedem a compilação e têm um impacto muito limitado)
Observe que “corrupção de software” pode ser usada de forma ambígua para significar corrupção causada pelo software em vez de corrupção do próprio software.
Você pode corrigir a corrupção restaurando a partir de um bom backup. Corrupção significa que alguns dos bits de alguma forma foram alterados em relação ao que deveriam ser.
Você pode consertar um bug * fazendo mais desenvolvimento e reimplantação. Aqui, os bits são o que deveriam ser. Eles simplesmente não fazem o que precisamos que eles façam.
* Claro, isso pressupõe que o bug significa um defeito no código-fonte, não uma traça presa entre os contatos do relé.
Um bug é quando um software faz exatamente o que o programador disse para fazer, em vez do que o programador queria que ele fizesse.
Uma corrupção é quando um software faz algo diferente do que o programador disse para fazer, possivelmente devido a falha de hardware ou outros problemas não diretamente relacionados ao desenvolvimento de software.
Presumivelmente, o que eles querem dizer com "corrupção de software" são alterações não intencionais no conteúdo de um arquivo executável devido a coisas como uma falha da mídia de armazenamento.
Um "bug" significaria que os binários são iguais aos originais fornecidos pelo fornecedor ou desenvolvedor do software, mas que houve algum erro de programação que significa que eles não se comportam exatamente como pretendido.
Eu escrevo um programa, ele é compilado, enviado para você, você instala no seu computador. Mas algumas coisas mudaram no caminho. Isso é corrupção de software.
Um bug é um erro cometido por um desenvolvedor de software.
A corrupção não é um erro do desenvolvedor; é quando algo altera o programa após (ou durante) a entrega - até mesmo algo acidental / benigno, como falha de armazenamento ou erro de transmissão de rede.
Desde 2003, o termo corrupção em software também foi associado ao acoplamento indesejável entre dois módulos de software . O DDD prescreve a criação de uma camada anticorrupção (ACL) entre dois sistemas de software (ou "contextos limitados" em termos de DDD). Se o sistema A precisa interagir com o sistema B, e a API de B usa diferentes padrões de design, estruturas de dados e formatos, uma ACL pode impedir que elementos da API de B se espalhem e "corrompam" componentes em A.
Esse uso do termo "corrupção" claramente não era a intenção no artigo do voo 72 da Qantas, mas ajuda a esclarecer a terminologia comum. Ou assim espero.