Unerw¨unschte Ergebnisse las-sen auf einen Fehler in der Implementierung schließen, was weiter ¨uberpr¨uft werden muss.. 4.2 Explizite ¨Aquivalenzpr¨ufung 1334.2.2 Bereichstest Im Zusamm
Trang 1stimuli
Implementierung
Implementierung
Version k
Version k+ 1
?
≡ 0
Referenz-Abb 4.11 Prinzip des Regressionstests [305]
Zun¨achst werden in einem Simulationslauf sowohl die verwendeten
Testfallein-gaben als auch die erzeugten AusTestfallein-gaben einer Version k der Implementierung auf-gezeichnet und gespeichert Diese Daten werden als Referenztestf¨alle, aufgeteilt in Referenzstimuli und Referenzergebnisse, bezeichnet Liegt eine Version k+1 der Im-plementierung vor, wird diese mit den Referenzstimuli stimuliert und die erzeugten Ergebnisse mit den Referenzergebnissen verglichen
Treten Diskrepanzen zwischen erzeugten Ergebnissen der Version k+ 1 und den Referenzergebnissen auf, muss bewertet werden, ob es sich hierbei um eine gew¨unschte oder unerw¨unschte Abweichung handelt Unerw¨unschte Ergebnisse las-sen auf einen Fehler in der Implementierung schließen, was weiter ¨uberpr¨uft werden muss Dies ist notwendig, da es ebenfalls denkbar ist, dass das Referenzergebnis fehlerhaft war Handelt es sich jedoch um eine gew¨unschte Abweichung von dem Referenzergebnis, etwa durch detailliertere Ausgaben, so wird das Referenzergebnis durch das neu erzeugte Ergebnis ersetzt
W¨ahrend Ende-zu-Ende-Tests auf einen konkreten Anwendungsfall
eingeschr¨an-kt sind, stellen Regressionstests heutzutage einen Mindeststandard in der Systement-wicklung dar Dies liegt im Wesentlichen an dem hohen Automatisierungsgrad, der bei Regressionstest erreicht werden kann Auf der anderen Seite bieten Ende-zu-Ende-Tests die M¨oglichkeit, die Qualit¨at der Spezifikation zu erh¨ohen, da durch die mehrfache Implementierung Mehrdeutigkeiten und Unvollst¨andigkeit in der Spezifi-kation mit einer h¨oheren Wahrscheinlichkeit aufgedeckt werden Allerdings kommt diese Qualit¨atssteigerung zu dem Preis der mehrfachen Entwicklung
Trang 24.2 Explizite ¨Aquivalenzpr¨ufung 133
4.2.2 Bereichstest
Im Zusammenhang mit diversifizierenden Verifikationsmethoden stellt sich die
Fra-ge, wie mit der gr¨oßten Wahrscheinlichkeit aber minimierten Simulationsaufwand Fehler aufgedeckt werden k¨onnen Das Ziel ist es, die meist große Anzahl an Testf¨allen zu reduzieren und nur wichtige Szenarien zu simulieren Hierzu muss man entscheiden, welche Testf¨alle wichtig und welche eher unwichtig sind Da hierbei typischerweise eine große Menge an Testf¨allen ausgeschlossen wird, muss man bei der Auswahl der Testf¨alle sehr sorgf¨altig vorgehen Die wesentlichen Kriterien zur Auswahl sind dabei, dass:
• potentielle Fehler zuverl¨assig erkannt und
• die Testf¨alle m¨oglichst frei von Redundanz sind.
W¨ahrend ersteres darauf abzielt, effektive Testf¨alle auszuw¨ahlen, zielt letzteres dar-auf ab, die Effizienz der Simulation der Testf¨alle zu erh¨ohen
Ein weit akzeptiertes Vorgehen bei der Auswahl von Testf¨allen ist die sog ¨ Aqui-valenzklassenbildung Hierbei werden Testf¨alle in sog ¨ Aquivalenzklassen eingeteilt.
Teilmenge aller m¨oglichen Testf¨alle, bei denen das erwartete Verhalten durch Stimu-lation mit Testfalleingaben aus dieser ¨ Aquivalenzklasse ¨ahnlich ist.
Man sieht bereits an dieser Definition, dass es sich bei dem Begriff der ¨ Aqui-valenzklasse um ein Konzept handelt, da es viele m¨ogliche Interpretationen f¨ur die
¨
Ahnlichkeit von Verhalten des Systems gibt Dies ist maßgeblich von der gew¨ahlten Abstraktionsebene abh¨angig Prinzipiell werden zwei Arten von ¨
Aquivalenzklassen-bildung unterschieden, die funktionsorientierte ¨ Aquivalenzklassenbildung und die strukturorientierte ¨ Aquivalenzklassenbildung Bei der funktionsorientierten ¨ Aquiva-lenzklassenbildung werden die ¨Aquivalenzklassen anhand der Spezifikation erstellt
Im Gegensatz dazu basiert die strukturorientierte ¨Aquivalenzklassenbildung auf der Implementierung Weiterhin beachte man bei Definition 4.2.1, dass lediglich von einem erwarteten Verhalten gesprochen wird Resultiert aus den Simulationen mit zwei Elementen aus der selben ¨Aquivalenzklasse unterschiedliches Verhalten, muss entweder die ¨Aquivalenzklassenbildung oder die Implementierung des Systems feh-lerhaft sein
Beispiel 4.2.1 Als einfaches Beispiel wird zun¨achst ein System mit einem einzelnen
nummerischen Eingang betrachtet Die Spezifikation gibt vor, dass das System aus-schließlich positive Werte als Eingabe gestattet Somit k¨onnen zwei ¨ Aquivalenzklas-sen von Testf¨allen gebildet werden: Solche mit Stimuli durch positive Zahlen und solche mit Stimuli durch nichtpositive Zahlen Die Eingabe von positiven Zahlen stellen den Normalfall f¨ur das System dar, weshalb die zugeh¨orige ¨Aquivalenzklasse
als g¨ultig bezeichnet wird Testf¨alle mit Eingaben von nichtpositiven Zahlen bilden entsprechend die ung¨ultige ¨ Aquivalenzklasse Dies weißt darauf hin, dass
Testfal-leingaben aus dieser ¨Aquivalenzklasse ung¨ultig sind und somit vermutlich zu einem Fehlverhalten f¨uhren
Trang 3Zur Auswahl der Testf¨alle k¨onnen auf Basis der ¨Aquivalenzklassen die folgenden Richtlinien gegeben werden: Falls die g¨ultige ¨Aquivalenzklasse einen Bereich von Werten repr¨asentiert, so k¨onnen jeweils zwei ung¨ultige ¨Aquivalenzklassen gebildet werden Ist z B die g¨ultige ¨Aquivalenzklasse durch den Bereich 1≤ x ≤ 10 gegeben,
so lauten die zugeh¨origen ung¨ultigen ¨Aquivalenzklassen x < 1 und x > 10 Ist die
g¨ultige ¨Aquivalenzklasse allerdings eine Menge an Werten, so wird in der Regel lediglich eine ung¨ultige ¨Aquivalenzklasse gebildet Sei z B x ∈ {rot,blau} eine
g¨ultige ¨Aquivalenzklasse, so kann eine ung¨ultige ¨Aquivalenzklasse wie folgt gebildet
werden: x ∈ {allerFarben}\{rot,blau} Ist eine g¨ultige ¨Aquivalenzklasse durch eine Bedingung gegeben, z B x > 10, so kann eine ung¨ultige ¨Aquivalenzklasse wie folgt aussehen: x ≤ 10.
H¨aufig werden ¨Aquivalenzklassen aber nicht anhand der Eing¨ange, sondern f¨ur Ausgangsbedingungen eines Systems gebildet Hierzu werden zun¨achst die Aus-gangsbedingungen aufgestellt Anhand dieser werden, in einem folgenden Schritt, die ¨Aquivalenzklassen f¨ur die Testfalleingaben ermittelt, welche die gew¨unschten Ausgangsbedingungen produzieren Die Regeln zur Erzeugung der g¨ultigen und ung¨ultigen ¨Aquivalenzklassen k¨onnen in diesem Fall direkt ¨ubertragen werden
Unter der Annahme, dass das System die Funktion y = f (x) implementiert und
die Ausgangsbedingung 1≤ y ≤ 10 lautet, k¨onnen eine g¨ultige ¨Aquivalenzklasse
x ∈ {x | 1 ≤ f (x) ≤ 10} und zwei ung¨ultige ¨Aquivalenzklassen x ∈ {x | f (x) < 1} und x ∈ {x | f (x) > 10} gebildet werden.
4.2.3 Pfadbereichstest
Durch Bildung von ¨Aquivalenzklassen ist das Problem der Auswahl sinnvoller Testf¨alle allerdings noch nicht gel¨ost Hierzu wurden eine Reihe von Verfahren
ent-wickelt, die sich unter dem Begriff Bereichstest (engl domain testing) zusammen-fassen lassen Das strukturorientierte Verfahren mit dem Namen Pfadbereichstest
[462] geht davon aus, dass Fehler in einem System in zwei Klassen eingeteilt wer-den k¨onnen:
1 Bereichsfehler f¨uhren zur Ausf¨uhrung eines falschen Kontrollpfads.
2 Berechnungsfehler entstehen, wenn zwar der richtige Kontrollpfad ausgef¨uhrt
wird, das berechnete Ergebnis allerdings falsch ist
Der Pfadbereichstest zielt auf die Erkennung von Bereichsfehlern Allerdings ist hierdurch nicht ausgeschlossen, dass ebenfalls Berechnungsfehler erkannt werden k¨onnen Das prinzipielle Vorgehen zur Erstellung eines Pfadbereichstests ist das wie-derholte bilden von ¨Aquivalenzklassen anhand des Kontrollflusses eines Systems Dies wird anhand eines Beispiels aus [305] verdeutlicht
Beispiel 4.2.2 Gegeben ist die folgende C-Funktion zur Bestimmung der
betragsm¨a-ßig gr¨oßeren Zahl zweier reeller Zahlen
Trang 44.2 Explizite ¨Aquivalenzpr¨ufung 135
1 void minMaxBetrag(double &min, double &max) {
2 if (min < 0) {
5 if (max < 0) {
8 if (min > max) {
13 }
Hierzu wird zun¨achst der Betrag der Variable min, anschließend der Betrag der Varia-blen max bestimmt In einem anschließenden Schritt wird der gr¨oßere Betrag beider Zahlen bestimmt Der gr¨oßere Betrag ist am Ende in der Variablen max, der kleinere Betrag in der Variablen min gespeichert
Zur Auswahl der Testf¨alle beim Pfadbereichstest st¨utzt man sich auf die nahme, dass Fehler am h¨aufigsten an Bereichsgrenzen auftreten Um auf dieser An-nahme Testf¨alle zu generieren, werden zun¨achst Eingabebedingungen f¨ur die unter-schiedlichen Programmpfade der C-Funktion aufgestellt Die Eingabebedingungen definieren Teilbereiche der Eingabewerte, durch welche die Ausf¨uhrung eines be-stimmten Programmpfads stimuliert wird Ist einer dieser Teilbereiche leer, so kann der zugeh¨orige Pfad nicht ausgef¨uhrt werden
Sind die Eingabebedingungen bekannt, kann jedem Pfad p i ein Teilbereich d (p i)
der Eingabewerte, der sog Pfadbereich, und die berechnete Funktion c (p i), die sog
Pfadberechnung, zugeordnet werden Mit diesem Wissen kann das Verhalten eines
Systems durch eine potentiell unendlich große Anzahl an Paaren(d(p i ),c(p i)) re-pr¨asentiert werden
Beispiel 4.2.3 F¨ur das Programm aus Beispiel 4.2.2 ist der zugeh¨orige
Kontroll-Datenflussgraph in Abb 4.12 dargestellt Insgesamt sind acht unterschiedliche Pfade
im Kontrollflussgraphen m¨oglich Somit l¨asst sich das Programm aus Beispiel 4.2.2 durch folgende Paare aus Eingangsbedingungen und Berechnungen f¨ur die acht
Pfa-de darstellen, wobei die Pfadbereiche durch Pr¨adikate beschrieben werPfa-den:
p1= (v1,v2,v3,v4,v5,v6,v7):
d (p1) : (min in < 0) ∧ (max in < 0) ∧ (−max in < −min in)
c (p1) : min out:= −max in ; max out:= −min in
p2= (v1,v3,v4,v5,v6,v7):
d (p2) : (min in ≥ 0) ∧ (max in < 0) ∧ (−max in < min in)
c (p2) : min out:= −max in ; max out:= min in
Trang 5NOP
NOP
NOP
NOP
NOP
NOP
v1
v2
v3
v4
v5
v6
v7
min ≥ 0
min < 0
max ≥ 0
max < 0
max < min max ≥ min
min *= -1
max *= -1
tmp = min
min = max
max = tmp
Abb 4.12 Kontroll–Datenflussgraph f¨ur die Funktion minMaxBetrag aus Beispiel 4.2.2
p3= (v1,v2,v3,v5,v6,v7):
d (p3) : (min in < 0) ∧ (max in ≥ 0) ∧ (max in < −min in)
c (p3) : min out:= max in ; max out:= −min in
p4= (v1,v3,v5,v6,v7):
d (p4) : (min in ≥ 0) ∧ (max in ≥ 0) ∧ (max in < min in)
c (p4) : min out:= max in ; max out:= min in
p5= (v1,v2,v3,v4,v5,v7):
d (p5) : (min in < 0) ∧ (max in < 0) ∧ (−min in ≤ −max in)
c (p5) : min out:= −min in ; max out:= −max in
p6= (v1,v3,v4,v5,v7):
d (p6) : (min in ≥ 0) ∧ (max in < 0) ∧ (min in ≤ −max in)
c (p6) : min out:= min in ; max out:= −max in
Trang 64.2 Explizite ¨Aquivalenzpr¨ufung 137
p7= (v1,v2,v3,v5,v7):
d (p7) : (min in < 0) ∧ (max in ≥ 0) ∧ (−min in ≤ max in)
c (p7) : min out:= −min in ; max out:= max in
p8= (v1,v3,v5,v7):
d (p8) : (min in ≥ 0) ∧ (max in ≥ 0) ∧ (min in ≤ max in)
c (p8) : min out:= min in ; max out:= max in
Dabei bezeichnet min in und max injeweils die Eingangsbelegung der Variablen min
und max Entsprechend bezeichnet min out und max out die jeweilige Belegung der Variablen min und max beim Verlassen der Funktion minMaxBetrag
Zur Auswahl der Testf¨alle werden in [462] sog On- und Off-Testf¨alle definiert.
Eingaben von On-Testf¨alle besitzen die Eigenschaft, dass sie Werte, die direkt auf einer Bereichsgrenze liegen, stimulieren Eingaben von Off-Testf¨alle hingegen sti-mulieren Werte, die einεvon dieser Bereichsgrenze entfernt liegen Hierbei m¨ussen zwei F¨alle unterschiedenen werden:
1 Ist die betrachtete Bereichsgrenze eine geschlossene Grenze, so liegt der On-Testfall innerhalb dieses Bereiches Der Off-On-Testfall wird einεentfernt von der Bereichsgrenze gelegt, also außerhalb des Bereichs Der Off-Testfall geh¨ort so-mit zu einem Nachbarbereich
2 Ist die betrachtete Bereichsgrenze hingegen eine offene Grenze, so liegt der On-Testfall bereits in einem Nachbarbereich Der Off-On-Testfall wird dann einε ent-fernt von der Bereichsgrenze, in den betrachteten Bereich gelegt
Beispiel 4.2.4 Als Fortsetzung f¨ur die Beispiele 4.2.2 und 4.2.3 werden Testfallein-gaben f¨ur die Pfadbereiche d (p i ) f¨ur alle acht Kontrollflusspfade p ides Programms minMaxBetrag erstellt Hierzu bietet es sich an, die Pfadbereiche graphisch
dar-zustellen (siehe Abb 4.13) Pfadbereichsgrenzen sind durch die min in - und max in -Achse sowie die beiden Winkelhalbierenden gegeben Ob eine Bereichsgrenze offen oder geschlossen ist, ist jeweils durch einen kleinen Pfeil gekennzeichnet Hierbei zeigt der Pfeil an der Grenze immer in den f¨ur die Grenze geschlossenen Bereich
Als Beispiel seien die Bereichsgrenzen des Bereichs d (p6) : (min in ≥ 0) ∧ (max in < 0)∧(min in ≤ −max in ) betrachtet Sowohl die angrenzende max in-Achse als auch die angrenzende Winkelhalbierende geh¨oren zu diesem Bereich Um die Pfad-bereichsgrenze, die durch die Winkelhalbierende gegeben ist, zu ¨uberpr¨ufen, w¨ahlt man nun drei Testfalleingaben, so dass diese eine On-Off-On-Folge ergeben, d h man w¨ahlt zun¨achst einen Testfall direkt auf der Winkelhalbierenden, dann einen
um einenε entfernten im Bereich d (p2) liegenden, und anschließend wieder einen Testfall direkt auf der Winkelhalbierenden Dies ist in Abb 4.13 f¨ur die Testf¨alle mit Eingabe(x1,x2,x3) gegeben
F¨uhrt man nun eine Simulation f¨ur einen Pfadbereich d (p i) entsprechend mit den On-Off-On-Testf¨allen durch, kann es zu einem nicht erwarteten Ergebnis kommen
Trang 71
1
d (p1) d (p3)
d (p5)
d (p6)
d (p7)
d (p8)
geschlossene Grenze f¨ur d (p7) offene Grenze f¨ur d (p3)
x1
x3
ε
x2
max in
min in
Abb 4.13 Pfadbereiche des Programms minMaxBetrag aus Beispiel 4.2.2 [305]
Ob dieses unerwartete Ergebnis auf einen Fehler schließen l¨asst, muss zun¨achst ge-pr¨uft werden Handelt es sich um ein Fehlverhalten, so k¨onnen drei Arten von Fehler unterschieden werden:
1 Wird ein Bereichsfehler entdeckt, so muss der Pfadbereich d (p i) angepasst
werden Es wird eine sog Pfadbereichsanpassung vorgenommen Dies ist in
Abb 4.14a) f¨ur den Fall, dass ein On-Testfall fehlschl¨agt, in Abb 4.14b) f¨ur den Fall, dass der Off-Testfall fehlschl¨agt, dargestellt M¨ogliche neue Bereichsgren-zen sind als gepunktete Linien gezeichnet
2 Wird hingegen ein Berechnungsfehler erkannt, d h das tats¨achliche Ergebnis
passt nicht zu dem erwarteten Ergebnis, so muss die Berechnung c (p i) dieses
Pfades korrigiert werden Es wird eine sog Pfadberechnungsanpassung
vorge-nommen
3 Wird das Fehlen eines Pfades p jerkannt, so muss ein neues Paar(d(p j ),c(p j))
gebildet werden, wobei d (p j ) ein Teilbereich des vorherigen Pfadbereichs d(p i)
ist Es wird eine sog Pfaderg¨anzung vorgenommen.
Man beachte, dass Anpassungen im Allgemeinen nicht einer einzelnen Klasse dieser Fehler zugeordnet werden k¨onnen So kann eine ¨Anderung in einer
Trang 8Variablenbele-4.2 Explizite ¨Aquivalenzpr¨ufung 139
0 1
d (p2 )
d (p6 )
x1
x3
ε
x2
b)
fehlerhaft
minin
0 1
d (p2 )
d (p6 )
x1
x3
ε
x2 fehlerhaft
a)
minin
Abb 4.14 Anpassung der Pfadbereichsgrenze [305]
gung sowohl den Pfadbereich als auch die Pfadberechnung ¨andern Insbesondere ist jede Pfaderg¨anzung auch eine Pfadbereichsanpassung
Falls jedoch alle drei Testfalleingaben das erwartete Ergebnis liefern, gibt es zwei M¨oglichkeiten:
1 Entweder ist die Bereichsgrenze korrekt oder
2 sie weicht im Dreieck der drei Testf¨alle maximal um das gew¨ahlte ε ab Ein solches Beispiel ist in Abb 4.13 als gepunktete Linie dargestellt
In den meisten F¨allen wird es nicht m¨oglich sein, alle Pfade eines Programms mit Testf¨allen zu simulieren, da dies zu aufwendig w¨are Allerdings l¨asst sich der Grad der erzielten Verifikationsvollst¨andigkeit beim Pfadbereichstest direkt mit der Pfad¨uberdeckung messen und somit eine Aussage ¨uber den Grad der Vollst¨andigkeit der Verifikation treffen
4.2.4 Fehleroffenbarende Unterbereiche
Eine Erweiterung des Pfadbereichstests ist in [461] vorgestellt Neben der Konstruk-tion der Pfadbereiche anhand der Implementierung, wird zus¨atzlich die SpezifikaKonstruk-tion
zu Rate gezogen Hierdurch soll es z B erm¨oglicht werden, fehlende Pfade in der
Implementierung zu erkennen Hierzu werden sog fehleroffenbarende Unterberei-che konstruiert Dabei werden zun¨achst die PfadbereiUnterberei-che nach dem oben
beschrie-benen Verfahren bestimmt In einem zweiten Schritt werden ¨Aquivalenzklassen aus der Spezifikation abgeleitet Pfadbereiche und ¨Aquivalenzklassen werden
paarwei-se geschnitten Als Ergebnis erh¨alt man die fehleroffenbarenden Unterbereiche, die dadurch gekennzeichnet sind, dass sie nur Testfalleingaben enthalten, die laut Spe-zifikation zu einem gleichen Verhalten f¨uhren und die auch vom System gleichartig verarbeitet werden Dies wird an folgendem Beispiel aus [305] gezeigt:
Trang 9Beispiel 4.2.5 F¨ur das Programm minMaxBetrag aus Beispiel 4.2.2 wurde in
Bei-spiel 4.2.3 gezeigt, dass die Implementierung acht verschiedene Kontrollpfade ent-h¨alt Aus der Spezifikation k¨onnen drei ¨Aquivalenzklasse d (s1),d(s2) und d(s3) ab-geleitet werden:
s1:
d (s1) : |min in | < |max in |
c (s1) : min out:= |min in |;max out:= |max in |
s2:
d (s2) : |min in | > |max in |
c (s2) : min out:= |max in |;max out:= |min in |
s3:
d (s3) : |min in | = |max in |
c (s3) : min out = max out:= |min in |
W¨ahrend die ¨Aquivalenzklasse d (s2) die Pfadbereiche d(p1), ,d(p4) umfasst, kann eine eindeutige Zuordnung f¨ur die ¨Aquivalenzklassen d (s1) und d(s3) nicht
gemacht werden So gilt z B., dass d (p5) zum Teil in d(s1) und zum Teil in d(s3)
enthalten ist, aber weder d (s1) noch d(s3) vollst¨andig in d(p5) enthalten ist Durch die paarweise Schnittmengenbildung k¨onnen die fehleroffenbarenden Unterbereiche identifiziert werden:
d1= d(s1) ∩ d(p5) = (min in < 0) ∧ (max in < 0) ∧ (−min in < −max in)
d2= d(s1) ∩ d(p6) = (min in ≥ 0) ∧ (max in < 0) ∧ (min in < −max in)
d3= d(s1) ∩ d(p7) = (min in < 0) ∧ (max in ≥ 0) ∧ (−min in < max in)
d4= d(s1) ∩ d(p8) = (min in ≥ 0) ∧ (max in ≥ 0) ∧ (min in < max in)
d5= d(s2) ∩ d(p1) = (min in < 0) ∧ (max in < 0) ∧ (−max in < −min in)
d6= d(s2) ∩ d(p2) = (min in ≥ 0) ∧ (max in < 0) ∧ (−max in < min in)
d7= d(s2) ∩ d(p3) = (min in < 0) ∧ (max in ≥ 0) ∧ (max in < −min in)
d8= d(s2) ∩ d(p4) = (min in ≥ 0) ∧ (max in ≥ 0) ∧ (max in < min in)
d9= d(s3) ∩ d(p5) = (min in < 0) ∧ (max in < 0) ∧ (−min in = −max in)
d10= d(s3) ∩ d(p6) = (min in ≥ 0) ∧ (max in < 0) ∧ (min in = −max in)
d11= d(s3) ∩ d(p7) = (min in < 0) ∧ (max in ≥ 0) ∧ (−min in = max in)
d12= d(s3) ∩ d(p8) = (min in ≥ 0) ∧ (max in ≥ 0) ∧ (min in = max in)
Die hier vorgestellten simulativen Verfahren zur expliziten ¨Aquivalenzpr¨ufung lassen sich auf speicherbehaftete Systeme erweitern, indem Sequenzen von Ein- und Ausgaben anstelle einzelner Ein- und Ausgabesymbole betrachtet werden, um den Einfluss des im Speicher abgebildeten Zustands erfassen zu k¨onnen Weiterf¨uhrende Verfahren zur Generierung von funktions- und strukturorientierten Testf¨allen sind
in Abschnitt 7.2 beschrieben Formale Methoden zur expliziten ¨Aquivalenzpr¨ufung kombinatorischer Hardware sind in Abschnitt 6.1.2 zu finden
Trang 104.3 Sequentielle ¨Aquivalenzpr¨ufung 141
4.3 Sequentielle ¨ Aquivalenzpr ¨ufung
Digitale Hardware/Software-Systeme arbeiten typischerweise ¨uber sehr lange Zeit-r¨aume ohne Neustart Dabei verarbeiten sie nicht nur ein einzelnes Eingabesymbol
zu einem Ausgabesymbol, sondern Sequenzen von Eingabesymbolen zu Sequenzen von Ausgabesymbolen Dabei h¨angt die aktuelle Ausgabe eines Systems im Allge-meinen nicht nur von der momentanen, sondern auch von vorherigen Eingaben ab Dies ist in Abb 4.15 dargestellt, wobei die Ausgabe des speicherbehafteten Systems (Abb 4.15b)) stets von dem aktuellen und den zwei vorherigen Eingangssymbolen abh¨angt
System speicherbehaftetes
speicherloses System
b)
a)
Abb 4.15 Verarbeitung in Systemen a) ohne und b) mit Speicher [272]
Die Information zur Berechnung der aktuellen Ausgabe ist dabei in den Speicher-elementen des Systems gespeichert Viele wichtige speicherbehaftete Systeme lassen
sich als deterministische endliche Automaten (engl Deterministic Finite Automaton, DFA) (siehe Definition 2.2.13 auf Seite 47) modellieren Aus diesem Grund wird
die sequentielle ¨Aquivalenzpr¨ufung anhand von Automaten- ¨Aquivalenz eingef¨uhrt Verfahren zur sequentiellen ¨Aquivalenzpr¨ufung f¨ur Hardware sind in Abschnitt 6.1.3 beschrieben Verfahren zur Prozessor- und Software- ¨Aquivalenzpr¨ufung sind in den Abschnitten 6.3 und 7.1 diskutiert
Endliche Automaten k¨onnen explizit als Zustandsdiagramme repr¨asentiert
wer-den Zust¨ande s ∈ S werden als Knoten gezeichnet Zustands¨uberg¨ange werden
ent-sprechend der ¨Ubergangsfunktion f als Kanten (s,s ) modelliert, wobei s der aktuelle Zustand und s := f (s,i) der Folgezustand ist Diese werden mit dem Eingabesymbol
i ∈ I, das den ¨Ubergang ausl¨ost, und dem erzeugten Ausgabesymbol o ∈ O beschrif-tet, wobei o : = g(s,i) sich aus der Ausgabefunktion g ergibt.
Endliche Automaten arbeiten auf Sequenzen von Eingabesymbolen Sei I+die
Menge aller endlichen Sequenzen, die sich aus den Symbolen i ∈ I bilden lassen Entsprechend sei O+die Menge aller endlichen Sequenzen, die sich aus den
Ausga-besymbolen o ∈ O bilden lassen Eingabesequenzen w ∈ I+der L¨ange n werden im