logo

Ingegneria del Software
Corso di Laurea in Informatica
Università di Padova, a.a. 2020/2021

Docente: Tullio Vardanega

Ultimo aggiornamento: 21 novembre 2020, ore 19:15
[pubblicato materiale lezioni settimana 9]
Documento collaborativo per la formazione dei gruppi
Scadenze tassative di registrazione studenti nel documento collaborativo:
I lotto: 21 ottobre 2020, ore 18 [termini scaduti]
II lotto: 27 febbraio 2021, ore 18

Presentazione del corso

Obiettivi

L'insegnamento di Ingegneria del Software si sviluppa su due semestri, collocando la maggior parte della didattica all'interno del I semestre, e parte delle attività pratiche nel II semestre.

L'insegnamento si propone di fornire agli studenti i principali strumenti metodologici per affrontare un impegnativo progetto didattico di sviluppo software da svolgersi in gruppo, secondo metodi professionali di conduzione e di gestione del rapporto cliente-fornitore.

L'insegnamento si concentra sull'illustrazione e la sistematizzazione delle conoscenze essenziali della disciplina detta Software Engineering. A tal fine, il corso illustra ciascuna delle aree di conoscenza rilevanti nell'ambito, correlandovi le regole metodologiche cui gli studenti dovranno conformarsi.

Il progetto didattico si svolgerà secondo il seguente calendario:

In funzione di questo impegno, gli studenti che soddisfano i prerequisiti si costituiranno in gruppi di progetto, secondo un protocollo fissato dal docente in sessione pubblica. I gruppi così formati dovranno poi competere per l'aggiudicazione del capitolato di loro interesse.

L'aggiudicazione di un appalto trasforma i gruppi vincitori dell'appalto in fornitori ufficiali, impegnati a consegnare al docente il prodotto proposto entro i tempi e i costi specificati nella corrispondente offerta tecnico-economica.

Lo svolgimento del progetto didattico verrà accompagnato da specifiche revisioni di avanzamento di progetto, secondo la prassi adottata in diversi standard internazionali.
Per poter concludere regolarmente il proprio progetto didattico, ogni gruppo dovrà sostenere e superare tre successive revisioni di avanzamento, l'ultima delle quali includerà il collaudo del prodotto sviluppato. Ogni gruppo fornitore potrà collocare liberamente la propria serie di revisioni di avanzamento nelle date di calendario sotto riportate:

L'accettazione finale del prodotto sviluppato da ciascun gruppo nel progetto didattico soddisferà una delle due condizioni necessarie al superamento dell'esame. L'altra condizione richiede il superamento di una prova scritta individuale, che ciascuno studente potrà sostenere nelle date sopra indicate. Per ogni studente partecipante, la valutazione numerica del progetto didattico varrà il 60% del voto complessivo individuale, determinato dalla media pesata della valutazione conseguita dal proprio gruppo di progetto in ognuna delle tre revisioni di avanzamento, con una quota di ponderazione legata al rapporto tra l'impegno medio atteso e l'impegno effettivo erogato dallo studente. Il rimanente 40% verrà determinato dalla valutazione della prova scritta individuale.

L'intero svolgimento dell'insegnamento Ingegneria del Software ha un "peso" di 13 CFU, ripartiti come segue:

Propedeuticità obbligatorie strette

Programmazione a Oggetti, Basi di Dati.

Note esplicative: Il mancato soddisfacimento della propedeuticità Programmazione a Oggetti (o Programmazione 2 del V/O) impedisce tassativamente la partecipazione degli studenti alla prova scritta individuale di IS, il cui superamento è obbligatorio per il superamento dell'esame.
Possono però partecipare alle attività di progetto gli studenti che, senza aver superato l'esame di Programmazione a Oggetti (o Programmazione 2), ne hanno superato una prova scritta.

Il mancato soddisfacimento di tali propedeuticità non consentirà la partecipazione dello studente al progetto didattico.

Materiale didattico

Il materiale didattico presentato durante le lezioni sarà progressivamente pubblicato, in formato elettronico, tramite collegamento alla lezione corrispondente.

Il principale riferimento bibliografico di supporto al corso è il seguente:

  1. Guide to the Software Engineering Body of Knowledge
    IEEE Computer Society. Software Engineering Coordinating Committee (V3 2014)
    (Le aree di conoscenza corrispondenti agli argomenti trattati a lezione sono riferite nel calendario delle lezioni)

Sono inoltre consigliati i seguenti testi:

Calendario delle lezioni

Settimana

Data

Lezione

Docente

Contenuto

SWEBOK

Sommerville
1
 28 settembre
T1
Vardanega Introduzione
Per approfondire #1: No Silver Bullet. Essence and Accidents of Software Engineering
Per approfondire #2: ACM Code of Ethics

§1

 01 ottobre

T2

Vardanega


 02 ottobre

T3

Vardanega

Processi di ciclo di vita del software
Per approfondire #3: Origine, formazione ed evoluzione degli standard di processo
Per approfondire #4: Lo standard ISO/IEC 12207:1995
§8 §2
2 05 ottobre T4 Vardanega
Continuazione lezione 3


08 ottobre
T5
Vardanega

Il ciclo di vita del software Per approfondire #5: I modelli agili
Per approfondire #6: Le schede SEMAT (1, 2)


§3
09 ottobre
T6
Vardanega

Gestione di progetto Per approfondire #7: Rapporto dello Standish Group sul Progetto CHAOS
Per approfondire #8: Barry W. Bohem su 40 anni di modelli di stima dei costi software
Per approfondire #9: Gestione delle persone
Per approfondire #10: Diagrammi Gantt e PERT
Per approfondire #11: Modello di descrizione di Work Package

§7,12 §22-23
3
12 ottobre FC1 Vardanega Flipped classroom sul tema Amministrazione di progetto
Studio autonomo e discussione in aula di strumenti di (1) versionamento, (2) configurazione, (3) pianificazione, (4)
coordinamento.
Spunti di studio
Per approfondire #12: Strumenti di collaborazione
§6 §24-25
15 ottobre T7 Vardanega Analisi dei requisiti
Per approfondire #13: Struttura del documento di specifica dei requisiti secondo IEEE 830-1998
§1 §4
16 ottobre T8 Vardanega
4
19 ottobre E1 Cardin UML
Diagrammi delle classi
Diagrammi dei package



22 ottobre P1 Vardanega Regolamento del progetto didattico


22 ottobre
(16:30-18:00)
P2 Vardanega Formazione gruppi I lotto

23 ottobre T9 Vardanega Progettazione
Per approfondire #14
: Fan-in e fan-out
Per approfondire #15
: Definizioni di architettura software
Per approfondire #16: Christopher Alexander sulla teoria dei pattern
§2-3 §6-7
5
26 ottobre
E2 Cardin
UML
Diagrammi di attività
Diagrammi di sequenza



29 ottobre T10 Vardanega Continuazione lezione T9

30 ottobre T11
Vardanega
Continuazione lezione T9


6
02 novembre E3 Cardin UML
Diagrammi dei casi d'uso


05 novembre P3
Vardanega
Presentazione dei capitolati d'appalto
Regolamento aggiudicazione capitolati
Regolamento organigramma



06 novembre P4
Vardanega
Preparazione alla FC2

7
09 novembre E4 Cardin Rivisitazione dei principi OOP
Per approfondire #17: dal blog di R. Cardin
[Lezione posticipata]


12 novembre FC2 Vardanega Flipped classroom sul tema documentazione
Studio autonomo, presentazione e discussione in aula di soluzioni per la scrittura collaborativa, la verifica, la salvaguardia di alcuni documenti di progetto.
Spunti di studio


12 novembre
(17:00-18:00)
P4 Sync Lab Seminario tecnologico: strumenti di apprendimento automatico (ML)

13 novembre T12
Vardanega
Qualità di prodotto §10 §24
8
16 novembre E5 Cardin [Argomento rimandato. Oggi continuazione della lezione E3]
Dipendenza: il distruttore dell'OOP
Per approfondire #18: dal blog di R.Cardin (parte 1, parte 2)


19 novembre T13
Vardanega
Qualità di processo
Per approfondire #19: Elementi dello standard ISO 9000
Per approfondire #20: Sintesi di ISO IEC 90003:2004


19 novembre
(12:30-13:30)
P5 Zucchetti Seminario tecnologico: esempi di visualizzazioni multidimensionali

20 novembre T14
Vardanega Verifica e validazione: introduzione
Per approfondire #21: Martin Fowler sui "test double"
Per approfondire #22: Fagan Inspection & Walkthrough
§5
9
23 novembre E6 Cardin [Argomento rimandato. Oggi lezione E4]
Design pattern strutturali:
Decorator, Proxy, Facade, Adapter


23 novembre
(16:30-18:00)
P6 Vardanega Incontro con i gruppi del I lotto

25 novembre
(17:00-18:00)
P7 Imola Informatica Seminario tecnologico: Docker, Kubernetes, Blockchain

26 novembre T15
Vardanega
Verifica e validazione: analisi statica

27 novembre T16 Vardanega Verifica e validazione: analisi dinamica
Per approfondire #23: Bertrand Meyer sul testing
Per approfondire #24
: Effetti indesiderabili del dynamic binding
§4
§8
10
30 novembre
E7 Cardin Design pattern creazionali:
Singleton, Builder, Abstract Factory



03 dicembre T17 Vardanega Continuazione lezione T16


04 dicembre
(12:30-13:30)
P8 Zero12
Seminario tecnologico: introduzione al servizio AppSync di AWS



04 dicembre
(17:00-18:00)
P9 Sanmarco
Informatica
Seminario tecnologico: uso di Docker in architetture di sistema


Questionario anonimo intermedio: alla pagina Moodle dell'insegnamento, dal 30/11/2020 al 18/12/2020
Valutazione della didattica: precondizione alla registrazione del voto finale, dal 06/05/2021 al 17/07/2021
11
07 dicembre
E8
Cardin
Design pattern comportamentali:
Observer, Template Method, Command, Strategy, Iterator


11 dicembre FC3 Vardanega Flipped classroom sul tema Modelli di sviluppo avanzati
Studio autonomo, presentazione e discussione in aula di modelli di sviluppo agile, e di principi SEMAT

§3, §16
12
14 dicembre E9 Cardin
Design pattern architetturali:
Dependency Injection


17 dicembre
(16:30-18:00)
P10 Vardanega Incontro con i gruppi del I lotto

13 21 dicembre E10
Cardin Design pattern architetturali:
Model View Controller e derivati



14
08 gennaio T18 Vardanega Riepilogazione argomenti
Informazioni sulla prova scritta


15
14 gennaio -
Vardanega Incontro informativo sugli stage curricolari


RR
18 gennaio 2021
P11

Revisione dei Requisiti (RR)
Prerequisito per sostenere la revisione sarà l'aver costituito i gruppi di progetto, aver distribuito i ruoli al loro interno, e aver presentato tutta la documentazione d'ingresso richiesta entro il termine tassativo:

ore 17:00 di lunedì 11 gennaio 2021

Regole di partecipazione alle revisioni

Esito I convocazione RR


Calendario II semestre

Note pratiche

Le lezioni indicate in calendario si terranno nelle aule e con l'orario reperibili con l'app Orari-Unipd.

Il ricevimento studenti si tiene per appuntamento, individuale o di gruppo, in modalità remota.

Regole di partecipazione alle revisioni di avanzamento di progetto

Le revisioni di avanzamento progetto si dividono in:

Le revisioni formali sono bloccanti: la RR determina l'accesso del gruppo al progetto didattico; la RA ne sancisce il completamento.
L'ammissione alla RA è condizionata al sostenimento della RQ, con esito almeno sufficiente.

Le revisioni di progresso non sono bloccanti, ovvero il gruppo potrà continuare il proprio lavoro di progetto, ma un eventuale esito negativo comporterà una penalità di punteggio commisurata alla gravità dell'insufficienza, da scontare nella valutazione finale.

La partecipazione di un gruppo a una revisione di progetto si svolgerà come segue:

Calendario degli appelli d'esame

L'esame di questo insegnamento è costituito dalla valutazione combinata delle attività di progetto didattico collaborativo, secondo il calendario di revisioni di avanzamento riportato qui, e di una prova scritta comprendente una parte individuale e una collaborativa.

Come riportato qui, la prova scritta prevede 6 appelli, i primi due dei quali tenuti all'interno del II semestre, prima dell'apertura della corrispondente sessione di esami, al fine di facilitare il soddisfacimento dei prerequisiti di attivazione dello stage curricolare. Per questo motivo, l'iscrizione a tali due appelli non potrà avvenire tramite Uniweb, ma attraverso richiesta esplicita al docente.

Valid HTML 4.0
          Transitional

L