Contatore

E' emersa la necessita' di inserire un macroblocco che realizzi le funzionalita' di un contatore e che si occupi di gestire la comunicazione con le altre parti del sistema. Il sottosistema prendera' il nome di GameController.

GameController

Le parti del sottosistema GameController dovranno occuparsi di gestire:

  • la comunicazione con le altre parti del sistema (Pulsanti/Display) definendo un apposito protocollo di comunicazione
  • gestire in base ai segnali ricevuti (start/stop) dalle altre parti del sistema (Pulsanti) il funzionamento di una entita' preposta alla gestione del conteggio (ICounterE)
  • gestire l'assegnazione del punteggio a seguito della pressione del Pulsante stop da parte del Concorrente.
  • comunicare l'eventuale aggiornamento a DisplayPunteggio.
  • tenere memoria del punteggio attualmente totalizzato, nel caso emergesse questa necessita' da parte del committente.

ICounterE

Il sottosistema ICounterE e' stato imposto come requisito dal committente. A causa di cio' e' necessario introdurre un sottosistema (CounterController) che si occupi di modellare il comportamento di ICounterE secondo le specifiche del problema. ICounterE infatti e' un contatore ciclico per 999, evidentemente sovradimensionato per le necessita' del problema.

CounterController

E' responsabilita' CounterController gestire all'interno del sottosistema GameController i segnali start/stop provenienti dai rispettivi pulsanti. CounterController deve essere in grado di sapere se il conteggio e' attivo o no (isActive).

ConsoleDelPresentatore, ConsoleDelConcorrente

Essendo il valore attuale visualizzato su entrambi i Display con notazioni diverse e' oppurtuno inserire una sottoparte del sistema che si occupi della conversione tra basi distinte.

Sincronia tra le parti: ConsoleDelPresentatore, ConsoleDelConcorrente, Contatore

Al fine del corretto svolgimento del gioco occorre garantire che il valore visualizzato sui DisplayDelConcorrente e DisplayDelPresentatore ed il valore_attuale del Contatore siano coerenti.

Ci trova cosi' di fronte a diverse possibilita':
  • Il sistema in caso di mancata sincronia notifica il problema e si arresta.
  • Il contatore non procede nel conteggio se i display non sono allineati.
E' evidente che siamo di fronte ad un problema di "real time" e che la soluzione, dovendo rispettare i vincoli imposti, e' costosa in termini di tempo per la realizzazione e in termini economici per avere un sistema che possa garantire il corretto svolgimento del gioco in tutte le condizioni. Si e' pertanto pensato di coinvolgere nella scelta il committente stesso al fine di capire quale aspetto privilegiare all'interno del sistema e proponendo al tempo stesso un possibile rilassamento del vincolo precedentemente imposto. Infatti si potrebbe fare in modo che il sistema, in un tempo breve dopo l'arresto del Contatore, aggiorni tutti i display ad un valore di riferimento, comunque da concordare col committente.