Musterüberprüfung

In der Informatik bezieht sich Musterüberprüfung auf das folgende Problem:

In Anbetracht eines Modells eines Systems, prüfen Sie automatisch, ob dieses Modell einer gegebenen Spezifizierung entspricht.

Gewöhnlich sind die Systeme, die man im Sinn hat, Hardware oder Softwaresysteme, und die Spezifizierung enthält Sicherheit

Voraussetzungen wie die Abwesenheit von toten Punkten und ähnlichen kritischen Staaten, die das System veranlassen können abzustürzen. Musterüberprüfung ist eine Technik, um Genauigkeitseigenschaften von automatisch nachzuprüfen

Zustandssysteme.

Um solch ein Problem algorithmisch zu beheben, werden sowohl das Modell des Systems als auch die Spezifizierung auf einer genauen mathematischen Sprache formuliert: Zu diesem Zweck wird es als eine Aufgabe in der Logik nämlich zu formuliert

überprüfen Sie, ob eine gegebene Struktur eine gegebene logische Formel befriedigt.

Das Konzept ist allgemein und gilt für alle Arten der Logik und passenden Strukturen. Ein einfaches musterüberprüfendes Problem prüft nach, ob eine gegebene Formel in der Satzlogik durch eine gegebene Struktur zufrieden ist.

Übersicht

Eine wichtige Klasse von Musterüberprüfungsmethoden ist entwickelt worden, um Modelle der Hardware und Softwaredesigns zu überprüfen

wo die Spezifizierung durch eine zeitliche Logikformel gegeben wird.

Das Wegbahnen für Arbeit in der Musterüberprüfung von zeitlichen Logikformeln wurde von E. M. Clarke und E. A. Emerson und von J. P. Queille und J. Sifakis getan. Clarke, Emerson und Sifakis haben den Turing 2007-Preis für ihre Arbeit an der Musterüberprüfung geteilt.

Musterüberprüfung wird meistenteils auf Hardware-Designs angewandt. Für die Software wegen der Unentscheidbarkeit (sieh Berechenbarkeitstheorie), kann die Annäherung nicht völlig algorithmisch sein; normalerweise kann es scheitern, ein gegebenes Eigentum zu beweisen oder zu widerlegen.

Die Struktur wird gewöhnlich als eine Quellcodebeschreibung auf einer Industriehardware-Beschreibungssprache oder einer Sprache des speziellen Zwecks gegeben. Solch ein Programm entspricht einer Zustandsmaschine (FSM), d. h., ein geleiteter Graph, der aus Knoten (oder Scheitelpunkte) und Ränder besteht. Eine Reihe von Atomvorschlägen wird mit jedem Knoten vereinigt, normalerweise festsetzend, welche Speicherelemente dasjenige sind. Die Knoten vertreten Staaten eines Systems, die Ränder vertreten mögliche Übergänge, die den Staat verändern können, während die Atomvorschläge die grundlegenden Eigenschaften vertreten, die an einem Punkt der Ausführung halten.

Formell kann das Problem wie folgt festgesetzt werden: In Anbetracht eines gewünschten Eigentums, ausgedrückt als eine zeitliche Logikformel p und eine Struktur M mit dem anfänglichen Staat s, entscheiden wenn. Wenn M begrenzt ist, wie es in der Hardware ist, nimmt Musterüberprüfung zu einer Graph-Suche ab.

Algorithmen

setzen Sie Raumenumeration, symbolische Zustandraumenumeration, abstrakte Interpretation, symbolische Simulation, symbolische Schussbahn-Einschätzung, symbolische Ausführung fest

Ausführlich-Zustandmusterüberprüfung

Symbolische Musterüberprüfung

Anstatt erreichbare Staaten einer nach dem anderen aufzuzählen, kann der Zustandraum manchmal viel effizienter durch das Betrachten der großen Anzahl von Staaten an einem Einzelschritt überquert werden.

Wenn solches Zustandraumtraversal auf Darstellungen von Zustandsätzen und Übergang-Beziehungen als Formeln, binäre Entscheidungsdiagramme oder andere zusammenhängende Datenstrukturen, basiert

die musterüberprüfende Methode ist symbolisch.

Historisch haben die ersten symbolischen Methoden BDDs verwendet.

Nach dem Erfolg von Satzsatisfiability im Beheben des Planungsproblems in der künstlichen Intelligenz (sieh satplan), 1996,

dieselbe Annäherung wurde zur Musterüberprüfung für den Geradlinigen Zeitlichen Logik-LTL verallgemeinert (das Planungsproblem entspricht Musterüberprüfung für Sicherheitseigenschaften).

Diese Methode ist als begrenzte Musterüberprüfung bekannt.

Werkzeuge

Musterüberprüfungswerkzeuge stehen einem kombinatorischen Schlag des Zustandraums gegenüber, der allgemein als das Zustandexplosionsproblem bekannt ist, das gerichtet werden muss, um die meisten wirklichen Probleme zu beheben. Es gibt mehrere Annäherungen, um dieses Problem zu bekämpfen.

  1. Symbolische Algorithmen vermeiden jemals, den Graphen für den FSM zu bauen; statt dessen vertreten sie den Graphen implizit mit einer Formel in der gemessenen Satzlogik. Der Gebrauch von binären Entscheidungsdiagrammen (BDDs) wurde populär durch die Arbeit von Ken McMillan gemacht.
  2. Begrenzte Musterüberprüfungsalgorithmen entrollen den FSM für eine festgelegte Zahl von Schritten und überprüfen, ob eine Eigentumsübertretung in oder weniger Schritte vorkommen kann. Das schließt normalerweise Verschlüsselung des eingeschränkten Modells als ein Beispiel von GESESSENEN ein. Der Prozess kann mit größeren und größeren Werten dessen wiederholt werden, bis alle möglichen Übertretungen ausgeschlossen worden sind (vgl. Wiederholende tiefer werdende Tiefensuche).
  3. Die teilweise Ordnungsverminderung kann (auf ausführlich vertretenen Graphen) verwendet werden, um die Anzahl von unabhängigen Zwischenresten von gleichzeitigen Prozessen zu vermindern, die betrachtet werden müssen. Die Grundidee besteht darin, dass, wenn es für die Art von Dingen nicht von Bedeutung ist, man vorhat sich zu erweisen, entweder A oder B zuerst durchgeführt wird, dann ist es eine Zeitverschwendung, um sowohl den AB als auch die BA Zwischenreste zu denken.
  4. Abstraktion versucht, Eigenschaften auf einem System durch die erste Vereinfachung davon zu beweisen. Das vereinfachte System befriedigt gewöhnlich genau dieselben Eigenschaften wie der ursprüngliche nicht, so dass ein Prozess der Verbesserung notwendig sein kann. Allgemein verlangt man, dass die Abstraktion gesund ist (die auf der Abstraktion bewiesenen Eigenschaften treffen auf das ursprüngliche System zu); jedoch, meistenteils, ist die Abstraktion nicht abgeschlossen (nicht alle wahren Eigenschaften des ursprünglichen Systems treffen auf die Abstraktion zu). Ein Beispiel der Abstraktion ist auf einem Programm, um die Werte nicht boolean Variablen zu ignorieren und nur boolean Variablen und den Kontrollfluss des Programms zu denken; solch eine Abstraktion, obwohl es rau scheinen kann, kann tatsächlich genügend sein, z.B Eigenschaften des gegenseitigen Ausschlusses zu beweisen.
  1. Gegenbeispiel hat Abstraktionsverbesserung (CEGAR) geführt beginnt, mit einer rauen (ungenauen) Abstraktion zu checken, und raffiniert es wiederholend. Wenn eine Übertretung (Gegenbeispiel) gefunden wird, analysiert das Werkzeug es für die Durchführbarkeit (d. h. ist die Übertretung echt oder das Ergebnis einer unvollständigen Abstraktion?). Wenn die Übertretung ausführbar ist, wird sie dem Benutzer berichtet; wenn es nicht ist, wird der Beweis von infeasibility verwendet, um die Abstraktion zu raffinieren, und Überprüfung beginnt wieder.

Musterüberprüfungswerkzeuge wurden am Anfang entwickelt, um über die logische Genauigkeit von getrennten Zustandsystemen vernünftig zu urteilen, aber sind seitdem erweitert worden, um sich mit schritthaltenden und beschränkten Formen von hybriden Systemen zu befassen.

Siehe auch

  • Binäres Entscheidungsdiagramm
  • Automat von Büchi
  • Berechnungsbaumlogik
  • Formelle Überprüfung
  • Geradlinige zeitliche Logik
  • Die teilweise Ordnungsverminderung

Werkzeuge

Weil eine kategorisierte Liste von Werkzeugen hier sieht.

  • SPRENGEN SIE Musterkontrolleur
  • CADP (Aufbau und Analyse von Verteilten Prozessen) ein Werkzeugkasten für das Design von Nachrichtenprotokollen und verteilten Systemen
  • SCHACH-Musterkontrolleur
  • SCHICK
  • FDR2 hat ein Musterkontrolleur, um Echtzeitsysteme nachzuprüfen, modelliert und hat als CSP Prozesse angegeben
  • ISP codieren Niveau verifier für MPI Programme
  • Javanischer Bahnbrecher - öffnet Quellmusterkontrolleur für javanische Programme
  • Markov Reward Model Checker (MRMC)
  • mCRL2 Toolset, Zunahme-Softwarelizenz, die auf ACP basiert
ist
  • MoonWalker - öffnen Quellmusterkontrolleur für.NET Programme
  • NuSMV, ein neuer symbolischer Musterkontrolleur
  • ompca, ein interaktiver symbolischer Simulator mit der API kontrolliert für C/C ++ Programme mit Direktiven von OpenMP. Das Werkzeug wird als eine Anwendung von REDLIB gebaut.
  • RICHTIG - ein erhöhter Simulator, Musterkontrolleur und Verbesserungskontrolleur für gleichzeitige und schritthaltende Systeme
  • Prisma, ein probabilistic symbolischer Musterkontrolleur
  • Kaninchen
  • REDLIB, die Bibliothek für die Musterüberprüfung zu kommunizieren hat automatas mit BDD ähnlichen Diagrammen zeitlich festgelegt. Anwendungen schließen einen TCTL Musterkontrolleur mit zeitlich festgelegten Schönheitsquantifizierungen, schönen Simulierungskontrolleur und interaktiven symbolischen Simulator für C/C ++ Programme mit Direktiven von OpenMP ein. GUI für das Musterredigieren und die symbolische Simulation sind auch verfügbar.
  • KLUGER Musterkontrolleur, Symbolisches Modell, das Analysator für die Zuverlässigkeit überprüft und Zeitlich festlegt
  • SPINNEN SIE Musterkontrolleur ein allgemeines Werkzeug, für die Genauigkeit von verteilten Softwaremodellen auf eine strenge und größtenteils automatisierte Mode nachzuprüfen.
  • TAPAs: Werkzeug für die Analyse der Prozess-Algebra.
  • TAPAAL, eine einheitliche Werkzeug-Umgebung für das Modellieren, die Gültigkeitserklärung und die Überprüfung des Zeitlich festgelegten Kreisbogens Petri Netze
  • Vereofy, ein Softwaremusterkontrolleur für teilbasierte Systeme für die betriebliche Genauigkeit
  • μCRL, GPL, der auf ACP basiert
ist
  • UPPAAL eine einheitliche Werkzeug-Umgebung für das Modellieren, die Gültigkeitserklärung und die Überprüfung von Echtzeitsystemen hat als Netze von zeitlich festgelegten Automaten modelliert
  • Roméo eine einheitliche Werkzeug-Umgebung für das Modellieren, die Simulation und die Überprüfung von Echtzeitsystemen hat als parametrisch, Zeit und Stoppuhr Netze von Petri modelliert
  • TLA + Musterkontrolleur durch Leslie Lamport
  • AlPiNA, AlPiNA tritt für Algebraische Petri Netze Analysator ein und ist ein Musterkontrolleur für Algebraische Petri Netze.
  • McErlang, ein Musterkontrolleur für Programme von Erlang, die verteilt und mit der Schuld tolerant werden können.

Zusammenhängende Techniken

Geschichte

Weiterführende Literatur

], Doron Peled, Patrizio Pelliccione, Paola Spoletini, Wiley Encyclopedia von Informatik und Technik, 2009 überprüfend.

Francis Beaufort / S'more
Impressum & Datenschutz