Samstag, 20. April 2013

Das Lokalitätsprinzip

Unter der Bezeichnung "Lokalitätsprinzip" haben sich mindestens zwei Bedeutungen etabliert. Die klassische Bedeutung umfasst eines der ältesten Prinzipien der Informatik und wird im englischen Sprachraum meist mit "Locality of reference" bezeichnet. In dieser Ausprägung taugt das Prinzip jedoch nicht als Prinzip der Softwaretechnik im hier gemeinten Sinn, da es lediglich eine Beobachtung über die (statistischen) Gesetzmäßigkeiten des Zugriffs auf adressierbare Datenbereiche beschreibt.

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:
  • Lösung eines Problems“, „Einarbeiten in einen Bereich“ [Balzert1998]
  • Verständnis eines Teilsystems“ [Wollenberg2004]
  • Teilsaspekt“ [Sieck1995]
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:
  • Entscheidungstabellen sind sehr kompakt und besitzen optimale Lokalität.“
  • Die objektorientierte Analyse (OOA) erlaubt durch Subsystembildung eine Zusammenfassung von Klassen zu einer Einheit.“
  • Beim modularen Entwurf befinden sich die wesentlichen Informationen zum Verständnis eines Moduls lokal angeordnet.“
Gegenbeispiel:
  • In der objektorientierten Welt wird das Verständnis einer Klasse erschwert, wenn sich die Klasse in einer Vererbungsbeziehung befindet.“
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
  • Grundlegende Einteilung: Produktprinzip.
  • Technologiebezug: Allgemeingültig.
  • Entwurfsgüte: Bausteineigenschaft.
  • Handlungsbezug: Erleichterung von Änderung und Verstehen.
  • Kognitionsbezug: Lokalisierung.
(Siehe Kategorisierung der Prinzipien.)
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
  • Allgemeine Anwendbarkeit.
  • Teilweise durch elementare Spracheigenschaften implizit realisiert.
Nachteile
  • In der allgemeinsten Form allerdings auch sehr vage.
  • Mitunter nicht durchgängig realisierbar, siehe Gegenbeispiel der Vererbungsbeziehung.
Ü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