Ingegneria del software: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Annullate le modifiche di 188.11.252.157 (discussione), riportata alla versione precedente di 151.34.182.190 Etichetta: Rollback |
Revisione - resta debole e da aggiornare |
||
Riga 1:
{{Nota disambigua2|Se stai cercando informazioni sull'ingegneria del software nell'ordinamento [[università|universitario]] italiano, vedi le voci '''[[ingegneria informatica]]''' o '''[[informatica]]'''}}
{{F|ingegneria del software|febbraio 2013|Voce ampia senza nessuna fonte e riferimento}}
Per '''ingegneria del software''' ('''''software engineering''''' in [[lingua inglese|inglese]]) si intende quella [[Materia (didattica)|disciplina]] che si occupa dei processi produttivi e delle [[Metodologia di sviluppo del software|metodologie]] di sviluppo finalizzate alla realizzazione di
L'ingegneria del software, quindi, 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 [[Modello di sviluppo del software|metodologico]] (per esempio il perfezionamento dei modelli di [[ciclo di vita del software]]).
== Storia ==
La necessità di creare una disciplina teorico-pratica che si occupasse in toto della realizzazione dei software nasce, intorno alla fine degli [[anni 1960|anni sessanta]], dall'esigenza di sviluppare prodotti sempre più complessi ed evoluti che rispondessero alle richieste delle grandi utenze, conferendo rigore e disciplina allo [[stato dell'arte]] dello sviluppo software nelle grandi
Più precisamente dal [[1950]] al [[1965]] lo sviluppo del software
* [[Algoritmi]]
* [[Struttura dati|Strutture Dati]]
* [[Programmazione strutturata]]
* [[Linguaggio di programmazione|Linguaggi di Programmazione]].
La [[programmazione (informatica)|programmazione]] consisteva soprattutto nel mettere insieme una sequenza di [[istruzione (informatica)|istruzioni]] di [[codice sorgente]] per realizzare compiti ben specifici.
Dal [[1965]] al [[1975]] si assiste allo [[Sviluppo software|sviluppo di software]] pensato per più utenti e per i sistemi in [[real-time]]. In questo periodo iniziano di conseguenza gli sviluppi di [[pacchetto (software)|pacchetti]] software
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
Con l'introduzione delle tecnologie informatiche anche nel settore industriale e commerciale, a partire dal [[1988]], bacini di utenze non più tecniche sentono l'esigenza di informatizzare le proprie strutture. 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. 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 nelle industrie del [[XX secolo]], che avevano similmente stravolto il modo di produrre apparecchiature meccaniche. Si cerca cioè di identificare i punti focali che devono governare la realizzazione di un buon prodotto software
==Descrizione==
=== Concetti base ===
L'ingegneria del software identifica una formalizzazione del processo di realizzazione e di manutenzione di un sistema informatico.
Per tale associazione con una idea quasi [[Biologia|biologica]] di vita si parla spesso di ''ciclo di vita'' di un software, concetto che ha assunto con il passare dei decenni un'importanza sempre
La necessità di creare una [[scienza]] che si occupi della realizzazione dei sistemi informativi nasce dalla necessità di sviluppare prodotti sempre più complessi ed evoluti che rispondano a esigenze di correttezza del
Il software come prodotto industriale diventa anche oggetto di un attento esame per estendere le capacità di realizzazione dello stesso. Nasce in pratica un concetto simile alle ottimizzazioni da [[catena di montaggio]] per le industrie del [[XX secolo|secolo scorso]]. Si cercano quindi di identificare nella realizzazione del software, quegli obiettivi a cui tengono le industrie del software, come qualità del software realizzato e soprattutto di rilasciare un prodotto
La nuova scienza, l'ingegneria del software, si preoccupa effettivamente di concretizzare queste esigenze,
L'ingegneria del software definisce quindi un insieme di processi, ovvero sequenze di fasi che individuano tappe specifiche nella realizzazione di un sistema software, tutte documentate e ispezionabili, che offrano in sostanza
=== La produzione software nel terzo millennio ===
Ancora oggi le aziende pongono l'accento sulla necessità di definire processi di [[Sviluppo software|sviluppo]] del software che consentano di rispettare le scadenze fissate per ridurre i costi di realizzazione dei prodotti stessi.
Vengono identificati differenti [[Ciclo di vita del software|cicli di vita del software]], ovvero diversi processi che possono essere attualizzati da un team per giungere ad un risultato comune. Ognuno di questi differenti processi identifica una serie di passi chiave da seguire per realizzare infine un prodotto software
L'ingegneria del software racchiude questi e molti altri elementi,
Differenti utenze generano differenti requisiti e nuove esigenze nella realizzazione di un software.
Riga 62:
== Voci correlate ==
* [[Application lifecycle management]]▼
* [[Sviluppo software]]▼
* [[Architettura multi-tier]]
* [[Artefatto (sviluppo software)]]▼
* [[Ciclo di vita del software]]
* [[Design pattern]]
* [[Model-View-Controller|MVC]]▼
* [[Modello di sviluppo del software]]▼
▲* [[Qualità del software]]
* [[Gestione della configurazione]]
* [[Unified Modeling Language]] (UML)▼
▲* [[Modello di sviluppo del software]]
▲* [[Application lifecycle management]]
▲* [[Model-View-Controller|MVC]]
* [[Object Role Modeling]]
* [[
▲* [[Artefatto (sviluppo software)]]
* [[Rapid application development]]
* [[Rational Software]]
* [[Service Oriented Architecture]]
* [[
▲* [[Unified Modeling Language]] (UML)
== Altri progetti ==
|