Metodologie di Sviluppo
All’interno di questo capitolo verranno descritte le modalita che sono state seguite per la realizzazione del nostro progetto.
Metodologia Agile
Durante lo sviluppo del seguente progetto sono state adottate una serie di modalita Agili. Questa filosofia di sviluppo ha permesso al nostro team di strutturare e dividre il lavoro con estrema facilita permettendoci di avere una maggiore indipendenza e allo stesso tempo una migliore qualita del codice.
Tra le varie filosofie Agili che sono presenti, abbiamo scelto di utilizzare una particolare variante denominata Scrum.
Scrum
Scrum e una metodologia di gestione dei progetti che si concentra principalmente su un processo iterativo ed incrementale per ottimizzare la produttivita e la qualita del lavoro in un team.
Ad ogni iterazione del progetto vengono aggiunte nuove funzionalita o si raffinano quelle gia esistenti. Nella fase primordiale del processo di sviluppo in modalita Scrum e necessario stilare quello che viene chiamato il Product Backlog. Tale documento prevede una lista di funzionalita previste dal sistema.
Gli sprint (termine con la quale si puo indicare il termine iterazione) avvenivano settimanalmente, con scadenza prefissata nei week-end. All’interno di ogni sprint venivano eseguite una serie di attivita, tra cui:
- Daily Scrum: questa attivita prevede una riunione giornaliera tra tutti i membri del team, in cui ogni singolo partecipante aggiorna l’intero gruppo riguardo alle attivita che ha svolto nel giorno precedente, le varie attivita che avrebbe eseguito nel giorno stesso ed in quelli futuri ed eventuali problemi incontrati/da affrontare. La piattaforma utilizzata per eseguire questi incontri e stata Discord. L’insieme di tutte le informazioni raccolte all’interno di questi incontri servivano a ri-formulare lo Sprint Backlog.
- Sprint Planning: questa attivita veniva eseguita nel primo giorno della settimana relativa, in cui si andavano ad individuare le diverse funzionalita da implementare, queste funzionalita venivano a loro volta suddivise in sotto funzionalita ed assegnate poi ai diversi membri del team. Ad ogni attivita viene associata una priorita e poi successivamente il membro del team a cui veniva assegnato tale task associava ad esso un valore che ne rappresentava la difficolta. Il software utilizzato per questa attivita e stato Jira.
Successivo ad ogni sprint venivano eseguite una serie di attivita per il raffinamento del progetto, ovvero:
- Product Backlog Refinement: una riunione del team in cui vengono identificate le varie attivita per il raffinamento del Product Backlog;
- Sprint Review: valuatazione dello stato del progetto al termine dello sprint settimanale;
- Sprint Retrospective: valutazione del processo di sviluppo che si e adottato fino a quel punto, valutando eventualmente alcune modifiche per incrementare l’efficacia del team.
(Scrum) Suddivisione del Team
Nella metodologia di sviluppo scrum vengono identificate diversi ruoli tra i componenti del team, tra cui:
- Product Owner: il cui compito e quello di stilare il Product Backlog e di verificare l’adeguatezza del sistema che si sta sviluppando, tale ruolo e stato svolto dal componente Furi Stefano;
- Scrum Master: componente del sistema il cui ruolo e quello di mediatore tra il Product Owner ed il Development Team, tale compito e stato svolto dal componente Iorio Matteo;
- Development Team: componenti del team il cui compito e quello di progettare soluzioni ai vari task assegnati dal Product Owner, il team di sviluppo e composto da:
- Furi Stefano
- Iorio Matteo
- Vincenzi Fabio
Test Driven Development
All’interno del nostro progetto, abbiamo scelto di adottare la metodologia di sviluppo TDD (Test Driven Development). Questa scelta permette al sistema di garantire una maggiore qualita del codice, identificare e correggere i bug in anticipo e di migliorare la manutenibilita complessiva del sistema software. Il TDD si compone di due fasi realizzative:
- Definizione dei test: la prima fase di sviluppo con questa modalita prevede la definizione dei test;
- Scrittura del codice di produzione: sviluppo del codice necessario affinche i test definiti nella fase precedente eseguano con esito positivo senza fallire.
La fase preliminare alla scrittura del codice e quella di Red Green Refactor, che e composto dalle tre seguenti fasi:
- Fase Red: scrivere un test che fallisca per una determinata funzionalita;
- Fase Green: scrivere il codice di produzione che soddisfi il test definito della fase precedente;
- Refactor: ristrutturare il codice di testing e sia quello di produzione.