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.