
En informática , la verificación de modelos o verificación de propiedades es un método para comprobar si un modelo de estados finitos de un sistema cumple con una especificación dada (también conocida como corrección ). Esto se asocia típicamente con sistemas de hardware o software , donde la especificación contiene requisitos de vivacidad (como evitar el bloqueo mutuo ) así como requisitos de seguridad (como evitar estados que representen un fallo del sistema ).
Para resolver un problema de este tipo algorítmicamente , tanto el modelo del sistema como su especificación se formulan en un lenguaje matemático preciso. Con este fin, el problema se formula como una tarea lógica , es decir, comprobar si una estructura satisface una fórmula lógica dada. Este concepto general se aplica a muchos tipos de lógica y a muchos tipos de estructuras. Un problema sencillo de verificación de modelos consiste en comprobar si una fórmula en la lógica proposicional es satisfecha por una estructura dada.
Descripción general
La comprobación de propiedades se utiliza para verificar cuando dos descripciones no son equivalentes. Durante el refinamiento , la especificación se complementa con detalles innecesarios en la especificación de nivel superior. No es necesario verificar las propiedades recién introducidas con respecto a la especificación original, ya que esto no es posible. Por lo tanto, la estricta comprobación de equivalencia bidireccional se relaja a una comprobación de propiedades unidireccional. La implementación o el diseño se consideran un modelo del sistema, mientras que las especificaciones son propiedades que el modelo debe satisfacer. [ 2 ]
Se ha desarrollado una clase importante de métodos de verificación de modelos para comprobar modelos de diseños de hardware y software donde la especificación viene dada por una fórmula de lógica temporal . El trabajo pionero en la especificación de lógica temporal fue realizado por Amir Pnueli , quien recibió el premio Turing de 1996 por su "trabajo fundamental que introdujo la lógica temporal en la ciencia de la computación". [ 3 ] La verificación de modelos comenzó con el trabajo pionero de EM Clarke , EA Emerson , [ 4 ] [ 5 ] [ 6 ] por JP Queille y J. Sifakis . [ 7 ] Clarke, Emerson y Sifakis compartieron el premio Turing de 2007 por su trabajo fundamental que fundó y desarrolló el campo de la verificación de modelos. [ 8 ] [ 9 ]
La verificación de modelos se aplica con mayor frecuencia a diseños de hardware. En el caso del software, debido a la indecidibilidad (véase la teoría de la computabilidad ), el enfoque no puede ser completamente algorítmico, aplicarse a todos los sistemas ni proporcionar siempre una respuesta; en general, puede fallar al probar o refutar una propiedad dada. En el hardware de sistemas embebidos , es posible validar una especificación entregada, por ejemplo, mediante diagramas de actividad UML [ 10 ] o redes de Petri interpretadas por control [ 11 ] .
La estructura se suele proporcionar como una descripción de código fuente en un lenguaje de descripción de hardware industrial o un lenguaje de propósito específico. Dicho programa corresponde a una máquina de estados finitos (FSM), es decir, un grafo dirigido compuesto por nodos (o vértices ) y aristas . A cada nodo se le asocia un conjunto de proposiciones atómicas, que normalmente indican qué elementos de memoria son uno. Los nodos representan estados de un sistema, las aristas representan posibles transiciones que pueden alterar el estado, mientras que las proposiciones atómicas representan las propiedades básicas que se cumplen en un punto de ejecución. [ 12 ]
Formalmente, el problema se puede plantear de la siguiente manera: dada una propiedad deseada, expresada como una fórmula de lógica temporaly una estructuracon estado inicial, decidir si. Sies finito, como ocurre en el hardware, la verificación de modelos se reduce a una búsqueda en grafos .
Verificación de modelos simbólicos
En lugar de enumerar los estados alcanzables uno por uno, el espacio de estados a veces se puede recorrer de manera más eficiente considerando un gran número de estados en un solo paso. Cuando dicho recorrido del espacio de estados se basa en representaciones de un conjunto de estados y relaciones de transición como fórmulas lógicas, diagramas de decisión binarios (BDD) u otras estructuras de datos relacionadas, el método de verificación de modelos es simbólico .
Históricamente, los primeros métodos simbólicos utilizaron BDD . Tras el éxito de la satisfacibilidad proposicional en la resolución del problema de planificación en inteligencia artificial (véase satplan ) en 1996, el mismo enfoque se generalizó a la verificación de modelos para lógica temporal lineal (LTL): el problema de planificación corresponde a la verificación de modelos para propiedades de seguridad. Este método se conoce como verificación de modelos acotada. [ 13 ] El éxito de los solucionadores de satisfacibilidad booleana en la verificación de modelos acotada condujo al uso generalizado de solucionadores de satisfacibilidad en la verificación de modelos simbólica. [ 14 ]
Ejemplo
Un ejemplo de este requisito del sistema: entre el momento en que se llama a un ascensor en un piso y el momento en que abre sus puertas en ese piso, el ascensor puede llegar a ese piso como máximo dos veces . Los autores de "Patrones en la especificación de propiedades para la verificación de estados finitos" traducen este requisito a la siguiente fórmula LTL: [ 15 ]
Aquí,debe leerse como "siempre",como "eventualmente",como "hasta que" y los demás símbolos son símbolos lógicos estándar,para "o",para "y" ypara "no".
Técnicas
Las herramientas de verificación de modelos se enfrentan a una explosión combinatoria del espacio de estados, comúnmente conocida como el problema de la explosión de estados , que debe abordarse para resolver la mayoría de los problemas del mundo real. Existen varios enfoques para combatir este problema.
- Los algoritmos simbólicos evitan construir explícitamente el grafo para la máquina de estados finitos (FSM); en su lugar, lo representan implícitamente mediante una fórmula en lógica proposicional cuantificada. El uso de diagramas de decisión binarios (BDD) se popularizó gracias al trabajo de Ken McMillan, [ 16 ] así como de Olivier Coudert y Jean-Christophe Madre, [ 17 ] y el desarrollo de bibliotecas de manipulación de BDD de código abierto como CUDD [ 18 ] y BuDDy. [ 19 ]
- Los algoritmos de verificación de modelos acotados despliegan la máquina de estados finitos durante un número fijo de pasos,y comprobar si puede producirse una infracción de propiedad eno menos pasos. Esto normalmente implica codificar el modelo restringido como una instancia de SAT . El proceso puede repetirse con valores cada vez mayores dehasta que se hayan descartado todas las posibles violaciones (cf. Búsqueda en profundidad iterativa ).
- La abstracción intenta demostrar propiedades de un sistema simplificándolo primero. El sistema simplificado generalmente no satisface exactamente las mismas propiedades que el original, por lo que puede ser necesario un proceso de refinamiento. Por lo general, se requiere que la abstracción sea sólida (las propiedades demostradas en la abstracción son verdaderas para el sistema original); sin embargo, a veces la abstracción no es completa (no todas las propiedades verdaderas del sistema original son verdaderas para la abstracción). Un ejemplo de abstracción es ignorar los valores de las variables no booleanas y considerar solo las variables booleanas y el flujo de control del programa; dicha abstracción, aunque pueda parecer burda, puede, de hecho, ser suficiente para demostrar, por ejemplo, propiedades de exclusión mutua .
- El refinamiento de abstracción guiado por contraejemplos (CEGAR) comienza la verificación con una abstracción gruesa (es decir, imprecisa) y la refina iterativamente. Cuando se encuentra una violación (es decir, un contraejemplo ), la herramienta analiza su viabilidad (es decir, ¿la violación es genuina o el resultado de una abstracción incompleta?). Si la violación es viable, se informa al usuario. Si no lo es, la prueba de inviabilidad se utiliza para refinar la abstracción y la verificación comienza de nuevo. [ 20 ]
Las herramientas de verificación de modelos se desarrollaron inicialmente para razonar sobre la corrección lógica de los sistemas de estados discretos , pero desde entonces se han ampliado para abordar sistemas híbridos de tiempo real y de formas limitadas .
Lógica de primer orden
La verificación de modelos también se estudia en el campo de la teoría de la complejidad computacional . Específicamente, se fija una fórmula lógica de primer orden sin variables libres y se considera el siguiente problema de decisión :
Dada una interpretación finita , por ejemplo, una descrita como una base de datos relacional , decida si la interpretación es un modelo de la fórmula.
Este problema pertenece a la clase de circuitos AC 0. Es tratable al imponer algunas restricciones a la estructura de entrada: por ejemplo, exigir que tenga un ancho de árbol acotado por una constante (lo que implica, de forma más general, la tratabilidad de la verificación de modelos para la lógica monádica de segundo orden ), acotar el grado de cada elemento del dominio y condiciones más generales como la expansión acotada , la expansión localmente acotada y las estructuras no densas en ninguna parte. [ 21 ] Estos resultados se han extendido a la tarea de enumerar todas las soluciones a una fórmula de primer orden con variables libres.
Herramientas
Aquí hay una lista de herramientas importantes para la verificación de modelos:
- Afra: un verificador de modelos para Rebeca , que es un lenguaje basado en actores para modelar sistemas concurrentes y reactivos.
- Aleación (Analizador de aleaciones)
- BLAST (Herramienta de verificación de software de abstracción perezosa de Berkeley)
- CADP (Construction and Analysis of Distributed Processes) es un conjunto de herramientas para el diseño de protocolos de comunicación y sistemas distribuidos.
- CPAchecker : un verificador de modelos de software de código abierto para programas en C, basado en el marco de trabajo CPA.
- ECLAIR : una plataforma para el análisis, verificación, prueba y transformación automáticos de programas C y C++.
- FDR2 : un verificador de modelos para comprobar sistemas en tiempo real modelados y especificados como procesos CSP.
- FizzBee : una alternativa más fácil de usar que TLA+, que utiliza un lenguaje de especificación similar a Python y que cuenta con modelado de comportamiento como TLA+ y modelado probabilístico como PRISM.
- Verificador de nivel de código ISP para programas MPI
- Java Pathfinder : un verificador de modelos de código abierto para programas Java.
- Libdmc : un marco de trabajo para la verificación de modelos distribuidos
- Conjunto de herramientas mCRL2 , licencia de software Boost , basado en ACP
- NuSMV : un nuevo verificador de modelos simbólicos
- PAT : un simulador mejorado, un verificador de modelos y un verificador de refinamiento para sistemas concurrentes y en tiempo real.
- Prisma : un verificador de modelos simbólicos probabilísticos
- Roméo : un entorno de herramientas integrado para el modelado, la simulación y la verificación de sistemas en tiempo real modelados como redes de Petri paramétricas, de tiempo y de cronómetro.
- SPIN : una herramienta general para verificar la corrección de modelos de software distribuidos de forma rigurosa y mayoritariamente automatizada.
- Storm : [ 22 ] Un verificador de modelos para sistemas probabilísticos.
- TAPAs : una herramienta para el análisis del álgebra de procesos
- TAPAAL : un entorno de herramientas integrado para el modelado, validación y verificación de redes de Petri de arco temporizado.
- Comprobador de modelos TLA+ por Leslie Lamport
- UPPAAL : un entorno de herramientas integrado para el modelado, validación y verificación de sistemas en tiempo real modelados como redes de autómatas temporizados.
- Zing [ 23 ] es una herramienta experimental de Microsoft para validar modelos de estado de software en varios niveles: descripciones de protocolos de alto nivel, especificaciones de flujo de trabajo, servicios web, controladores de dispositivos y protocolos en el núcleo del sistema operativo. Actualmente, Zing se utiliza para desarrollar controladores para Windows.
Véase también
- Interpretación abstracta
- Demostración automatizada de teoremas
- Diagrama de decisión binaria
- Autómata de Büchi
- Lógica de árbol de computación
- Refinamiento de la abstracción guiado por contraejemplos
- Verificación formal
- Lógica temporal lineal
- Lista de herramientas de verificación de modelos
- Reducción de orden parcial
- Análisis de programas (informática)
- Análisis de código estático
Referencias
- ↑ Para mayor comodidad, las propiedades de ejemplo se parafrasean aquí en lenguaje natural. Los verificadores de modelos requieren que se expresen en alguna lógica formal, como LTL .
- ↑ Lam K., William (2005). "Capítulo 1.1: ¿Qué es la verificación del diseño?" . Verificación del diseño de hardware: simulación y enfoques basados en métodos formales . Recuperado el 12 de diciembre de 2012 .
- ↑ "Amir Pnueli - Galardonado con el Premio Turing AM" .
- ↑ Allen Emerson, E.; Clarke, Edmund M. (1980), "Caracterización de las propiedades de corrección de programas paralelos mediante puntos fijos", Autómatas, lenguajes y programación , Lecture Notes in Computer Science, vol. 85, pp. 169–181 , doi : 10.1007/3-540-10003-2_69 , ISBN 978-3-540-10003-4
- ↑ Edmund M. Clarke, E. Allen Emerson: "Diseño y síntesis de esqueletos de sincronización mediante lógica temporal de tiempo ramificado" . Logic of Programs 1981: 52-71.
- ↑ Clarke, EM; Emerson, EA; Sistla, AP (1986), "Verificación automática de sistemas concurrentes de estados finitos mediante especificaciones de lógica temporal", ACM Transactions on Programming Languages and Systems , 8 (2): 244, doi : 10.1145/5397.5399 , S2CID 52853200
- ↑ Queille, JP; Sifakis, J. (1982), "Especificación y verificación de sistemas concurrentes en CESAR", Simposio Internacional sobre Programación , Lecture Notes in Computer Science, vol. 137, pp. 337–351 , doi : 10.1007/3-540-11494-7_22 , ISBN 978-3-540-11494-9
- ↑ "Comunicado de prensa: El premio ACM Turing honra a los fundadores de la tecnología de verificación automática" . Archivado del original el 28 de diciembre de 2008. Consultado el 6 de enero de 2009 .
- ↑ USACM : Anunciados los ganadores del Premio Turing 2007
- ↑ Grobelna, Iwona; Grobelny, Michał; Adamski, Marian (2014). "Verificación de modelos de diagramas de actividad UML en el diseño de controladores lógicos". Actas de la Novena Conferencia Internacional sobre Fiabilidad y Sistemas Complejos DepCoS-RELCOMEX. 30 de junio - 4 de julio de 2014, Brunów, Polonia . Avances en Sistemas Inteligentes y Computación. Vol. 286. pp. 233–242 . doi : 10.1007/978-3-319-07013-1_22 . ISBN 978-3-319-07012-4.
- ↑ I. Grobelna, " Verificación formal de la especificación de un controlador lógico integrado con deducción computacional en lógica temporal ", Przeglad Elektrotechniczny, Vol. 87, Número 12a, págs. 47-50, 2011
- ↑ Este artículo se basa en material tomado de Model+checking en el Free On-line Dictionary of Computing antes del 1 de noviembre de 2008 e incorporado bajo los términos de "relicencia" de la GFDL , versión 1.3 o posterior.
- ↑ Clarke, E.; Biere, A.; Raimi, R.; Zhu, Y. (2001). "Verificación de modelos acotada mediante resolución de satisfacibilidad". Métodos formales en diseño de sistemas . 19 : 7–34 . doi : 10.1023/A:1011276507260 . S2CID 2484208 .
- ↑ Vizel, Y.; Weissenbacher, G.; Malik, S. (2015). "Solucionadores de satisfacibilidad booleana y sus aplicaciones en la verificación de modelos". Actas del IEEE . 103 (11): 2021– 2035. doi : 10.1109/JPROC.2015.2455034 . S2CID 10190144 .
- ↑ Dwyer, M.; Avrunin, G.; Corbett, J. (mayo de 1999). «Patrones en las especificaciones de propiedades para la verificación de estados finitos». Patrones en la especificación de propiedades para la verificación de estados finitos . Actas de la 21.ª conferencia internacional sobre ingeniería de software. págs. 411–420 . doi : 10.1145/302405.302672 . ISBN 1581130740.
- ↑
- Verificación de modelos simbólicos , Kenneth L. McMillan, Kluwer, ISBN 0-7923-9380-5, también disponible en línea. Archivado el 2 de junio de 2007 en Wayback Machine .
- ↑ Coudert, O.; Madre, JC (1990). "Un marco unificado para la verificación formal de circuitos secuenciales" (PDF) . Conferencia Internacional IEEE de 1990 sobre Diseño Asistido por Computadora. Resumen de Artículos Técnicos . IEEE Comput. Soc. Press. págs. 126–129 . doi : 10.1109/ICCAD.1990.129859 . ISBN 978-0-8186-2055-3.
- ↑ «CUDD: Paquete de diagramas de decisión de CU» .
- ↑ "BuDDy – Un paquete de diagramas de decisión binarios" .
- ↑ Clarke, Edmund; Grumberg, Orna; Jha, Somesh; Lu, Yuan; Veith, Helmut (2000), "Counterexample-Guided Abstraction Refinement", Computer Aided Verification (PDF) , Lecture Notes in Computer Science, vol. 1855, pp. 154–169 , doi : 10.1007/10722167_15 , ISBN 978-3-540-67770-3
- ↑ Dawar, A; Kreutzer, S (2009). "Complejidad parametrizada de la lógica de primer orden" (PDF) . ECCC . S2CID 5856640. Archivado del original (PDF) el 3 de marzo de 2019.
- ↑ Comprobador de modelos de tormenta
- ↑ Zing
Lecturas adicionales
- Peled, Dorón A .; Pelliccione, Patrizio; Spoletini, Paola (2009). "Comprobación de modelos" . Enciclopedia Wiley de Ingeniería y Ciencias de la Computación . págs. 1904-1920 . doi : 10.1002/9780470050118.ecse247 . ISBN 978-0-470-05011-8. S2CID 5371327 .
- Clarke, Edmund M .; Grumberg, Orna ; Peled, Doron A. (1999). Model Checking . MIT Press . ISBN 0-262-03270-8.
- Berard, B.; Bidoit, M.; Finkel, A.; Laroussinie, F.; Petit, A.; Petrucci, L.; Schnoebelen, P. (20 de junio de 2001). Verificación de sistemas y software: técnicas y herramientas de verificación de modelos . Springer. ISBN 3-540-41523-8.
- Huth, Michael; Ryan, Mark (2004). Lógica en Ciencias de la Computación: Modelado y Razonamiento Sobre Sistemas . Cambridge University Press .
- Holzmann, Gerard J. El verificador de modelos de espín: Introducción y manual de referencia . Addison-Wesley. ISBN 0-321-22862-6.
- Bradfield, Julian; Stirling, Colin (2001). «Lógicas modales y μ-cálculos: una introducción» . Manual de álgebra de procesos . Elsevier. págs. 293–330 . doi : 10.1016/B978-044482830-9/50022-9 . ISBN 978-0-444-82830-9.. JA Bergstra, A. Ponse y SA Smolka, editores." ().
- "Patrones de especificación" . Laboratorio SAnToS, Universidad Estatal de Kansas. Archivado del original el 19 de julio de 2011.
- "Mapeo de patrones de propiedades para RAFMC" . CADP: Construcción y análisis de procesos distribuidos . 2019.
- Mateescu, Radu; Sighireanu, Mihaela (2003). "Verificación de modelos eficiente sobre la marcha para el cálculo mu regular sin alternancia" (PDF) . Science of Computer Programming . 46 (3): 255– 281. doi : 10.1016/S0167-6423(02)00094-1 . S2CID 10942856 .
- Müller-Olm, M.; Schmidt, DA; Steffen, B. (1999). "Verificación de modelos: una introducción tutorial". Análisis estático: 6.º Simposio Internacional, SAS'99, Venecia, Italia, 22-24 de septiembre de 1999, Actas . Vol. 1694. LNCS: Springer. pp. 330–354 . CiteSeerX 10.1.1.96.3011 . doi : 10.1007/3-540-48294-6_22 . ISBN 978-3-540-48294-9.
- Baier, C.; Katoen , J. (2008). Principios de verificación de modelos . MIT Press. ISBN 978-0-262-30403-0.
- Clarke, EM (2008). «El nacimiento de la verificación de modelos». 25 años de verificación de modelos . Lecture Notes in Computer Science. Vol. 5000. pp. 1–26 . doi : 10.1007/978-3-540-69850-0_1 . ISBN 978-3-540-69849-4.
- Emerson, E. Allen (2008). «El comienzo de la verificación de modelos: una perspectiva personal». En Grumberg, Orna; Veith, Helmut (eds.). 25 años de verificación de modelos: historia, logros y perspectivas . LNCS. Vol. 5000. Springer. pp. 27–45 . doi : 10.1007/978-3-540-69850-0_2 . ISBN 978-3-540-69849-4.(Esta es también una muy buena introducción y descripción general de la verificación de modelos).
- Verificación de modelos
- Lógica en informática