Was ist komponentenbasierte Architektur?

Komponentenbasierte Architektur ist ein Framework zum Erstellen von Software auf der Grundlage wiederverwendbarer Teile. Jede Komponente enthält klar definierte Funktionen in einer binären Einheit, die in einer Bibliothek gespeichert und dann in eine Anwendung eingefügt wird, ohne andere Komponenten zu ändern.
Zu den Vorteilen zählen kürzere Entwicklungs- und Testzeiten, höhere Zuverlässigkeit (da die Komponenten vorab getestet werden) und die Flexibilität, Anwendungen durch Hinzufügen oder Ersetzen von Komponenten ohne wesentliche Unterbrechungen zu ändern.
Was ist komponentenbasierte Architektur?
Stellen Sie sich eine Komponente als Legostein vor.
Beim Bauen einer Struktur aus Legosteinen können Sie zwischen verschiedenen Formen, Größen und Farben wählen. Einige Bausteine sind speziell als Türen, Fenster und andere Strukturelemente konzipiert. Jeder Baustein hat alle Funktionen, die er braucht, um sich mit anderen zu verbinden, und das Hinzufügen oder Entfernen von Bausteinen hat im Allgemeinen nur minimale Auswirkungen auf die Struktur.
Softwarekomponenten sind viel komplexer als kleine Plastikteile, aber das Konzept ist ähnlich.
Jedes Element führt eine Aufgabe auf eine architektonisch definierte Weise aus. Der Einfachheit halber werden Komponenten in einer Bibliothek gespeichert, von Entwicklern zusammengestellt und kommunizieren über APIs miteinander.
Ein Object Request Broker, manchmal auch „Softwarebus“ genannt, erleichtert die Kommunikation, indem er eine einzige Kommunikationsebene bereitstellt, die alle Komponenten nutzen. Die Kommunikation kann auf verschiedene Arten erfolgen, z. B. asynchron, per Übertragung, über ein nachrichtengesteuertes System oder als Teil eines fortlaufenden Datenstroms.
Das Konzept der komponentenbasierten Architektur ist nicht neu. Es wird bereits in wissenschaftlichen Arbeiten aus den späten 1960er Jahren erwähnt.
IBM führte seine Systemobjektmodell Anfang der 1990er Jahre der erste kommerzielle Versuch, eine Methode zum Erstellen von Software aus Komponenten zu definieren. Komponentenobjektmodell und Object Linking and Embedding, das etwa zeitgleich eingeführt wurde, lieferte die ersten Rahmenbedingungen für den kommerziellen Einsatz.
5 Merkmale von Komponenten
Softwarekomponenten haben fünf gemeinsame Merkmale;
1. Wiederverwendbarkeit
Die Komponenten können in zahlreiche Anwendungen eingebunden werden, ohne dass Änderungen oder besondere Anpassungen erforderlich sind.
2. Erweiterbarkeit
Komponenten werden mit anderen Komponenten kombiniert, um neue Verhaltensweisen zu erzeugen.
3. Ersetzbarkeit
Komponenten mit ähnlicher Funktionalität können ausgetauscht werden.
4. Kapselung
Komponenten sind in sich geschlossen und stellen Funktionalität über Schnittstellen bereit, während die Details interner Prozesse verborgen bleiben.
5. Unabhängigkeit
Komponenten weisen nur minimale Abhängigkeiten von anderen Komponenten auf und können in unterschiedlichen Umgebungen und Kontexten ausgeführt werden.
Beispiele für Komponenten
Komponenten sind die Bausteine serviceorientierter und Microservices-Architekturen, die Anwendungen aus lose gekoppelten und diskreten Diensten zusammensetzen.
Microservices ist die dominierende Architektur in DevOps und Cloud-native Entwicklung. Es wird wegen seiner Produktivitätsvorteile geschätzt, da Entwickler den Großteil der Anwendung selbst zusammenstellen, anstatt sie von Grund auf neu zu erstellen.
Ein Beispiel für eine Komponente ist die Tabellenkalkulationsfunktion in Microsoft PowerPoint. Benutzer arbeiten mit einer Tabellenkalkulation, die aussieht und sich verhält wie Microsoft Excel, wenn sie die Daten bearbeiten, die einem Diagramm oder einer Grafik zugrunde liegen. Obwohl es sich nicht um eine Vollversion von Excel handelt, verfügt das Tabellenkalkulations-Widget über genügend Funktionen, um grundlegende Funktionen zu unterstützen.
Weitere Beispiele für Komponenten sind eine Funktion zur Berechnung der Steuern bei einer E-Commerce-Transaktion oder eine Funktion, die den Benutzer beim Anmelden auffordert, Fragen zu beantworten.
Kompromisse bei Komponenten
Eine komponentenbasierte Architektur kann Nachteile haben, da sie nicht für jedes Szenario geeignet ist.
Zum einen muss die Anwendung in modulare und funktional getrennte Teile zerlegt werden, was bei großen Anwendungen eine Herausforderung sein kann. Außerdem kann die Notwendigkeit der Wiederverwendbarkeit einer Komponente deren Anpassungsmöglichkeiten einschränken.
Auch das Finden einer Komponente, die genau den Anforderungen einer Anwendung entspricht, kann eine Herausforderung sein. In einer bestimmten Anwendung müssen möglicherweise viele Komponenten überwacht werden, und die Aktualisierung und Wartung von Komponentenbibliotheken kann komplex sein.
Alternativen zu Komponenten
Es gibt zahlreiche Alternativen zur komponentenbasierten Entwicklung und Architektur. Dazu gehören:
- Mikrokernel-Architektur besteht aus einer Kernverarbeitungskomponente und unabhängigen Plug-in-Modulen mit spezifischen Funktionen. Die Komponenten kommunizieren nicht miteinander, sondern nur mit dem Mikrokernel.
- Client-Server-Architektur verfügt über zwei Komponenten, die Anfragen für Daten, Dienste und Inhalte austauschen: Client und Server. Ansonsten arbeiten sie weitgehend unabhängig voneinander.
- Ereignisgesteuerte Architektur besteht aus entkoppelten, speziell entwickelten Softwaremodulen, die als Reaktion auf ein Ereignis, wie z. B. das Durchziehen einer Kreditkarte oder das Generieren eines Alarms mit einem Sensor, aktiv werden.
Komponenten sind zu einem grundlegenden Baustein moderner Software geworden. Obwohl der Begriff über 20 Jahre alt ist, ist das Konzept solide und hat sich als anpassungsfähig an eine sich ständig ändernde Technologielandschaft erwiesen.