Lo sviluppo di nuovi software rap­pre­sen­ta una grande sfida per tutti i soggetti coinvolti. Più è complessa l'ap­pli­ca­zio­ne da svi­lup­pa­re, più è difficile rendere chiaro e con­trol­la­bi­le il processo di sviluppo nella sua com­ples­si­tà. Per questo, di solito ci si affida a speciali piani passo per passo, noti anche come modelli pro­ce­du­ra­li. Essi sud­di­vi­do­no l'intero processo di sviluppo in diverse fasi chiare, che sono limitate nel tempo e nel contenuto. Uno dei modelli più noti, concepito so­prat­tut­to per ridurre i rischi, è il co­sid­det­to modello a spirale del 1986.

Che cos'è il modello a spirale?

Dopo aver esposto per la prima volta il suo concetto per lo sviluppo di ap­pli­ca­zio­ni complesse nel 1986, nel 1988 l'in­ge­gne­re di software americano Barry W. Boehm con il libro A Spiral Model of Software De­ve­lo­p­ment and En­han­ce­ment pubblicò il suo modello col­lo­can­do­lo in un contesto più ampio. Nella pub­bli­ca­zio­ne descrive il modello a spirale come una possibile al­ter­na­ti­va al modello a cascata affermato fino a quel momento e che è servito anche come base di espe­rien­za. Di­ver­sa­men­te da quanto avviene nel modello a cascata, il modello a spirale non pre­sup­po­ne che le ope­ra­zio­ni per lo sviluppo di software siano lineari, ma le intende come ope­ra­zio­ni iterative. Nel modello a spirale, quindi, le fasi non vengono eseguite passo dopo passo, ma più volte, a spirale, appunto. Sebbene con questa ri­pe­ti­zio­ne ciclica il progetto sia re­la­ti­va­men­te lento ad av­vi­ci­nar­si agli obiettivi fissati, i controlli regolari riducono al minimo il rischio di fal­li­men­to del processo di sviluppo.

De­fi­ni­zio­ne

Modello a spirale: il modello a spirale è un modello pro­ce­du­ra­le per lo sviluppo di software concepito da Barry W. Boehm nel 1986. Esso pre­sup­po­ne che lo sviluppo di ap­pli­ca­zio­ni sia un ciclo iterativo che viene ripetuto fino al rag­giun­gi­men­to del­l'o­biet­ti­vo pre­fis­sa­to. Valutando re­go­lar­men­te i rischi e ispe­zio­nan­do pe­rio­di­ca­men­te il prodotto in­ter­me­dio, il modello a spirale riduce al minimo il rischio di fal­li­men­to dei grandi progetti software.

Spie­ga­zio­ne del modello a spirale: come funziona il modello a spirale?

I problemi nel processo di sviluppo possono avere effetti molto diversi sul progetto com­ples­si­vo. Bisogna sempre fare i conti con costi che crescono, impegno maggiore del previsto e ritardi nella release: fattori che possono presto tra­sfor­mar­si in un problema di so­sten­ta­men­to, so­prat­tut­to per le piccole imprese. Con il suo approccio in­cre­men­ta­le e iterativo, che include anche la va­lu­ta­zio­ne periodica dei rischi sotto forma di bozze di prototipi, analisi o si­mu­la­zio­ni, il modello a spirale dovrebbe prevenire tali scenari o almeno mitigarne le con­se­guen­ze negative. Fino allo stato finale, il progetto di software viene sot­to­po­sto con­ti­nua­men­te al ciclo del modello a spirale, che comprende so­stan­zial­men­te i seguenti quattro passaggi:

Fase 1: De­fi­ni­zio­ne di obiettivi e al­ter­na­ti­ve, nonché de­scri­zio­ne delle con­di­zio­ni

Un ciclo tipico nel modello a spirale inizia con la va­lu­ta­zio­ne di quali obiettivi devono essere associati ai singoli passaggi dello sviluppo del software. Può trattarsi, ad esempio, del mi­glio­ra­men­to delle pre­sta­zio­ni o dello sviluppo di fun­zio­na­li­tà. Allo stesso tempo, è im­por­tan­te definire al­ter­na­ti­ve per l'im­ple­men­ta­zio­ne (ad esempio progetto A vs progetto B) e de­ter­mi­na­re le con­di­zio­ni generali, i costi o il dispendio in termini di tempo.

Fase 2: Va­lu­ta­zio­ne delle al­ter­na­ti­ve

Il passaggio suc­ces­si­vo consiste nella va­lu­ta­zio­ne delle al­ter­na­ti­ve: in questa fase la de­fi­ni­zio­ne degli obiettivi e le con­di­zio­ni fungono da punti di ri­fe­ri­men­to cruciali. In questa fase del ciclo del modello a spirale, vengono iden­ti­fi­ca­ti i dubbi che rap­pre­sen­ta­no un rischio si­gni­fi­ca­ti­vo per l'a­van­za­men­to del progetto di software. Si passa quindi allo sviluppo della strategia più a basso rischio e più economica, uti­liz­zan­do metodi come pro­to­ti­pa­zio­ne, si­mu­la­zio­ni, test di ri­fe­ri­men­to, modelli di analisi e sondaggi tra gli utenti.

Fase 3: Sviluppo e controllo dello stato in­ter­me­dio

Dopo l'analisi dei rischi, si prosegue con l'ef­fet­ti­vo sviluppo del software, sebbene questa fase sia sempre ca­rat­te­riz­za­ta dai relativi rischi residui. Se, ad esempio, i rischi relativi alle pre­sta­zio­ni o al­l'in­ter­fac­cia utente o al controllo del­l'in­ter­fac­cia interna hanno un peso molto im­por­tan­te sul processo di sviluppo, l'opzione da pre­di­li­ge­re è una strategia di sviluppo evolutiva che spe­ci­fi­chi il progetto in modo più preciso e ottimizzi i prototipi. Il codice effettivo viene scritto e testato più volte fino a rag­giun­ge­re il risultato de­si­de­ra­to, che serve quindi come base a basso rischio per le ulteriori fasi di sviluppo.

Fase 4: Pia­ni­fi­ca­zio­ne del ciclo suc­ces­si­vo

Concluso un ciclo, inizia già la pia­ni­fi­ca­zio­ne del ciclo suc­ces­si­vo. Da un lato, se l'obiettivo di un ciclo è stato raggiunto, può trattarsi della normale con­ti­nua­zio­ne del progetto con il passaggio al­l'o­biet­ti­vo suc­ces­si­vo. Dal­l'al­tro, se il pre­ce­den­te passaggio di sviluppo fosse risultato difettoso, può anche trattarsi della ricerca di soluzioni. Così, ad esempio, la strategia pre­ce­den­te può essere so­sti­tui­ta da una delle al­ter­na­ti­ve definite pre­ce­den­te­men­te o da una nuova al­ter­na­ti­va. A questo punto è quindi possibile fare un nuovo tentativo per rag­giun­ge­re l'o­biet­ti­vo spe­ci­fi­ca­to.

Nota

Il modello a spirale (sviluppo di software) è un modello pro­ce­du­ra­le generico. Le quattro fasi for­ni­sco­no sem­pli­ce­men­te gli obiettivi di base di un ciclo, ma non devono ri­flet­ter­si in ogni ite­ra­zio­ne dello stesso. Il loro ordine non è so­stan­zial­men­te dettato in modo rigido dal modello a spirale. Per questo, è sempre possibile la com­bi­na­zio­ne con altri metodi pro­ce­du­ra­li.

Rap­pre­sen­ta­zio­ne grafica del modello a spirale secondo Boehm

La pub­bli­ca­zio­ne del 1988 proponeva, tra le altre cose, una rap­pre­sen­ta­zio­ne grafica del modello a spirale che esem­pli­fi­ca come si presenta il processo a spirale dello sviluppo di software, basato su cicli. In questo schizzo, ogni curva della spirale incarna un ciclo chiuso, con un ordine che passa sempre at­tra­ver­so quattro diversi quadranti, che in questo caso rap­pre­sen­ta­no le quattro possibili fasi del modello. Al­l'au­men­ta­re della di­men­sio­ne della spirale, aumentano anche i progressi fatti e l'ap­pro­va­zio­ne mediante controllo (asse X) e costi di sviluppo (asse Y).

Vantaggi e svantaggi del modello a spirale per lo sviluppo di software

Lo sviluppo di software basato sul modello a spirale è par­ti­co­lar­men­te ap­prez­za­to per progetti grandi e complessi, in cui il controllo del budget per clienti e svi­lup­pa­to­ri ha una priorità par­ti­co­lar­men­te elevata. In questo caso, tutti i par­te­ci­pan­ti be­ne­fi­cia­no del ruolo centrale del­l'a­na­li­si dei rischi, che è pro­ba­bil­men­te il più grande vantaggio del modello a spirale rispetto ad altri modelli pro­ce­du­ra­li. La va­lu­ta­zio­ne regolare dei rischi paga, in par­ti­co­la­re, quando vengono uti­liz­za­ti nuovi ambienti tecnici, che so­li­ta­men­te implicano un par­ti­co­la­re po­ten­zia­le di rischio per via della mancanza di valori empirici.

Anche la struttura ciclica è uno dei maggiori punti di forza del modello: i conflitti tra il progetto e i requisiti tecnici che il software deve sod­di­sfa­re sono pra­ti­ca­men­te eliminati grazie ai controlli regolari. Inoltre, i progressi a spirale con­sen­to­no di rac­co­glie­re e valutare co­stan­te­men­te i feedback. In questo modo, sia il com­mit­ten­te che gli utenti possono essere coinvolti nel processo di sviluppo fin dal­l'i­ni­zio. Il pre­sup­po­sto per poter godere di questi benefici è, tuttavia, una gestione molto attiva e laboriosa del progetto, in cui i singoli cicli sono co­stan­te­men­te e at­ten­ta­men­te con­trol­la­ti e do­cu­men­ta­ti.

Tuttavia, che i tanti piccoli passaggi dello sviluppo del software secondo il modello a spirale non siano sempre van­tag­gio­si è di­mo­stra­to dal fatto che non di rado, no­no­stan­te i test, nel sistema pro­dut­ti­vo si in­se­ri­sca­no parti di programma non finite. Di con­se­guen­za, sussiste sempre il pericolo che eventuali errori o lacune con­cet­tua­li finiscano anche nel prodotto finale. Inoltre, possono sempre ve­ri­fi­car­si ritardi nello sviluppo se, al­l'in­ter­no di un ciclo o durante la pia­ni­fi­ca­zio­ne del ciclo suc­ces­si­vo, devono essere prese decisioni im­por­tan­ti in merito a come procedere.

Di seguito vi mostriamo in una tabella i vantaggi e gli svantaggi del modello a spirale:

Vantaggi Svantaggi
modello generico, fles­si­bi­le gestione elaborata
pos­si­bi­li­tà di coin­vol­gi­men­to tem­pe­sti­vo di clienti e utenti le decisioni ripetute possono ritardare il processo di sviluppo
controllo periodico mirato dei rischi Per via della sud­di­vi­sio­ne del processo di sviluppo, errori e in­con­gruen­ze con­cet­tua­li possono fa­cil­men­te finire nel prodotto finale
perfetto coor­di­na­men­to tra requisiti tecnici e progetto Know-how nel­l'a­na­li­si e nella gestione dei rischi es­sen­zia­le, ma spesso mancante
massimo controllo su costi, risorse e qualità del progetto di software inadatto per progetti più piccoli con rischio gestibile
molto indicato per nuovi ambienti tecnici  
Vai al menu prin­ci­pa­le