Um diese Version des Prinzips von der hier gemeinten Bedeutung abzugrenzen, wird es unten als "dynamisches" Lokalitätsprinzip bezeichnet und beschrieben. Als Prinzip der Softwaretechnik taugt hingegen eine statische Auslegung, die insbesondere in [Balzert1998] detailliert beschrieben wurde. Diese Version wird als "statisches" Lokalitätsprinzip in einem separaten Abschnitt beschrieben und dem Prinzipienkatalog hinzugefügt. Die Bezeichnungen "dynamisch" und "statisch" sind von mir frei gewählt und kommen in der mir bekannten Literatur nicht vor.
"Dynamisches" Lokalitätsprinzip (a. k. a. Locality of Reference)
In einem ausführlichen Artikel beschreibt Peter J. Denning die Historie des Lokalitätsprinzips in seiner dynamischen Form [Denning2005]. Seinen Ursprung hat dieses Prinzip bereits 1967, sein erster Anwendungsbereich war die Handhabung virtueller Speicherbereiche. Ihm liegt die Beobachtung zu Grunde, dass einem Datenzugriff innerhalb eines bestimmten Speicherbereichs häufig weitere Datenzugriffe in der unmittelbaren zeitlichen und räumlichen Nachbarschaft dieses Speicherbereichs folgen. Es kann daher die Zugriffszeiten auf diese Daten reduzieren, wenn benachbarte Daten vorausschauend in Strukturen eingelesen werden, die eine bessere Zugriffszeit als die Einzelzugriffe auf die ursprünglichen Strukturen ermöglichen. Neben den naheliegenden Anwendungsbereichen im Kontext der Speicherverwaltung von Betriebssystemen ergaben sich im Lauf der Jahre zahlreiche weitere Varianten: Puffer im Bereich der Netzwerk- oder Grafikprogrammierung, der Zugriff auf Blöcke in Dateisystemen, die Optimierung von Abfragen in Datenbanksystemen, das Caching von Webseiten in Webbrowsern und Proxyservern, bis hin zu Algorithmen für die Auswahl von Werbeinformationen auf der Grundlage einer bereits aufgezeichneten Benutzerinteraktion. Die Anwendung des Prinzips ist überall dort möglich, wo sich das Konzept der "Nachbarschaft" oder des "Kontextes" eines Informationsobjekts formalisieren lässt. Da es hierbei um ein zur Laufzeit einer Hard- oder Software beobachtbares Muster handelt, bezeichne ich diese Variante des Lokalitätsprinzips als "dynamisch"."Statisches" Lokalitätsprinzip
In seiner statischen Form kann das Lokalitätsprinzip wie folgt in den Prinzipienkatalog aufgenommen werden:Name, Kurzform | Lokalitätsprinzip |
Synonyme | - |
Beschreibung | Alle relevanten Informationen zum Verständnis eines Zusammenhangs sollen an einer Stelle des Systems lokalisiert und möglichst ohne Kenntnis des Kontexts nachvollziehbar sein. |
Erläuterung |
Dieses
Prinzip wird von unterschiedlichen Autoren sehr unterschiedlich
formuliert. Die oben gewählte Formulierung „Verständnis eines
Zusammenhangs“ wird bei anderen Autoren wie folgt ausgedrückt:
Balzert
spricht zudem nicht nur von einer Lokation, sondern von einer
Seite (eines Dokuments, eines Quelltexts) und legt damit den Schwerpunkt auf die Informationsmenge,
die ohne weitere Navigation von einem menschlichen Betrachter überblickt werden kann.
Allen
Autoren ist gemeinsam, dass es beim Lokalitätsprinzip um eine
Erleichterung des Verständnisses gewisser zusammenhängender
Informationen geht. Was zusammenhängt, soll auch im
Software-System an möglichst einer Stelle zu finden und leicht zu überschauen sein.
Wir
erinnern uns an die folgende Anforderung an ein Prinzip der
Softwaretechnik: „Jedes
Prinzip der Softwaretechnik legitimiert sich über eine odere
mehrere grundlegende Schwierigkeiten, denen wir regelmäßig bei
der Konstruktion von Software begegnen.“ (siehe Nichtrivialität der Softwaretechnik). Das Lokalitätsprinzip
zielt insbesondere darauf ab, die kognitiven Herausforderungen
Ausmaß und Komplexität bei der Software-Konstruktion und -Wartung abzumildern. |
Beispiele |
Die
folgenden Beispiele sind [Balzert1998] entnommen:
Gegenbeispiel:
|
Historie | Das Prinzip scheint in der statischen Ausprägung überwiegend im deutschen Sprachraum verbreitet zu sein und kommt dort primär in Publikationen zum Software-Engineering der 90er Jahre vor. |
Art des Prinzips |
|
Grad der formalen Spezifikation | Was sich „an einer Stelle“ oder „auf einer Seite“ befindet, ist in der allgemeinem Form kaum formalisierbar. Konkretisierungen wie „ein Modul“, „eine Klasse“, „eine Datei“ usw. lassen sich hingegen sehr gut formalisieren. |
Vorteile |
|
Nachteile |
|
Übergeordnete Prinzipien | Verwandtschaft mit dem Prinzip der hohen Kohäsion, jedoch mit anderen Schwerpunkten: Hohe Kohäsion zielt primär auf die örtliche Eingrenzung von Abhängigkeiten ab, während das Lokalitätsprinzip das Verständnis zusammenghöriger Informationen in den Vordergrund stellt. |
Abgleitete Prinzipien | - |
Qualitätsmerkmale | (+) Verständlichkeit, (+) Wartbarkeit, (+) Komplexität |
Quellen
[Balzert1998] - Lehrbuch der Software-Technik, Helmut Balzert, 1998[Denning2005] - The Locality Principle, Peter J. Denning, 2005
[Sieck1995] - Konzepte des Software-Engineering, Ingrid Sieck, 1995
[Wollenberg2004] - Taschenbuch der Betriebswirtschaft, Klaus Wollenberg, 2004