| Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf bitte mit, ihn zu verbessern, und entferne anschließend diese Markierung. |
Ein Framework (engl. für „Rahmenstruktur, Fachwerk“) ist ein Programmiergerüst, welches in der Softwaretechnik insbesondere im Rahmen der objektorientierten Softwareentwicklung sowie bei komponentenbasierten Entwicklungsansätzen verwendet wird.
Inhaltsverzeichnis |
Ein Framework ist selbst noch kein fertiges Programm, sondern stellt den Rahmen, innerhalb dessen der Programmierer eine Anwendung erstellt, zur Verfügung, wobei u. a. durch die in dem Framework verwendeten Entwurfsmuster auch die Struktur der individuellen Anwendung beeinflusst wird. Beispielsweise unterstützten die MFC das Model-View-Controller-Muster.
Ein Framework gibt somit in der Regel die Anwendungsarchitektur vor. Dabei findet eine Umkehrung der Steuerung (Inversion of Control) statt: Der Programmierer registriert konkrete Implementierungen, die dann durch das Framework gesteuert und benutzt werden, statt – wie bei einer Klassenbibliothek – lediglich Klassen und Funktionen zu benutzen. Wird das Registrieren der konkreten Klassen nicht fest im Programmcode verankert, sondern wird „von außen“ konfiguriert, so spricht man auch von Dependency Injection.
Ein Framework definiert insbesondere den Kontrollfluss der Anwendung und die Schnittstellen für die konkreten Klassen, die vom Programmierer erstellt und registriert werden müssen. Frameworks werden also i. A. mit dem Ziel einer Wiederverwendung „architektonischer Muster“ entwickelt und genutzt. Da solche Muster nicht ohne die Berücksichtigung einer konkreten Anwendungsdomäne entworfen werden können, sind Frameworks meist domänenspezifisch oder doch auf einen bestimmten Anwendungstyp beschränkt. Beispiele sind Frameworks für grafische Editoren, Buchhaltungssysteme oder elektronische Warenhäuser im World Wide Web.
Die Blackbox- und Whitebox-Abstraktion bezieht sich auf die Sichtbarkeit einer Implementierung hinter der Schnittstelle. In einer idealen Blackbox-Abstraktion wissen Klienten keine Details, die sich hinter der Schnittstelle und seiner Spezifikation befinden. In einer Whitebox-Abstraktion kann die Schnittstelle immer noch die Kapselung erzwingen und begrenzen, was die Klienten tun können, obwohl die Implementierung das Erben substanzieller Interferenzen erlaubt. Wie auch immer, die Implementierung einer Whitebox ist vollständig vorhanden und kann deswegen studiert werden, um das Darunterliegende genauer zu verstehen, was die Abstraktion ausmacht. (Einige Autoren unterscheiden weiterhin zwischen Whiteboxes und Glassboxes, wobei die Whitebox die Manipulation der Implementierung erlaubt und Glassboxes lediglich das Studieren der Implementierung.)[1]
Frameworks lassen sich darüber hinaus wie folgt unterteilen (z.T. keine strikte Trennung):