Ercole Colonese

L’ESPERIENZA AL VOSTRO SERVIZIO!

Consulenza informatica ed organizzativa

 

 

home

sviluppo software

consulenza

didattica

chi sono

 info

 

Sviluppare software oggi …

Stonehenge

 

In questa pagina:

 

La metodologia proposta

Un possibile approccio, un'esperienza valida

Sintesi della metodologia di sviluppo sperimentata

Competenze delle persone

Processi maturi

Metodi, tecniche, strumenti e metriche a supporto

Guida all'adozione della metodologia in azienda

Guida all'utilizzo degli strumenti

 

La metodologia proposta

 

Lo sviluppo del software, come si è detto, è un'attività creativa ad alto contenuto umano e quindi soggetta ad errori.

Comprendere le reali necessità dell'utenza, individuare i limiti ed i vincoli, tradurre tutto ciò in un software applicativamente "unico", tecnologicamente "complesso", facilmente "usabile", di elevate "prestazioni", "robusto", "evolvibile nel tempo" ed "esente da errori" ... è un'impresa non facile.

Un lavoro sempre uguale ed ogni volta diverso. Ogni software è infatti unico, diverso da tutti quelli realizzati prima, anche da noi stessi. Unico, diverso anche quando implementiamo funzionalità già esistenti sul mercato, ne ricalchiamo l'architettura o adoperiamo le stesse tecnologie. Una sfida vera e propria che richiede competenza, esperienza, creatività e ... disciplina.

E per rendere la sfida ancora più eccitante viene richiesto di realizzare il progetto in tempi sempre più brevi ed a costi sempre più competitivi.

Non c'è da meravigliarsi, quindi, se risulti così difficile sviluppare software, se molti progetti sono in difficoltà e se i prodotti realizzati contengono tanti difetti?

La presenza di errori nel software causa malfunzionamenti che dovranno essere corretti; e questo ha un costo. Il costo degli interventi sul software dipende dalla sua complessità e dal momento in cui gli errori sono rilevati: più complesso è il codice e più costoso sarà modificarlo, più tardi sono scoperti gli errori e più costoso risulterà risolverli! Ma il codice è regolarmente modificato anche dopo il suo rilascio in esercizio per potenziarne le funzionalità, per adeguarlo a normative o standard, per migliorarne le performance o per altri motivi ancora.

Come affrontare allora la problematica in modo strutturato, ingegneristico, ... industriale?

Un valido aiuto ci è dato dall'Ingegneria del software, la disciplina che studia le problematiche relative a tale attività e fornisce soluzioni per affrontarle in modo sistematico. I metodi e le tecniche proposti negli anni e contraddistinti dalla qualità dei risultati ottenuti costituiscono un patrimonio di grande valore e disponibili come "best practice".

Un possibile approccio, un'esperienza valida 

L'approccio suggerito in queste pagine è quello sperimentato con successo in un progetto che ha coinvolto un grande numero di piccole e medie imprese informatiche italiane (siciliane) con l'obiettivo di migliorare i propri processi produttivi e gestionali ed aumentare la capacità di competere sul mercato.

Gli elementi utilizzati - processi maturi, competenze delle persone ed utilizzo di metodi, tecniche e strumenti - non sono una novità. E' invece originale, ed il successo raggiunto dal progetto lo conferma, l'approccio con cui i temi sono stati trattati ed inseriti nell'ambiente lavorativo quotidiano.

Si tratta quindi di un approccio metodologico completo composto da:

  • definizione di una metodologia di sviluppo del software basata sui tre elementi principali: processi, competenze, metodi e tecniche;

  • guida all'introduzione della metodologia in azienda;

  • guida all'utilizzo degli strumenti più opportuni.

Il tutto supportato da un robusto programma di formazione alle direzioni, responsabili di condurre il cambiamento culturale nelle proprie organizzazioni, e dalla presenza di un team di consulenti qualificati - con competenza ed esperienza specifica in programmi di trasformazione - che hanno agito da veri "facilitatori" del cambiamento.

Una delle chiavi del successo, non tanto nella definizione quanto nell'applicazione pratica del programma, è stato quello di trovare il giusto equilibrio fra i tre elementi chiave: processi, competenze, metodi e tecniche.

Tradizionalmente, infatti, ci si è sempre preoccupati di migliorare i processi - anche in ottica di certificazione - trascurando forse l'elemento umano (competenze), quello metodologico (metodi e tecniche) e quello strumentale (tool).

Sintesi della metodologia di sviluppo adoperata

La metodologia adoperata risulta semplice ed efficace, completa e rigorosa, facilmente adottabile da ogni organizzazione di sviluppo software. Sperimentata con successo da molte piccole e medie imprese di software, la metodologia adotta il modello CMMI, è aderente alle norme ISO9001:2000 e utilizza le migliori pratiche disponibili ("best practice").

La metodologia di sviluppo definita poggia su tre pilastri:

  1. competenze delle persone;

  2. processi maturi per lo sviluppo software;

  3. metodi, tecniche, strumenti e metriche a supporto.

Così come un buon piatto dipende dalla bravura del cuoco, dall'originalità della ricetto e dalla genuinità degli ingredienti, così un software di qualità dipende dalle competenze di chi lo sviluppa, dalla maturità del processo seguito e dall'adeguatezza degli strumenti adoperati.

Potremmo dire, quindi, "Buon appetito!" prima di presentare gli elementi della metodologia proposta.

Competenze delle persone

Le competenze si acquisiscono con un giusto mix di formazione teorica ed esperienza pratica sul campo. Ma la formazione è spesso trascurata restringendola solo ai temi tecnologici - linguaggi, piattaforme, sotto-sistemi ecc. - e indirizzando poco o niente i metodi e le tecniche.

Diversamente da quanto stabilito per altre professioni, per il software non sono definite regole e comportamenti. Ancora oggi non è riconosciuta legalmente la professione di Ingegnere del software: quindi non sono definite competenze e comportamenti, diritti e doveri. Negli USA sono nate iniziative con lo scopo di definire la professione e creare un albo. Alla professione sono richieste competenze specifiche, ruoli comportamentali ed etici e riconoscimenti legali.

Alla professione di Ingegnere del software è richiesta una competenze di base su temi specifici, identificati come "Software Engineering Body of Knowledge" (SWEBOK), da acquisire presso università o scuole di specializzazione.

Processi maturi

Il processo è l'elemento cui si è dato tradizionalmente forse maggiore importanza.

Le norme ISO 9000 affrontano l'argomento fornendo definizioni, proponendo modelli, stabilendo requisiti. La ISO 12207 , in particolare, è una famiglia di norme che definisce gli elementi basilari dei processi software e fornisce una guida al ciclo di vita del software. I processi sono raggruppati in tre categorie: processi "primari", a "supporto" ed "organizzativi". Quindi abbiamo tutto ciò che ci serve.

Il modello CMMI® (Capability Maturity Model®, Integration), messo a punto dal SEI® (Software Engineering Institute), fornisce un modello per il miglioramento continuo delle prestazioni aziendali basandosi sul livello crescente di maturità dei singoli processi di sviluppo. Il grado di maturità dei processi è definito su di una scala a cinque livelli. A livello più basso (livello di maturità 1) l'organizzazione ha processi poco strutturati ed il successo è basato sulle capacità dei singoli, definiti perciò "eroi". A livello più alto (livello di maturità 5) l'organizzazione entra in un circolo virtuoso di miglioramento continuo misurando le prestazioni dei propri processi e migliorandolo di continuo.

A ciascun livello di maturità sono associate aree di competenza e relativi processi (KPA - Key Process Area).

Ma adoperare un processo maturo non basta per sviluppare software di qualità. La competenza delle persone coinvolte nelle diverse attività è fondamentale: sviluppare software, si è detto, è un'attività creativa ad “alto contenuto umano”.

Occorre quindi che i processi siano "tagliati" su misura sulle caratteristiche dell'organizzazione, come un abito su misura! Prendere il meglio di ciò che la letteratura propone e poi adattarla alle nostre esigenze. E' questo l'approccio seguito nel nostro caso.

Metodi, tecniche, strumenti e metriche a supporto

Ai due elementi menzionati sopra - competenza delle persone e processi maturi - occorre ora aggiungere il terzo elemento, anch'esso fondamentale per lo sviluppo del software: l'utilizzo di adeguati metodi, tecniche, strumenti e metriche!

Guida all'adozione della metodologia in azienda

Si è detto che l'originalità della metodologia risiede principalmente nell'approccio seguito: definire processi in linea con le migliori pratiche disponibili e adattarle alle nostre esigenze specifiche. In realtà, anche questo concetto non è originale. Il modello CMMI richiede infatti che per salire di livello di maturità un'organizzazione debba definire processi validi per l'intera organizzazione (istituzionalizzazione), definendo al contempo le regole per poterli adoperare nei singoli progetti secondo le esigenze specifiche.

I processi sono quindi già confezionati per poter essere poi adottati dalle singole organizzazioni nei diversi progetti software.

Occorre anche che la Direzione si faccia promotrice del cambiamento culturale richiesto all'organizzazione. L'operazione richiede impegno e risorse, leadership e motivazione, coinvolgimento e guida, applicazione e controllo, valutazione dei progressi e azioni correttive. Non facile!

In particolare, si è realizzata una guida che aiutasse l'organizzazione ad affrontare la sfida, anche nei momenti in cui non fosse disponibile la presenza dei consulenti.

Gli elementi principali del piano realizzato sono:

  • definizione della politica aziendale,

  • definizione dei ruoli e delle responsabilità,

  • valutazione delle competenze e del gap esistente,

  • pianificazione della formazione,

  • adozione della metodologia in un gruppo pilota con il supporto dei consulenti,

  • valutazione dei risultati della sperimentazione,

  • intervento con eventuali azioni correttive e diffusione della metodologia a tutta l'organizzazione,

  • controllo periodico dei risultati e continua attenzione a mantenere alto il coinvolgimento dell'intera organizzazione ed clima motivazionale.

Guida all'utilizzo degli strumenti

L'adozione di strumenti automatici in un'organizzazione software non è mai semplice né economico. Gli strumenti sono spesso costosi e richiedono un notevole impegno di risorse umane ed economiche per l'addestramento, l'installazione e l'utilizzo nei progetti.

L'impatto economico dovuto all'acquisto degli strumenti può essere in parte ridotto scegliendo tool disponibili sulla Rete. L'impegno relativo alla formazione, installazione, gestione ed utilizzo degli stessi non è al contrario evitabile. Si può invece ridurre tale onere con una scelta accurata degli strumenti riducendone il numero a quelli assolutamente necessari e favorendo la scelta di quelli che presentino maggiore facilità d'uso, migliore performance e maggiore integrazione.

Occorre quindi una guida alla scelta dei tool, alla pianificazione degli acquisti, alla definizione dei requisiti formativi, alla pianificazione dell'installazione e della gestione, alla valutazione dell'impatto sulle attività di sviluppo.

Sviluppare software oggi ...

Il contesto

Norme e modelli

Professioni e certificazioni

Metodologia di sviluppo software

Competenze delle persone

Processi maturi

Metodi, tecniche, metriche e strumenti

10 best practice del software

 

 

 

 

Link esterni utili:

SEI® - Software Engineering Institute

 

Documentazione disponibile:

Ruolo del facilitatore nei progetti di trasformazione

 

Copyright © 2005-2007 - Ultimo aggiornamento: 31 luglio 2007