Def-Use-Kette

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 21. März 2015 um 22:09 Uhr durch PerfektesChaos (Diskussion | Beiträge) (tk k). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen

Eine Def-Use-Kette ist eine Datenstruktur, die aufeinanderfolgende Paare von Schreib- und Lesezugriffen einer Variable beschreibt.

Im Rahmen des Software Engineerings werden beim White-Box-Testing mittels Def-Use-Ketten Datenflusstests durchgeführt, welche das Durchlaufen von Code mittels Testwerten für Variablen ermöglichen.[1]

Anwendungsbeispiel

Im folgenden soll eine Def-Use-Kette für die Variable "d" erzeugt werden. Der nachfolgende Code findet den größten gemeinsamen Teiler (GGT) zweier Zahlen "a" und "b" und ist in Java implementiert.

 public int ggt(int a, int b){
    int c = a;
    int d = b;
    if(c == 0)
       return d;
    while(d != 0){
       if(c > d)
          c = c - d;
       else
          d = d - c;
    }
    return c;
 }

Um alle Def-Use-Ketten für die Variable "d" zu erzeugen, ist folgendermaßen vorzugehen:

  1. Ermitteln des ersten Schreibzugriffes (Definition der Variable)
    In diesem Fall entspricht dies der Zuordnung "d=b" (Zeile 3)
  2. Ermitteln des ersten Lesezugriffes
    In diesem Fall entspricht dies der Anweisung "return d"
  3. Aufschreiben dieser Information im folgenden Stil:
    [Name der untersuchten Variable, konkreter Schreibzugriff, konkreter Lesezugriff]
    In diesem Fall entspricht dies [d, d=b, return d]

Nun werden diese Schritte wiederholt, wobei jeder Schreibzugriff mit jedem Lesezugriff der untersuchten Variable verbunden wird.

Das Ergebnis ist dann:

  1. [d, d=b, return d]
  2. [d, d=b, while(d!=0)]
  3. [d, d=b, if(c>d)]
  4. [d, d=b, c=c-d]
  5. [d, d=b, d=d-c]
  6. [d, d=d-c, while(d!=0)]
  7. [d, d=d-c, if(c>d)]
  8. [d, d=d-c, c=c-d]
  9. [d, d=d-c, d=d-c][2]

Literatur

  • Aditya P. Mathur: Foundations of Software Testing. Fundamental Algorithms and Techniques. An Undergrate and Graduate Text. A Reference for the Practicing Software Engineer. Pearson Education India, Delhi u. a. 2008, ISBN 81-317-1660-0 (eingeschränkte Vorschau in der Google-Buchsuche).

Einzelnachweise

  1. Herbert Kuchen: Software Engineering Skript WS09/10. (PDF; 234 kB) WWU Münster, S. 403, 407 und folgende
  2. Herbert Kuchen: Software Engineering, Lösung Übungsblatt 6 WS09/10. (PDF; 554 kB) WWU Münster, S. 25