Metodologia Metodologia

Nuove metodologie di progettazione


Negli ultimi vent'anni la complessità dei software è aumentata a dismisura. Progettare un software è diventato un problema sempre più difficile da gestire. Le tradizionali modalità di progettazione hanno iniziato a dimostrarsi inadeguate. Per questo motivo i programmatori hanno iniziato a guardarsi attorno in alcuni casi hanno mutuato metodologie utilizzate in altri campi, come il design o la produzione industriale, in altri casi hanno creato nuovi modi di gestire i percorsi progettuali.
I problemi che si affrontano nello sviluppo software rientrano sempre più spesso in quelli che sono stati definiti Wicked Problems, o in alternativa Problemi Complessi secondo la definizione del Cynefin Framework.
Si tratta di problemi che non possono essere risolti con una serie più o meno lunga di passi definiti fin dall'inizio, ma richiedono adattabilità, flessibilità, capacità di ripartire continuamente incorporando le conoscenze che si acquisiscono lungo la strada.

Sono nate così varie metodologie agili e snelle (agile ande lean).

Ciò che accomuna tutti questi approcci è una maggiore propensione al dialogo, allo scambio di informazioni a tutti i livelli e la tendenza a mettere al centro gli utenti e le loro esigenze. Uno dei maggiori ostacoli riscontrati nello sviluppo di progetti di dimensioni medio grandi è la mancanza di comprensione condivisa. I diversi attori usano spesso linguaggi specialistici differenti e la confusione aumenta quando i non specialisti sono coinvolti nella progettazione. La parola chiave è comprensione condivisa (shared understanding) e per questo sono state sviluppate metodologie atte a favorirla stimolando il dialogo fra tutti i soggetti coinvolti in un progetto.

Metodologie di questo tipo sono state applicate con successo anche al di fuori dell'ambito della progettazione software. Gli strumenti offerti dalla piattaforma CitizensTalk favoriscono l'adozione di processi progettuali condivisi.

Design thinking

Il design thinking, ispirato al modo di lavorare dei designer, può essere visto come un processo iterativo che basa gran parte della sua efficacia sulla prototipazione, la sperimentazione e il feedback.
Ciò che maggiormente lo differenzia dalle metodologie tradizionali è proprio questa attitudine a sperimentare e a tenere conto dei risultati della sperimentazione mantenendo fluida la definizione del progetto stesso, restando pronti a cambiare, sperimentare di nuovo, ideare, fino al raggiungimento di una soluzione soddisfacente.

Nelle sue formulazioni è suddiviso in cinque fasi.

  • Empatia: significa lavorare per comprendere il problema, non dall'esterno, ma da coloro che lo vivono realmente
  • Definizione: è la fase in cui si raccolgono le osservazioni fatte e le si riconduce ad uno schema che illustri il problema dal punto di vista dell'utente
  • Ideazione: è il momento in cui si lascia più libera la mente per immaginare ed esplorare molte soluzioni possibili. Si devono abbandonare i preconcetti e permettersi di elaborare anche le soluzioni più fantasiose.
  • Prototipazione: si trasformano le idee in prototipi, non soluzioni complete, ma abbozzi, purché funzionanti e che possano in qualche modo essere usati.
  • Test: I prototipi vengono provati, si osserva il loro funzionamento, si raccolgono feedback, si impara dai risultati positivi e dagli errori.

 

Dialogue Mapping

Le dialogue maps sono dei diagrammi grafici, simili alle mind maps, utilizzate per tenere traccia ordinata e logica di discussioni. Idee, commenti, pro e contro, dubbi, annotazioni sono tutti connessi e ordinati in uno schema logico.

 

User Story Mapping

Uno dei problemi che sorgono costantemente nello sviluppo di software riguarda la stesura delle specifiche (requirements).
Troppo spesso infatti in questa fase si finisce per creare uno sterile elenco di caratteristiche che non rappresentano le reali necessità degli utenti. Tradizionalmente chi compila l’elenco dei requisiti non è chi si occuperà poi dello sviluppo, motivo per cui viene a mancare una reale comprensione condivisa del significato dei requisiti elencati.
Per ovviare a questo problema si è iniziato ad utilizzare la metodologia dello User Story Mapping.
Si tratta di descrivere con una semplice frase le varie attività che gli utenti, suddivisi per diverse tipologie e ruoli compiranno utilizzando il software. La differenza fra la metodologia tradizionale consiste nel mettere al centro l’utente. Non si elencano più delle specifiche impersonali, ma ci si cala nei panni di utenti reali e delle loro esigenze, intese come azioni da compiere e non come caratteristiche tecniche di un prodotto.


SCRUM

Scrum, significa mischia. È una delle metodologie agili nate all’inizio degli anni ‘90 per fronteggiare la gestione di progetti software sempre più complessi, ma ha delle forti somiglianze con le metodolgie utilizzate da Toyota alla fine degli anni ‘80 nella produzione di autoveicoli.
Si tratta di suddividere le fasi realizzative di un prodotto in blocchi sufficientemente piccoli da poter essere realizzati in tempi ragionevoli (nel caso del software si va da 1 a 4 settimane). Alla fine di ogni periodo, definito Sprint si deve avere fra le mani qualcosa di funzionante e collaudabile. Si utilizzano i feedback che si ottengono nella fase di test per verificare la bontà di quanto realizzato e del progetto in se. Si impara continuamente e si è pronti a cambiare, rivedere, riprogettare, nel caso in cui i risultati dei test ne indichino la necessità.
Altre caratteristiche fondamentali di questa metodologia sono la formazione di team che incorporino competenze trasversali, in grado di completare lo sprint assegnato e la circolazione continua di informazioni sia all’interno del team sia verso l’esterno. In qualsiasi momento ogni membro della squadra dev’essere in grado di vedere cosa è stato fatto, cosa resta da fare ed eventualmente adoperarsi per aiutare con le proprie competenze.


Kanban

Sviluppato in Toyota alla fine degli anni ‘40 ha molte somiglianze con SCRUM ed è stato adottato con successo sia nello sviluppo di software che in molti altri contesti.


Impact Mapping

Le Impact Mapping sono una tecnica di progettazione strategica. Dopo aver stabilito un goal si procede creando una mappa che mostri tutti i vari attori in campo e le loro relazioni.
Si parte dal risultato che si vuole ottenere e che rappresenta la motivazione delle azioni che si intraprenderanno. A questo si collegano gli attori che possono concorrere al raggiungimento dell’obiettivo e quelli che potrebbero ostacolarlo. Si aggiunge quindi un livello che rappresenta il come gli attori in campo possono operare e si prosegue con un ulteriore livello che aggiunge il cosa, le azioni vere e proprie che è necessario intraprendere.