Ingegneria del Software: Fondamenti, Metodologie e Strumenti CASE
Classificato in Informatica
Scritto il in
italiano con una dimensione di 4,5 KB
L'importanza dell'Ingegneria del Software
Il termine è stato introdotto alla fine degli anni '60 a causa della cosiddetta crisi del software. Questa crisi è stata il risultato dell'introduzione della terza generazione di hardware, che ha smesso di essere un ostacolo allo sviluppo della tecnologia dell'informazione, richiedendo una riduzione dei costi e un miglioramento della qualità e dell'efficienza del software prodotto.
La crisi è stata caratterizzata dai seguenti problemi:
- Progetti poco chiari.
- Pianificazione e stima dei costi di acquisto errate.
- Scarsa qualità del software.
- Difficoltà di manutenzione con programmi strutturati.
L'efficacia richiede software di qualità, sia in fase di sviluppo che di manutenzione, garantendo caratteristiche quali affidabilità, facilità di manutenzione, usabilità ed efficienza.
1 Concetto di Ingegneria del Software
L'Ingegneria del Software è l'area dell'informatica che offre metodi e tecniche per sviluppare e mantenere software di qualità, risolvendo problemi di ogni genere. Oggi è considerata una disciplina ingegneristica consolidata a livello internazionale, con un prestigio sociale riconosciuto nel mondo degli affari.
Si occupa di settori come la costruzione di compilatori, sistemi operativi e lo sviluppo di Intranet/Internet, applicandosi a campi quali commercio, ricerca scientifica, medicina, produzione, logistica, operazioni bancarie, controllo del traffico aereo e meteorologia.
2 Metodi, tecniche e strumenti
- Metodo: Serie di fasi successive che conducono a un obiettivo, permettendo di generalizzare e risolvere problemi futuri.
- Tecnica: Procedure per ottenere un risultato che richiedono abilità manuale e intellettuale.
- Strumento (Tool): Sottomodulo responsabile di funzioni specifiche per eseguire un compito.
- Strumenti CASE (Computer Aided Software Engineering): Applicazioni progettate per aumentare la produttività nello sviluppo software, riducendo costi e tempi.
Obiettivi degli strumenti CASE
- Migliorare la produttività nello sviluppo e nella manutenzione.
- Migliorare la qualità del software.
- Ottimizzare tempi e costi.
- Migliorare la pianificazione dei progetti.
- Automatizzare la documentazione, la generazione di codice e i test.
Classificazione degli strumenti CASE
- U-CASE (Upper CASE): Supportano pianificazione, analisi dei requisiti e strategia (es. diagrammi UML).
- M-CASE (Middle CASE): Automatizzano le attività di progettazione.
- L-CASE (Lower CASE): Supportano la generazione di codice, il debugging e la documentazione.
Storia dell'Ingegneria del Software
Il termine fu usato per la prima volta da Fritz Bauer durante una conferenza NATO a Garmisch (1968). Alan Davis la definisce come: "L'applicazione intelligente di principi, tecniche, linguaggi e strumenti provati per la creazione e il mantenimento di software a costi ragionevoli che soddisfi le esigenze degli utenti."
1 La crisi del software
La crisi è definita come un problema cronico nello sviluppo, causato da una mancanza di formalismo, metodologia e strumenti di supporto, portando a ritardi, scarsa produttività e costi di manutenzione elevati.
3 Miti dello sviluppo
- Sviluppatori: Il programma che gira è la fine del lavoro; la qualità è solo assenza di errori.
- Gestione: L'uso di standard o l'aumento dei programmatori risolve la pianificazione insufficiente.
- Cliente: Le condizioni iniziali sono solo obiettivi generali; il software è sempre flessibile ai cambiamenti.
Focus dell'Ingegneria Informatica
L'Ingegneria Informatica applica informatica, elettronica e software per lo sviluppo di sistemi integrati. Si basa sulla tecnologia elettronica per interagire con sistemi fisici, controllo di robot, strumentazione virtuale e sistemi di acquisizione dati.
Tendenze nell'Ingegneria del Software
L'industria punta a creare sistemi affidabili con minori investimenti. La tecnologia object-oriented, combinata con strumenti CASE, programmazione visuale e basi di dati, è fondamentale per migliorare la riusabilità, la modularità e la flessibilità del software moderno.