- Zirkuläre Abhängigkeiten
-
Eine zirkuläre Abhängigkeit (auch „wechselseitige Abhängigkeit“) kann überall dort auftreten, wo verschiedene Elemente voneinander abhängen, das können Softwarekomponenten oder Arbeitsschritte sein. Generell führen zyklische Abhängigkeiten oft zu Teufelskreisen oder Verklemmungen (deadlocks).
Softwareentwicklung
In der Softwareentwicklung liegt eine zirkuläre Abhängigkeit vor, wenn eine Komponente A von einer Komponente B abhängt (A→B) und Komponente B wiederum von Komponente A (B→A). Dabei muss die Abhängigkeit nicht direkt sein, sondern kann auch indirekt (über die reflexiv-transitive Hülle) gebildet werden, d. h. wenn z. B. A abhängig ist von B (A→B) und B abhängig ist von C (B→C) und C wiederum von A abhängig ist (C→A) so sind A und C zirkulär abhängig zueinander (A↔C).
Solche Abhängigkeiten können zu großen Problemen führen, wie das folgende Beispiel zeigt.
In der Programmiersprache C gibt es Includedateien (sie enden üblicherweise auf „.h“). Nun kann eine Includedatei weitere Includedateien beinhalten. Wenn Datei „A.h“ die Datei „B.h“ einbindet und die Datei „B.h“ die Datei „C.h“ einbindet ist noch alles in Ordnung. Falls nun die Datei „C.h“ die Datei „A.h“ einbindet, ist eine zirkuläre Abhängigkeit entstanden. Dem Compiler ist es unmöglich, dies zu kompilieren, da er „im Kreis rennt“.
Graphentheorie
In der Graphentheorie liegt eine zirkuläre Abhängigkeit genau dann vor wenn in einem gerichteten Graphen ein Zyklus vorliegt.
Arbeitsschritte
Ein weiteres (fiktives) Beispiel aus dem „täglichen Leben“ zeigt, wie zirkuläre Abhängigkeiten Prozesse blockieren können:
Um eine Aufenthaltserlaubnis zu bekommen, muss ein Ausländer einen Arbeitsplatz nachweisen. Damit er aber von einer Firma eingestellt wird, benötigt er einen gemeldeten Wohnsitz. Um aber vom Vermieter akzeptiert zu werden braucht er eine Aufenthaltserlaubnis. Damit schließt sich der Kreis. Solange die zirkuläre Abhängigkeit nicht durchbrochen wird, wird er in dem Land nicht dauerhaft leben können.
Wikimedia Foundation.