Coconote
AI notes
AI voice & video notes
Export note
Try for free
Conférence sur les Bugs Informatiques et la Fiabilité du Code
Jul 2, 2024
Conférence sur les Bugs Informatiques et la Fiabilité du Code
Introduction
Importance des bugs
: Différence d'impact selon le domaine (ex. Arianespace)
Erreur dans Ariane 5 :
Réutilisation du logiciel d'Ariane 4
Variable d'accélération horizontale codée sur 8 bits (dépassement avec Ariane 5)
Conséquences : Perte de 500 millions de dollars
Impossibilité de créer un programme parfait (influence de facteurs externes comme les rayons cosmiques)
Problématiques des Bugs
Interconnexion des composants : Plus il y a de composants, plus la probabilité d'erreur augmente
Probabilité d'erreur
: Démonstration avec l'analyse de Dijkstra (
Si p est la probabilité qu'un composant soit correct, la probabilité que tout le programme soit correct est P^N
Méthodes de prévention des bugs
Unit tests
:
Test de chaque fonctionnalité individuellement
Addition de nouveaux tests pour chaque bug identifié
Ne peut prouver l'absence de bugs (Théorème de Rice)
Règles de la NASA pour un logiciel fiable
Éviter les structures de codes complexes
( n - goto, setjmp, longjmp, récursivité
Faciliter l'analyse du code
Limiter les boucles
: Toujours fixer une limite d'itérations pour éviter les boucles infinies
Éviter l'allocation de mémoire sur le heap
:
Utiliser la stack
La stack est plus fiable (gérée par le compilateur)
Limiter la taille des fonctions
:
Moins de 60 lignes
Une fonction doit faire une seule chose
Utiliser au moins deux assertions par fonction
:
Vérification des variables et des résultats
Déclarer les variables dans le plus petit scope possible
:
Limiter l'accessibilité pour faciliter le débogage
Vérifier la valeur retour et les paramètres des fonctions
Redondant avec la règle 5
Utiliser le préprocesseur avec parcimonie
:
Éviter les compilations conditionnelles
Réduire les risques de confusion et d'erreurs
Éviter les pointeurs
:
Difficile à analyser automatiquement (risque de bugs)
Compiler avec tous les avertissements
:
Réception de toutes les informations possibles
Conclusion
Importance des tests et des règles strictes
:
Éviter les erreurs potentiellement catastrophiques (ex. NASA)
Outils modernes
:
Ex. Hostinger pour la création de sites web sans code
📄
Full transcript