Zum Inhalt springen

Glossar · F

Framework

Software-Gerüst, das wiederkehrende Aufgaben standardisiert und Konventionen vorgibt, damit man Anwendungen schneller und mit weniger Fehlern bauen kann.

Definition

Ein Framework ist ein strukturelles Software-Gerüst, das Entwicklern eine standardisierte Basis für die Erstellung von Anwendungen bietet. Es stellt wiederkehrende Funktionen und Komponenten bereit, die in vielen Projekten benötigt werden, und definiert gleichzeitig Konventionen und Regeln für die Organisation des Codes. Dadurch wird die Entwicklung effizienter und konsistenter gestaltet.

Frameworks bieten typischerweise vorgefertigte Module, Bibliotheken und Schnittstellen, die bestimmte Aufgaben wie Datenbankzugriffe, Benutzeroberflächen oder Sicherheitsmechanismen abdecken. Im Gegensatz zu einzelnen Bibliotheken kontrolliert ein Framework den Ablauf der Anwendung und ruft den vom Entwickler bereitgestellten Code an definierten Stellen auf, was als Inversion of Control bezeichnet wird.

Was bedeutet das für Ihr Unternehmen?

Mit der Wahl des Frameworks entscheiden Sie mit, wie leicht Sie später Entwickler finden und wie lange Ihre Software sicher betrieben werden kann. Verbreitete Frameworks wie Laravel haben eine große Gemeinschaft, regelmäßige Sicherheitsupdates und planbare Versionszyklen. Ein exotisches oder selbst gebautes Framework kann dagegen dazu führen, dass nur der ursprüngliche Entwickler den Code versteht. Fragen Sie auch nach, wie lange die eingesetzte Version noch Sicherheitsupdates erhält.

Hintergrund und Geschichte

Die Idee von Frameworks entstand mit der objektorientierten Programmierung in den 1980er Jahren und verbreitete sich in den 1990er Jahren, mit dem Ziel, die Softwareentwicklung zu standardisieren und wiederverwendbare Komponenten zu schaffen. Frühere Ansätze wie Bibliotheken boten zwar Funktionen, aber keine einheitliche Struktur oder Steuerung des Programmflusses. Frameworks erweiterten dieses Konzept, indem sie eine Architektur vorgeben und den Entwickler in einen vorgegebenen Ablauf einbinden.

Bekannte frühe Frameworks stammen aus dem Bereich der objektorientierten Programmierung, etwa das Smalltalk MVC-Framework oder später Java-Frameworks wie Struts, die Anfang der 2000er Jahre populär wurden. Mit dem Aufkommen moderner Webentwicklung entstanden Frameworks wie Ruby on Rails (2004) und AngularJS (2010), die spezifisch auf Webanwendungen ausgerichtet sind.

Funktionsweise und Aufbau

Ein Framework definiert eine grundlegende Architektur, innerhalb derer Entwickler ihre Anwendung implementieren. Es stellt Schnittstellen und abstrakte Klassen bereit, die vom Entwickler erweitert oder implementiert werden. Dabei übernimmt das Framework die Steuerung und ruft den Anwendungscode an definierten Stellen auf, was als Hollywood-Prinzip bekannt ist: „Don't call us, we call you“.

Neben der Steuerung des Programmablaufs bieten Frameworks oft integrierte Werkzeuge wie Datenbank-ORMs (Object-Relational Mappings), Template-Engines für die Darstellung oder Komponenten für die Authentifizierung. Diese Module sind aufeinander abgestimmt und folgen gemeinsamen Konventionen, was die Komplexität reduziert und die Wartbarkeit der Anwendungen verbessert.

Einsatzgebiete

Frameworks werden in vielen Bereichen der Softwareentwicklung eingesetzt, insbesondere bei der Erstellung von Webanwendungen, mobilen Apps und Desktop-Software. Im Webbereich dominieren Frameworks wie Django (Python), Laravel (PHP) oder React (JavaScript) die Entwicklung, da sie typische Aufgaben wie Routing, Datenbankzugriff und Benutzerinteraktion standardisieren.

Auch im Bereich der mobilen Entwicklung finden Frameworks Verwendung, etwa Flutter für plattformübergreifende Apps oder Xamarin für .NET-Anwendungen. In der Desktop-Entwicklung kommen Frameworks wie Qt oder .NET Windows Forms zum Einsatz. Die Nutzung von Frameworks erleichtert die Einhaltung von Best Practices und reduziert den Entwicklungsaufwand.

Abgrenzung zu verwandten Begriffen

Ein Framework unterscheidet sich von einer Bibliothek vor allem durch die Steuerung des Programmablaufs. Während bei einer Bibliothek der Entwickler den Code aufruft, übernimmt beim Framework das Framework die Kontrolle und ruft den Entwicklercode an definierten Stellen auf. Dies wird als Inversion of Control bezeichnet.

Im Vergleich zu einem Software-Design-Pattern, das eine abstrakte Lösung für wiederkehrende Entwurfsprobleme darstellt, ist ein Framework eine konkrete Implementierung, die eine Architektur vorgibt. Zudem sind Frameworks umfangreicher und bieten meist eine Sammlung von Komponenten, während Design-Patterns eher konzeptionelle Hilfsmittel sind.