|
analisi-disegno.com Homepage | Blog | Per essere avvisati in caso di nuovi documenti | In English
|
|
Lo sviluppo del software: arte, scienza, ingegneria? Una disciplina immatura Lo sviluppo di sistemi software è una disciplina giovane, con poco più di 50 anni di storia alle spalle. Gli sviluppatori hanno seguito percorsi formativi eterogenei, sia come livello che come tipologia di studi, e forse in misura ancora maggiore in termini di tirocinio e di esperienze lavorative. Non esiste alcun consenso sul tipo di formazione necessario per intraprendere la professione. Si sta pensando, un po' in tutto il mondo, a certificazioni che abilitino all'esercizio della professione, ma la diffusione di tali certificazioni non è dietro l'angolo. Lo sviluppo del software è anche unindustria, in cui lavorano milioni di persone in tutto il mondo, che ha un impatto sempre crescente su tutti gli altri settori economici, che sta contribuendo in modo decisivo a trasformare le modalità di produzione, di distribuzione e di comunicazione, e che influenza in modo rilevante la vita di tutti. E, se si guarda alle statistiche, si tratta di un'industria immatura. L'ultima indagine dello Standish Group, del 2002, fornisce questi risultati:
La ricerca di un'identità Gli sviluppatori software hanno difficoltà a spiegare ai non addetti ai lavori in che cosa consista effettivamente il loro mestiere. Ed hanno problemi ad autodefinirsi, cosa che cercano di fare prendendo a prestito da altre discipline più "consolidate" i termini con i quali parlare della propria attività. Ecco un elenco di locuzioni utilizzate frequentemente:
Art & Craft Da un certo punto di vista, lo sviluppo del software è un'arte. Come dicevano i greci, una Téchne. I greci antichi non distinguevano tra arte e tecnica: per loro erano esattamente la stessa cosa. Falegnami, vasai, tintori, pittori, sarti, medici, architetti: tutti artisti / tecnici, nel senso che per fare il loro mestiere era (è) necessaria la padronanza di tecniche specifiche. E la tecnologia, nel significato originario, è il discorso lògos - sulla téchne. Certo, utilizzando una terminologia moderna, più che un artista ("artist"), lo sviluppatore software può essere considerato un artigiano ("craftsman"). E porre in risalto l'aspetto "artigianale" del lavoro evidenzia una caratteristica importante dello sviluppo software, cioè il ruolo decisivo giocato dalle capacità individuali: numerosi studi empirici hanno dimostrato come esistano notevoli differenze tra i singoli sviluppatori in termini di produttività (e di qualità del lavoro), anche a parità di livello di esperienza. Gli studi più cauti parlano di differenze nell'ordine di 10 a 1. Una scienza? Purtroppo no, se intendiamo per scienza le cosiddette "scienze esatte". Di "scientifico", nel settore dello sviluppo software (a differenza dalla computer science) esiste poco, a parte alcune tecniche a base matematica, come ad esempio la normalizzazione dei dati. Se invece utilizziamo una accezione più comprensiva di scienza, che comprenda anche le cosiddette "scienze umane", il discorso cambia. Software Engineering Dal punto di vista dei committenti e dei responsabili di progetto, la visione dello sviluppo software come un'attività artigianale, i cui risultati dipendono fortemente dall'estro e dalle capacità individuali dei singoli progettisti, è preoccupante e spesso intollerabile. Dall'Organizzazione Internazionale per la Standardizzazione (ISO), al Software Engineering Institute (SEI), sponsorizzato dal governo americano e dalle maggiori aziende statunitensi, dai progetti finanziati dalla Comunità Europea all'attività delle diverse associazioni professionali e di categoria, sia internazionali che locali, è in atto da decenni un lavoro enorme di definizione di standard e di strategie per far raggiungere all'industria del software un livello di maturità accettabile. Parlare di ingegneria del software non significa necessariamente negare il ruolo giocato dalle capacità individuali, perseguire un obiettivo di "massificazione" degli sviluppatori software: ci sono stati tentativi in questa direzione, ma sono falliti, come dimostrano gli sforzi delle maggiori società di software mondiale per reclutare i progettisti migliori, a qualunque costo. L'ingegneria del software, piuttosto, affronta le problematiche di tipo manageriale, organizzativo e metodologico, per permettere che il lavoro degli sviluppatori possa essere condotto con la maggiore efficacia, avvalendosi di tecniche e modi di procedere sperimentati in contesti eterogenei, risolvendo i problemi (soprattutto di comunicazione) legati al fatto che lo sviluppo di sistemi software è un'attività intellettuale complessa, e che coinvolge una pluralità di soggetti diversi tra loro. Aspetti sociali e di comunicazione Lo sviluppo di software è un'attività intellettuale complessa, ed è un'attività sociale, nella quale le dinamiche di relazione tra i diversi soggetti giocano un ruolo preponderante. La comunicazione tra committenti (chi commissiona lo sviluppo), altre parti interessate ("stakeholders", tra cui gli utilizzatori) e gruppo di progetto. E' ovviamente decisiva per il successo di un progetto, ed ha aspetti di natura negoziale e contrattuale, ma non solo:
Anche la comunicazione interna al gruppo di progetto gioca un ruolo fondamentale. Salvo i casi più elementari (un solo sviluppatore), comporta il coordinamento delle attività di diverse persone, che in molti casi rivestono ruoli diversi. In alcune situazioni, allo stesso gruppo di progetto prendono parte persone appartenenti a settori diversi della medesima organizzazione. In altre, i partecipanti al progetto sono persone appartenenti ad organizzazioni diverse, che cooperano su basi definite tipicamente a livello contrattuale. La divisione del lavoro interna al progetto (i ruoli e le appartenenze, ed il loro attuarsi nell'ambito di uno specifico processo di sviluppo), e la stessa organizzazione "fisica" del lavoro (il fatto che tutti i partecipanti al progetto operino nel medesimo luogo, oppure in luoghi diversi) sono fattori che possono influenzare in modo generale il successo del progetto stesso, ed in particolare i livelli di produttività e qualità. Torna a pagina introduttiva processo |
| analisi-disegno.com, servizi e materiali per lo sviluppo dei sistemi software, a cura di Adriano Comai. |