Definition: Rahmenwerk für Softwareentwicklung und Programmierung Was ist ein Framework?
Ein Framework ist ein Rahmenwerk für die Softwareentwicklung und Programmierung, das die Grundstruktur und das Programmiergerüst für die zu erstellende Software vorgibt. Es erleichtert den Programmierern die Arbeit und unterstützt objekt- und komponentenorientierte Entwicklungsansätze.
Anbieter zum Thema

Der Begriff Framework wird häufig im IT-Umfeld, insbesondere im Bereich der Softwareentwicklung und Programmierung, verwendet. Deutsche Begriffe für Framework sind Rahmenwerk, Grundstruktur, Entwicklungsrahmen, Ordnungsrahmen oder Programmiergerüst. Eine allgemeingültige, absolute Definition für Framework gibt es nicht. Teils existieren etwas unterschiedliche Interpretationen und Verwendungen des Begriffs.
Im Allgemeinen versteht man unter einem Framework ein Rahmenwerk, das die Grundstruktur und das Programmiergerüst für eine Problemstellung oder eine zu programmierende Software vorgibt. Es erleichtert den Programmierern die Arbeit und unterstützt die Entwicklungsansätze der objektorientierten und komponentenbasierten Programmierung. Die Entwickler bedienen sich aus vorprogrammierten, wiederverwendbaren Bausteinen, Funktionen und Komponenten des Frameworks. So bestimmt das Framework die grundlegende Architektur der Programme.
Ein Framework selbst ist noch keine fertige Anwendung. Der Programmierer erstellt die Anwendung innerhalb der durch das Framework vorgegebenen Ordnungsstruktur. Vorteil durch den Einsatz eines Frameworks ist, dass die Bausteine, Funktionen und Komponenten nicht für jede Anwendung neu entwickelt werden müssen und vorgegebene Problemstellungen oder Anwendungsfälle unterstützen. Frameworks existieren für viele verschiedene Entwicklungsaufgaben wie für die Entwicklung von Desktop- und Mobilanwendungen, Webapplikationen, Webservices, Testanwendungen oder Front-End- und Back-End-Anwendungen und vieles mehr.
Aufbau und Bestandteile eines Frameworks
Aufgrund der vielen verschiedenen Arten und Anwendungsfällen von Frameworks können der Aufbau und die Bestandteile sehr unterschiedlich sein. Architektonische Vorgaben und Inhalte sind domänenspezifisch oder auf konkrete Anwendungsfälle beschränkt.
Frameworks bestehen aus verschiedenen Klassen, deren Interaktionen definiert sind. Die Entwurfsmuster und Komponenten des Frameworks bestimmen die Ordnungs- und Designstruktur der zu erstellenden Programme. Frameworks sind teils so gestaltet, dass sie permanente und veränderliche Anteile enthalten. Permanente Anteile bilden die Grundfunktionalität ab und werden mit veränderlichen, individuell gestalteten Elementen für eine spezifische Programmlogik erweitert. Konkrete Bestandteile der Frameworks sind beispielsweise Laufzeitumgebungen, Vorlagen, Standardmodule, APIs (Application Programming Interfaces) und Bibliotheken. Auf die Bestandteile können Programmierer flexibel zugreifen. Die Nutzung ist jedoch nur im Rahmen der vorgegebenen Architektur und Interaktionsmuster möglich.
Versuch der Abgrenzung der Begriffe Framework, SDK, Stack und Bibliothek
Im IT- und Programmierumfeld werden Begriffe wie Framework, SDK, Stack und Bibliothek häufig verwendet. Die Übergänge sind teils fließend und nicht allgemeingültig definiert. Hersteller selbst nennen Programmierplattformen beispielsweise teils Framework oder SDK. Im Folgenden ein Versuch einer Abgrenzung der verschiedenen Begriffe.
SDK steht für Software Development Kit. Während es sich bei einem Framework um ein Grundgerüst und eine Ordnungsstruktur zur Realisierung eines Programms für einen bestimmten Anwendungsfall oder eine bestimmte Problemstellung handelt, stellt ein SDK die benötigten Tools zur Programmierung auf der verwendeten Plattform zur Verfügung. Diese Werkzeuge lassen sich für die Programmierung im vorgegebenen Rahmenwerk nutzen, liefern aber keine konkreten Vorgaben für die Architektur und Grundstruktur der zu erstellenden Programme.
Ein Stack (im Deutschen Stapel), auch als Software-Stack oder Solution-Stack bezeichnet, besteht aus abstrahierten, logisch übereinander gestapelten Technologien. Sie übernehmen spezifische Rollen und stellen die Funktionskomponenten zur Verfügung, um eine Aufgabenstellung zu lösen. Die unterste Komponente kommuniziert häufig mit der Hardware und ist beispielsweise ein Betriebssystem. Darüber befinden sich Komponenten wie Serversoftware, Datenbanken, Compiler, Bibliotheken, Laufzeitumgebungen und anderes. Der Informationsfluss in einem Stack erfolgt zwischen den Komponenten über definierte Schnittstellen.
:quality(80)/images.vogel.de/vogelonline/bdb/1518800/1518883/original.jpg)
Definition: LAMP - Linux, Apache, MySQL und PHP
Was bedeutet LAMP?
Ein Beispiel für einen sehr bekannten Stack ist LAMP (Linux, Apache, MySQL, PHP). Er kommt für die Entwicklung und den Betrieb von Webanwendungen und Webservices zum Einsatz und besteht aus dem Betriebssystem Linux, dem Apache Webserver, dem MySQL-Datenbanksystem und dem serverseitigen Skript-Interpreter PHP.
Eine Bibliothek ist eine Sammlung von vorgefertigten Unterprogrammen, Unterroutinen oder Funktionen, die zur Lösung einer Problemstellung innerhalb eines Programmcodes aufgerufen werden kann. Die Unterprogramme, Unterroutinen und Funktionen einer Bibliothek stehen untereinander thematisch in Bezug. Bibliotheken stellen die Unterroutinen für Programmiersprachen zur Verfügung, mit denen sich beispielsweise mathematische Problemstellungen lösen, grafische Ausgaben erstellen oder Texte parsen lassen.
Verschiedene Arten von Frameworks
Es existieren zahlreiche verschiedene Arten von Frameworks. Häufig wird zwischen diesen grundsätzlichen Framework-Arten unterschieden:
- Application-Framework: Rahmenwerk für eine bestimmte Art von Anwendung.
- Domain-Framework: Ordnungsrahmen für Lösungen eines bestimmten Problembereichs.
- Class-Framework: Klassen und Methoden zur Unterstützung eines größeren Anwendungsfelds auf einer vorgegebenen Abstraktionsebene.
- Komponenten-Framework: Rahmenwerk zur Entwicklung und Integration von Software-Komponenten.
- Coordination-Framework: Ordnungsrahmen für Interaktionen von Geräten und nahtlose Interoperabilität.
- Web-Framework: Rahmenwerk zur Entwicklung von Webapplikationen, dynamischen Webseiten und Webdiensten.
- Test-Framework: Grundstruktur für testgetriebene Entwicklungen und automatisierte Softwaretests.
Beispiele für bekannte Frameworks
Im Folgenden einige Beispiele für bekannte und häufig verwendete Frameworks:
Das .NET-Framework ist für die Entwicklung und Ausführung von Programmen für das Microsoft Betriebssystem Windows vorgesehen. Es vereinheitlicht und strukturiert die Methodik der Anwendungsentwicklung auf den Microsoft-Systemen. Das .Net-Framework unterstützt eine Vielzahl von Programmiersprachen. Für die Anwender fungiert das .Net-Framework als Middleware, ohne die die Programme, die das Framework verwenden, nicht ausführbar sind.
Bootstrap ist ein Frontend-Framework zur Gestaltung der Benutzeroberflächen von Webanwendungen und Webseiten. Es beinhaltet HTML- und CSS-basierte Gestaltungselemente. Sie lassen sich beispielsweise zum Erstellen von Formularen, Navigationsbars, Anmeldefenster, Buttons, Tabellen und vieles mehr einsetzen .
Ein bekanntes Beispiel für ein Web-Framework ist Django. Es ist in Python realisiert und bietet vielseitige Möglichkeiten zur Programmierung dynamischer Webseiten und zum Zugriff auf SQL-basierte Datenbanken.
Angular ist ein Front-End-Webapplikation-Framework unter Open-Source-Lizenz. Es wurde von Google entwickelt und basiert auf JavaScript. Mit Angular lassen sich dynamische Webanwendungen entwickeln.
Weitere Beispiele für Frameworks sind:
- Qt: ein Framework zum Erstellen grafischer Benutzeroberflächen.
- Apache Spark: ein Framework für Cluster Computing.
- Drupal: ein Content-Management-Framework.
- Robot: ein Framework zur Durchführung von automatisierten Softwaretests.
- Zend: ein Web-Framework für PHP.
Rahmenwerke rund um Cloud Computing
Auch im Cloud-Umfeld sind Frameworks zu finden: in der Regel umfasst ein Cloud Framework eine Sammlung von relevanten Tools, z.B. Middleware oder Development- und Datenbank-Tools. Individuell anpassbar fungiert ein Cloud Framework als Grundlage für die Entwicklung von Applikationen oder Systemen.
So bietet Amazon mit dem AWS Cloud Adoption Framework (AWS CAF) bewährte Methoden, um die digitale Transformation voranzutreiben und eine Roadmap zu entwickeln, um den Cloud-Transformationsprozess zu beschleunigen und in geordnete Bahnen zu lenken.
Das Microsoft Cloud Adoption Framework für Azure bietet bewährte Anleitungen zur Beschleunigung des Wegs zum Einsatz der Cloud. Eine Sammlung von Dokumentation, Implementierungsleitfäden, Methoden und Tools, die sich als Maßnahmen von Microsoft bewährt haben, um die Umstellung hin zur Cloud zu beschleunigen. Entsprechende Anleitungen bietet ein Leitfaden zum Cloud Adoption Framework (CAF).
Das Google Cloud Adoption Framework verfolgt einen eher praxisnahen Lösungsansatz und unterstützt dabei, die wichtigsten Aktivitäten und Ziele zu identifizieren, um die Cloud-Einführung zuverlässig zu beschleunigen. Im Zentrum stehen hierbei die Bereiche Menschen, Prozesse und Technologie und der jeweilige Reifegrad.
Das Oracle Cloud Infrastructure (OCI) Cloud Adoption Framework bietet eine Sammlung von Cloud-Ressourcen, Best Practices, Tutorials und Enablement-Tools, die bei der Definition einer soliden Cloud-Strategie beitragen sollen. Dazu gehört auch eine erfolgreiche Workload-Migration und die Sicherstellung einer vollständigen Verwaltbarkeit von Cloud-Umgebungen.
Anders als die zuvor genannten Frameworks, die sich größtenteils auf den Übergang zu Public-Cloud-Umgebungen konzentrieren, richtet sich das HPE Edge-to-Cloud Adoption Framework auf breitere Transformationsszenarien über Private Cloud und Public Cloud bis hin zu Edge Computing. Zu diesen Bereichen gehören auch Strategie & Governance, Mitarbeiter, Betrieb, Innovation, Anwendungen, DevOps, Daten und Sicherheit.
T-Systems bietet ein Cloud Migration Framework, mit dem sich Schritt für Schritt eine zuverlässige Cloud-Migrationsstrategie aufbauen und umsetzen lässt. Neben dem Cloud Assessment der bestehenden IT-Landschaft geht es hier vor allem um die Definition einer geeigneten Digitalisierungsstrategie bis hin zur Durchführung der Migration auf Basis der Scrum-Methodik.
IBM Cloud for Financial Services fokussiert die Themen Compliance und Sicherheit und wie sich diese in Finanzworkloads in der IBM Cloud implementieren lassen.Insgesamt geht es bei IBM auch um Risikominderung für die Cloud-Journey und den Aufbau eines transparenten Public-Cloud-Ökosystems.
Daneben gibt es eine Reihe weiterer, individuell angepasster Frameworks, die sich an spezifische Cloud-Adaptionen richten.

Zum Special: Definitionen rund um Cloud Computing
(ID:48044028)