Framework vs. Plattform – Worin besteht der Unterschied?

Pragmatische Überlegungen zur Softwarequalität
10. Juni 2019

Die Open-Source-Welt ist voll von Frameworks und Plattformen. Aber was ist ein Framework, was ist eine Plattform und was ist der Unterschied? Mehr noch, warum ist dieser Unterschied wichtig?

Ich bin ein geständiger Kleinigkeitskrämer. Trotz meiner persönlichen Misserfolge in dieser Hinsicht glaube ich zutiefst, dass der richtige Sprachgebrauch einen erheblichen Mehrwert bietet.

Um den Ausspruch von Mark Twain: zu zitieren: „Der Unterschied zwischen dem fast richtigen Wort und dem richtigen Wort ist wirklich eine große Sache – es ist der Unterschied zwischen dem Glühwürmchen (lightning bug) und dem Blitz (lightning).“

In diesem Sinne kann es sinnvoll sein, dass ich die Unklarheit rund um die beiden Konzepte Framework und Plattform manchmal äußerst irritierend empfinde. Jedes Unternehmen auf der Welt, das etwas mit Entwicklung zu tun hat, hat eine Plattform. Die Open-Source-Welt ist voll von Frameworks. Aber wenn man sie fragt, sind nur sehr wenige Menschen in der Lage, diese Konzepte zu definieren. Ist es möglich, ein vollständiges Verständnis eines Themas zu beanspruchen, aber nicht in der Lage zu sein, klare Definitionen für grundlegende Terminologie zu liefern?

Ich möchte eine mögliche Definition unter Verwendung einer Analogie vorschlagen.

Eine Plattform ist etwas, das man mit der Kiste der Bausteine vergleichen kann, die meine Kinder in ihrem Zimmer hatten, als sie noch klein waren. Die einzelnen Blöcke sind die Komponenten. Als ideale Plattform können diese Komponenten in vielen verschiedenen Kombinationen zusammengestellt werden, wodurch eine breite Palette von Endprodukten entsteht. Deshalb sind Plattformen heiß begehrt, sie bieten den heiligen Gral der Wiederverwendung von Software.

Aber was sind die Voraussetzungen für den Aufbau einer Plattform?

Eine erfolgreiche Plattform wird mehrere technische Anforderungen haben, die erfüllt sein müssen, das ist die Aufgabe des Frameworks.

Beginnen wir mit der Frage, woher die Definition der Komponentenstruktur kommt? Um auf den Vergleich mit Bausteinen zurückzukommen, wird eine begrenzte Anzahl von möglichen Formen verwendet. Welche Formen sinnvoll sind, hängt von den Leitsätzen ab, die von Anfang an gewählt wurden. Die dem Framework zugrunde liegende Philosophie wird die Bandbreite der möglichen Komponentenstrukturen bestimmen. Übrigens ist „Komponente“ ein weiteres dieser Konzepte, das oft verwendet, selten durchdacht und meist schlecht definiert wird. Die einfache Analogie zur Beschreibung von Plattformen macht jedoch sofort deutlich, dass ein klar definiertes Komponentenkonzept unerlässlich ist.

Die nächste Frage ist, wie die Komponenten montiert werden. Wird eine Steckverbindertechnologie verwendet und wie funktioniert sie? Natürlich können unsere Komponenten ähnlich wie Holzbausteine sein, ohne echte Verbindungen zwischen den Bausteinen. Das ist nicht gut genug für eine Plattform. Lego und Fischer-Price zeigen zwei Alternativen. Beide fügen jedem Baustein Verbindungspunkte (auch bekannt als Ports) hinzu, so dass andere Bausteine hinzugefügt werden können. Im Idealfall sollten auch die Komponenten unserer Plattform so funktionieren.

Eine letzte wichtige Beobachtung ist, dass ein einzelner Baustein keine Kenntnis von der internen Umsetzung oder den Eigenschaften eines anderen Bausteins hat. Es hat nur seine Befestigungspunkte (Ports) und die Gewissheit, dass es mit jeder anderen Komponente zusammenarbeiten kann, solange der Stecker (die Schnittstelle) passt. Im wahrsten Sinne des Wortes sind die Komponenten gegenseitig anonym. Beachten Sie, dass dies dem Prinzip der gegenseitigen Nichtbeachtung von Ralf Westphal sehr ähnlich ist.

Ein Framework kann nun als eine Reihe von Konzepten, Bibliotheken, Tools und Praktiken definiert werden, die Folgendes bieten:

  1. ein standardisiertes Komponentenkonzept zur Verwendung innerhalb der Plattform
  2. eine standardisierte Verbindungstechnik, welche
  • die Kommunikation zwischen den Komponenten der Plattform unterstützt und
  • die Anonymität der einzelnen Komponenten die Anonymität der einzelnen Komponenten bewahrt.

Eine Plattform ist eine Sammlung von wiederverwendbaren Komponenten, die in Übereinstimmung mit den Prinzipien und der Philosophie des Frameworks konstruiert wurden.
Andere Definitionen sind möglich, aber ich finde diese Definitionen sehr nützlich.
Bitte beachten Sie auch, wie grundlegend das Konzept der Normung in diesem Zusammenhang ist. Denken Sie für einen Moment an eine Welt, in der jeder elektrische Stecker ein in Handarbeit gefertigtes, einzigartiges Produkt war. Massenproduktion von elektrischen Geräten würde nie zu einer Industrie in einer solchen Welt werden. Das Gleiche gilt für eine Plattform. Alle Plattformkomponenten müssen eine einheitliche Struktur haben und standardisierte Kommunikationskonzepte verwenden, um sicherzustellen, dass sie zusammenspielen können.
Ich habe meine Ansicht dargelegt, dass eine Plattform einen Rahmen als Grundlage benötigt. Das Framework bietet Komponenten- und Kommunikationsparadigmen. Es bietet die Standardisierung, die unerlässlich ist, um austauschbare Komponenten herstellen zu können. Während Komponenten entworfen, gebaut und getestet werden, werden sie zu Bausteinen, welche zur Plattform beitragen. Das Framework schränkt die Freiheitsgrade ein, die Entwickler ausüben können. Es kanalisiert und steuert ihre Bemühungen, um den kritischen Grad an Standardisierung zu erreichen, der für den Erfolg der Plattform erforderlich ist.
Der Rahmen kann auch zusätzliche Verantwortlichkeiten haben. Im Idealfall wird es ein Konzept von Wirkketten unterstützen, mit dem Laufzeitabhängigkeiten, Datenflüsse und Kontrollflüsse identifiziert werden können. Darüber hinaus sollte es die erforderlichen Maschinen zur Bewältigung der Parallelität enthalten (und verstecken). Aber das wird das Material für einen anderen Artikel sein.

Bild © kayros IStock.com ID 152989195