Riscrittura ex-novo

L'analisi riguardante la riscrittura ex-novo dell'applicazione e' per forza di cose molto simile alla via seguita a lezione. Lo sviluppo, ripensando tutti i componenti in funzione di uniboEnv, sarebbe agevole ma si butterebbe molto del lavoro gia' prodotto. In caso di passaggio ad un nuovo framework per lo scambio dei messaggi buona parte del lavoro sarebbe comunque da buttare.

Adapters

Cercando di sfruttare al meglio il refactoring tra i vari cicli di interazione, risulta certamente conveniente adattare la base esistente in modo che possa utilizzare uniboEnv. In questa maniera si conserva buona parte del lavoro di collaudo intatto e si puo' far evolvere l'intero progetto in maniera piu' controllata.

A titolo di esempio si riportano alcuni dei documenti che faranno parte dell'analisi e del progetto della iterazione che portera' alla versione 1.1 del prototipo. Tale versione, manterra' le funzionalita' attuali ma potra' utilizzare una nuova modalita' di comunicazione sfruttando le potenzialita' offerte dal framework UniboEnv si per la comunicazione con un ipotetico servizio di counter remoto si per la comunicazione tra le altre parti.

Il punto di partenza consiste nell'identificare il tipo di messaggi scambiati tra le varie parti. Buona parte del lavoro di comunicazione era gia' svolto da HumanDevicesController che verra' ora smembrato e sostituito da appositi adapters. E' comunque possibile far convivere entrambe le modalita' di comunicazione anche all'interno dello stesso applicativo. Si puo' ad esempio utilizzare HumanDevicesController per gestire (via procedure call) i pulsanti e gli adapters per uniboEnv per pilotare invece i display, cosa molto utile nella fase di transizione se il committente necessitasse di un prodotto intermedio.

CounterController comunica con counterWS

comunicazione con un counter remoto

Attraverso un adapter che realizza l'interfaccia ICounterE, CounterController puo' comunicare con un servizio remoto di Counter. La traduzione dalle chiamate di CounterController e' realizzata dall'adapter stesso.

CounterController si interfaccia con Display

comunicazione tra cc e display

UniboEnvToCounterControllerNotifyNewValue si sostituisce a parte delle funzionalita' di HumanDevicesController e realizza la comunicazione via UniboEnv con i dispositivi di uscita.

Modalita' di comunicazione

qualche dettaglio

UniboEnv permette la comunicazione sia a segnali sia a request-response. Non volendo un legame con una particolare implementazione si e' sfruttato il patter strategy, ben consapevoli che per comunicazioni non in memoria comune ci potrebbero essere limitazioni.