Serviceorientierte Architektur (SOA)

Was ist eine service-orientierte Architektur?

Serviceorientierte Architektur (SOA) ist ein modernes Software-Architekturparadigma zur Erstellung von Anwendungen als Sammlung modularer Softwareeinheiten, die Services genannt werden. In SOA sind die Services in sich geschlossen, modular und lose miteinander gekoppelt. Dieser Ansatz ermöglicht es, komplexe und auf verschiedene Bereiche verteilte Anwendungen zu erstellen, in denen – im Gegensatz zu ganzen monolithischen Anwendungen – auch einzelne Komponenten aktualisiert werden können. Ein typischer SOA-Software-Stack umfasst eine Anwendungssoftware mit Services, Plattformdienste und Middleware. Diese Services laufen auf Hochleistungshardware oder virtuellen Maschinen.

Ein allgemein definierter SOA-Software-Stack mit Schichten von oben nach unten – Anwendungssoftware, Middleware, Basissoftware –, der auf Hochleistungshardware läuft.

Ein allgemein definierter SOA-Software-Stack.

Serviceorientierte Kommunikation (SOC)

SOA-basierte Anwendungen verwenden serviceorientierte Schnittstellen für die serviceorientierte Kommunikation, um Funktionalitäten zum Informationsaustausch über Nachrichten bereitzustellen und zu nutzen. In einer SOA spielen Services die Rolle von Clients oder Servern. Jeder Client- oder Serverdienst ist in der Software als eine Komponente implementiert. Die Verbindungspunkte zwischen Client- und Serverkomponenten werden als Client/Server-Ports bezeichnet und bilden die serviceorientierten Schnittstellen.

Zwei service-orientierte Anwendungen kommunizieren über Nachrichten miteinander.

Serviceorientierte Kommunikation mithilfe von Nachrichten.

Zur Erleichterung des Informationsaustauschs verwenden Client- und Serverkomponenten verschiedene serviceorientierte Kommunikationsmuster, darunter Publish-Subscribe, Request-Response und Fire-Forget. Diese Muster können asynchron oder aperiodisch sein, was ein Hauptmerkmal von SOC ist. Die ereignisbasierte Modellierung kann mithilfe von Stateflow® und SimEvents® erfolgen. Darüber hinaus ermöglicht die „Messages & Events“-Bibliothek in Simulink® die Modellierung, Simulation und Generierung von C++ Code für Anwendungen mit nachrichtenbasierter Kommunikation.

Serviceorientierte Kommunikationsschnittstellenmuster mit Methoden (request/response und fire/forget), Ereignissen und Feldern.

Serviceorientierte Kommunikationsschnittstellenmuster.

SOA-Workflows

Mit einem Workflow für Model-Based Design können Sie serviceorientierte Anwendungen erstellen und folgende Möglichkeiten nutzen:

  • Festlegen von Anforderungen mit der Requirements Toolbox™
  • Erstellung von SOAs mithilfe von System Composer™
  • Modellierung und Simulation von Services und Komponenten in Simulink
  • Importieren vorhandener Services und Komponenten zur Wiederverwendung
  • Generieren von C++ Produktionscode mit dem Embedded Coder®
  • Integration der gesamten SOA-Anwendung
  • Bereitstellung von SOA-Anwendungen auf Edge-Geräten und in der Cloud

SOA-Erweiterungsmöglichkeiten

Die Dienste sind wiederverwendbar und erweiterbar. Sie ermöglichen Software-Entwicklern die Erstellung skalierbarer SOA mithilfe agiler Prinzipien, einschließlich Systemen, die Over-the-Air-Updates (OTA) unterstützen, um immer auf dem neuesten Stand zu sein.

Ein softwaredefinierter Fahrzeug-Workflow, der die Abfolge der Schritte und die dazugehörigen Tools zeigt, um die Zeit bis zur Behebung von Zwischenfällen zu verkürzen.

Ein softwaredefinierter Fahrzeug-Workflow zur Verkürzung der Zeitspanne bis zur Behebung von Zwischenfällen.

Anwendungsfälle für SOA

Für softwaredefinierte Systeme, die Autonomie, Konnektivität und Elektrifizierung miteinander verbinden, spielt die SOA als Grundgerüst eine entscheidende Rolle. SOAs werden auch zum Aufbau von Systems of Systems, Multiagentensystemen, ereignisdiskreten Systemen und verteilten Systemen in der Automobil-, Luft- und Raumfahrtindustrie, Industrieautomatisierung und IoT sowie der Medizinprodukte- und Robotikbranche eingesetzt.

Zur Unterstützung dieser Industriezweige sind Softwarearchitektur-Frameworks, Middleware-Standards und Kommunikationsprotokolle auf Grundlage der SOA und der SOC entstanden. Zu diesen Frameworks und Standards gehören beispielsweise AUTOSAR Adaptive, DDS, ROS/ROS2, FACE, SOME/IP, MOSA, MQTT und OPC UA.

SOA in der Automobilindustrie

SOAs sind in der Automobil- und Fahrzeugindustrie mit dem Aufkommen von softwaredefinierten Fahrzeugen (SDVs) am weitesten verbreitet. SDVs integrieren sowohl signalbasierte Anwendungen als auch service-orientierte Anwendungen in neuere EE-Architekturen mit Bordcomputern und Zonen-Steuerungen (auch: Zone Control Units, ZCU). Mithilfe des System Composer und Simulink können Entwickler verschiedene SOA modellieren, simulieren und C++ Produktionscode generieren, bevor sie diese als modulare Dienste auf Edge-Geräten und in der Cloud bereitstellen. Zudem können diese Dienste während des gesamten Fahrzeug-Lebenszyklus durch Over-the-Air-Software-Updates aktualisiert werden, um die Kundenzufriedenheit weiter zu steigern. SOAs wurden sowohl in die oben genannten Industriestandards als auch in unternehmenseigene Frameworks aufgenommen.

Ein Beispiel aus der Automobil- und Fahrzeugindustrie zeigt einen AUTOSAR Classic Software-Stack und einen AUTOSAR Adaptive Software-Stack, die mit der Cloud verbunden sind.

Beispiel aus der Automobilindustrie: AUTOSAR Classic und Adaptive Software-Stack.

SOA in der Luftfahrt-, Raumfahrt- und Rüstungsindustrie

In der Luftfahrt-, Raumfahrt- und Rüstungsindustrie werden SOA in der Norm „Future Airborne Capability Environment“ (FACE™) verwendet, die Teil der Standardisierungsinitiative „Modular Open Systems Approach“ (MOSA) ist. FACE verwendet Transport Services Segments (TSS) für die serviceorientierte Kommunikation. Mit Simulink und dem DDS Blockset können Sie Anwendungen für den FACE-Standard modellieren und simulieren, FACE IDL für DDS TSS importieren, die FACE TSS-Kommunikation simulieren sowie C++ Produktionscode generieren und für FACE-Anwendungen einsetzen.

Der IDL-basierte Workflow von FACE umfasst den Import von IDL, die Anzeige und Bearbeitung des Data Dictionary für Schnittstellendaten, die Modellierung von Algorithmen, die Generierung von C++ Code und dessen Bereitstellung für FACE-Anwendungen.

IDL-basierter FACE-Workflow vom Importieren bis zur Bereitstellung.

Siehe auch: System Composer, Simulink, Stateflow