Les bugs sont des erreurs de conception ou de programmation dans les logiciels, qui peuvent causer des comportements incorrects. La gravité du dysfonctionnement peut aller de très mineure (apparence légèrement incorrecte d'un élément d'interface graphique), à des évènements catastrophiques (explosion de la fusée Ariane lors du vol 501, irradiation incorrecte de patients par une machine de traitement...) en passant par des pertes plus ou moins grandes de données, et, rarement, par une détérioration du matériel.
Il est difficile, pour des raisons fondamentales, de produire des logiciels sans bug. Cependant, il existe des mécanismes par lesquels on peut limiter la quantité de bugs, voire les supprimer. Citons d'une part des préceptes d'organisation des équipes de programmation et leur méthodologie, d'autre part les techniques de recherche de bugs dans les logiciels. La recherche en informatique a développé un domaine d'étude, la vérification formelle, dont l'objectif est de certifier la qualité des logiciel et de garantir leur fiabilité. Dans l'ensemble, l'obtention de logiciels complexes peu bugués est coûteuse en temps et en main d'œuvre. Plus les anomalies sont détectées tôt au long du développement du logiciel, moins leur correction est difficile.
Pour la sécurité globale des systèmes d'information d'une entité, il peut être nécessaire de définir des profils d'application, afin d'identifier les logiciels critiques sur lesquels il est nécessaire de porter une attention particulière du point de vue de la sécurité.