INGEGNERIA DEL SOFTWARE

ING-INF/05 - 9 CFU - 1° semestre

Docente titolare dell'insegnamento

ORAZIO TOMARCHIO


Obiettivi formativi

Conoscenza e comprensione
Conoscere i principi, le metodologie e gli strumenti principali nei processi di sviluppo del software, con particolare riferimento all’analisi ed alla specifica dei requisiti, alla definizione dell'architettura di sistema, al progetto, ed al testing. Conoscere alcuni dei più diffusi design pattern e comprendere il loro ruolo nella progettazione e sviluppo del software. Conoscere la notazione standard UML per la modellazione dei sistemi software.

Capacità di applicare conoscenza e comprensione
Saper progettare un sistema informatico con architettura mediamente complessa, pianificando le varie attività dei processi del ciclo di vita del software e producendo documenti in accordo agli standard del settore. Saper modellare le diverse viste di un sistema software utilizzando la notazione standard UML.


Prerequisiti richiesti



Frequenza lezioni

Frequenza non obbligatoria ma fortemente consigliata



Contenuti del corso

  1. Concetti e definizioni di base dell'Ingegneria del Software
    • Introduzione. Origini e motivazioni dell'Ingegneria del Software. Definizioni di base: prodotti software, caratteristiche generali dei prodotti software. Ciclo di vita del software. Processi per lo sviluppo del software: modello a cascata, sviluppo incrementale; modello iterativo/evolutivo, modello prototipale, modello a spirale, unified process.
  2. Analisi e specifica dei requisiti
    • Definizione del concetto di requisito. Requisiti funzionali e non funzionali. Attività di definizione, analisi e specifica dei requisiti. Processo di ingegnerizzazione dei requisiti. Documentazione dei requisiti. Validazione dei requisiti.
  3. Progettazione software
    • Progetto del software. Metodi di progetto: approccio top-down, metodi strutturati, strategie funzionali e object oriented. Documentazione del progetto. Parametri di qualità del progetto: coesione, accoppiamento, comprensibilità e adattabilità. Progetto dell'architettura logica. Modelli per la strutturazione dei sistemi software (pattern architetturali). Principi di analisi e progettazione orientata agli oggetti.
  4. La modellazione del software con UML
    • Generalità su UML (Unified Modeling Language). UML e ciclo di vita. Modellare i requisiti con i casi d'uso. Diagrammi delle classi e degli oggetti. Diagrammi di sequenza e collaborazione. Diagramma degli stati. Diagramma di attività. Diagramma dei componenti e di deployment. Strumenti CASE a supporto di UML.
  5. Design pattern per la progettazione ed il riuso
    • Ruolo dei design pattern nella progettazione e sviluppo del software. Pattern creazionali, strutturali, comportamentali.
  6. Verifica e validazione
    • l controllo di qualità dei prodotti software: la verifica e la validazione. Verifica e validazione statiche e dinamiche. Testing e ispezione. Obiettivi e problematiche generali del testing. Pianificazione e organizzazione dei test. Strategie di test. Test dinamico black box (funzionale) e white box (strutturale). Il concetto di test case. Dati di test. Classi di equivalenza. Testing dei cammini, grafi di flusso, complessità ciclotomica. jUnit.
  7. Software development management
    • Software configuration management. Configuration item, version, configurazioni, repository. Utilizzo di tool di versioning (CVS, SVN, Git). Gestione delle build, release e branch.


Testi di riferimento

  • [SOM] (Testo di consultazione per alcuni argomenti)
    • I. Sommerville
      Ingegneria del Software (8 edizione)
      Pearson Education Italia

Altro materiale didattico

Il materiale didattico è disponibile sul sito di Ateneo Studium



Programmazione del corso

 *ArgomentiRiferimenti testi
1*Introduzione all'Ingegneria del Software[SOM] Cap. 1 
2 Overview Analisi e Progettazione orientata agli oggetti[LAR] Cap. 1 
3*Ciclo di vita e Processi di sviluppo del Software[LAR] Cap. 2 e 3 - [FOW] Cap. 2 
4*La modellazione del software. Introduzione a UML[FOW] Cap. 1 
5 Generalità sulla fase di ideazione[LAR] Cap. 4 e 5 
6*Requisiti[LAR] Cap. 6 - [SOM] Cap. 6 
7*Casi d'uso[LAR] Cap. 7 - [FOW] Cap. 9 
8 Ulteriori Elaborati sui requisiti[LAR] Cap. 8 
9 La fase di elaborazione[LAR] Cap. 10-11 
10*Modelli di Dominio[LAR] Cap. 12 - [FOW] Cap. 3 
11*Diagrammi di sequenza di sistema[LAR] Cap. 13 
12*Contratti delle Operazioni[LAR] Cap. 14 
13 Verso la Progettazione. Cenni su Architetture Software[LAR] Cap. 15-16-17 
14*Diagrammi di Interazione in UML[LAR] Cap. 18 - [FOW] Cap. 4-12 
15*Diagrammi delle Classi in UML[LAR] Cap. 19 - [FOW] Cap. 3-5 
16*Pattern GRASP: progettazione di oggetti con responsabilità[LAR] Cap. 20 
17 Esempi di progettazione di oggetti con i pattern GRASP[LAR] Cap. 21 
18*Trasformare i progetti in codice[LAR] Cap. 22 - 23 
19 Dall'iterazione 1 all'iterazione 2[LAR] Cap. 26 - 27 
20*Ulteriori pattern GRASP[LAR] Cap. 28 
21*Raffinamento Modello di Dominio[LAR] Cap. 34 - [FOW] Cap. 5 
22*Diagrammi di attività in UML[LAR] Cap. 31 - [FOW] Cap. 11 
23*Diagrammi di macchina a stati in UML[LAR] Cap. 32 - [FOW] Cap. 10 
24*Introduzione ai Design Pattern GoF[GAM] Cap. 1 
25*Pattern creazionali[GAM] Cap. 3 
26*Pattern strutturali[GAM] Cap. 4 
27*Pattern comportamentali[GAM] Cap. 5 
28 Esempi sui pattern[LAR] Cap. 29 
29*Correlare i casi d'uso. Use Case Diagram in UML[LAR] Cap. 33 - [FOW] Cap. 9 
30*Diagrammi di deployment e dei componenti in UML [LAR] Cap. 41 - [FOW] Cap. 8-14 
31*Introduzione al testing del SoftwareDispense del docente - [SOM] Cap. 22 
32 Criteri di testingDispense del docente - [SOM] Cap. 23 
33*Automazione dei testDispense del docente 
34*JUnitDispense del docente 
35*Gestione della configurazione del software.
Sistemi di controllo delle versioni
Dispense del docente 
36*SVNDispense del docente 
37*GitDispense del docente 
38 Dispense del docenteDispense del docente 
39 Evoluzione dei sistemi distribuiti e tecnologie di middlewareDispense del docente 
40 Cenni su Web Service e Architetture Orientate ai ServiziDispense del docente 
* Conoscenze minime irrinunciabili per il superamento dell'esame.

N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.


Verifica dell'apprendimento


MODALITÀ DI VERIFICA DELL'APPRENDIMENTO

L'esame consiste in:

Valutazione esame complessivo: Elaborato 70% - Prova orale 30%


PROVE IN ITINERE

Non previste


PROVE DI FINE CORSO

Non prevista


ESEMPI DI DOMANDE E/O ESERCIZI FREQUENTI

Esercizi tipici ed esempi di elaborati sono presenti sul portale di Ateneo Studium.




Apri in formato Pdf English version