
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 temporal , y una estructura con estado inicial , decidir si . Si es finito, como ocurre en el hardware, la verificación del modelo 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" y para "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 (FSM) durante un número fijo de pasos, , y comprueban si una violación de propiedad puede ocurrir en o menos pasos. Esto generalmente implica codificar el modelo restringido como una instancia de SAT . El proceso puede repetirse con valores cada vez mayores de hasta que se hayan descartado todas las violaciones posibles (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: an integrated tool environment for modelling, validation, and verification of Timed-Arc Petri Nets
- TLA+ model checker by Leslie Lamport
- UPPAAL: an integrated tool environment for modelling, validation, and verification of real-time systems modelled as networks of timed automata
- Zing[23] – experimental tool from Microsoft to validate state models of software at various levels: high-level protocol descriptions, work-flow specifications, web services, device drivers, and protocols in the core of the operating system. Zing is currently being used for developing drivers for Windows.
See also
References
- ↑For convenience, the example properties are paraphrased in natural language here. Model-checkers require them to be expressed in some formal logic, like LTL.
- ↑Lam K., William (2005). "Chapter 1.1: What Is Design Verification?". Hardware Design Verification: Simulation and Formal Method-Based Approaches. Retrieved December 12, 2012.
- ↑"Amir Pnueli - A.M. Turing Award Laureate".
- ↑Allen Emerson, E.; Clarke, Edmund M. (1980), "Characterizing correctness properties of parallel programs using fixpoints", Automata, Languages and Programming, 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: "Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic". Logic of Programs 1981: 52-71.
- ↑Clarke, E. M.; Emerson, E. A.; Sistla, A. P. (1986), "Automatic verification of finite-state concurrent systems using temporal logic specifications", 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