Se conoce como  automático de programas un conjunto de técnicas que permiten extraer información y/o propiedades directamente desde los programas. Los usos son muy variados entre los que se destacan la verificación de código  (descubrir bugs/probar su ausencia o el cumplimiento de contratos), transformación/síntesis (optimización de código, paralelización, generación de casos de tests), ingeniería reserva, análisis de requisitos no funcionales (complejidad, consumo de recursos), diferenciación de programas, entre otras aplicaciones.