Programma preliminare


Obiettivo
Prerequisiti
Contenuti
Libri
Materiale didattico



Obiettivo

L'obiettivo del corso è far conoscere principi, metodi e tecniche dell'ingegneria del software e sviluppare competenze applicabili allo sviluppo ed evoluzione di grandi sistemi software, aventi caratteristiche di qualità ed economicità. Il corso utilizza lo studio di un caso che illustra i problemi e gli esiti delle differenti attività su un sistema software realizzato sia in versione C (mediante approccio orientato alle funzioni) che in versione C++ (mediante approccio orientato agli oggetti).



Prerequisiti

Fondamenti di Informatica I, II, III, Basi di Dati; conoscenza base dei linguaggi di programmazione C e C++.



Contenuti

1. Introduzione
Software: definizione e caratteristiche essenziali; ingegneria del software: definizione, fattori caratterizzanti, il problema della qualità del software, obiettivo e strategia; sviluppo per fasi: caratteristiche e fasi fondamentali.

2. Modelli di processo software
Modelli di processo software. I modelli di ciclo di vita del software: modello a cascata, modelli basati su prototipo, modelli evolutivi ed incrementali.

3. Analisi e Specifica dei Requisiti
Caratteristiche; problemi; ruolo del documento SRS; processo di specifica dei requisiti; approcci alla comprensione del problema; la definizione delle specifiche; caratteristiche di un buon SRS, componenti base, standard IEEE, validazione dei requisiti, classificazione dei difetti.

4. Analisi dei Casi d'Uso
Generalità; terminologia; il modello dei casi d'uso; specifica di un caso d'uso; passi per la costruzione di un modello dei casi d'uso.

5. Analisi Strutturata
Caratteristiche principali; diagrammi di flusso dei dati (DFD), notazione dei DFD, DFD a livelli, passi per la costruzione di un modello DFD, dizionario dei dati.

6. Analisi Orientata gli Oggetti
Caratteristiche principali; concetti fondamentali: oggetto, classe, attributo, operazione, associazione, aggregazione, generalizzazione ed ereditarietà; notazione UML; passi per la costruzione di un modello delle classi.

7. Progettazione
Caratteristiche e principi fondamentali: astrazione, modularità, information hiding, decomposizione; livelli di progettazione: high-level design, low-level design, data-design; documentazione di progetto.

8. Progettazione Strutturata
Caratteristiche; notazione grafica: carte di struttura; criteri di progettazione e valutazione della modularità: coesione e accoppiamento; misure morfologiche ed euristiche di progettazione; passaggio dal modello DFD alle carte di struttura: analisi delle transazioni e analisi delle trasformazioni.

9. Progettazione Orientata agli Oggetti
Generalità ed obiettivi; concetti base: oggetti, classi, stato di un oggetto, relazioni; ereditarietà e polimorfismo; legami statici e dinamici; classi astratte; metodologie di progettazione: l’esempio di OMT; diagrammi di interazione: diagramma di sequenza e di collaborazione; diagrammi delle attività. La specifica di sistemi Orientati agli Oggetti mediante UML.

10. Testing
Definizioni; problemi del testing; criterio di selezione dei casi di test; test funzionale: suddivisione in classi di equivalenza e analisi valori limite; test strutturale: basato sul flusso di controllo e sul flusso dei dati, test dei cammini indipendenti; valutazione dei risultati del test; criterio di terminazione del testing; livelli di test: test d’unità, d’integrazione, di sistema, di accettazione; test di programmi OO; pianificazione, specifica, esecuzione e rapporti del test.

11. Manutenzione
Generalità sulla manutenzione del software; leggi dell’evoluzione del software; classi di manutenzione; modelli di processo per la manutenzione del software: riparazione veloce e miglioramento iterativo.



Libro adottato
                   Pankaj Jalote, An Integrated Approach to Software Engineering, 2nd edition, Springer.

Altri libri consigliati
                  Roger S. Pressman, Principi di Ingegneria del Software, terza edizione, McGraw Hill
                  C. Ghezzi, et al. ‘Ingegneria del Software’, Mondadori ed.
                  James Rumbaugh and Michael Blama, Modelli e Progetti Object-Oriented, Jackson
                  M. Fowler, UML Distilled, Addison-Wesley



Materiale didattico 
           E' disponibile copia dei lucidi delle lezioni (clicca qui) .
              Strumenti CASE disponibili presso il laboratorio didattico.


Ritorna alla Home Page