Fragen zu Anomalien

Moderator: SE - Wartung und Qualitätssicherung

Mojito Mix
DON'T PANIC
Beiträge: 42
Registriert: 10. Okt 2007 18:28

Fragen zu Anomalien

Beitrag von Mojito Mix » 21. Jul 2011 19:52

Hallo,
ich hab mal 2 Fragen zu Anomalien:

1) Ist das eine starke dd-Anomalie? Eigentlich gibts keinen alternativen Pfad, wodurch auf i lesend zugegriffen wird. Aber andererseits werden Zyklen ausgeschlossen oder?

Code: Alles auswählen

int i;
while(true){
i = 5;
} 
2) Wie schaut es bei folgendem Beispiel aus? Ist das hier eine starke dd-Anomalie? Wenn man sich nur den Graph dazu betrachtet, so gibt gibt es einen Pfad von der while-Schleife zur Zuweisung "i =10". Diese Zuweisung wird aber nie erreicht. Ist diese Scheinanomalie trotzdem eine starke Anomalie?

Code: Alles auswählen

int i;
while(true){
i = 5;
} 
i = 10;

MuldeR
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 131
Registriert: 18. Okt 2005 16:14
Wohnort: (d)armstadt
Kontaktdaten:

Re: Fragen zu Anomalien

Beitrag von MuldeR » 21. Jul 2011 20:49

Ich würde schon zu (1) sagen, dass es stark ist, da es zwischen den beiden Zuweisungen, zwischen denen die Anomlie besteht, keine alternativen Pfad gibt, der die Anomlie aufhebt.

Selbst wenn man aus dem WHILE raus springen könnte und dort i lesen würde, dann würde das ja nicht helfen, weil dann die beiden betroffenen Knoten gar nicht mehr auf dem Pfad liegen (sondern nur noch die erste). Schwach wäre es, wenn es einen alternativen Pfad zwischen den beiden Zuweisungen gäbe, auf denen es nochmal gelesen (oder undefined) wird.

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Re: Fragen zu Anomalien

Beitrag von s!mon » 21. Jul 2011 21:21

Zu (1): Auf dem Pfad der Anomalie kommt aber der Knoten mehr als einmal vor (3-2-3), was laut Definition im Skript aber nicht erlaubt ist. Deshalb dürfte es keine sein.

Deinen zweiten und dritten Satz verstehe ich nicht?!

MuldeR
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 131
Registriert: 18. Okt 2005 16:14
Wohnort: (d)armstadt
Kontaktdaten:

Re: Fragen zu Anomalien

Beitrag von MuldeR » 21. Jul 2011 21:43

Die Definition (stark) besagt ja, dass es einen Pfad zwischen n mit d(v) und n' mit d(v) existieren muss (ich sehe nicht, dass da n ungleich n' gelten muss) und dass es keinen alternativen Pfad von n nach n' gibt, auf dem v zwischendurch noch einmal gelesen oder undefiniert wird. In deinem Beispiel (1) gibt es offensichtlich einen Pfad von der i-Zuweisung zur nächsten. Gleichzeitig aber keinen Pfad der von n nach n' führt und i zwischendurch noch einmal liest.

Was ich am Ende noch meinte: Selbst wenn man aus dem WHILE raus könnte (was man, denk ich mal, laut Kontrollflussgraph ohnehin könnte, weil dort nur die Kanten und nicht die Bedingungen "sichtbar" sind) wäre das ja kein alternativer Pfad von n nach n' mehr, der deine Anomalie "schwach" machen könnte. Sondern ein Pfad der von n wegführt, nie nach n' kommt und daher für die Betrachtung irrelevant sein dürfte.

Benutzeravatar
oren78
BSc Spammer
BSc Spammer
Beiträge: 1373
Registriert: 17. Nov 2006 17:47
Wohnort: Darmstadt

Re: Fragen zu Anomalien

Beitrag von oren78 » 22. Jul 2011 00:52

Zu der 1:
Hier bin ich mir nicht \(100\; \%\) sicher das diese garantiert stark ist. Simon sagte zwar bereits das ein zyklus existiert: \(3-2-3\) (wobei ich mich sowieso gerade frage, wie der knoten \(2\) aussieht, da hier weder ein \(p(\;)\) noch \(c(\;)\) und sonstwas gesetzt werden kann...)Aber wie dem auch sei, das Skript ignoriert Zyklen bei Anomalien, siehe Seite: \(209\). Die Definition der dd-Anomalie schließt den Fall nicht aus das: \(n_1 = n_k\) gilt. Damit wäre es also schon möglich das der Pfad: \(3-2-3\) zwar ein Zyklus darstellt aber eine dd-Anomalie denoch erfüllt wird!

Wer hält dagegen? 8)

Zu der 2:
Das ist auf gar keinem Fall eine starke dd-Anomalie, da du die Schleife "hoffentlich" nie verlassen wirst und "Scheinanomalien" im Skript weder definiert geschweige den erwähnt wurden ;-)
"Unter allen menschlichen Entdeckungen sollte die Entdeckung der Fehler die wichtigste sein.", Stanisław Jerzy Lec

MuldeR
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 131
Registriert: 18. Okt 2005 16:14
Wohnort: (d)armstadt
Kontaktdaten:

Re: Fragen zu Anomalien

Beitrag von MuldeR » 22. Jul 2011 01:04

Also ich würde sagen, dass das nicht betrachten von Zyklen in dem Fall bedeutet, dass wir den Pfad "3-2-3" und nicht etwa "3-2-3-2-3..." betrachten.

Und ich würde sagen, dass Fall zwei "stark" ist, da mit "3-2-3" ein Pfad für eine Anomalie existiert. Und es keinen alternativen "3-(...)-3" Pfad mit einem Lese-Zugriff dazwischen gibt.

Ich denke außerdem, dass das "true" in dem WHILE für den Kontrollfluss-Graphen irrelevant ist (es sei denn, man würde dadurch die Kante, die aus dem WHILE raus führt, ganz weg lassen). Die ganzen Definitionen für die Anomalien beziehen sich ja nur auf mögliche Pfade im Kontrollfluss-Graphen. Und diese sind allein durch das Vorhandensein von Knoten & Kanten definiert.

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Re: Fragen zu Anomalien

Beitrag von s!mon » 22. Jul 2011 11:12

Ich habe gerade nochmal die Definition der dd-Anomalie gelesen und stimme dir jetzt zu. Hatte nicht gesehen, dass die Definition leicht anders ist als bei den anderen Anomalien. Bei der starken dd-Anomalie darf n (beim Pfad von n nach n') n' sein: zu Anweisungen n mit Attribut d(v) und über einen Pfad von n erreichbarem n’ mit d(v) gibt es keinen segmentfreien Pfad in G n = n1 , ... , nk = n’ in dem n’ nach n1 nur einmal auftritt

Die zweite ist imo sowieso eine starke Anomalie (wie du auch schon gesagt hast).

Benutzeravatar
saller
Moderator
Moderator
Beiträge: 161
Registriert: 12. Okt 2007 15:14
Wohnort: Darmstadt
Kontaktdaten:

Re: Fragen zu Anomalien

Beitrag von saller » 22. Jul 2011 15:35

Hallo,

genau - beide oben genannte Beispiele stellen eine starke Annomalie dar. Im zweiten Beispiel hätten wir sogar zwei starke DD-Annomalien, i = 5 zu i=5 (sofern Zyklen nicht ausgeschlossen werden) Falls Zyklen ausgeschlossen werden, existiert die Schleifen-Anomalie gar nicht ("3-2-3").

Wenn wir aus der Schleife springen, haben wir auch eine starke Annomalie (trotz der seltsamen Bedingung) von i=5 zu i = 10. Der Kontrollfluss ist nämlich vorhanden! Auch wenn er semantisch nicht erreichbar wäre (wegen der Endlosschleife) ist er dennoch statisch gegeben.

Theoretisch unereichbare Kontrollflusssegmente haben wir allerdings nicht behandelt, weshalb ihr davon ausgehen könnt - sofern eine solche Aufgabe dran kommen wird -, dass in der Klausur alle Segmente im Kontrollflussgraphen erreichbar wären und wir keine Endlosschleifen verwenden würden ;).

Besten Gruß
Karsten

Antworten

Zurück zu „Software Engineering - Wartung und Qualitätssicherung“