• Keine Ergebnisse gefunden

Automatische Verifikation von Software

N/A
N/A
Protected

Academic year: 2022

Aktie "Automatische Verifikation von Software"

Copied!
7
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Automatische Verifikation von Software

Ziel

Automatische (d.h., so weit wie m ¨oglich computergest ¨utzte) Verifikation von Programmen.

Zwei Arten von Fehlern in Programmen:

Spezifische Fehler

Ein Programm tut nicht das, was es soll, d.h., es gen ¨ugt nicht seiner Spezifikation.

Automatisches Erkennen solcher Fehler scheint schwierig und erfordert zumindest auch eine vollst ¨andige Formalisierung der Spezifikation. Diese ist auch wieder fehleranf ¨allig!

Generische Fehler

Ein Programm tut gar nichts, d.h., es st ¨urzt ab“ und h ¨alt mit einer

(2)

Das Halteproblem

Problem

Entscheide, ob ein gegebenes Programm bei jeder Eingabe irgendwann anh ¨alt (d.h., dass das Programm niemals in eine Endlosschleife l ¨auft).

Ziel

Ein Programm f ¨ur das Halteproblem.

(3)

Eine konkrete Spezifikation des Halteproblems in JAVA

Eingabe: String method (Name der zu ¨uberpr ¨ufenden JAVA-Methode)

Array parametersvon Objekten (die Parame- ter, die an die Methode ¨ubergeben werden) Ausgabe: true, falls method wirklich eine Methode in

einer verf ¨ugbaren Klasse bezeichnet, parameters die richtige Zahl von Pa- rametern mit den richtigen Typen enth ¨alt und die Methode method bei Eingabe parameters(irgendwann) anh ¨alt,

falsesonst.

(4)

In JAVA:

class Halt { ...

static boolean halt(String method,

Object[] parameters) { ...

} ...

}

Wir k ¨onnen annehmen, dass die MethodehaltZugriff auf den Quellcode vonmethodhat.

(5)

Die Unentscheidbarkeit des Halteproblems

Satz 7.1

Es gibt kein JAVA-Programm, das das Halteproblem l ¨ost.

(6)

Beweis von Satz 7.1

Angenommen, es gibt ein Programm, das das Halteproblem l ¨ost. Wir k ¨onnen annehmen, dass dies mittels einer Methode

static boolean halt(String method,Object[] parameters) in einer KlasseHaltgeschieht.

Wir definieren eine neue Methodediagin einer KlasseDiag:

class Diag{

static void diag(String method) { Object[] parameters = { method };

// Eingaben bestehen nur aus // dem einen String method.

if ( Halt.halt(method,parameters) ) { while ( true ) {};

// Wenn Methode method bei // Eingabe method h¨alt,

// dann laufe in Endlosschleife.

(7)

Was passiert beim Aufruf Diag.diag("foo")

wennfooder Name einer Methode ist, die einen String als Parameter erwartet?

Diag.diag("foo")h ¨alt

⇐⇒ Halt.halt("foo",{"foo"})gibtfalsezur ¨uck

⇐⇒ foo("foo")h ¨alt nicht.

Also beim AufrufDiag.diag("Diag.diag"):

Diag.diag("Diag.diag")h ¨alt

⇐⇒ Diag.diag("Diag.diag")h ¨alt nicht.

Widerspruch!

Referenzen

ÄHNLICHE DOKUMENTE

INSTITUTE OF EXPERIMENTAL PARTICLE PHYSICS (IEKP) – PHYSICS FACULTY.. Establishing Signals,

• Planck’s EE measurement is cosmic variance limited (l- by-l) only up to l~10, assuming white noise. • Contribution of 1/f noise degrades the sensitivity

Ho- wever, it must be noted, that skewed peer size distributions lead to a simple baseline for peer selection algorithms: In peer selection algorithms, peer data summaries are used

ALFRED WEGENER INSTITUTE FOR POLAR AND MARINE RESEARCH in the Hermann von Helmholtz Association (HGF).. Biophysical properties of the dolphin skin reveal

However, in order to think of (23) as a reduced version of that model, one needs to think of ¨ Z as a variable ˙ Z that can be assumed to have a distribution (given, e.g., by values

In paper II, the repeated measures analysis of covariance (RMA) was applied to relate the seasonal and horizontal patterns of psammic taxa in lakes Saadjärv and Võrtsjärv to

In Frau Gasslers Volkswirtschaftsdepartement ist das Amt für Militär und Bevölkerungsschutz angesiedelt bei Peter Gomm das Gesundheitswesen, und Regierungsrat Klaus Fischer führt

richtigen Moment das Richtige richtig tun.» Er meinte damit, dass nicht die Spezialisten an der Front zum Beispiel Feuerwehrleute, Sauerstoff oder Wasserflaschen selber