Ingegneria del SW – Elementi storici

Ingegneria del SW – Elementi storici

L'utilizzo del computer aumentò durante la seconda guerra mondiale per la sua straordinaria potenza di calcolo e di automazione di attività difficilmente eseguibili manualmente. Infatti, i primi utilizzatori sono essenzialmente fisici, matematici, ingegneri, etc. che utilizzano il computer per eseguire complessi calcoli matematici e fisici.

Le caratteristiche più importanti di questa fase pioneristica sono:

  • l'uso di linguaggi di programmazione di basso livello
  • chi sviluppa software è un tecnico che si esprime in modo rigoroso e formalizzato
  • l'applicazione sviluppata non ha la necessità di sopravvivere a lungo

Img1.png

Img2.png

Intorno alla fine degli anni '60 nasce l'esigenza di sviluppare prodotti software sempre più complessi ed evoluti che rispondessero alle richieste delle grandi utenze. 

Nel 1968 si iniziò a parlare di "crisi del software" perché erano pochissimi i progetti terminati nei tempi e nei costi prestabiliti. Inoltre, i sistemi generalmente erano pieni di difetti e difficili da modificare senza una riprogettazione. 

Di conseguenza, come già accadeva nell'ingegneria tradizionale (edile, meccanica, etc.), dove lo sviluppo di un progetto non è una attività lasciata al caso o all'estro di pochi progettisti, ma in larga misura sistematica, anche nell'ambito software si avvertì la necessità di seguire questi principi.

Da qui, la tendenza ad adottare anche per la produzione del software un approccio ingegneristico in grado di permettere allo sviluppatore di affrontare la complessità di grossi progetti, in particolare di sviluppare prodotti aventi le caratteristiche qualitative desiderate, gestire le risorse in maniera produttiva e rispettare i vincoli economici e temporali. Detto approccio ingegneristico prese nel 1968 il nome di Ingneria del Software. 

L'ingegneria del software è una disciplina tecnologica e gestionale che permette di affrontare in modo sistematico e quantificabile (in termini di tempi e costi) lo sviluppo e la manutenzione dei prodotti software.

L'ingegneria del software si occupa in particolare di:

  • affrontare in modo sistematico e misurabile:
    • il progetto
    • la realizzazione
    • l'utilizzo
    • la manutenzione

dei prodotti software

  • studiare le strategie per realizzare il punto precedente
  • gestire il processo di sviluppo del software
  • di svolgere attività di tipo gestionale
    • stime dei costi e dei tempo di sviluppo
    • gestione dei progetti (delle persone, pianificazione)
    • gestione dei rischi
    • gestione della qualità
  • metriche

Con "processo di sviluppo del software" si intende un insieme strutturato di attività che regolano lo sviluppo di un prodotto software. La struttura di un processo di sviluppo può avere una forte influenza sulla qualità, sul costo e sui tempi di realizzazione del prodotto.

Img3.png

Il processo di sviluppo stabilisce un ordine di esecuzione delle attività, specifica quali deliverable devono essere forniti e quando, assegna le attività agli sviluppatori, fornisce criteri per monitorare l?avanzamento dello sviluppo per misurarne i risultati e per pianificare i progetti futuri, copre l?intero ciclo di vita del software.

Le principali fasi del processo di sviluppo del software sono: analisi, progettazione implementazione e collaudo.

Durante il processo di sviluppo del software è indispensabile avere a disposizione un linguaggio di modellazione, cioè, un linguaggio per costruire modelli da discutere sia con il committente e con gli altri sviluppatori. Il linguaggio dovrebbe essere visuale (una figura è meglio di mille parole) e possedere capacità dichiarative. Esiste un linguaggio di modellazione standard: UML - Unified Modeling Language.

Img5.png