Corso di Ingegneria del Software a.a. 2009/2010 Mario Vacca mario.vacca1@istruzione.it
L Ingegneria del Software Sommario 1. Introduzione all Ingegneria del Software 1.1 Le finalità dell Ingegneria del software 1.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
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
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
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 Hardware engineering orientation I nomi delle associazioni professionali: the Association for Computing Machinery; the IEEE (Institute of Electrical and Electronic Engineers) Computer Society. Approccio: Engineer software like you engineer hardware. Lo slogan è measure twice, cut once
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
Anni 60: Code&Fix 1/3 Il contesto 1. Il software è diverso dall hardware: 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
Anni 60: Code&Fix 2/3 Le caratteristiche Approccio: code and fix Sempre più large applicazioni mission-oriented. 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. cowboy programmers che impiegavano nottate per correggere programmi in tempo per la scadenza della consegna Linguaggi ad alto livello Fortran COBOL (di facile uso per non matematici)
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.
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
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 Approccio: modello Waterfall (reazione al code-and-fix approach) Codifica: Programmazione strutturata, Top-down programming (Jackson s structured design and programming) Linguaggi Pascal e Modula-2 Correttezza formale dei programmi
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
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
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
Anni 80: Software Reuse Il contesto Critiche al modello waterfall modello sequenziale (una fase inizia solo quando termina la precedente). testing and debugging Fu osservato che buona parte della attività di test implicava la riscrittura del codice. 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.
Anni 80: Software Reuse Le caratteristiche Computer-Aided Software Engineering (CASE) (che supporta lo sviluppo del software attraverso interfacce grafiche (shell) e visuali e librerie di funzionalità) 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 Strumenti e tecniche per migliorare la produttività software reuse/object orientation (Smalltalk, Eiffel, C++) expert systems potenti workstations visual programming