Software, applicazioni e progetti web sono il risultato di un’attività tecnica che oggi è diventata essenziale per la gestione del business.
Noi abbiamo intrapreso ormai da anni la strada di tecniche e metodologie che riescono a dare un valore aggiunto ai nostri clienti e alla nostra fase di produzione.
Il nostro processo di sviluppo, infatti, ha solide basi costituite dallo sviluppo Agile che – come stabilito nel Manifesto per lo Sviluppo Agile – si fonda su precisi princìpi incentrati sulla collaborazione con il cliente, sul buon funzionamento del software – sviluppato in maniera iterativa e incrementale – e su una risposta rapida e flessibile al cambiamento.
La metodologia Agile è costituita da diverse pratiche, ognuna delle quali ha un suo preciso scopo e porta vantaggi non indifferenti durante la fase di produzione.
Ad esempio, in un progetto realizzato negli ultimi mesi abbiamo sfruttato pratiche Agili come User Stories, Kanban Board e Iteration Meeting accostandole a Continuous delivering, Software Versioning, Test Driven Development e ad altre tecniche di progettazione come il Wireframing.
Ecco alcune delle pratiche e delle tecniche utilizzate nel nostro progetto.
Continous Delivering e User Stories
Durante le fasi di sviluppo, suddividiamo il progetto in differenti releases in maniera da rilasciare gradualmente e in maniera continuativa le funzionalità dei portali che sviluppiamo. Ad ogni iterazione individuiamo e priorizziamo le attività che forniscono valore immediato al progetto sotto forma di user stories.
Una user story descrive in maniera non dettagliata una funzionalità che un software deve possedere e che fornisce valore al prodotto finale.
Kanban Board
Ordiniamo le user stories con Trello, un tool online che consente di organizzare i progetti attraverso una Kanban board. Suddiviamo la board in tante colonne quante il progetto ne richede. Ad esempio, la suddivisione del lavoro dell’ultimo progetto prevedeva:
- Requested Layout: le storie per cui ancora non è presente un template grafico
- Doing Layout: le storie per cui si sta lavorando allo sviluppo frontend.
- QA Layout: le storie frontend concluse che necessitano approvazione da parte del cliente.
- Requested Dev: le storie in attesa di essere integrate all’interno del CMS.
- Doing Dev: le storie per cui si sta lavorando allo sviluppo backend.
- QA Dev: le storie sviluppate e completate in attesa di approvazione del cliente.
- Accepted: le storie approvate dal cliente.
Iteration Meeting
In genere decidiamo di effettuare incontri settimanali con il cliente in cui decidere le user stories su cui lavorare e, al termine delle quali, eseguire gli acceptance test. Nello specifico, al termine di ogni iterazione, il cliente ha accesso all’area di staging in cui riprodurre gli scenari e testare le funzionalità sviluppate.
TDD (Test Driven Development)
Realizziamo i progetti seguendo i principi del Test Driven Development (TDD). Creiamo una suite che fornisce test funzionali per ogni singola user story. Questo approccio consente di testare le funzionalità appena sviluppate e di integrarne di nuove senza compromettere il funzionamento del progetto. Per la suite di test dell’ultimo progetto ci siamo avvalsi di strumenti come PHPUnit, Selenium e la classe WebTestCase inclusa nei componenti di Symfony2.
Software Versioning
Tutto il codice prodotto all’interno del progetto è sotto controllo di versione. Questo consente a più figure – anche distanti geograficamente – di collaborare accedendo alle medesime risorse disponibili. Un altro vantaggio offerto dal controllo di versione è la possibilità di ripristinare uno stato precedente del progetto senza il rischio di perdere il codice realizzato.
Nell’ultimo progetto abbiamo utilizzato Git come strumento di software versioning, sfruttando come repository privato remoto GitHub.
Wireframing
Per agevolare il flusso di sviluppo dei layout e dei templates delle varie parti dei portali, utilizziamo uno dei principi fondamentali della User Experience: il wireframing.
Il wireframing – pur non essendo una pratica Agile – è una tecnica grafica che utilizziamo nei nostri progetti e con cui si disegna lo schema del layout – griglia, elementi, campi e spazi – in forma di bozza schizzata. Il minimalismo della forma ci permette di confrontarci con il cliente valutando solo la prioritizzazione dei contenuti di ogni pagina – posizione oggetti e organizzazione elementi – rimandando il visual – colori, tipografia e immagini – ad una seconda fase.
Partendo dall’organizzazione dei contenuti e delle relative correlazioni, abbiamo realizzato i mockups usando dei wireframe per individuare possibili layout da proporre al cliente. Questo ci ha permesso di non incidere particolarmente sui costi di lavoro come se avessimo prodotto fin da subito i visual definitivi.