Model checking
Il model checking è un metodo per verificare algoritmicamente i sistemi formali. Viene realizzato mediante la verifica del modello, spesso derivato dal modello hardware o software, soddisfacendo una specifica formale. La specifica è spesso scritta come formule logiche temporali.
Il modello solitamente viene espresso come un sistema di transizioni, cioè grafo orientato formato da nodi (o vertici) e archi. Un insieme di proposizioni atomiche è associato ad ogni nodo. I nodi rappresentano gli stati di un sistema, gli archi rappresentano le possibili esecuzioni che alterino lo stato, mentre le proposizioni atomiche rappresentano le proprietà fondamentali che caratterizzano un punto di esecuzione.
Formalmente il problema è posto così: scelta una proprietà da verificare, espressa come una formula logica temporale p, e un modello M avente stato iniziale s, decidere se .
Gli strumenti del model checking si scontrano con la crescita esponenziale dell'insieme degli stati, comunemente conosciuto come il problema dell'esplosione combinatoria, che deve servire a risolvere la maggior parte dei problemi del mondo reale. I ricercatori hanno sviluppato algoritmi simbolici, riduzione parziale dell'ordine, diagrammi decisionali, astrazioni e model checking al volo per risolvere il problema. Questi strumenti furono inizialmente sviluppati per la correttezza logica dei sistemi a stati discreti, ma da allora sono stati estesi per trattare sistemi sistema real-time e forme limitate di sistemi ibridi.
Strumenti
[modifica | modifica wikitesto]- Alloy (Analizzatore di leghe)
- BLAST (Berkeley Lazy Abstraction Software Verification Tool)
- CADP
- CPAchecker:
- ECLAIR:
- FDR2:
- ISP
- Java Pathfinder: un modello open-source per programmi Java
- Libdmc: un framework per il model checking distribuito
- mCRL2 Insieme di strumenti, Boost Software License, basato sull'algebra ACP
- NuSMV:
- PAT:
- Prism: un model checker simbolico probabilstico
- Roméo: un ambiente integrato per la modellazione, validazione e verifica di sistemi in tempo reale modellati in maniera parametrica, sul tempo, e su Reti di Petri stopwatch
- SPIN:
- TAPAs:
- TAPAAL: un ambiente integrato per la modellazione, validazione e verifica di Reti di Petri Timed-Arc
- TLA+ model checker di Leslie Lamport
- UPPAAL:
Bibliografia
[modifica | modifica wikitesto]- Model Checking Archiviato il 30 luglio 2010 in Internet Archive., Doron Peled, Patrizio Pelliccione, Paola Spoletini, Wiley Encyclopedia of Computer Science and Engineering, 2009.
- Promela and SPIN: What do they promise?, Venkatesh Vinayakarao, 2006.
- Automatic verification of finite state concurrent systems using temporal logic, E.M. Clarke, E.A. Emerson, and A.P. Sistla, ACM Trans. on Programming Languages and Systems, 8(2), pp. 244–263, 1986.
- Model Checking, Edmund M. Clarke, Jr., Orna Grumberg and Doron A. Peled, MIT Press, 1999.
- Concurrency theory, calculi and automata for modelling untimed and timed concurrent systems, H. Bowman and R.S. Gomez. Springer, January 2006.
- (EN) Denis Howe, Model checking, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
Voci correlate
[modifica | modifica wikitesto]Altri progetti
[modifica | modifica wikitesto]- Wikimedia Commons contiene immagini o altri file su Model checking
Collegamenti esterni
[modifica | modifica wikitesto]Articoli
[modifica | modifica wikitesto]- (EN) An Introduction to Model Checking[collegamento interrotto] at embedded.com
Gruppi di ricerca
[modifica | modifica wikitesto]- Model checking all'ITC-irst/Fondazione Kessler, Trento [collegamento interrotto], su itc.it.
- Artificial Intelligence Laboratory, Genova, su ai-lab.it. URL consultato il 4 febbraio 2008 (archiviato dall'url originale il 17 febbraio 2007).
- Model Checking al Dipartimento di Informatica, Università di Roma La Sapienza
- Formal Methods and Tools Lab - ISTI - CNR - Pisa, su fmt.isti.cnr.it.
- EmbLab - Università di Modena e Reggio Emilia - Modena, su dii.ing.unimo.it.
- Model Checking at Carnegie Mellon University, su www-2.cs.cmu.edu.
- SAnToS Laboratory at K-State, su cis.ksu.edu.
- Automated Software Engineering at Nasa Ames Research Center, su ase.arc.nasa.gov. URL consultato il 4 giugno 2006 (archiviato dall'url originale il 2 febbraio 2007).
- NASA/JPL Laboratory for Reliable Software, su eis.jpl.nasa.gov. URL consultato il 4 giugno 2006 (archiviato dall'url originale il 31 ottobre 2004).
- VLSI/CAD Research group - University of Colorado at Boulder, su vlsi.colorado.edu. URL consultato il 4 giugno 2006 (archiviato dall'url originale il 30 dicembre 2006).
- Verification and Validation - Brigham Young University, Provo, Utah, su vv.cs.byu.edu.
- ParaDiSe Laboratory - Masaryk University in Brno, su fi.muni.cz.
- VASY Research team - INRIA Rhône-Alpes, France, su inrialpes.fr.
Strumenti di model checking
[modifica | modifica wikitesto]- EmbeddedValidator, The Matlab/Simulink/Stateflow/TargetLink Formal Verification Environment [collegamento interrotto], su osc-es.de.
- Statemate ModelChecker, Statemate Models Robustness Checking [collegamento interrotto], su osc-es.de.
- Statemate ModelCertifier, Statemate Models Requirements Certification [collegamento interrotto], su osc-es.de.
- Alloy language, su alloy.mit.edu. URL consultato il 4 giugno 2006 (archiviato dall'url originale il 10 dicembre 2011).
- APMC, su apmc.berbiqui.org. URL consultato il 4 giugno 2006 (archiviato dall'url originale il 5 gennaio 2006).
- BLAST (Berkeley Lazy Abstraction Software Verification Tool)
- LoTREC, su irit.fr. URL consultato il 4 giugno 2006 (archiviato dall'url originale il 31 agosto 2006).
- Bogor, su bogor.projects.cis.ksu.edu.
- BOOP Toolkit
- Charmy, CHARMY: A Framework for Designing and Verifying Architectural Specifications, su computer.org. URL consultato il 20 ottobre 2009 (archiviato dall'url originale il 4 giugno 2011).
- Cadena
- Cadence SMV
- CADP, su inrialpes.fr.
- CBMC, a bounded Model Checker for C/C++ programs
- CHIC
- CMurphi Caching Murphi
- COSPAN
- Coverity
- Goanna static code analysis via model checking.
- GEAR, a game based model checking tool capable of CTL, modal μ-calculus and specification patterns.
- HOL theorem prover, su hol.sourceforge.net.
- Java Pathfinder, su javapathfinder.sourceforge.net.
- MOPED, su fmi.uni-stuttgart.de. URL consultato il 4 giugno 2006 (archiviato dall'url originale il 30 giugno 2006).
- MOPS, Modelchecking Programs for Security properties
- NuSMV: a new symbolic model checker, su nusmv.fbk.eu.
- Prism(model checker)
- ProB, su ecs.soton.ac.uk. URL consultato il 4 giugno 2006 (archiviato dall'url originale il 29 novembre 2006).
- Probabilistic Symbolic Model Checker
- ProofPower
- PROSPER
- Rabbit
- RAVEN (Real-Time Analysis and Verification Environment), su www-ti.informatik.uni-tuebingen.de. URL consultato il 4 giugno 2006 (archiviato dall'url originale il 23 giugno 2007).
- RuleBase, su haifa.il.ibm.com. URL consultato il 4 giugno 2006 (archiviato dall'url originale il 29 giugno 2006).
- SATABS, predicate abstraction for C/C++ programs
- SAL: Symbolic Analysis Laboratory, su sal.csl.sri.com.
- SLAM project
- SMV: Symbolic Model Checker, su sal.csl.sri.com.
- SPIN model checker, su spinroot.com.
- UPPAAL - Uppaal Model Checker, su uppaal.org.
- Verification Interacting with Synthesis (VIS), su vlsi.colorado.edu. URL consultato il 4 giugno 2006 (archiviato dall'url originale il 5 dicembre 2006).
- Database of Verification and Model Checking Tools (Yahoda)