Resumen:
La industria de la computación ha pasado por algunas fases. Durante la primera generación de computadores, los problemas en la programación fueron culpados a las severas restricciones impuestas por el hardware existente en ese entonces. Las aplicaciones eran largos procesos en lotes y programas científicos donde la eficiencia era la meta más importante. Los programadores se preocupaban por aprovechar cada segundo para que el programa completara su ejecución, antes de que el hardware fallara. Desde entonces han habido tremendos avances tecnológicos en el campo del hardware.
La confiabilidad y velocidad del hardware, se ha incrementado en gran magnitud en la actualidad. La mayoría de las aplicaciones actualmente son en línea, controlando procesos críticos y se han convertido en la parte integral de las operaciones diarias de muchas empresas.
Aunque el hardware actualmente es mucho más flexible, los problemas con la programación no han disminuido; al contrario, ellos son peores de lo que eran antes. En vista de que la velocidad y la confiabilidad del hardware se ha incrementado en gran magnitud, las restricciones físicas del hardware han sido reemplazadas por las restricciones invisibles de la capacidad de la mente humana. El problema más significativo que encara el procesamiento de datos actualmente es el problema del software inconfiable.
La confiabilidad del software es definida como la probabilidad de que el software se ejecute por un período de tiempo particular sin un error, medida por el costo del usuario por cada error encontrado. La confiabilidad del software es así una función del impacto que los errores tienen sobre el sistema. La confiabilidad no es una propiedad inherente del programa, sino que está ampliamente relacionada con la manera en la cual un programa es usado.