Articoli tecnici

Utilizzo della progettazione Model-Based per sviluppare e testare applicazioni SOA per sistemi operativi di bordo

Wei Min, ZEEKR Intelligent Technology Holding Limited


“Stiamo perfezionando ed espandendo il nostro workflow basato sulla progettazione Model-Based con MATLAB, Simulink, System Composer ed Embedded Coder. Questo flusso di lavoro ha già dimostrato il suo valore accelerando lo sviluppo e riducendo al minimo le difficoltà intrinseche della scrittura manuale del codice.”

L’industria automotive è nel pieno di una trasformazione radicale, con il passaggio da sistemi meccanici tradizionali a veicoli definiti dal software (SDV). Questa evoluzione richiede nuovi approcci allo sviluppo software, con l’architettura orientata ai servizi (Service-Oriented Architecture, SOA) che emerge come il paradigma preferito per progettare applicazioni automotive flessibili e scalabili. In ZEEKR abbiamo abbracciato questa transizione adottando un workflow completo basato sulla progettazione Model-Based per lo sviluppo di applicazioni SOA che operano sul nostro sistema operativo di bordo.

Lo sviluppo software automotive tradizionale basato sulla progettazione Model-Based si è concentrato principalmente sulle implementazioni AUTOSAR® Classic Platform, in cui i componenti software (SW-C) interagiscono tramite interfacce standardizzate del Run-Time Environment (RTE). Tuttavia, l’SOA introduce nuovi schemi di comunicazione, come le chiamate client-server e le interazioni basate su messaggi, che richiedono adattamenti significativi alle pratiche di sviluppo consolidate. La sfida non consiste solo nel modellare questi nuovi schemi di comunicazione, ma anche nel gestire la maggiore complessità delle architetture software all’interno di un ambiente non standardizzato AUTOSAR.

Il nostro team in ZEEKR ha affrontato queste sfide adottando un workflow basato sulla progettazione Model-Based per lo sviluppo di applicazioni SOA. Questo articolo descrive tre aree chiave di questo workflow:

  • Modellazione del comportamento SOA utilizzando le funzionalità dell'interfaccia client-server di Simulink®
  • Manutenzione di architetture software complesse tramite strumenti personalizzati basati su System Composer™
  • Implementazione di verifica e validazione efficaci per le applicazioni SOA

La nostra esperienza dimostra come gli ingegneri possano utilizzare la progettazione Model-Based per accelerare la transizione dai sistemi embedded tradizionali alle moderne architetture software basate su SOA per i veicoli definiti dal software (SDV).

Modellazione di applicazioni orientate ai servizi in Simulink

SOA introduce nuovi modelli di comunicazione che differiscono fondamentalmente da quelli dei sistemi embedded tradizionali. Le applicazioni Classic AUTOSAR comunicano tramite interfacce RTE semplici, che facilitano interazioni strettamente accoppiate e definite staticamente tra i componenti software. Al contrario, gli schemi di comunicazione SOA—come le chiamate a procedure remote (RPC) e le interazioni basate su messaggi—sono più flessibili e sofisticati. Consentono inoltre il disaccoppiamento di hardware e software, oltre a favorire la progettazione gerarchica del software. Per sfruttare appieno questi schemi di comunicazione, seguiamo un workflow di sviluppo basato sulla progettazione Model-Based che include: la modellazione delle applicazioni SOA in Simulink, la generazione di codice C++ con Embedded Coder®, la creazione del codice di integrazione middleware tramite un generatore di wrapper sviluppato internamente e la fusione sia del codice applicativo sia di integrazione in pacchetti applicativi pronti per il deployment. Questo workflow automatizzato non necessita di alcun codice C++ scritto a mano. Il codice wrapper generato automaticamente funge da ponte tra il codice applicativo, derivato dai nostri modelli Simulink, e il run-time environment—ZEEKR ARK OS.

Un modello SOA tipico nel nostro workflow include service provider e client, entrambi modellati in Simulink (Figura 1). Tale struttura rappresenta i comportamenti fondamentali dell’architettura SOA: servizi invocati in modo disaccoppiato, scambio di messaggi esplicito e netta separazione tra comunicazione e calcolo. Ci consente di esprimere chiaramente i concetti SOA all'interno di Simulink e di preparare tali modelli per il deployment in un ambiente distribuito basato sui servizi.

Diagramma di un modello client-server in Simulink. Il client include un blocco ricevitore attivato da un segnale di controllo periodico etichettato “Step” e un blocco mittente. Il server risponde alle richieste del client, illustrando il comportamento SOA di base.

Figura 1. Un semplice client e server modellati in Simulink. Il client include un blocco ricevitore attivato periodicamente da un segnale di controllo (“Step”) e un blocco mittente.

I nostri scenari di deployment includono sia ambienti di elaborazione centralizzati che distribuiti (Figura 2). Le applicazioni orientate ai servizi, modellate in Simulink, vengono eseguite su un'unità di elaborazione centrale ad alte prestazioni. Nel frattempo, i componenti Classic AUTOSAR, anch'essi sviluppati in Simulink, vengono eseguiti su un microcontrollore, interfacciandosi direttamente con gli attuatori del veicolo. Questo deployment misto riflette la tendenza più ampia verso architetture di dominio centralizzate, in cui i domain controller gestiscono l’elaborazione di alto livello mentre i nodi periferici (edge) si occupano del controllo di basso livello. Con Simulink possiamo supportare entrambi gli aspetti di questa architettura, utilizzando un ambiente di sviluppo unificato per modellare, simulare e generare codice per sistemi automotive eterogenei.

Architettura di un sistema di climatizzazione reale, che mostra software SOA in esecuzione su un processore centrale e un componente software AUTOSAR Classic su un microcontrollore che controlla un attuatore, evidenziando un deployment misto.

Figura 2. Un’applicazione reale di climatizzazione sviluppata in Simulink, che combina software SOA distribuito su un nodo processore centrale con un componente software AUTOSAR Classic (SW-C) in esecuzione su microcontrollore per pilotare l’attuatore.

Gestione di architetture software complesse con System Composer

Con l'aumentare della portata e della complessità delle applicazioni orientate ai servizi, la gestione della loro struttura diventa una sfida critica. Con più servizi che interagiscono tra più unità software, non è più sufficiente trattare ogni modello in modo isolato. È invece necessario disporre di una rappresentazione architetturale chiara di come i componenti software si relazionano tra loro, includendo il loro raggruppamento, le modalità di comunicazione e i punti di deployment. Molti strumenti commerciali per l’architettura software automotive, inclusi gli strumenti di authoring AUTOSAR, presumono spesso un ambiente basato su AUTOSAR e non supportano la flessibilità necessaria per distribuire modelli di comunicazione basati su servizi in sistemi operativi personalizzati. Per soddisfare le esigenze del nostro framework SOA e del sistema operativo di bordo, abbiamo sviluppato un ambiente di modellazione architetturale interno. SOA Model Composer—o SOMOC—si basa sulle capacità di Model-Based System Engineering e sugli elementi di progettazione architetturale di System Composer, oltre che sulle funzionalità di programmazione orientata agli oggetti di MATLAB®. Per semplificare l'utilizzo, abbiamo creato un'interfaccia utente personalizzata con MATLAB e App Designer (Figura 3).

Uno screenshot dell'interfaccia utente SOMOC. Il pannello a sinistra mostra la visualizzazione ad albero dell’architettura, mentre il pannello a destra presenta l’interfaccia del component composer per la gestione dell’architettura software.

Figura 3. Interfaccia utente di SOMOC, comprensiva della visualizzazione ad albero dell’architettura (a sinistra) e dell’interfaccia del component composer (a destra).

SOMOC supporta un approccio strutturato per definire e gestire le architetture SOA su quattro livelli chiave: architettura di sistema, processo, componente software e definizione dei servizi (Figura 4). Questa organizzazione gerarchica sfrutta le capacità dei reference component di System Composer per stabilire una chiara tracciabilità dai sistemi ad alto livello fino ai singoli servizi.

Un diagramma gerarchico dell'architettura software in SOMOC. Il diagramma mostra quattro livelli: architettura di sistema, processo, componente software (SW-C) e definizione dei servizi, mettendo in evidenza la tracciabilità strutturata.

Figura 4. Gerarchia dei componenti in SOMOC, con i livelli di architettura, processo, componente software (SW-C) e definizione dei servizi. 

SOMOC arricchisce i modelli architetturali con profili e stereotipi personalizzati per rappresentare i metadata specifici delle SOA, inclusi identificatori di servizio, namespace e dati di versione. Gli architetti di sistema ZEEKR utilizzano SOMOC per tradurre i requisiti funzionali (importati da file ARXML generati durante la progettazione del sistema) in architetture distribuibili, definendo i confini dei processi, le interfacce dei servizi e i componenti software. A partire da questi modelli architetturali, SOMOC genera automaticamente modelli Simulink “shell” con interfacce coerenti, fornendo agli sviluppatori un punto di partenza affidabile per implementare il comportamento o la logica interna (Figura 5). Questa automazione standardizza il workflow dall’architettura all’implementazione, mantiene le interfacce sincronizzate e offre ai nostri team un punto di riferimento condiviso durante tutto lo sviluppo.

Diagramma a strati dello sviluppo software in SOMOC, che illustra progettazione e testing attraverso i livelli di architettura, processo, componente e servizio, supportando la generazione automatica dei modelli.

Figura 5. Diversi livelli vengono progettati e testati all'interno del framework SOMOC.

Test multilivello per applicazioni SOA

In ZEEKR, validiamo le nostre applicazioni orientate ai servizi combinando test a livello di modello e a livello di codice. Iniziamo con test unitari e test sui modelli in Simulink utilizzando Simulink Test™, impiegando test harness per isolare singoli componenti e verificare le interazioni tra i servizi (Figura 6). Per ciascun modello, gli ingegneri possono simulare la comunicazione con componenti corrispondenti—ad esempio un provider simulato per un modello consumer—e verificare le risposte attese e il comportamento delle interfacce. Questa validazione nelle fasi iniziali aiuta a individuare errori di logica o incongruenze nelle interfacce prima della generazione del codice.

Screenshot del Simulink Test Sequence Editor che mostra una sequenza di test harness utilizzata per validare le interazioni tra componenti durante i test a livello di modello.

Figura 6. La sequenza di test di un test harness mostrata nell'editor delle sequenze di test.

Dopo aver generato il codice applicativo e integrato con il nostro sistema operativo di bordo, eseguiamo test a run-time utilizzando il nostro Service Verification Toolkit (SVT), un plugin leggero all’interno di Visual Studio Code (Figura 7). SVT consente ai team di importare le definizioni delle interfacce dei servizi dai file ARXML e di testare sia le interfacce dei metodi sia quelle dei topic simulando la comunicazione dei servizi a livello applicativo. Può comportarsi sia da consumer sia da provider—inviando richieste di metodo, gestendo le risposte, pubblicando dati sui topic o sottoscrivendosi ai messaggi. SVT mostra i valori scambiati attraverso le interfacce dei servizi, aiutando gli ingegneri a verificare che l’applicazione distribuita si comporti correttamente in diversi scenari di interazione.

Screenshot del plugin SVT in Visual Studio Code, che mostra un’interfaccia per simulare la comunicazione tra servizi, comprese le richieste di metodo e lo scambio di dati sui topic.

Figura 7. Il plugin SVT in Visual Studio Code.

Verso il futuro

Mentre continuiamo a sviluppare nuove applicazioni orientate ai servizi per il deployment a bordo veicolo, stiamo anche perfezionando ed espandendo il nostro workflow basato sulla progettazione Model-Based con MATLAB, Simulink, System Composer ed Embedded Coder. Questo workflow ha già dimostrato il suo valore accelerando lo sviluppo e riducendo al minimo le sfide insite nella scrittura manuale del codice. Grazie alla possibilità di eseguire modellazione dell’architettura, modellazione dei servizi, simulazione, generazione del codice e test di applicazioni orientate ai servizi e basate su AUTOSAR in un unico ambiente, disponiamo di una base software scalabile per supportare lo sviluppo di SDV, man mano che continua a rimodellare il panorama automotive.

Pubblicato nel 2025

Visualizza articoli per funzionalità correlate

Visualizza articoli per settori correlati