View on GitHub

pps-2021-authsim

Processo di sviluppo adottato

In questo capitolo viene presentata la metodologia di lavoro adottata dal gruppo e la conseguente organizzazione per lo sviluppo del progetto. Inoltre vengono presentati gli strumenti e gli ambienti utilizzati nello sviluppo.

Metodologia Agile

Il team di sviluppo consistente di tipologie di studenti eterogenee ha adottato un processo di sviluppo agile basato sul framework Scrum.

Il framework è stato opportunamente adattato alle esigenze personali dovute alle necessità universitarie e lavorative dei membri del gruppo, prendendo spunto dalle guideline e principi agile.

Per questa ragione, per poter sperimentare a pieno il potenzialità della metodologia prescelta alcuni membri del gruppo hanno impersonato un duplice ruolo nella realizzazione del progetto: da un lato quello di sviluppatori e dall’altro quello di alcune delle figure principali coinvolte in un processo Scrum.

Nello specifico:

Il processo di Scrum è stato modificato per rispecchiare meglio la tipologia e le scadenze imposte del progetto. In particolare:

Durante le riunioni veniva discusso lo stato del progetto e stabilito il backlog dello sprint in base al product backlog. Inoltre veniva fatta una retrospettiva sullo sprint precedente dove veniva mostrato e spiegato il lavoro svolto da ciascun membro e stabilito l’andamento del progetto.

Lo sviluppo del progetto è stato esteso su 8 sprint settimanali in totale.

La comunicazione del team è avvenuta tramite vari canali, per i meet è stato scelto Microsoft Teams per la comunicazione a voce e a video, mentre in settimana i membri del team erano in contatto sul canale Telegram creato per il progetto.

Divisione dei task

Durante gli sprint settimanali sono stati definiti una serie di task che ogni membro poteva scegliere di implementare su base volontaria. Per favorire il processo di sviluppo agile e tracciare la roadmap e il backlog del progetto è stata utilizzata una board su Trello.

Sulla board kanban del progetto è stato stabilito il Product Backlog e durante gli sprint settimanali anche lo Sprint Backlog. Le card associate ai task del backlog seguivano il classico flusso del kanban e venivano spostati nelle corsie:

Inoltre su Trello si è tenuta traccia di “Epics”, cioè attività troppo grandi da inserire in un unico sprint, ma il cui tracciamento è utile ai fini di avere un punto di riferimento per le attività degli sprint successivi e altri materiali relativi allo sviluppo come i mockup, diagrammi e appunti.

Strumenti e CI

Nell’ottica del progetto Agile è stato deciso di creare una pipeline di CI e build automation allo scopo di chiudere frequentemente e fluidamente gli sviluppi che coprono delle feature stabilite.

Scala 3

Scala3 è stato scelto per le nuove feature aggiunte, tra le quali:

Queste nuove feature di Scala3 hanno permesso di scrivere codice più conciso e senza “distrazioni” date da parentesi obbligatorie che non aggiungono significato al codice.

Inoltre, anche durante il momento di revisione, la lettura e l’analisi del codice sono risultate molto più veloci, in quanto non si perdeva tempo nell’eliminare mentalmente le parentesi.

Github

Per il versioning distribuito del progetto è stato utilizzato GitHub, nel quale venne creata un organization per il progetto. Sono state utilizzate anche delle feature specifiche di Github come GitHub Pages.

Gitflow

Per rendere più fluido il processo di versioning dello sviluppo è stato adottato il workflow Gitflow dove le feature venivano sviluppate su dei branch separati da quella di rilascio (master o main).

Per il progetto è stato utilizzato il branch “develop” per il codice in sviluppo, da cui venivano staccati i “feature branch” con gli sviluppi in corso.

Inoltre è stata adottata la prassi dei pull request e code review prima della chiusura dei feature branch per garantire la qualità del codice prodotto e agevolare i merge.

Build Environment

Avendo utilizzato Scala 3 purtroppo si è dovuto rinunciare ad alcuni strumenti importantissimi per motivi di compatibilità:

Realizzazione Mockup e UML

Per la parte grafica del progetto sono stati prodotti dei mockup statici della gui con MockPlus. UML è stato realizzato con Star UML e un plugin per la generazione automatica dell’IDE.