Ingegneria del software

disciplina accademica

Per ingegneria del software si intende la branca dell'informatica che si occupa di definire medodi, formalismi grafici e strumenti utili a governare il ciclo di vita di un prodotto software, ovvero l'insieme delle attività da svolgere per la sua realizzazione, dall'analisi dei requisiti utente alla manutenzione dopo il rilascio.


Metodi di Analisi

Numerose sono le metodologie proposte per guidare l’attività dei gruppi di lavoro per lo sviluppo di un prodotto software. Queste sequenziano e dettagliano le attività da eseguire per portare a termine con successo il ciclo di vita di un prodotto software. L’applicazione di queste metodologie è in parte automatizzata da una famiglia di strumenti nota come CASE Tool (Computer Aided Software Engineering).

A grandi linee tutte queste metodologie suddividono il ciclo di vita in 5 macro attività ben distinte e successive: analisi dei requisiti, pregetto (design, nella dizione anglosassone), programmazione o codifica (programming), integrazione e test. In funzione della complessità del problema e del prodotto finale, queste fasi possono essere ulteriormente suddivise.


In generale durante l’analisi si formalizza il problema in termini di funzionalità e requisiti tecnici. Questa formalizzazione è passata ai responsabili della progettazione per individuare gli algoritmi e le strutture dati utili alla soluzione del problema. Nella successiva fase di programmazione, le soluzioni così individuate sono implementate utilizzando un linguaggio di programmazione. In funzinoe della complessità del prodotto finale, la programmazione può essere suddivisa tra soggetti o gruppi di lavoro distinti, ciascuno responsabile della realizzazione di una parte o modulo del prodotto software atteso. In questo caso è necessaria una fase di integrazione dei moduli per avere il prodotto finale. Al termine è previsto il test del prodotto prima del rilascio.

Ogni attività svolta sul prodotto successivamente al rilascio è identificata come manutenzione. La manutenzione può essere correttiva se è finalizzata alla correzione di malfuzionamenti o evolutiva se mira a realizzare nuove funzioni.

Ciclo di vita classico o water-fall (cascata)

Ciclo di vita object oriented o a spirale