Los desarrollo de software, en gran medida, aún es una actividad artesanal lo que implica que muchas veces no es posible entregar el software correcto, en el tiempo y presupuestos planeados. Los métodos formales intentan dar rigidez y solidez matemática, a todo el proceso de desarrollo de software, en la búsqueda de la producción de software de calidad.