LABORATORIO DI INGEGNERIA DEI SISTEMI SOFTWARE

Introduction

Evoluzione del primo prototipo con un dispositivo di output realizzato in Swing.

Requirements

R1  Realizzare una versione in Java del gioco Life di Conway, come gioco zero-player. 
    Il gioco consiste nell’introdurre una Griglia di Celle il cui stato (cella ‘viva’ o cella ‘morta’) 
    evolve come stabilito dalle regole di ConwayLife

R2  L’utente umano deve poter:
     - specificare la configurazione iniziale della griglia del gioco    
     - vedere l’evoluzione del gioco in forma opportuna 
        (si veda Problema della vista del gioco )
     - fermare e far ripartire l’evoluzione del gioco
     - pulire (a gioco fermo) la configurazione della griglia del gioco

Requirement analysis

Cosa intende il committente con la parola Cella?
public interface ICell {
    void setStatus(boolean v);
    // Qualunque cosa sia una cella, esiste solo la rappresentazione della cella
    
    boolean isAlive();
    // La cella come entità ha la capacità di rispondere ad una query,
    // che mi restituisce un valore, ossia vivo o morto.
    
    void switchCellState();
    // La cella è un ente che ha la capacità di, attraverso questo metodo,
    // cambiare stato.
}


Cosa intende il committente con la parola Griglia?
public interface IGrid {
    int getRowsNum();
    // Per implementare getRowsNum devo conoscere com'è fatta internamente
    // la griglia, ossia è primitiva.
    
    int getColsNum();
    
    void setCellValue(int x, int y, boolean state);
    // Non è un metodo indispensabile, ma è molto comodo avere un metodo
    // che mi permette di modificare lo stato di una cella.
    
    ICell getCell(int x, int y);
    // è indispensabile avere un metodo che mi restituisce una cella.
    
    boolean getCellValue(int x, int y);
    
    void reset();
    // Non è indispensabile, ma può essere opportuno avere un metodo
    // che resetta gli stati dei componenti della griglia, ossia le celle
    // a un valore default, ad esempio tutte le celle morte.
}

Problem analysis

Problem Analysis

Test plans

Project

Testing

Utilizzo della suite JUnit per testare le classi Cell e Grid, che rappresentano rispettivamente la cella e la griglia del gioco.
Possibilità di automatizzare i test con gradle. 

Deployment

Build del progetto con gradle, che genera un file .jar eseguibile. 

Maintenance