Ingegneria del Software (e Prova Finale) Luciano Baresi

Documenti analoghi
Ingegneria del Software L-A

Algoritmi e Strutture Dati

Ingegneria del Software

Ingegneria del Software II

Basi di Dati Ingegneria Informatica e delle Telecomunicazioni

Elementi di Informatica e Programmazione

Corso di Laurea Ingegneria Informatica

Materiale didattico. Sommario

CORSO DI LAUREA IN INGEGNERIA ELETTRICA, ELETTRONICA E INFORMATICA

Sistemi Informativi Aziendali

Data del DM di approvazione del ordinamento 01/10/2002 didattico. Data del DR di emanazione del ordinamento 04/03/2003 didattico

Introduzione alla OOP Object Oriented Programming

Laboratorio di Progettazione di Sistemi Software Design Patterns

Modulo 16. Introduzione ai Design Patterns. Tutte le case assolvono alla medesima funzione: offrire uno spazio abitativo

Introduzione. Fondamenti di Informatica 1. Dispensa 1 Gennaio Contenuti. Alfonso Miola. K Corso di Fondamenti di Informatica 1

Fondamenti di Informatica

UML. Il linguaggio UML e ArgoUML. Ingegneria dei sistemi software 2009/ /09/2009

Il PROCESSO UNIFICATO

Corso di Fondamenti di Informatica e Laboratorio T-AB

Elementi di Informatica

Prof.ssa Cinzia DESSI. Economia e Organizzazione Aziendale. Il Programma. Industriali A.A. A.A primo primo semestre

Fondamenti di informatica. Introduzione al corso di Fondamenti di informatica I e II (informatici) Anno Accademico

Cosa è un programma. Informatica di Base -- R.Gaeta 18

U4Learn.

FONDAMENTI DI INTELLIGENZA ARTIFICIALE-M

35% 40% Scambiatori di calore per qualsiasi esigenza Risparmia tempo e denaro! Minore volume di ritenzione

Architettura degli elaboratori

Controllo di Gestione

Sapienza Università di Roma, Facoltà di Ingegneria Sala degli Affreschi Via Eudossiana, 18

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Corso di Ingegneria del Software. Modelli di produzione del software

Corso di Meccanica Applicata alle Macchine e Macchine

Il sistema informativo aziendale

Cosa è l Informatica?

Principi di Progettazione del Software a.a Introduzione al corso Prof. Luca Mainetti Università del Salento

Organizzazione Aziendale 16. ORGANIZZAZIONE AZIENDALE Prof. Rocco Reina CFU 8 /ore 64

Principi di Progettazione del Software a.a " Introduzione al corso! Prof. Luca Mainetti! Università del Salento!

Disciplina: SCIENZE MATEMATICHE UNITÀ DI APPRENDIMENTO 1

WORD 2000 SPECIALIST Microsoft Office Specialist COURSEWARE

Lezione 1 Ingegneria del Software II- Introduzione e Motivazione. Ingegneria del Software 2 Introduzione e Motivazioni 1

Qualifica in Esperto Gestione dell Energia (E.G.E.) Energy Auditor 56 ore

FONDAMENTI DI INTELLIGENZA ARTIFICIALE-M

collegio didattico di ingegneria civile

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A4_3 V2.1. Progettazione. Metodi e Linguaggi

Corso di Informatica per Biologia

Introduzione al Calcolo Scientifico

I Nuovi Corsi di Laurea in Informatica. La laurea triennale (classe L-31) L

Corso di Fondamenti di Informatica T-1

Corso di Fondamenti di Informatica T-1

Algoritmi e Strutture Dati

I.I.S. N. PELLATI Nizza Monferrato - Canelli

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

Transcript:

Ingegneria del Software (e Prova Finale) Luciano Baresi luciano.baresi@polimi.it

Organizzazione dei corsi Ingegneria del software (7 crediti) Lezioni: 42 ore Esercitazioni: 28 ore Prova finale (3 crediti) Esercitazioni: 12 ore Laboratorio: 32 ore

Chi siamo Titolare del corso Luciano Baresi Esercitazioni Alessandro Campi Laboratorio Damiano Somenzi

Orario Martedì 14:15 18:15 Giovedì 9:15 13:15 Lunedì (laboratorio) 9:15 13:15

Programma Programmazione nei linguaggi orientati agli oggetti Linguaggio Java Principi di programmazione di rete e distribuita Principi di programmazione delle interfacce utente Progettazione orientata agli oggetti Unified Modeling Language Design pattern Specifica di metodi e classi Principi del test funzionale e strutturale

Materiale didattico Non esiste un libro di testo unico http://home.deib.polimi.it/baresi/is.htm

Obiettivi Progettazione e programmazione ad oggetti Java/RMI/Swing UML Specifica rigorosa (per contratti) Elementi per il test sistematico dei programmi

Iniziamo?

Ingegneria del Software Settore dell'informatica che studia sistemi complessi e di grandi dimensioni nati dal lavoro di gruppo Questi sistemi esistono in diverse versioni hanno una durata di anni sono soggetti a frequenti modifiche

Possibili definizioni Approccio sistematico allo sviluppo, alla messa in opera e alla manutenzione del software Metodi tecnici e manageriali per prevedere e tenere sotto controllo i costi per tutta la vita ("lifecycle") dei prodotti software Come tutte le ingegnerie: Fornisce una guida per applicare la conoscenza scientifica allo sviluppo di soluzioni (software) "costeffective" per risolvere problemi pratici a beneficio dell'uomo

Processo e prodotto Processo Come avviene lo sviluppo industriale del software Prodotto Che cosa viene prodotto? Studiare i metodi da usare perché il processo porti allo sviluppo di prodotti di qualità

Ingegneria Progetto normale/standard Soluzione a un problema noto e ricorrente Riuso di soluzioni note Innovazione limitata tipico di discipline mature Progetto innovativo Soluzioni radicalmente nuove a problemi non noti Occorre saper distinguere tra i due

Confronto con ingegneria tradizionale (Troppo) spesso viene trattata come progetto innovativo (Troppo) spesso viene praticata in modo poco sistematico (ingegneristico/industriale)

Differenze (rispetto a ingegnerie tradizionali) Prevale il progetto di routine Progetto di estremo dettaglio che produce le specifiche per la realizzazione Processo di produzione separato Progetti alternativi convalidati attraverso modelli Dopo il progetto, pochi margini di cambiamento Processi standard per progetto e produzione

Ingegneria del software (1) L ingegneria civile ha alle spalle 3000 anni Un patrimonio di conoscenze Ciò è vero per quasi tutte le ingegnerie L ingegneria del software ha solo 50 anni

Ingegneria del software (2) Congelare le specifiche di prodotto e di progetto è spesso non realistico Cambiamenti ed evoluzione spesso inevitabili poichè il software è il cuore dei processi sociali e di business Questi continuano ad evolvere

Il software oggi Il software è parte essenziale di molti prodotti di largo consumo Dal telefonino alla lavatrice, dall automobile al forno Spesso il software non è il prodotto, ma è una parte del prodotto Deve essere ingegnerizzato con il resto dell applicazione Il meccanismo delle patch non funziona in tutti questi casi Come faccio ad attaccare la macchina ad Internet

Complessità, criticità e dimensione Fanno la vera differenza Richiedono un approccio sistematico (ingegneristico) per poter ottenere la necessaria qualità controllando costi e tempi Secondo F. Brooks (The Mythical Man Month) "programmare per se stesso" rispetto a "programmare per altri" -> costo al quadrato Aggiungere persone a un progetto in ritardo lo ritarda ulteriormente

CHAOS report (I) OVERRUNS AND FEATURES Time and cost overruns, plus percentage of features delivered from CHAOS research for the years 2004 to 2012. 100 80 60 40 20 0 TIME COST FEATURES 2004 2006 2008 2010 2012 84% 72% 79% 71% 74% 56% 47% 54% 46% 59% 64% 68% 67% 74% 69% Features Cost Time

Progettazione vs. Programmazione Programmatore Sviluppa un programma completo Partendoda specifiche fornite da altri Lavora individualmente Ingegnere del software Analizza problemi e domini applicativi Coglie i requisiti e sviluppa specifiche Progettacomponenti, potenzialmente riusabili Lavora in un gruppo

Progettazione Scomposizione di un sistema in moduli scomporre un problema in sotto-problemi che possano essere risolti indipendentemente Quali obiettivi della scomposizione? governare la complessità divide et impera rendere efficiente il processo sviluppo indipendente delle parti Riduzione di conflitti/incomprensioni fra gli sviluppatori