Introduction
Goal: Procediamo ad una evoluzione del sistema
GAME OF LIFE DI CONWAY
con i requisiti spiegati in seguito.
Requirements
R1 Dotare il gioco Life di Conway di una pagina HTML come dispositivo I/O.
Il gioco consiste nell’introdurre una Griglia di Celle il cui stato (cella ‘viva’ o cella ‘morta’)
evolve come stabilito dallle regole di ConwayLife
R2 La pagina deve costituire un componente esterno alla applicazione secondo la architettura riportata in IoJavalin
esterno alla applicazione
R3 Il gestore del gioco sarà l’utente che ha aperto per primo (owner) una pagina HTML collegata al gioco. In altre
parole, solo la pagina dell’owner avrà pulsanti di comando START/STOP/CLEAN/EXIT attivi
R4 La pagina HTML deve essere aggiornata in modo automatico man mano il gioco procede
R5 Un utente non owner che si collega mentre il gioco è in corso, dovrebbe vedere lo stato attuale della griglia in
modo corretto
R6 In maniera opzionale la pagina HTML deve indicare se il gioco continua anche nel caso di griglia vuota o di configurazione tabile
R7 Il deployment del gioco deve avvenire mediante Docker.
Requirement analysis
A partire dal requisito R1 si individuano le entità logiche che compongono il dominio del problema quali Cell, Grid e Life.
Ci poniamo una domanda fondamentale: Cosa intende il committente per Cell, Grid e Life?
Cosa intende il committente per Cell?
Per l'entità Cell formalizzo il seguente modello.
Cell è atomica, ha un proprio stato interno (viva o morta) e ha la possibilità di modificarlo (da viva a morta e viceversa).
Per definire, invece, il comportamento attesso da una cella realizzo il seguente TestPlan.
Cosa intende il committente per Grid?
Per Grid formalizzo il seguente modello. modello.
L'entità Grid è composta da Cell. E' un'entitò a due dimensioni, quali colonne e righe.
Quindi, l'entità Grid ha la possibilità di restituire le proprie dimensioni e una cella che la compone. Inoltre può settare lo stato di una cella, ottere il suo valore e resettare la Grid impostando tutte le celle di cui è composto a morte.
Per esprimere i requisiti che le interfacce non sono in grado di esprimere, sviluppo il seguente TestPlan.
Cosa intende il committente per Life?
Il committente non ha idea di cosa sia Life, ma mi informa che è la logica del gioca (contiene le regole).
Per Life, quindi, formalizzo il seguente modello.
Per esprimere i requisiti che le interfacce non sono in grado di esprimere, sviluppo il seguente TestPlan.
Problem analysis
Test plans
Project
Testing
Deployment
Maintenance