Architecture orientée services (SOA)

L'architecture orientée services (SOA)

L'architecture orientée services (SOA) est un paradigme moderne d'architecture logicielle qui permet de développer des applications sous la forme d'un ensemble d'unités logicielles modulaires appelées services. En SOA, les services sont autonomes, modulaires et faiblement couplés. Cette approche vous permet de créer des applications complexes et distribuées, dans lesquelles vous pouvez mettre à jour des composants individuels, contrairement à des applications entièrement monolithiques. Une pile logicielle SOA typique inclut des logiciels d'application comprenant des services, des services de plateforme et du middleware. Ces services s'exécutent sur du hardware ou des machines virtuelles haute performance.

Pile logicielle SOA généralisée, présentée avec ses couches de haut en bas (software d'application, middleware, software de base), fonctionnant sur du hardware haute performance.

Pile logicielle SOA généralisée.

Communication orientée services (SOC)

Les applications basées sur une architecture SOA utilisent des interfaces orientées services pour faciliter la communication entre les services permettant ainsi l'échange d'informations au moyen de messages. Dans une architecture SOA, les services jouent le rôle de clients ou de serveurs. Chaque service client ou serveur est implémenté sous forme logicielle en tant que composant. Les points de connexion entre les composants client et serveur sont désignés par le terme de ports client/serveur, qui constituent les interfaces orientées services.

Deux applications orientées services communiquent entre elles en utilisant des messages.

Communication orientée services avec des messages.

Pour faciliter l'échange d'informations, les composants client et serveur utilisent divers modèles de communication orientée services, notamment publish-subscribe, request-response et fire-forget. Ces modèles peuvent être asynchrones ou synchrones, ce qui représente une caractéristique clé de la communication SOC. La modélisation basée sur les événements peut être réalisée en utilisant Stateflow® et SimEvents®. En outre, la bibliothèque Messages & Events de Simulink® vous permet de modéliser, simuler et générer du code C++ pour des applications utilisant la communication basée sur des messages.

Modèles d'interface de communication orientée services incluant les méthodes (request/response et fire/forget), les événements et les champs.

Modèles d'interface de communication orientée services.

Workflow de SOA

Avec un workflow d’approche Model-Based Design, vous pouvez créer des applications orientées services :

  • Spécifier des exigences avec Requirements Toolbox™
  • Créer des SOA avec System Composer™
  • Modéliser et simuler des services et des composants dans Simulink
  • Importer des services et des composants existants pour les réutiliser
  • Générer du code C++ de production avec Embedded Coder®
  • Intégrer l'application SOA dans son ensemble
  • Déployer les applications SOA sur des dispositifs périphériques et dans le cloud

Extensibilité de la SOA

Les services peuvent être réutilisés et mis à jour. En s'appuyant sur les principes agiles, ils permettent aux ingénieurs en logiciel de créer des applications orientées services évolutives, incluant des systèmes qui supportent les mises à jour over-the-air (OTA), assurant ainsi une mise à jour constante.

Workflow d'un SDV (Software-Defined Vehicle) montrant la séquence d'étapes et les outils associés pour accélérer le temps de récupération après un incident.

Workflow d'un SDV (Software-Defined Vehicle) permettant d'accélérer le temps de récupération après un incident.

Cas d'utilisation de SOA

Pour les systèmes définis par logiciel intégrant autonomie, connectivité et électrification, l'architecture orientée services joue un rôle crucial en tant que framework fondamental. Les SOA servent aussi à construire des systèmes de systèmes, des systèmes multi-agents, des systèmes à événements discrets et des systèmes distribués dans les secteurs de l'automobile, de l'aérospatiale, de l'automatisation et de l'IoT industriels, des équipements médicaux et de la robotique.

Des frameworks d'architecture logicielle, des normes de middleware et des protocoles de communication basés sur l'architecture orientée services et la communication orientée services sont apparus pour supporter ces secteurs. Parmi les exemples de ces frameworks et normes, on peut citer AUTOSAR Adaptive, DDS, ROS/ROS2, FACE, SOME/IP, MOSA, MQTT et OPC UA.

SOA dans l'automobile

C'est dans l'industrie automobile que les SOA sont les plus répandues avec l'avènement des véhicules définis par logiciel (SDV, Software Defined Vehicle). Les SDV intègrent à la fois des applications basées sur des signaux et des applications orientées services dans les architectures EE récentes dotées d'ordinateurs de bord et de contrôleurs zonaux. Avec System Composer et Simulink, les développeurs peuvent modéliser des SOA, les simuler et générer du code C++ de production, avant de les déployer sous forme de services modulaires vers des dispositifs périphériques et vers le cloud. AUTOSAR est une norme populaire dans l'industrie automobile, utilisant la méthodologie SOA pour les plateformes Adaptive. Avec AUTOSAR Blockset, vous pouvez modéliser et simuler des applications AUTOSAR Classic et Adaptative, puis générer du code C/C++ et le vérifier avec Embedded Coder. En outre, ces services peuvent être mis à niveau grâce à des mises à jour logicielles OTA (over-the-air) tout au long du cycle de vie du véhicule afin d'améliorer l'expérience client. Les SOA ont été intégrées aux normes industrielles mentionnées ci-dessus, ainsi que dans les frameworks internes.

Exemple du secteur automobile montrant une pile logicielle AUTOSAR Classic et une pile logicielle AUTOSAR Adaptive connectée au cloud.

Exemple du secteur automobile : piles logicielles AUTOSAR Classic et AUTOSAR Adaptative.

SOA dans les domaines de l'aérospatiale et de la défense

Dans les secteurs de l'aérospatiale et de la défense, la SOA apparaît dans la norme Future Airborne Capability Environment (FACE™), qui fait partie de l'initiative de normalisation Modular Open Systems Approach (MOSA). FACE utilise des segments de services de transport (TSS) pour la communication orientée services. Avec Simulink et DDS Blockset, vous pouvez modéliser et simuler des applications pour la norme FACE, importer des fichiers IDL FACE pour les définitions DDS des TSS, simuler la communication TSS FACE, ainsi que générer du code C++ de production et le déployer pour les applications FACE.

Workflow basé sur des fichiers IDL FACE montrant l'importation d'un fichier IDL, la visualisation et l'édition du dictionnaire de données de l'interface, la modélisation des algorithmes, la génération du code C++ et son déploiement pour les applications FACE.

Workflow basé sur des fichiers IDL FACE, de l'importation au déploiement.

Voir aussi: System Composer, Simulink, Stateflow, Embedded Coder, AUTOSAR Blockset, DDS Blockset