Zum Inhalt springen

Def-Use-Kette

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 5. Januar 2020 um 10:55 Uhr durch imported>Crazy1880 (Vorlagen-fix (GoogleBuch)).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Eine Def-Use-Kette ist eine Datenstruktur, die aufeinanderfolgende Paare von Schreib- und Lesezugriffen einer Variablen 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.<ref name="SEKuchenSkript">Prof. Herbert Kuchen: <templatestyles src="Webarchiv/styles.css" />Software Engineering, Skript WS09/10. (Memento des Vorlage:IconExternal vom 23. Januar 2017 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.wi1.uni-muenster.de (PDF; 234 kB) Westfälische Wilhelms-Universität Münster. S. 403, 407ff. Abgerufen am 23. Januar 2017.</ref>

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.

<syntaxhighlight lang="Java" line>

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;
}

</syntaxhighlight>

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

  1. Ermitteln des ersten Schreibzugriffes (Definition der Variablen)
    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 Variablen, 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 Variablen 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]<ref name="SEKuchenUebung">Henning Heitkötter: <templatestyles src="Webarchiv/styles.css" />Software Engineering WS09/10, Lösung Übungsblatt 6. (Memento des Vorlage:IconExternal vom 23. Januar 2017 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.wi1.uni-muenster.de (PDF; 554 kB) Westfälische Wilhelms-Universität Münster. S. 25. Abgerufen am 23. Januar 2017.</ref>

Literatur

Einzelnachweise

<references />