FireflySynch v1

Introduction

Goal: Realizzazione in Java del Fireflysynch limitatamente al requisito 1

Requirements

Costruire il simulatore di un sistema costituito da 3 lucciole. Inizialmente, le lucciole lampeggiamo ciascuna con una frequenza (costante) propria.

  1. dopo 10 secondi le lucciole devono lampeggiare in modo sincronizzato
  2. il sistema è dotato anche di un sonar . Quando il sonar rileva un ostacolo a una distanza minore di una distanza prefissata DMIN, le lucciole devono lampeggiare in modo sincronizzato. Quando la distanza dell’ostacolo (ri)supera DMIN, le lucciole tornano a lampeggiare in modo random

Requirement analysis

L'analisi dei requisiti mira a chiarire le entità coinvolte e i vincoli temporali del sistema per il primo requisito.

Problem analysis

L'analisi si focalizza sulla transizione da una logica proattiva autonoma a una reattiva coordinata, evidenziando le seguenti criticità tecniche:

Architettura Logica

Il sistema viene modellato tramite il metamodello QAK come un insieme di attori:

Sincronizzazione di Fase

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.

Soluzione: La ricezione dell'evento 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.

Formalizzazione dei Messaggi

Event sync : sync(PERIOD)           // Segnale broadcast di sincronizzazione
Dispatch cellstate : cellstate(X,Y,C) // Aggiornamento GUI esterna

Logica delle Transizioni

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)

Test plans

Project

Testing

Deployment

Maintenance



By Gianluca Varisco email: gianluca.varisco@studio.unibo.it, foto_per_iss GIT repo: https://github.com/gianluca-varisco/issLab2026