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]
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
1.2
1.3
1.4
Le finalità dell’Ingegneria del software
Concetti di base: software, processi, progetti
Breve storia della Ingegneria del software
Cosa studia l’ingegneria del software
2. Il programma del corso
3. Bibliografia
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
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
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 Hardware
Engineering
Il contesto
I lavoratori sono ingegneri o matematici
Il software sviluppato per progetti importanti (e.g. aerei o razzi).
I computer sono ingombranti e molto costosi
(necessità di risparmiare: esecuzione manuale)
Le caratteristiche
I
Hardware engineering orientation
I nomi delle associazioni professionali: the Association for
Computing Machinery; the IEEE (Institute of Electrical and
Electronic Engineers) Computer Society.
I
Approccio: “Engineer software like you engineer hardware.”
Lo slogan è “measure twice, cut once”
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
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 è diverso dall’hardware:
I
I
I
facile da modificare e copiare
non si consuma
(“software reliability” non si poteva stimare bene usando il concetto
di affidabilita dell’hardware)
invisibile e senza peso, ma costa
2. Molti software diventano people-intensive
(importanza alla interazione uomo-macchina)
3. Rapida espansione della domanda di software
(provocò una carenza di ingegneri e matematici)
4. Potenti mainframe
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
I
Approccio: “code and fix”
Sempre più “large” applicazioni “mission-oriented”.
I
Training di “non-engineering people”: laureati in lettere, lingue ecc
per sviluppare software che usavano code-and-fix in modo naturale e
creativo, originando lo spaghetti-code.
I
“cowboy programmers” che impiegavano nottate per correggere
programmi in tempo per la scadenza della consegna
I
Linguaggi ad alto livello Fortran COBOL (di facile uso per non
matematici)
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), coniò il
termine “Ingegneria del software”.
La conclusione della Conferenza NATO fu che lo sviluppo del software
doveva essere condotto utilizzando un approccio ingegneristico, che introducesse principi di standardizzazione e formalizzazione dei metodi di
lavoro.
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
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
Necessità di metodi organizzati e pratiche disciplinate per realizzare i
sempre più grandi progetti e prodotti che erano commissionati
Le caratteristiche
I
Approccio: modello Waterfall
(reazione al code-and-fix approach)
I
I
Codifica: Programmazione strutturata, Top-down programming
(Jackson’s structured design and programming)
Linguaggi Pascal e Modula-2
I
Correttezza formale dei programmi
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/3
The Royce Waterfall Model (1970)
Figura: B. W. Boehm: A view of 20th and 21st century software engineering.
ICSE 2006, pag. 16
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/3
Sintesi delle carateristiche degli anni ’70
Figura: B. W. Boehm: A view of 20th and 21st century software engineering.
ICSE 2006, pag. 16
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
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 debugging
Fu osservato che buona parte della attività di test implicava la
riscrittura del codice.
I
document-intensive, lento e costoso (nell’uso).
Poichè la documentazione precede la codifica, lo slogan era “We’d
better hurry up and start coding, because we’ll have a lot of
debugging to do.”
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 funzionalità)
I
Nascita e uso degli standard
Fu sviluppato l’International Standards Organization ISO-9001
standard for quality practices applicabile al software
Le aziende per paura di non essere competitive cercavano di
adottare gli standard
I
Strumenti e tecniche per migliorare la produttività
software reuse/object orientation (Smalltalk, Eiffel, C++)
expert systems
potenti workstations
visual programming
Scarica

Corso di Ingegneria del Software a.a. 2009/2010 push0 g 0 G