Mittwoch, 9. Januar 2013

Das Open-Closed Prinzip

Versuch eines ersten Katalog-Eintrags:

Name, Kurzform Open-Closed Prinzip
Synonyme Offen-Geschlossen Prinzip, OCP
Beschreibung
Module sollten sowohl offen (für Erweiterungen), als auch geschlossen (für Modifikationen) sein.“
Bertrand Meyer
Erläuterung
Die Formulierung von Meyer mutet zunächst abstrakt an. Das Prinzip kann jedoch als einfacher Gegenentwurf zu dem naheliegenden Gedanken
Anforderungsänderung resultiert in Quellcodeänderung“
verstanden werden.
Es hebt die Möglichkeit hervor, dass Anforderungsänderung durch Quellcodeergänzung umgesetzt werden kann. Es wird so der Erfahrung gerecht, dass die Änderung von Quellcode mit einer erhöhten Gefahr von Seiteneffekten verbunden ist.
Beispiele
Auf syntaktischer Ebene:
  • Verwendung von Interfaces: Ein Interfacetyp ist offen für beliebige Implementierungen, sollte aber selbst möglichst stabil, also geschlossen für Änderungen sein. Das Interface-Konzept kann als etablierte Anwendung des Open-Closed Prinzips verstanden werden.
  • Überschreiben von Methoden: Während die Superklasse unverändert bleibt, wird die neue Anforderung durch eine hinzugefügte Subklasse mit einzelnen überschriebenen Methoden umgesetzt.
  • Verwendung von Closures.
Auf architektonischer Ebene:
  • Plugin-Architektur mit Erweiterungspunkten (wie etwa Extension Points in OSGi).
  • Vorsehen von User Exits.
Historie
  • Erstmals formuliert durch Betrand Meyer in „Objekt-Oriented Software Construction“ (1988).
  • Abgewandelt formuliert von Robert C. Martin in „The Open-Closed Principle“ (1996). Später als eines der S.O.L.I.D – Prinzipien populär geworden.
Art des Prinzips
  • Grundlegende Einteilung: Produktprinzip.
  • Technologiebezug: Allgemeingültig.
  • Entwurfsgüte: Bausteineigenschaft.
  • Handlungsbezug: Erleichterung von Änderung.
  • Kognitionsbezug: Keiner.
(Siehe Kategorisierung der Prinzipien.)
Grad der formalen Spezifikation Gering.
Vorteile
  • Stabilisierung des Software-Entwurfs auf unterschiedlichen Granularitäts-Ebenen (von Methoden über Klassen bis hin zu Komponenten).
  • Klare Vorgehensweise bei erforderlichen Änderungen.
  • Vermeidung von Seiteneffekten.
Nachteile
  • Höherer Abstraktionsgrad der Umsetzung erforderlich, dadurch ggf. Beeinträchtigung von Qualitätsmerkmalen wie Einfachheit und Verständlichkeit.
Übergeordnete Prinzipien
  • Prinzip der Abstraktion
  • Prinzip der Änderungsnotwendigkeit
Abgleitete Prinzipien -