Costruire il simulatore di un sistema costituito da 3 lucciole. Inizialmente, le lucciole lampeggiamo ciascuna con una frequenza (costante) propria.
L'analisi dei requisiti mira a chiarire le entità coinvolte e i vincoli temporali del sistema per il primo requisito.
Event sync). Si sceglie l'evento in quanto stimolo ambientale broadcast che non richiede all'emittente la conoscenza puntuale dei destinatari (disaccoppiamento).L'analisi si focalizza sulla transizione da una logica proattiva autonoma a una reattiva coordinata, evidenziando le seguenti criticità tecniche:
Il sistema viene modellato tramite il metamodello QAK come un insieme di attori:
dynamicOnly) che implementa una FSM sensibile a timer interni (timeout) ed eventi esterni.Un problema rilevato è che impostare lo stesso periodo non garantisce la sincronia visiva se le lucciole si trovano in punti diversi del loro ciclo di attesa locale.
sync deve causare una preemption sul timer locale. L'attore deve interrompere il delay in corso e saltare immediatamente allo stato di flash. In questo modo si allinea istantaneamente la fase di tutti i componenti.
Event sync : sync(PERIOD) // Segnale broadcast di sincronizzazione Dispatch cellstate : cellstate(X,Y,C) // Aggiornamento GUI esterna
La lucciola gestisce la duplice natura del comportamento (autonomo vs coordinato) tramite la seguente struttura di transizione:
Transition t0
whenTimeVar Timer -> flash // Percorso proattivo (fase asincrona)
whenEvent sync -> handleSync // Percorso reattivo (fase sincronizzata)
GIT repo: https://github.com/gianluca-varisco/issLab2026