Ercole Colonese

Consulenza di direzione e servizi IT

Home |  Sviluppo software | Gestione servizi IT | Gestione progetti | Test e collaudi | Competenze relazionali | Servizi | Pubblicazioni | Chi sono | Info

Breve storia dell'Ingegneria del software

Sito Web

Home > Sviluppo software

Contesto italiano attuale

Metodologia proposta

Competenze professionali

SWEBOK

Processi maturi

Processo di sviluppo

Processo di gestione

Metodi e tecniche

Metriche

Strumenti

Modelli di maturità

Norme e standard

Best Practice proposte

Formazione

> Breve storia dell'Ingegneria del software

 

L'inizio ufficiale

L'ingegneria del software nasce ufficialmente nel 1968 in occasione della conferenza NATO tenutasi a Garmisch, in Germania. La conferenza registra la partecipazione di numerosi studiosi convenuti a discutere quella che è definita la "crisi del software".

Molti grandi progetti software realizzati in quegli anni per risolvere importanti e complesse problematiche scientifiche e applicative falliscono miseramente non riuscendo a sviluppare software affidabile e rispondente ai requisiti. Inoltre, i tempi di consegna non sono mai rispettati e i costi aumentano a dismisura.

La problematica, conosciuta come "crisi del software", affonda le sue radici nell'inesistenza di una pratica ingegneristica consolidata, con basi scientifiche e metodologicamente definite.

Si decide allora di avviare una fase di studio e ricerca per creare i fondamenti di una scienza ingegneristica, battezzata "Software Engineering".

L'anno successivo (1969), una seconda conferenza NATO si tiene a Roma, presso l' American Hotel.

Gli anni pioneristici: 1950 - 1965

In questi anni il software è sviluppato principalmente per singoli clienti; è di tipo batch e deve risolvere problemi spesso molto complessi.

Gli informatici sono pochi e provenienti da altre discipline ingegneristiche o scientifiche.

Le competenze informatiche si riducono alla conoscenza dei linguaggi di programmazione (linguaggio macchina). Le metodologie di sviluppo sono totalmente assenti e le competenze acquisite sul campo.

I progetti vedono il coinvolgimento di pochi programmatori (spesso uno solo) che sviluppano il codice senza produrre alcuna documentazione.

Lo sviluppo del software si riduce dunque alla mera programmazione. Le uniche discipline applicate sono quelle degli algoritmi, delle strutture dati e dei linguaggi di programmazione.  

Due anni importanti: 1968 - 1969

Le date corrispondono alle due Conferenze NATO tenutesi, come già detto, a Garmisch e a Roma (vedi NATO Conference 1968 e NATO Conference 1969).

La nascita ufficiale dell'Ingegneria del software avvia importanti studi e attività di ricerca nel campo delle metodologie, dei metodi e delle tecniche per il software. Si definisce una nuova disciplina su base teorica e scientifica portando l'Ingegneria del software alla stregua degli  altri rami ingegneristici.

La ricerca si sviluppa fondamentalmente su tre direttrici: una linea di ricerca approfondisce i temi legati agli aspetti organizzativi del software definendo ruoli, responsabilità e competenze della professione; un'altra linea si concentra sulle metodologie software (cicli di vita, processi, metodi, tecniche, metriche ecc.); la terza linea si concentrata sulle tecnologie (sistemi operativi, sistemi gestionali, linguaggi di programmazione ecc.).

Il periodo che segue la nascita dell'Ingegneria del software è forse tra i più ricchi di personaggi: ci sono tutti quelli che hanno fatto la storia della disciplina. Gli articoli e i libri pubblicati in questi anni costituiscono le basi della disciplina e sono ancora attuali. Per citarne solo alcuni fra i più importanti:

Gli anni della maturità: 1970 - 1990

In questo periodo si assiste allo sviluppo di software per più utenti/clienti. Le funzioni batch sono affiancate da transazioni on-line e da funzioni real-time. Nascono i "pacchetti software" che offrono soluzioni preconfezionate rivolte a più utenti con la stessa necessità.

I problemi non mancano nemmeno adesso: quello della "manutenzione del software" è il problema più importante!

La diffusione del software aumenta in tutti i settori. Le esigenze degli utenti crescono con il crescere dell'utilizzo del software. Le metodologie definite dall'Ingegneria del software non si diffondono con la giusta attenzione. I metodi e le tecniche sono spesso ignorate. Le competenze si limitano alle tecnologie e il software prodotto necessita sempre più di manutenzione: spesso un affare per molti produttori di software.

Il test e collaudo richiede grandi energie, materiali ed economiche, e la qualità del software non sempre risulta adeguata alle necessità.

L'introduzione di nuove tecnologie (sistemi distribuiti, nuovi sistemi per la gestione dei dati, linguaggi di programmazione evoluti ecc.) e la riduzione dei costi dell'hardware spingono verso una diffusione sempre maggiore del software applicativo.

Si effettuano analisi sulla difettosità del software e si definisce una "teoria della propagazione degli errori nel software".

Con la programmazione ad oggetti (Object-Oriented) nasce l'innovazione che porterà, forse, ai maggiori cambiamenti nel modo di produrre software.  

Importanti sviluppi si hanno anche nella progettazione grafica delle interfacce utente (Graphical User Interface, GUI). L'usabilità del software si evolve anche grazie ai risultati delle ricerche di una disciplina collaterale all'Informatica, l'interazione uomo-macchina (Human-Computer Interaction, HCI).

1990 - oggi  

L'impulso maggiore all'evoluzione dell'Ingegneria del software è fornito, senza dubbio, dallo sviluppo delle tecnologie della Rete. Internet è, a tutti gli effetti, una della maggiori rivoluzioni tecnologiche e culturali del nuovo millennio.

Il crollo dei costi dell'hardware, la grande competitività tra le aziende software e l'uso del Web inducono l'Ingegneria del software a ridefinire i suoi principi: tecnologie, metodologie e culture.

Internet e Open source rappresentano due pilastri imprescindibili che costringono tutti i produttori a ridefinire le proprie strategie. E lo sviluppo del software non può esimersi dall'adeguarsi a tali nuovi paradigmi.

Tra le "nuove" metodologie di sviluppo software spiccano quelle Agili (vedi Manifesto). La loro diffusione è sempre maggiore e spinge modelli divenuti standard di mercato ad uniformarsi a loro (es.: CMMI, PMBOK, TenStep, ecc.). Tra queste, la metodologia SCRUM registra un interesse maggiore.  

Che cosa c'insegna tutto questo?

Attualmente (come pure negli ultimi decenni) possiamo dedurre che delle tre linee di ricerca (Organizzazione, Metodologie e Tecnologie) solo la terza è conosciuta in dettaglio dagli sviluppatori software.

La conoscenza dei linguaggi di programmazione, dei sistemi operativi e di quelli di gestione è tuttora considerata la sola necessaria e sufficiente competenza richiesta per sviluppare software (sarebbe più corretto dire "programmare/produrre codice").

"Sviluppare software" è ben più complesso e richiede anche competenze metodologiche relative all'ingegnerizzazione dei requisiti, alla progettazione del software, al test e collaudo e alle discipline laterali.

SWEBOK rappresenta una guida ufficiale allo sviluppo delle conoscenze e competenze dell'Ingegneria del software.

Possiamo concludere, forse, che la "crisi del software" non è stata mai superata?

Come ebbe a scrivere Tom DeMarco nel 2009, "L'Ingegneria del software è forse un'idea il cui tempo è venuto e passato?"

News/Articoli/Libri

NATO Conference 1968

NATO Conference 1969

The Programmer as Navigator

Performance Modeling by Peter Denning

No Silver Bullets--Essence and Accidents of Software Engineering

The Mythical Man-Month

The Entity-Relationship Model--Toward a Unified View of Data

EWD340--The Humble Programmer

IEWD215--Go To Statement Considered Harmful

Peopleware: Productive Projects and Teams

Structured Analysis and System Application

Software Engineering: An Idea Whose Time Has Come and Gone?

On the Criteria to Be Used in Decompositing System into Modules

Intervista a David Parnas

Principles of Program Design

A System Development Method

 

Collaborazioni

Tesit Consulting

Tino Giannini

CPM Team Consulting

Felice Del Mauro 

Associazioni

AICQ-ci

APCO

itSMF Italia

 

Utilizzo delle best practice

Indagine in corso

Questionario

Best practice proposte

 

Ercole Colonese © 2005-2013 | Home | Mappa del sito | Pubblicazioni | Chi sono | Info |