New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Ingegneria del software - Wikipedia

Ingegneria del software

Da Wikipedia.

Nota disambigua - Se stai cercando informazioni sull'ingegneria del software nell'ordinamento universitario italiano, vedi Ingegneria informatica

Per ingegneria del software (software engineering in 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 informatica. Nell'ordinamento universitario italiano, il termine ingegneria informatica viene spesso impiegato per riferirsi a uno specifico corso di laurea.

Come disciplina di ricerca, l'ingegneria del software si propone una serie di obiettivi legati all'evoluzione dello sviluppo del software (inteso come attività industriale) sia da un punto di vista tecnologico (per esempio attraverso la definizione di nuovi linguaggi di programmazione) che metodologico (per esempio il perfezionamento dei modelli di ciclo di vita del software).

Indice

[modifica] Concetti di base

L'ingegneria del software identifica una formalizzazione del processo di realizzazione di un prodotto software per computer dalla fase di concepimento fino alla sua morte funzionale.

Per tale associazione con una idea quasi 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 più elevata, spostando l'idea di software come manufatto verso un'idea di prodotto industriale.

La necessità di creare una scienza che si occupi della realizzazione dei software nasce dalla necessità di sviluppare prodotti sempre più complessi ed evoluti che rispondano a esigenze sempre più specifiche.

Il prodotto software può essere codice eseguibile o documentazione associata (per esempio un manuale d'uso) o altro prodotto comunque legato al software che vada gestito nel ciclo di vita.

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 secolo scorso. Si cercano quindi di identificare nella realizzazione del software, quegli aspetti cruciali a cui tengono le industrie del software, come tempi e costi di realizzazione.

La nuova scienza, l'ingegneria del software, si preoccupa effettivamente di concretizzare questa esigenza, cercando di definire modelli che permettano a team di tecnici di realizzare in cooperazione prodotti sempre più evoluti.

L'ingegneria del software definisce quindi un insieme di processi software, ovvero sequenze di fasi che individuano tappe specifiche nella realizzazione di un prodotto software.

[modifica] Storia

La necessità di creare una disciplina che si occupasse della realizzazione dei software nasce, intorno alla fine degli anni sessanta, dall'esigenza di sviluppare prodotti sempre più complessi ed evoluti che rispondessero alle richieste delle grandi utenze.
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.
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:

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 la manutenzione del software.

Nel 1968 la conferenza NATO tenuta a Garmisch, in Germania, 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 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 la quantità di errori all'interno dei software.

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 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.

[modifica] La produzione software nel terzo millennio

Ancora oggi le aziende pongono l'accento sulla necessità di definire processi di sviluppo del software che consentano di rispettare le scadenze fissate per ridurre i costi di realizzazione dei prodotti stessi.

Vengono identificati differenti cicli di vita del software ovvero diversi processi che possono essere attualizzati da team per giungere ad un risultato comune. Ognuno di questi differenti processi identifica una serie di passi chiave da seguire per realizzare un prodotto software secondo uno stile di realizzazione differente per raggiungere differenti obiettivi.

L'ingegneria del software racchiude questi e molti altri elementi creando una scienza che si preoccupa effettivamente di concretizzare come permettere non più ad una singola persona ma ad un team di tanti sviluppatori, di realizzare un buon software.

Differenti utenze generano differenti requisiti e nuove esigenze nella realizzazione di un software.

Resta oggi il problema di produrre con tempi e costi prestabiliti dei sistemi software di formidabili dimensioni, enormemente cresciuti rispetto ai pacchetti software di alcune decine di anni fa (qualcuno parla di fatware a proposito dei nuovi sistemi). In queste situazioni la neonata scienza si trova spesso in difficoltà e si sente il bisogno di teorie più evolute.

Se l'approccio iniziale era basato sui concetti dell'industria meccanica dell'inizio del ventesimo secolo (tempi e metodi), adesso si capisce che tale impostazione è insufficiente: nell'industria meccanica si parla ormai di fabbrica immateriale costituita dalle conoscenze dei dipendenti, dai rapporti tra di loro, dalle aspirazioni comuni; ancor di più ciò vale per la fabbrica software.

In aggiunta molti hanno capito le caratteristiche originali del prodotto software (prima fra tutte l'immaterialità del prodotto principale - il codice eseguibile) che portano alla necessità di tecnologie meno note in altri settori: la più importante di tali tecnologie è probabilmente il controllo di configurazione.

[modifica] Voci correlate (concetti fondamentali)

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu