Università di Bergamo Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica INGEGNERIA DEL SOFTWARE Prof. Paolo Salvaneschi 1 Obiettivi Scopi del corso: - Fornire gli elementi di base della disciplina, - Comunicare le problematiche reali attraverso un approccio pratico orientato alla professione, - Definire il panorama dello stato dell arte ed i riferimenti per muoversi nello stesso. Il corso è costituito da tre parti: Temi fondamentali, Temi di supporto, Laboratorio. I temi fondamentali trattano gli aspetti di base del processo di sviluppo dei sistemi software (tipi di processi, specifica, progettazione, realizzazione, evoluzione, controllo e gestione). I temi di supporto esaminano aspetti trasversali alle fasi del processo (linguaggi di modellazione, sistemi qualità e normativa, strumenti CASE e gestione della conoscenza). I workshop trattano singoli temi attraverso esercizi, esempi e discussione di casi reali. 2 Programma del corso 2.1 Lezioni di base A1 Ingegneria del software A2 Processi A3 Analisi e specifica dei requisiti A4 Progettazione A5 Controllo di qualità A6 Gestione 2.2 Lezioni di supporto B1.1 Reti di Petri B1.2 UML B2 Sistemi Qualità e Normativa B3 Gestione della conoscenza B4 Strumenti CASE 2.3 Laboratorio Sviluppo di modelli di sistemi e processi mediante Reti di Petri Interpretate Analisi dei requisiti e specifica di un applicazione software Progettazione architetturale dell applicazione (utilizzo di vari stili architetturali) Stesura di un piano di sforzi, costi e tempi dell applicazione Realizzazione di un piano di test
3 Programma dettagliato A1 A2 A3 Ingegneria del software Il contesto industriale del software Industria Dimensioni e diffusione Temi di oggi ed evoluzione Il mercato Le professioni Le origini dell Ingegneria del Software Anni 50-70 Definizioni Produzione artigiana e ingegneria Ingegneria e software Il corpus di conoscenze La professione La normativa Software Engineering e Computer Science Componenti tecniche Componenti gestionali Componenti sociali Conoscenza di ingegneria e di dominio Software Engineering e System Engineering Processi Processi e organizzazioni I Processi nelle organizzazioni Modellare e classificare i processi I processi software Modelli di processi di sviluppo software (cicli di vita) Code and fix Sequenziale Processi e documenti Sforzi e Costi Incrementale e con prototipi Iterativo A spirale Per integrazione (COTS e legacy systems) Unified Process, Modelli Agili Sistemi e Software Sviluppo, controllo e gestione Scelta dei processi adeguati Il catalogo dei processi: ISO 12207 Scelta ed adattamento dei modelli nella pratica Valutazione e miglioramento dei processi Evoluzione dei processi Valutazione Miglioramento Analisi e specifica dei requisiti Significato, motivazioni e processi -Significato e Motivazioni -Identificazione dei requisiti -Che cosa si identifica -Da dove si identifica -Rischi -Negoziazione -Modellazione ed analisi -Comunicazione Tecniche e linguaggi -Tecniche di estrazione dei requisiti -Elenco strutturato di requisiti
A4 A5 -Scenari e Casi d uso -Modelli per l analisi -Prototipi -Forme linguistiche -Documentazione -Sintesi Modellazione e riuso della conoscenza Il problema Pattern Analisi del dominio applicativo Relazioni con le altre fasi Requisiti di sistema e Requisiti software Relazioni con la progettazione Studio di fattibilità Validazione Evoluzione Progettazione Criteri generali Ruolo della progettazione Progettazione architetturale e di dettaglio esecutivo Documento di progetto Regole Euristiche Processi di progettazione (strategie) Forma, struttura e decorazione Processi di sintesi: decomposizione, composizione, misto, aggiunta Analisi e sintesi: l integrazione con la specifica Interleaving Modelli operazionali e trasformazioni Dall architettura all esecutivo di dettaglio Tracciabilità Metodi e Linguaggi Linguaggi e metodi di progettazione Dati Funzioni Oggetti Eventi Concorrenza Tempo Interazione persona /macchina Integrazione dei linguaggi Architetture e pattern di progettazione Architetture e viste Pattern architetturali (stili) Architetture di sistemi distribuiti Pattern di componenti Famiglie di prodotti e framework Sviluppo attraverso integrazione di componenti Verifica del progetto Significato Classificazione delle verifiche Piano delle verifiche Livelli di verifica Scenari Tipi di verifiche Ispezione e Analisi Animazione / simulazione Controllo di qualità Aspetti generali La qualità dei prodotti software
A6 Qualità di prodotto e di processo Nomenclatura Modelli di qualità Tecniche di valutazione della qualità di prodotto Processo di valutazione della qualità di prodotto Testing Note di teoria Costi Piano, specifiche e rapporto di test Test funzionali / strutturali e copertura Struttura di un caso di test Test funzionale Test strutturale Test di modulo, integrazione, sistema Test di sistemi ad oggetti Test di accettazione / collaudo Test di non regressione Test di caratteristiche non funzionali Strategia di test Processo di test Documenti Debugging Analisi dei malfunzionamenti e difetti Ispezioni Concetto e tipi di ispezione Processo di ispezione Gruppo di ispezione Checklists Strumenti automatici di analisi Misure Misure di prodotto: concetti generali Utilizzo Esempi di misure Raccolta, interpretazione e integrazione Misure di progetto, servizio e processo Gestione Pianificazione e gestione del progetto Processi di gestione Preparazione di un offerta WBS Stima risorse, costi e tempi Analisi dei rischi Organizzazione del gruppo di progetto Controllo e gestione del progetto Gestione della documentazione Standard di documentazione Data base del software Gestione delle versioni e configurazioni Definizione del problema Gestione delle versioni Gestione delle configurazione Gestione delle modifiche B1.1 Reti di Petri Esempio Elementi Interpretazione Struttura statica Simulazione Dinamica Concorrenza e conflitto Condizioni
Testi associati e regola di simulazione Risorse persistenti Morfismi Tempo Per approfondire B1.2 UML Tipi di modellazione Funzione e Struttura - Diagramma delle classi Comportamento Diagrammi di sequenza Comportamento Diagrammi di collaborazione Comportamento Diagrammi di stato Comportamento Diagrammi di attività Package Implementazione Componenti Implementazione Deployment Casi d uso Processo di sviluppo UML e architetture B2 B3 B4 Sistemi qualità e normativa Il movimento per la qualità ed il sistema qualità La normativa ISO La certificazione La norma ISO 9001:2000 Panorama della normativa per l ICT Gestione della conoscenza Ingegneria del Software e Gestione della conoscenza Cosa è la conoscenza? Persone, macchine e organizzazione Strumenti CASE Scopi Tipi di strumenti Esempi 4 Esame L esame sarà costituito da una prova scritta finale ed un colloquio opzionale. Regole: Se 18 voto prova scritta 25 si può registrare il voto con il solo scritto. Se voto prova scritta >25 è necessario sostenere anche l orale. Alternativamente si può registrare il voto con il solo scritto, ma si ottiene come voto 25. 5 Materiale didattico Il materiale didattico è costituito da: Un insieme di files Power Point che contengono la presentazione di tutte le lezioni Testi 1. R. Pressman, Principi di Ingegneria del software - quarta edizione, Mc Graw Hill, 2004. 2. M. Fowler, UML Distilled, terza edizione, Pearson, 2004 Documenti di riferimento su WEB http://www.swebok.org, SWEBOK-Guide to Software Engineering Body of Knowledge, IEEE http://www.softwaresystems.org/future.html, The Future of Software Engineering, Editor: Anthony Finkelstein