Ingegneria del software: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
m wikif |
||
Riga 1:
{{Nota disambigua2|Se stai cercando informazioni sull'ingegneria del software nell'ordinamento [[università|universitario]] [[italia]]no, vedi [[Ingegneria informatica]]}}
Per '''ingegneria del software''' o '''ingegneria informatica''' ('''''software engineering''''' in [[lingua inglese|inglese]]) si intende la branca dell'[[ingegneria]] che si occupa della realizzazione di sistemi software. Rispetto al termine "[[informatica]]", che può essere usato per riferirsi alla [[scienza]] del calcolo automatico (''computer science'' in inglese), l'ingegneria del software ha come proprio oggetto di studio l'uso e lo sviluppo della [[tecnologia]]
Come disciplina di ricerca, l'ingegneria del software si propone una serie di obiettivi legati all'evoluzione dello sviluppo del software (inteso come attività [[industria del software|industriale]]) sia da un punto di vista tecnologico (per esempio attraverso la definizione di nuovi [[linguaggio di programmazione|linguaggi di programmazione]]) che metodologico (per esempio il perfezionamento dei modelli di [[ciclo di vita del software]]).
Riga 20:
==Storia==
La necessità di creare una disciplina che si occupasse della realizzazione dei software nasce, intorno alla fine degli [[anni 60]], dall'esigenza di sviluppare prodotti sempre più complessi ed evoluti che
Più precisamente dal [[1950]] al [[1965]] lo sviluppo del software personale era alquanto limitato: molti programmi venivano sviluppati per batch, gli informatici erano pochi ed apprendevano sul campo. Ciò che veniva sviluppato era pensato per un unico cliente, inoltre ad ogni progetto lavorava ed avrebbe lavorato una sola persona, senza scrivere alcuna documentazione.<br>
Fino alla nascita dell'ingegneria del software, la realizzazione di prodotti per computer era una mera attività di programmazione eseguita attraverso l'applicazione di discipline come:
Riga 31:
La [[programmazione]] consisteva soprattutto nel mettere insieme una sequenza di istruzioni di codice per realizzare compiti ben specifici.
Dal [[1965]] al [[1975]] si assiste allo sviluppo di software pensato per più utenti e per i sistemi in [[real-time]]. In questo periodo iniziano di conseguenza gli sviluppi di pacchetti software, tuttavia si presentano anche numerosi problemi, come la gestione e
Nel 1968 la conferenza NATO tenuta a Garmisch, in [[Germania]], [http://homepages.cs.ncl.ac.uk/brian.randell/NATO/ rende chiaro il problema] rappresentato dall'incapacità di produrre nei tempi previsti software affidabile e rispondente ai requisiti.
A partire dal [[1972]] e fino al [[1988]] vengono introdotte nuove tecnologie, nascono i [[Sistema distribuito|sistemi distribuiti]] e si afferma la figura del sistemista informatico esperto. Il costo dell'[[hardware]] si abbassa considerevolmente e di conseguenza la tecnologia informatica comincia a diffondersi rapidamente. Il livello qualitativo del software si eleva, tuttavia il suo sviluppo è ancora limitato a progetti scientifici e militari, e solo successivamente, dopo aver affrontato una lunga fase di collaudo, il software viene introdotto nelle industrie.
Organizzazioni come [[il Pentagono]] spingono fortemente lo studio di modelli che permettano di minimizzare
Con l'introduzione delle tecnologie informatiche anche nel settore industriale e commerciale, a partire dal [[1988]], bacini di utenze non più tecniche
In questo periodo nasce la [[programmazione orientata agli oggetti]], si tende a controllare lo sviluppo del software, cercando di sviluppare prodotti di qualità, anche a causa della concorrenza affermatasi tra le software house. Si cerca di curare al massimo l'[[interfaccia grafica]] presentata all'utente, in quanto anche il tipo di utenza è cambiato.<br>
Da queste esigenze nasce l'incontro tra i [[requisiti]] dell'azienda cliente e le funzionalità che il programmatore deve realizzare.
Si sviluppa un concetto analogo alle ottimizzazioni da catena di montaggio
Si cerca di identificare i punti focali che devono governare la realizzazione di un buon prodotto software e soprattutto si cerca di definire formalmente cosa possa descrivere un ''buon'' prodotto software.
|