La logica di controllo
La notazione che utilizziamo è quella dei diagrammi a stati UML. Si tratta di una versione estesa di quelle che sono le classiche macchine a stati utilizzate nella progettazione H/W.

Il diagramma, di fatto, è a tre livelli:
- Al livello più alto, che comprende tutti i possibili stati, viene gestita l'eventuale richiesta di refresh da parte delle parti del sistema (semafori, control room), in modo da garantirne sempre e comunque l'allineamento;
- Al livello intermedio, ci sono due macro-stati: attivo e disattivo; quest'ultimo è quello in cui tutti i semafori lampeggiano di colore giallo;
- Al livello di maggior dettaglio si descrive lo stato attivo, che nel diagramma qui sopra è riassunto come un singolo elemento, ma successivamente viene illustrato nella sua completezza.
Un diagramma a più livelli come questo è detto diagramma a stati gerarchico.
Lo stato attivo

In sostanza, il diagramma ci dice che:
- Sono garantiti almeno 30 secondi di verde ai veicoli, prima che il semaforo stradale transiti dal verde al giallo;
- Dopo la pressione del bottone di richiesta attraversamento, il display numerico visualizza i secondi mancanti al verde del semaforo pedonale;
- Il giallo per i veicoli dura 5 secondi;
- Il tempo di attraversamento è di 15 secondi, durante i quali il display numerico visualizza i secondi mancanti;
- Negli ultimi 5 secondi i pedoni vengono sollecitati a completare l'attraversamento, facendo lampeggiare il verde del semaforo pedonale.
Al di là di questa breve sintesi, il diagramma specifica in modo formale e completo il comportamento del sistema; è ben evidente, per esempio, che negli stati diversi da Green e LongGreen l'evento di pressione del bottone di richiesta di attraversamento viene ignorato.