Eine Dependency (Abhängigkeit) ist eine externe Software-Komponente, die ein Projekt benötigt, um zu funktionieren. Statt jede Funktion selbst zu schreiben, nutzen Entwickler Bibliotheken und Frameworks — vom Framework für Web-Oberflächen bis zur kleinen Utility für Datumsberechnungen. Das Verwalten dieser Abhängigkeiten ist eine zentrale Aufgabe moderner Softwareentwicklung.

Direkte und transitive Abhängigkeiten

Eine direkte Dependency nutzt das Projekt selbst. Eine transitive Dependency wird nur indirekt benötigt, weil eine direkte Abhängigkeit sie ihrerseits voraussetzt. So entstehen schnell Abhängigkeitsbäume mit dutzenden Komponenten — ein Grund, warum Paketverwaltung und Lockfiles so wichtig sind.

Paketverwaltung übernimmt die Arbeit

npm install express        # Node.js
pip install requests       # Python
composer require monolog   # PHP

Paketmanager wie npm und pip laden die gewünschte Version samt transitiver Abhängigkeiten, prüfen Kompatibilität und dokumentieren den Stand. Ein Lockfile fixiert exakt die verwendeten Versionen, damit alle Entwickler und der CI/CD-Server dasselbe reproduzierbare Ergebnis bekommen.

Versionskennzeichnung und Aktualität

Viele Pakete folgen Semantic Versioning (SemVer): Hauptversion ändert sich bei inkompatiblen Änderungen, Nebenversion bei neuen Funktionen, Patchversion bei Fehlerkorrekturen. Regelmäßige Updates sind wichtig für Sicherheit und Stabilität — ein veraltetes Paket ist ein häufiges Einfallstor für Angriffe.

Praxis-Tipps

  • Abhängigkeiten sparsam wählen: Jede Dependency bedeutet Wartung, Build-Zeit und potenzielle Sicherheitsrisiken.
  • Lockfiles immer einchecken — sie machen Builds reproduzierbar.
  • Beim Deployment genau die im Lockfile fixierten Versionen installieren.
  • Tooling wie npm audit oder pip-audit deckt bekannte Schwachstellen in Dependencies auf.

Verwandte Grundlagen: Release, Compiler, git-Befehle, Callback, Lambda, Datentyp.