fbpx
Wikipedia

Verificación formal

La verificación formal, en ingeniería y en computación, es un método de validación estática (se valida a través del propio código del programa, a partir de una abstracción o de una representación simbólica) en el que, partiendo de un conjunto axiomático, reglas de inferencia y algún lenguaje lógico (como la lógica de primer orden), se puede encontrar una demostración o prueba de corrección de un programa, algoritmo, etc, aunque también se puede encontrar su refutación.[1]​Es un método necesario para probar cualquier programa o teoría pero, aunque sea satisfactoria, no asegura que la solución sea del todo correcta.

Dentro de la computación, la verificación es usada para estudiar los distintos sistemas software (en código fuente), sistemas combinacionales, circuitos digitales, etc.

Uno de los precursores de la verificación fue Edsger Dijkstra que, mostrando mucho interés en ella durante los 70, publicó el libro "A Discipline of Programming", en el cual, presentó su método de desarrollo sistemático de programas junto con sus pruebas de corrección, todos ellos basados en la verificación formal.

Importancia en las matemáticas

Tradicionalmente, dentro de las matemáticas, la verificación únicamente se utilizaba para la demostración y convicción de enunciados matemáticos y como medio de obtención de evidencias para la eliminación de dudas. Pero en la realidad tiene un mayor número de funciones, aparte de la de convicción:

  • En su uso típico de convicción, como se ha dicho anteriormente, se basa en la demostración de enunciados y de conjeturas desconocidas, verificación deductiva. En este estudio, los matemáticos, además de partir de las premisas, construyen contraejemplos mediante una serie de pruebas, llamadas pruebas cuasi-empíricas, las cuales, intentan descubrir contradicciones o errores ocultos.
Uno de los métodos de esta verificación, es la llamada demostración deductiva, en donde la conclusión proviene de las premisas. Un defecto de esta demostración, es que se da lugar unos desarrollos tan extensos y complicados que el riesgo de cometer errores aumenta.
  • Como método de sistematización. Aquí, la verificación no comprueba si algunas afirmaciones son ciertas o no, sino que se encarga de organizar enunciados individuales no relacionados. De esta manera, ayuda a identificar inconsistencias, a simplificar las teorías matemáticas (integrando afirmaciones y teoremas), a economizar los resultados, a ayudar a las aplicaciones mediante el análisis de sus axiomas y definiciones, etc.
  • Como método de explicación. Aunque es posible alcanzar la afirmación mediante la verificación deductiva, en la mayoría de los casos, esta no proporciona una explicación válida de por qué puede ser verdadero y únicamente confirma que es verdad. Así, en los casos en los que los resultados están defendidos por evidencias cuasi-empíricas concluyentes, la función de la verificación no es únicamente la de convencer, sino también la de explicar. Más aún, para los matemáticos es más primordial este aspecto aclaratorio, que el simple hecho de verificación.
  • Como verificación de modelos. Este tipo de verificación, consiste en un reconocimiento del modelo matemático (aplicable tanto para modelos finitos, como para modelos infinitos, ya que estos últimos se pueden representar de manera finita mediante la abstracción).
En definitiva, consiste en estudiar todos los cambios y estados de los modelos matemáticos mediante técnicas inteligentes de abstracción, consiguiendo agrupar en una sola operación todo el conjunto de estados. Estas transiciones estudiadas, son descritas en diferentes lógicas, tales como, la lógica computacional, la lógica temporal ...[2]

Importancia en el Software

En el software, la verificación formal de programas, consiste en justificar que un programa cumpla una especificación formal de su comportamiento. Esta verificación formal incluye la verificación deductiva, la interpretación abstracta, la demostración automática de teoremas, etc. La característica principal es que la verificación se escribe de manera dependiente al tipo de programación, es decir, las propias funciones incluyen sus especificaciones y el mismo código establece la corrección frente a esas especificaciones. Incluso, el propio lenguaje admite la verificación deductiva.

Otro enfoque complementario es la llamada derivación del programa, en la que un código eficiente se deriva, gracias a una serie de pasos de corrección, a partir de especificaciones funcionales.

Algunas características de las técnicas usadas en la verificación de programas son:

Las mismas propiedades, se pueden deducir lógicamente de la semántica.

También es posible obtener un único resultado a partir de todo el espacio de posibilidades, por ejemplo, buscar la solución únicamente en los números enteros y hasta un cierto número.

Y por último, estas técnicas tienen la característica de ser tanto decidibles, es decir, sus algoritmos están implementados para poner fin a una respuesta, como indecidibles (que nunca podrán terminar).

Estado actual

En la actualidad, la complejidad de los diseños de los algoritmos matemáticos aumenta día a día, es por eso, por lo que también aumenta la importancia de la verificación formal de la industria del hardware, la cual, es usada por la mayoría de las empresas líderes de hardware, más que por las del software.[3]​ Esto es debido a que dentro del hardware los errores tienen una mayor importancia económica y comercial.

En el software, se utiliza la reparación automatizada de programas, que consiste en la corrección de errores software sin ninguna intervención humana. Esta reparación, utiliza las técnicas de la verificación formal (búsqueda de puntos del programa que pueden contener fallos o que pueden ser objetivos de síntesis) y también la de la síntesis de programas (reducir el espacio de búsqueda).

En el hardware, la cantidad de posibles interacciones entre los componentes, hace cada vez más difícil realizar las distintas posibilidades de simulación, es por ello, que el diseño del hardware sea más susceptible a los métodos de prueba automatizados, lo que hace más fácil la verificación formal. Morales, David (jul-sep 2003). «La investigación en verificación formal: un estado del arte». 

Véase también

Referencias

  1. Nuevo Plan de Estudios Consultor Universal del Estudiante. Tomo de Matemáticas: Cultural, S. A. 2003. 
  2. Davis, Philip J. (1983). The Mathematical Experience (en inglés). Great Britain:Pelican Books. 
  3. Harrison, J: (2003). La verificación formal en Intel. 

Bibliografía

  • Edsger Dijkstra, Wim H. J. Feijen, A Method of Programming, Addison-Wesley, 1988, 188 pages
  • Gila Hanna, Más que demostración formal, 1989

Enlaces externos

  • Verificación formal de algoritmos.
  • Introducción a la verificación formal.
  • Verificación formal de hardware.
  •   Datos: Q173326

verificación, formal, este, artículo, sección, necesita, referencias, aparezcan, publicación, acreditada, este, aviso, puesto, enero, 2013, verificación, formal, ingeniería, computación, método, validación, estática, valida, través, propio, código, programa, p. Este articulo o seccion necesita referencias que aparezcan en una publicacion acreditada Este aviso fue puesto el 11 de enero de 2013 La verificacion formal en ingenieria y en computacion es un metodo de validacion estatica se valida a traves del propio codigo del programa a partir de una abstraccion o de una representacion simbolica en el que partiendo de un conjunto axiomatico reglas de inferencia y algun lenguaje logico como la logica de primer orden se puede encontrar una demostracion o prueba de correccion de un programa algoritmo etc aunque tambien se puede encontrar su refutacion 1 Es un metodo necesario para probar cualquier programa o teoria pero aunque sea satisfactoria no asegura que la solucion sea del todo correcta Dentro de la computacion la verificacion es usada para estudiar los distintos sistemas software en codigo fuente sistemas combinacionales circuitos digitales etc Uno de los precursores de la verificacion fue Edsger Dijkstra que mostrando mucho interes en ella durante los 70 publico el libro A Discipline of Programming en el cual presento su metodo de desarrollo sistematico de programas junto con sus pruebas de correccion todos ellos basados en la verificacion formal Indice 1 Importancia en las matematicas 2 Importancia en el Software 3 Estado actual 4 Vease tambien 5 Referencias 6 Bibliografia 7 Enlaces externosImportancia en las matematicas EditarTradicionalmente dentro de las matematicas la verificacion unicamente se utilizaba para la demostracion y conviccion de enunciados matematicos y como medio de obtencion de evidencias para la eliminacion de dudas Pero en la realidad tiene un mayor numero de funciones aparte de la de conviccion En su uso tipico de conviccion como se ha dicho anteriormente se basa en la demostracion de enunciados y de conjeturas desconocidas verificacion deductiva En este estudio los matematicos ademas de partir de las premisas construyen contraejemplos mediante una serie de pruebas llamadas pruebas cuasi empiricas las cuales intentan descubrir contradicciones o errores ocultos Uno de los metodos de esta verificacion es la llamada demostracion deductiva en donde la conclusion proviene de las premisas Un defecto de esta demostracion es que se da lugar unos desarrollos tan extensos y complicados que el riesgo de cometer errores aumenta Como metodo de sistematizacion Aqui la verificacion no comprueba si algunas afirmaciones son ciertas o no sino que se encarga de organizar enunciados individuales no relacionados De esta manera ayuda a identificar inconsistencias a simplificar las teorias matematicas integrando afirmaciones y teoremas a economizar los resultados a ayudar a las aplicaciones mediante el analisis de sus axiomas y definiciones etc Como metodo de explicacion Aunque es posible alcanzar la afirmacion mediante la verificacion deductiva en la mayoria de los casos esta no proporciona una explicacion valida de por que puede ser verdadero y unicamente confirma que es verdad Asi en los casos en los que los resultados estan defendidos por evidencias cuasi empiricas concluyentes la funcion de la verificacion no es unicamente la de convencer sino tambien la de explicar Mas aun para los matematicos es mas primordial este aspecto aclaratorio que el simple hecho de verificacion Como verificacion de modelos Este tipo de verificacion consiste en un reconocimiento del modelo matematico aplicable tanto para modelos finitos como para modelos infinitos ya que estos ultimos se pueden representar de manera finita mediante la abstraccion En definitiva consiste en estudiar todos los cambios y estados de los modelos matematicos mediante tecnicas inteligentes de abstraccion consiguiendo agrupar en una sola operacion todo el conjunto de estados Estas transiciones estudiadas son descritas en diferentes logicas tales como la logica computacional la logica temporal 2 Importancia en el Software EditarEn el software la verificacion formal de programas consiste en justificar que un programa cumpla una especificacion formal de su comportamiento Esta verificacion formal incluye la verificacion deductiva la interpretacion abstracta la demostracion automatica de teoremas etc La caracteristica principal es que la verificacion se escribe de manera dependiente al tipo de programacion es decir las propias funciones incluyen sus especificaciones y el mismo codigo establece la correccion frente a esas especificaciones Incluso el propio lenguaje admite la verificacion deductiva Otro enfoque complementario es la llamada derivacion del programa en la que un codigo eficiente se deriva gracias a una serie de pasos de correccion a partir de especificaciones funcionales Algunas caracteristicas de las tecnicas usadas en la verificacion de programas son Las mismas propiedades se pueden deducir logicamente de la semantica Tambien es posible obtener un unico resultado a partir de todo el espacio de posibilidades por ejemplo buscar la solucion unicamente en los numeros enteros y hasta un cierto numero Y por ultimo estas tecnicas tienen la caracteristica de ser tanto decidibles es decir sus algoritmos estan implementados para poner fin a una respuesta como indecidibles que nunca podran terminar Estado actual EditarEn la actualidad la complejidad de los disenos de los algoritmos matematicos aumenta dia a dia es por eso por lo que tambien aumenta la importancia de la verificacion formal de la industria del hardware la cual es usada por la mayoria de las empresas lideres de hardware mas que por las del software 3 Esto es debido a que dentro del hardware los errores tienen una mayor importancia economica y comercial En el software se utiliza la reparacion automatizada de programas que consiste en la correccion de errores software sin ninguna intervencion humana Esta reparacion utiliza las tecnicas de la verificacion formal busqueda de puntos del programa que pueden contener fallos o que pueden ser objetivos de sintesis y tambien la de la sintesis de programas reducir el espacio de busqueda En el hardware la cantidad de posibles interacciones entre los componentes hace cada vez mas dificil realizar las distintas posibilidades de simulacion es por ello que el diseno del hardware sea mas susceptible a los metodos de prueba automatizados lo que hace mas facil la verificacion formal Morales David jul sep 2003 La investigacion en verificacion formal un estado del arte Vease tambien EditarLogica de Hoare un sistema formal que permite la verificacion de programas imperativos Lenguajes formales Metodo formal Verificacion de modelos Referencias Editar Nuevo Plan de Estudios Consultor Universal del Estudiante Tomo de Matematicas Cultural S A 2003 Davis Philip J 1983 The Mathematical Experience en ingles Great Britain Pelican Books Harrison J 2003 La verificacion formal en Intel Bibliografia EditarEdsger Dijkstra Wim H J Feijen A Method of Programming Addison Wesley 1988 188 pages Gila Hanna Mas que demostracion formal 1989Enlaces externos EditarVerificacion formal de algoritmos Introduccion a la verificacion formal Verificacion formal de hardware Datos Q173326 Obtenido de https es wikipedia org w index php title Verificacion formal amp oldid 134817269, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos