En informática , una especificación formal es una descripción matemática de un sistema de software o hardware que se puede implementar de acuerdo con esa descripción. Especifica qué debe hacer el sistema, no cómo debe hacerlo. Si existe una especificación del sistema, es posible aplicar métodos de verificación formales para demostrar que el sistema satisface (o cumplirá) la especificación. Por lo tanto, es posible verificar si un modelo diseñado en particular satisfará los requisitos después de la implementación. Si la verificación de software examina la conformidad de un programa con una especificación, entoncesвалидация исследует соответствие программы или спецификации требованиям пользователя .