Implementazione
Durante l'Analisi e la Progettazione di BrewDay ci siamo fin da subito interrogati riguardo la piattaforma attraverso la quale avremmo deciso di implementare il nostro software.
Il nostro primo quesito è senza dubbio stato
Come l'utente utilizzerà BrewDay?
Abbiamo quindi elencato delle possibili soluzioni, tipiche del contesto storico e tecnologico in cui ci troviamo e siamo giunti a queste diverse possibili soluzioni.
Applicazione Desktop
La prima proposta è stata quella di sviluppare un'applicazione desktop. Hanno sicuramente fatto la storia in qualsiasi ambito ludico e professionale, ma oggi stanno tuttavia gradualmente scomparendo per lasciare spazio ad applicazioni che sempre più spesso sono servite in cloud, accessibili ovunque e anche da smartphone. Proprio perché un po' desuete e forse limitate sotto diversi aspetti, abbiamo subito scartato l'ipotesi relativa allo sviluppo di un'applicazione desktop, anche perché oltre alle datate interfacce di Java Swing e Windows Form nessun membro del gruppo conosce ad oggi framework dal look accattivante per sviluppare una buona applicazione desktop.
Applicazione Mobile
Gli smartphone, presente e futuro prossimo dell'informatica, hanno preso il sopravvento su tutto. Sviluppare BrewDay come applicazione mobile sarebbe stato sicuramente molto interessante, ma purtroppo non è stata così realizzata. Vi sono vari motivi che ci hanno portato a scartare l'ipotesi:
- Per quanto possa sembrare un motivo banale, non tutti i produttori di birra sono giovani (anzi..) e hanno o sanno usare correttamente uno smarphone.
- Sviluppare BrewDay come applicazione mobile sarebbe significato costringere costringere chiunque ad utilizzare il software solo e soltanto tramite smartphone.
- Non è sicuramente banale approcciare da soli lo sviluppo di applicazioni mobile fatte come si deve e di Cordova in particolare per lo sviluppo di applicazioni multi-piattaforma. Nessun membro del team ha attualmente queste competenze e abbiamo pensato che apprenderle nel giro di soli due mesi potesse portare qualche spiacevole complicazione.
Applicazione Web
La via intermedia fra desktop e mobile, il web rappresenta sia il passato che il futuro. Fra i punti di forza vi sono sicuramente quelli di poter accedere all'applicazione letteralmente da qualsiasi luogo o dispositivo, computer o smartphone che sia, senza alcuna limitazione dettata dal sistema operativo su cui si opera. Di contro, è impossibile poter utilizzare un'applicazione web dal browser senza che si abbia una connessione internet, cosa invece fattibile con un'applicazione mobile.
Nonostante questo inconveniente abbiamo comunque deciso di sviluppare BrewDay come piattaforma web, senza negare che la scelta sia stata dettata anche da una maggiore preparazione del gruppo in questo ambito.
Come svilupparla?
Scelto di sviluppare BrewDay come applicazione web, ci si è presentato quindi un altro problema.
Che linguaggi e framework utilizzare?
Prima ancora di scegliere il linguaggio di programmazione abbiamo pensato al tipo di architettura o paradigma che avrebbe fatto al caso nostro per semplicità di mantenibilità e apprendimento. Il nostro sguardo si è subito orientato verso l'architettura Model View Controller, che negli ultimi anni ha visto il successo grazie ai sempre più framework ad essa dedicati.
Anche qui, i framework sono tanti e abbiamo dovuto destreggiarci con una nuova scelta. Ci siamo documentati riguardo le soluzioni commercialmente più utilizzate e sono emerse le seguenti: Angular, React, Java Spring MVC, .NET MVC, Django e Laravel.
Abbiamo subito ristretto le possibilità condizionalmente alle competenze del team e siamo giunti ad uno spareggio fra Spring MVC e .NET MVC, rispettivamente scritti in Java e C#. Documentandoci online abbiamo scoperto che i due sono ad oggi quasi equivalenti, entrambi open source e ampiamente utilizzati.
Il solido background tecnico di uno dei componenti del gruppo ha decretato il prevalere del framework .NET, di modo che questo potesse trasmettere, al meglio delle sue possibilità, le proprie conoscenze ai restanti membri e garantire così un workflow fluido e familiare.