Cosa si intende con architettura orientata ai servizi?
Una SOA è un paradigma moderno di architettura software che consente di costruire applicazioni come un insieme di unità software modulari chiamate servizi. In una SOA i servizi sono completi, modulari e debolmente accoppiati. Questo approccio consente di costruire applicazioni complesse e distribuite nelle quali è possibile aggiornare i singoli componenti, a differenza delle applicazioni completamente monolitiche. Un tipico stack di software SOA include un software dell’applicazione che comprende servizi, servizi della piattaforma e middleware. Questi servizi sono in esecuzione su hardware a prestazioni elevate o macchine virtuali.
Comunicazione orientata ai servizi (SOC)
Le applicazioni basate su SOA utilizzano interfacce orientate ai servizi per la comunicazione orientata ai servizi al fine di fornire e utilizzare funzionalità per scambiare informazioni tramite messaggi. I servizi svolgono il ruolo di client o server in una SOA. Ogni servizio client o server è implementato nel software come un componente. I punti di connessione tra i componenti client e server sono definiti porte client/server, che costituiscono le interfacce orientate ai servizi.
Per facilitare lo scambio di informazioni, i componenti client e server utilizzano vari pattern di comunicazione orientati ai servizi, tra cui pubblicazione-sottoscrizione, richiesta-risposta e fire-forget. Questi pattern possono essere asincroni o sincroni, una caratteristica fondamentale di SOC. La modellazione event-based può essere effettuata con Stateflow® e SimEvents®. Inoltre, la libreria Messaggi ed Eventi in Simulink® consente di modellare, simulare e generare codice C++ per le applicazioni che utilizzano una comunicazione basata su messaggi.
Workflow di una SOA
Con un workflow di progettazione Model-Based è possibile costruire delle applicazioni orientate ai servizi mediante:
- Specificazione dei requisiti con Requirements Toolbox™
- Authoring di SOA con System Composer™
- Modellazione e simulazione di servizi e componenti in Simulink
- Importazione di servizi e componenti esistenti affinché possano essere riutilizzati
- Generazione di codice di produzione C++ con Embedded Coder®
- Integrazione dell’intera applicazione SOA
- Distribuzione delle applicazioni SOA su dispositivi edge e sul Cloud
Estensibilità delle SOA
I servizi possono essere riutilizzati e aggiornati. Consentono agli ingegneri software di costruire applicazioni scalabili orientate ai servizi utilizzando i principi della metodologia agile, compresi sistemi che supportano aggiornamenti over-the-air (OTA) in modo che siano sempre aggiornati.
Casi d’uso per SOA
Per i sistemi definiti dal software che integrano autonomia, connettività ed elettrificazione, l’architettura orientata ai servizi svolge un ruolo essenziale in quanto framework di base. Le SOA vengono quindi utilizzate anche per costruire sistemi di sistemi, sistemi multiagente, sistemi ad eventi discreti e sistemi distribuiti nel settore automotive, aerospaziale, dell’automazione industriale e IoT, dei dispositivi medici e della robotica.
Per supportare questi settori sono stati sviluppati framework per architetture software, standard middleware e protocolli di comunicazione basati sull’architettura orientata ai servizi e sulla comunicazione orientata ai servizi. Tra gli esempi di questi framework e standard figurano AUTOSAR Adaptive, DDS, ROS/ROS2, FACE, SOME/IP, MOSA, MQTT e OPC UA.
SOA nel settore automotive
Le SOA sono maggiormente diffuse nel settore automotive con l’avvento dei veicoli definiti dal software (SDV). I SDV integrano applicazioni basate sui segnali e orientate ai servizi in architetture EE con computer di veicoli e controller di zona. Con System Composer e Simulink gli sviluppatori possono modellare le SOA, simularle e generare codice di produzione C++ prima di distribuirle come servizi modulari su dispositivi edge e sul Cloud. Nel settore automobilistico, AUTOSAR è uno standard comune che utilizza la metodologia SOA per piattaforme Adaptive. Con AUTOSAR Blockset è possibile modellare e simulare applicazioni AUTOSAR Classic e Adaptive, quindi generare codice C/C++ e verificarlo con Embedded Coder. Inoltre, questi servizi possono essere aggiornati con aggiornamenti software over-the-air durante il ciclo di vita del veicolo per migliorare l’esperienza del cliente. Le SOA sono state integrate negli standard industriali indicati sopra e nei framework in-house.
SOA nel settore aerospaziale e della difesa
Nel settore aerospaziale e della difesa, la SOA figura nello standard Future Airborne Capability Environment (FACE™), che è parte dell’iniziativa per la standardizzazione Modular Open Systems Approach (MOSA). FACE utilizza Transport Services Segments (TSS) per la comunicazione orientata ai servizi. Con Simulink e DDS Blockset è possibile modellare e simulare applicazioni per lo standard FACE, importare FACE IDL per DDS TSS, simulare la comunicazione FACE TSS, generare codice di produzione C++ e poi distribuirlo per le applicazioni FACE.
Esempi e consigli pratici
Video di presentazione
Riferimenti software
Vedere anche: System Composer, Simulink, Stateflow, Embedded Coder, AUTOSAR Blockset, DDS Blockset