Corso di Ingegneria del Software a.a. 2009/2010...

16
Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso Mario Vacca [email protected]

Transcript of Corso di Ingegneria del Software a.a. 2009/2010...

Page 1: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Corso di Ingegneria del Softwarea.a. 2009/2010

Introduzione al corso

Mario Vacca

[email protected]

Page 2: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

L’Ingegneria del Software

Sommario

1. Introduzione all’Ingegneria del Software

1.1 Le finalita dell’Ingegneria del software1.2 Concetti di base: software, processi, progetti

1.3 Breve storia della Ingegneria del software

1.4 Cosa studia l’ingegneria del software

2. Il programma del corso

3. Bibliografia

Page 3: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Breve storia della Ingegneria del Software

I periodi

1. Anni ’50: Software Engineering come Hardware Engineering

2. Anni ’60: Code&Fix

3. Anni ’70: Il modello Waterfall

4. Anni ’80: Software Reuse

5. Anni ’90: Modelli incrementali

6. L’ultima decade: Modelli Agili

Page 4: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Breve storia della Ingegneria del Software

I periodi

1. Anni ’50: Software Engineering come Hardware Engineering

2. Anni ’60: Code&Fix

3. Anni ’70: Il modello Waterfall

4. Anni ’80: Software Reuse

5. Anni ’90: Modelli incrementali

6. L’ultima decade: Modelli Agili

Page 5: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Anni ’50: Software Engineering come HardwareEngineering

Il contesto

I lavoratori sono ingegneri o matematiciIl software sviluppato per progetti importanti (e.g. aerei o razzi).I computer sono ingombranti e molto costosi(necessita di risparmiare: esecuzione manuale)

Le caratteristiche

I Hardware engineering orientationI nomi delle associazioni professionali: the Association forComputing Machinery; the IEEE (Institute of Electrical andElectronic Engineers) Computer Society.

I Approccio: “Engineer software like you engineer hardware.”Lo slogan e “measure twice, cut once”

Page 6: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Breve storia della Ingegneria del Software

I periodi

1. Anni ’50: Software Engineering come Hardware Engineering

2. Anni ’60: Code&Fix

3. Anni ’70: Il modello Waterfall

4. Anni ’80: Software Reuse

5. Anni ’90: Modelli incrementali

6. L’ultima decade: Modelli Agili

Page 7: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Anni ’60: Code&Fix 1/3

Il contesto

1. Il software e diverso dall’hardware:I facile da modificare e copiareI non si consuma

(“software reliability” non si poteva stimare bene usando il concettodi affidabilita dell’hardware)

I invisibile e senza peso, ma costa

2. Molti software diventano people-intensive(importanza alla interazione uomo-macchina)

3. Rapida espansione della domanda di software(provoco una carenza di ingegneri e matematici)

4. Potenti mainframe

Page 8: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Anni ’60: Code&Fix 2/3

Le caratteristiche

I Approccio: “code and fix”

I Sempre piu “large” applicazioni “mission-oriented”.

I Training di “non-engineering people”: laureati in lettere, lingue eccper sviluppare software che usavano code-and-fix in modo naturale ecreativo, originando lo spaghetti-code.

I “cowboy programmers” che impiegavano nottate per correggereprogrammi in tempo per la scadenza della consegna

I Linguaggi ad alto livello Fortran COBOL (di facile uso per nonmatematici)

Page 9: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Anni ’60: Code&Fix 3/3

Nasce formalmente l’Ingegneria del Software

La conferenza NATO di ottobre 1968, a Garmisch (Germania), conio iltermine “Ingegneria del software”.La conclusione della Conferenza NATO fu che lo sviluppo del softwaredoveva essere condotto utilizzando un approccio ingegneristico, che in-troducesse principi di standardizzazione e formalizzazione dei metodi dilavoro.

Page 10: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Breve storia della Ingegneria del Software

I periodi

1. Anni ’50: Software Engineering come Hardware Engineering

2. Anni ’60: Code&Fix

3. Anni ’70: Il modello Waterfall

4. Anni ’80: Software Reuse

5. Anni ’90: Modelli incrementali

6. L’ultima decade: Modelli Agili

Page 11: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Anni ’70: Il modello Waterfall 1/3

Il contesto

Necessita di metodi organizzati e pratiche disciplinate per realizzare isempre piu grandi progetti e prodotti che erano commissionati

Le caratteristiche

I Approccio: modello Waterfall

(reazione al code-and-fix approach)

I Codifica: Programmazione strutturata, Top-down programming(Jackson’s structured design and programming)

I Linguaggi Pascal e Modula-2

I Correttezza formale dei programmi

Page 12: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Anni ’70: Il modello Waterfall 2/3The Royce Waterfall Model (1970)

Figura: B. W. Boehm: A view of 20th and 21st century software engineering.ICSE 2006, pag. 16

Page 13: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Anni ’70: Il modello Waterfall 3/3Sintesi delle carateristiche degli anni ’70

Figura: B. W. Boehm: A view of 20th and 21st century software engineering.ICSE 2006, pag. 16

Page 14: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Breve storia della Ingegneria del Software

I periodi

1. Anni ’50: Software Engineering come Hardware Engineering

2. Anni ’60: Code&Fix

3. Anni ’70: Il modello Waterfall

4. Anni ’80: Software Reuse

5. Anni ’90: Modelli incrementali

6. L’ultima decade: Modelli Agili

Page 15: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Anni ’80: Software Reuse

Il contesto

Critiche al modello waterfall

I modello sequenziale(una fase inizia solo quando termina la precedente).

I testing and debuggingFu osservato che buona parte della attivita di test implicava lariscrittura del codice.

I document-intensive, lento e costoso (nell’uso).Poiche la documentazione precede la codifica, lo slogan era “We’dbetter hurry up and start coding, because we’ll have a lot ofdebugging to do.”

Page 16: Corso di Ingegneria del Software a.a. 2009/2010 ...infocom.uniroma1.it/.../uploads/IngegneriaDelSoftware/Introduzione2… · Corso di Ingegneria del Software a.a. 2009/2010 Introduzione

Corso di Ingegneria del Software a.a. 2009/2010 Introduzione al corso

Introduzione all’Ingegneria del Software (SE)

Breve storia della Ingegneria del Software

Anni ’80: Software Reuse

Le caratteristiche

I Computer-Aided Software Engineering (CASE)

(che supporta lo sviluppo del software attraverso interfacce grafiche(shell) e visuali e librerie di funzionalita)

I Nascita e uso degli standardFu sviluppato l’International Standards Organization ISO-9001standard for quality practices applicabile al softwareLe aziende per paura di non essere competitive cercavano diadottare gli standard

I Strumenti e tecniche per migliorare la produttivita

software reuse/object orientation (Smalltalk, Eiffel, C++)expert systemspotenti workstationsvisual programming