2.6. Vom monolithischen Programm zu Programmkomponenten

Computerprogramme sind vergleichbar mit Kochrezepten und umfassen eine Folge von Anweisungen, die nacheinander abgearbeitet werden. Einfachere, kleine Programme sind häufig noch überschaubar und somit monolithisch. Sie beinhalten den gesamten Programmcode, der in einer einzigen Datei bereitgestellt wird.

Während zu Beginn der Informationsverarbeitung noch eine Tontafel, ein Holzstab mit Einkerbungen, ein Blatt Papier oder auch nur ein Lochstreifen zur Erfassung einer Folge von Anweisungen ausreichte, passt heutiger Programmcode nur noch selten auf eine einzige Bildschirmseite [Naumann-Abakus-Internet]. Ein Großteil der aktuell genutzten Software ist daher mehrteilig und überaus komplex. Dabei spielen viele, unterschiedliche Komponenten zusammen, erfüllen verschiedene Aufgaben und bedingen einander. Dazu gehören kompilierte Programme, Skripte, Bibliotheken, Daten und Konfigurationsdateien.

Die Paketierung der einzelnen Komponenten folgt eigenen Regeln, deren Konventionen nur zum Teil festgeschrieben sind und sich auch von Distribution zu Distribution etwas unterscheiden. Tabelle 2.3, „Paketierung der Komponenten am Beispiel von APT“ zeigt die Zerlegung in einzelne Pakete am Beispiel von APT. Dabei beinhaltet die linke Spalte den generischen Paketnamen ohne Nennung von Versionsnummer und Architektur, die mittlere Spalte die Kategorie, der das Paket zugeordnet ist (siehe „Sortierung der Pakete nach Verwendungszweck“ in Abschnitt 2.8, „Sortierung der Pakete nach Verwendungszweck“) und die rechte Spalte eine kurze Paketbeschreibung. Auf die genannten Bibliotheken gehen wir genauer in „APT und Bibliotheken“ in Kapitel 5, APT und Bibliotheken ein.

Tabelle 2.3. Paketierung der Komponenten am Beispiel von APT

Paketname Paketkategorie Komponente und Bedeutung

apt

Administration (admin)

Paketmanager für die Kommandozeile (siehe Abschnitt 6.2.2, „APT“)

apt-doc

Dokumentation (doc)

Dokumentation zum Paket apt

apt-transport-https

Administration (admin)

APT-Plugin für HTTPS-Support (obsolet seit APT 1.5)

apt-utils

Administration (admin)

Hilfsprogramme für APT

libapt-instX.Y

Bibliotheken (libs)

Laufzeitbibliothek zum Paketformat

libapt-pkg.X.Y

Bibliotheken (libs)

Laufzeitbibliothek zur Paketverwaltung

libapt-pkg-dev

Bibliotheken zur Entwicklung (libdevel)

Entwicklerdateien zu libapt-pkg

libapt-pkg-doc

Dokumentation (doc)

Dokumentation zur Laufzeitbibliothek libapt-pkg

libapt-pkg-perl

Bibliotheken (libs)

Laufzeitbibliothek zur Paketverwaltung, Perl-Schnittstelle


Benennung eines Debianpakets und Paketkategorien

In Abschnitt 2.11, „Benennung einer Paketdatei“ beleuchten wir die Benennung und Abfolge der Komponenten in den Paketnamen. Eine genaue Auflistung und zur Bedeutung der Paketkategorien lesen Sie in Abschnitt 2.8, „Sortierung der Pakete nach Verwendungszweck“ nach.

Die Ideen hinter der Zerlegung in einzelne Komponenten sind ganz unterschiedlich und ergeben sich aus der Entwicklung, dem Ausrollen und der nachfolgenden Pflege einer Software. Hauptmotivation ist dabei häufig, nicht das Rad jedes Mal neu erfinden zu müssen und stattdessen bereits bestehende Komponenten zu integrieren, die etabliert sind und bekanntermaßen einen gewissen Qualitätsstandard erfüllen. Im Open-Source-Bereich erfolgt die Entwicklung weltweit verteilt, daher ist hier eine Zerlegung in kleinere Einheiten und „Bausteine“ häufig von großem Nutzen. Aufgaben und Komponenten können dadurch besser an kleine, spezialisierte Teams verteilt werden.