by Suzanne Robertson

Settembre 2010

Semplicità e requisiti

Nell’attuale mondo dello sviluppo dei sistemi si è sempre più interessati a ricercare la massima agilità, a determinare un approccio di tipo lean, snello e flessibile, che consenta di generare valore in modo più veloce. Si continuano a ricercare modelli che permettano di non perdere tempo in cose che non sono necessarie. Ricerchiamo soluzioni semplici, eleganti, che possano adattarsi ed estendersi a un numero sempre più ampio di persone. Nello stesso tempo vogliamo soluzioni che aiutino le persone a svolgere il proprio lavoro con efficienza. In buona sostanza si vuole creare software in funzione del quale gli utenti possano dire “grazie, è davvero utile, semplice, comprensibile e di immediato utilizzo”. Ma per arrivare a una simile condizione, ovvero alla piena soddisfazione dell’utente, al software caratterizzato da un’estrema semplicità, è necessaria un’attenta riflessione e una comprensione completa dei requisiti.

Alla ricerca della semplicità

Quando si espongono i requisiti, in relazione a un cambiamento o a un nuovo prodotto software, ci si sforza di essere il più possibile chiari in modo da evitare fraintendimenti. Il più delle volte si pensa che l’interlocutore condivida la stessa conoscenza del contesto di riferimento. La vostra sfida, in quanto specialisti dei requisiti, è fare in modo che il contenuto del messaggio, fatto di assunzioni, omissioni e conoscenze, porti alla scoperta dei veri bisogni. Dovete essere in grado di definire i requisiti con semplicità in modo che gli stakeholder del progetto ne abbiano una comprensione univoca.
Tuttavia, il percorso verso una semplice soluzione è spesso costellato da complessità e contenuti irrilevanti, una condizione che tende a condurvi nella direzione sbagliata e a introdurre caratteristiche inutili che non favoriscono la semplicità. Grazie all’esperienza acquisita posso affermare che il modo migliore per evitare di avventurarsi in simili percorsi è incoraggiare, sin dal primo momento e in modo continuativo, un’attività di feedback durante l’intero processo di discovery dei requisiti.

Scope, Goals, Stakeholders

All’inizio del progetto è bene esporre la comprensione del problema in modo tale che le persone siano incoraggiate a fornire un loro specifico feedback, evitando che cadano in risposte troppo generali. La tecnica utilizzata si rifà all’approccio definito come Scope, Goals, Stakeholders (SGS). La descrizione di questo approccio, così come di quelli descritti nel prosieguo dell’articolo si trovano all’indirizzo www.volere.co.uk.

Scope: iniziate a disegnare un primo diagramma di massima in relazione alla comprensione del problema e alla portata del progetto. Questo diagramma dovrebbe evidenziare tutti i sistemi adiacenti/complementari al lavoro in oggetto. Possono essere le persone, l’organizzazione, i sistemi software o altre tecnologie che costituiscono l’interfaccia alla vostra area di studio. Il diagramma dovrebbe mostrare le interfacce tra quest’ultima e i sistemi adiacenti.

Goal: Scrivete l’obiettivo del progetto e, nello stesso tempo, il metodo di misurazione che vi permetterà di comprendere se siete riusciti a raggiungerlo. L’obiettivo deve fare riferimento ad alcuni vantaggi e lo strumento di misura deve permetterne la quantificazione.

Stakeholder: Fate una rapida analisi degli stakeholder per identificare le persone che sono fonte di requisiti, il loro ruolo e il livello di conoscenza dei requisiti che vi aspettate possano contribuire a fornire.

A questo punto chiedete agli stakeholder quali cambiamenti vorrebbero rispetto a quanto definito nel vostro SGS. Incoraggiate feedback e interpretazioni differenti. In questa fase state esaminando un problema ed esponendo la complessità per identificare le diversità, i conflitti e le possibili incomprensioni. Rendendo trasparente questo processo sarete in grado di stabilire dove compiere opportune scelte e decisioni evitando così di avventurarvi in una fase di dettaglio che potrebbe produrre contributi irrilevanti e di scarso valore.
Un simile approccio rende inoltre consapevoli gli stakeholder delle diverse opinioni e punti di vista su ciò che effettivamente viene ritenuto importante da ciascuno permettendovi di fare ulteriore chiarezza prima di passare alla fase di sviluppo vera e propria.

Priorità

Fate in modo di raccogliere più feedback possibili declinando il livello di comprensione degli obiettivi e dei problemi in più pezzi che presentino una relazione funzionale. Un numero maggiore di input vi permetterà di individuare quali di questi pezzi consentono di assicurare al progetto il livello più alto in termini di vantaggi e valore generato. Nello studio preliminare dei requisiti potete decidere quali pezzi (funzioni, caratteristiche, componenti) rilasciare per primi. Traslate i singoli pezzi in un processo di sviluppo dettagliato e per ciascuna unità di implementazione fate in modo di ottenere feedback dagli opportuni stakeholder. Mantenete il processo iterativo, incoraggiando i commenti fino al temine dell’implementazione di tutti i requisiti stabiliti dallo Scope.
È inevitabile che, attraverso questa modalità iterativa, le necessità da soddisfare tendano a diventare più complicate. Quando la gente inizierà a comprendere quello che state facendo vi saranno infatti feedback che conterranno nuovi suggerimenti, anche i più vari, che porteranno alla determinazione di nuovi requisiti. A questo punto dovrete essere capaci di assicurare l’assimilazione di tutte le richieste e, nello stesso tempo, dare priorità a quei requisiti che garantiscono, più di altri, l’implementazione di una soluzione semplice ed efficiente dal punto di vista dell’usabilità.

Riduzione ponderata

John Maeda, autore di The Laws of Semplicity afferma che “il modo più semplice per arrivare alla semplicità è una riduzione ponderata”. In altre parole, che è possibile semplificare un prodotto sottraendo e non aggiungendo qualcosa.
Alcuni requisiti si riveleranno ovviamente essenziali al raggiungimento dell’obiettivo del progetto. È ragionevole, per esempio, pensare che un sistema per la gestione dei reclami assicurativi sia in grado di classificare i reclami; che un dispositivo per il controllo remoto di una Tv dia la possibilità di accendere la Tv; che un sistema di registrazione scolastica accetti le richieste di iscrizione di nuovi potenziali studenti. Vi sono, tuttavia, quasi sempre, requisiti che non sono indispensabili e che aggiungono inutile complessità.
Per esempio un sistema per la gestione dei reclami potrebbe prevedere la possibilità da parte dell’utente di inserire l’ora esatta, minuti, secondi, in cui è stato sottoposto il reclamo. Il dispositivo di controllo remoto potrebbe prevedere tasti di accensione differenziati per ciascun membro della famiglia. Il sistema di iscrizione potrebbe essere disponibile anche su Web o cellulare. Per ciascuno di questi sistemi si potrebbero aggiungere una grande quantità di requisiti. Tuttavia, se a una prima impressione si può avere la sensazione di migliorare il prodotto, in quanto più ricco di funzionalità, ci si accorge spesso che ciò che andiamo ad aggiungere non ha che fare con lo scopo o la soluzione che il singolo sistema deve risolvere.
È bene, quindi, applicare la legge di Maeda alla determinazione dei requisiti, stabilendo l’effetto di ciascuno di questi all’interno dell’obiettivo di progetto. Aggiungendo questo requisito il sistema diventa più complesso? Se si aggiunge complessità il vantaggio potenziale è davvero determinante? O il requisito è bene che venga omesso? Considerate la persona a cui è rivolto il sistema: se si omette una certa caratteristica il sistema beneficerà di una maggiore semplicità di utilizzo?
I concetti sin qui esposti possono essere ben sintetizzati con una frase di Antoine de Saint-Exupéry: “La perfezione non si raggiunge quando non vi è più nulla da aggiungere, ma quando non vi è più nulla da togliere”.