Bug logiciel vs corruption de logiciel
En enquêtant sur l'article de Wikipédia sur le vol Qantas 72, j'ai trouvé la section " Types de déclencheurs potentiels " qui dit (c'est moi qui souligne):
Un certain nombre de types de déclencheurs potentiels ont été étudiés, notamment les bogues logiciels , la corruption logicielle , les défauts matériels, les interférences électromagnétiques et les particules secondaires à haute énergie générées par les rayons cosmiques.
Je me demande s'il y a une différence distinctive et ultime entre «bug» et «corruption» (si oui, alors quelle est la différence) ou est-ce juste le libellé d'un article et rien d'autre?
Réponses
La corruption du logiciel est le contraire de l'intégrité du logiciel. C'est la même chose que la corruption de données , sauf que les données sont le code logiciel.
Cela peut affecter:
- le logiciel binaire stocké en mémoire: les codes binaires des instructions du logiciel sont modifiés par exemple en raison d'interférences physiques («veuillez éteindre les appareils électroniques pendant le décollage et l'atterrissage»), des défauts matériels (puce mémoire), des activités malveillantes (par exemple, la vulnérabilité du marteau de ligne ), ou des bogues logiciels (c'est-à-dire à la suite d'un débordement de tampon).
- le binaire logiciel avant son chargement en mémoire, c'est-à-dire le fichier exécutable stocké dans un système de fichiers (ex. mémoire SSD, disque dur, ...) ou transitant via le réseau (ex. chargé depuis un serveur de fichiers distant).
- le code source du logiciel avant la production de l'exécutable: le code source est une donnée comme les autres, qui peut être corrompue dans la même situation que n'importe quelle donnée. Un exemple typique est celui où le référentiel de code source d'une entreprise de logiciels est piraté (les cas accidentels empêchent généralement la compilation et ont un impact très limité)
Notez que «corruption de logiciel» peut être utilisée de manière ambiguë pour désigner la corruption causée par le logiciel au lieu de la corruption du logiciel lui-même.
Vous pouvez corriger la corruption en restaurant à partir d'une bonne sauvegarde. La corruption signifie que certains éléments ont en quelque sorte changé de ce qu'ils étaient censés être.
Vous pouvez corriger un bogue * en faisant plus de développement et de redéploiement. Ici, les bits sont ce qu'ils étaient censés être. Ils ne font tout simplement pas ce dont nous avons besoin.
* Bien sûr, cela suppose que le bogue signifie un défaut dans le code source, pas un papillon coincé entre les contacts du relais.
Un bogue est quand un logiciel fait exactement ce que le programmeur lui a dit de faire, au lieu de ce que le programmeur voulait qu'il fasse.
Une corruption est lorsqu'un logiciel fait autre chose que ce que le programmeur lui a dit de faire, peut-être en raison d'une défaillance matérielle ou d'autres problèmes non directement liés au développement de logiciels.
Vraisemblablement, ce qu'ils entendent par «corruption de logiciel» est des modifications involontaires du contenu d'un fichier exécutable en raison de choses comme une défaillance du support de stockage.
Un "bogue" signifierait que les binaires sont les mêmes que les originaux qui ont été fournis par l'éditeur ou le développeur du logiciel, mais qu'il y a eu une erreur de programmation qui signifie qu'ils ne se comportent pas exactement comme prévu.
J'écris un programme, il se compile, vous est envoyé, vous l'installez sur votre ordinateur. Mais quelques éléments ont changé en cours de route. C'est de la corruption des logiciels.
Un bogue est une erreur commise par un développeur de logiciel.
La corruption n'est pas une erreur d'un développeur; c'est quand quelque chose modifie le programme après (ou pendant) la livraison - même quelque chose d'accidentel / bénin comme une erreur de stockage ou de transmission réseau.
Depuis 2003, le terme corruption dans le logiciel est également associé à un couplage indésirable entre deux modules logiciels . DDD prescrit la création d'une couche anticorruption (ACL) entre deux systèmes logiciels (ou «contextes bornés» en termes DDD). Si le système A a besoin d'interagir avec le système B et que l'API de B utilise des normes de conception, des structures de données et des formats différents, une ACL peut empêcher les éléments de l'API de B de se propager et de «corrompre» les composants de A.
Cette utilisation du terme «corruption» n'était clairement pas l'intention de l'article du vol 72 de Qantas, mais elle aide à clarifier la terminologie courante. Ou alors j'espère.