Diría que hay tres tipos de errores de software.
- Errores de compilación
- Errores de tiempo de ejecución
- Errores lógicos
Errores de compilación
Diría que este es el más infrecuente. Si alguna vez hubiera errores de compilación que se empujan a la producción de un software, esto sería horrendo. Desafortunadamente, he visto que esto ocurre en diferentes aplicaciones que he utilizado en el pasado. Podría ser cualquier cosa, desde variables inexistentes, funciones, etc. Cualquier cosa que un compilador debería haber capturado antes de que una persona empuje su código, pero tal vez estaban usando un editor de texto en su lugar.
Errores de tiempo de ejecución
Los errores de tiempo de ejecución son operaciones que un programa intenta hacer pero son imposibles de llevar a cabo. El ejemplo más simple es dividir por 0. Podrías tener una simple línea de código que hace la división, pero no considerar que una variable podría ser 0. Compilaría bien pero en tiempo de ejecución, obtendrías un error.
Errores Lógicos
Definitivamente un tipo de error muy común. A veces los errores lógicos se deben a la especificación técnica que se le da a un ingeniero de software. Tal vez no entendieron completamente cómo una característica debería haber sido implementada. Pensaron que dado x, deberías hacer y, pero la realidad era que dado x, deberías hacer z.
Otras veces, podría ser la falta de pruebas efectivas. Un ingeniero puede pensar que ha probado todos los escenarios posibles en los que su código debería funcionar y cómo detectar las áreas en las que no funciona. Sin embargo, no siempre es así.
Mención honorífica
Bicho "No es una característica todavía". Esto es cuando alguien piensa que el software debería ser capaz de hacer algo, pero no lo hace. Un consumidor puede pensar que es un bug, pero los desarrolladores/responsables de producto pueden tenerlo dentro de su alcance para el futuro.