Progetto didattico

Motivazioni

Un corso di Ingegneria del Software sarebbe incompleto senza un progetto didattico: è bene che lo studente si scontri in prima persona con un progetto di gruppo che rispecchi la logica di relazione "cliente-fornitore". Nello specifico, le principali entità del progetto didattico sono:

Revisioni di avanzamento

Il progetto si estende nell'arco di uno o due semestri. Il docente potrebbe scegliere tra due approcci: l'approccio "chiavi in mano" (i gruppi sono lasciati liberi e il docente torna il giorno della consegna del prodotto); l'approccio per revisioni (più interattivo). L'approccio adottato è il secondo, molto più didattico. Quindi la principale modalità d'interazione tra gruppi e docente sono le revisioni di avanzamento, che sono quattro:

  1. Revisione dei Requisiti (RR);
  2. Revisione di Progettazione (RP);
  3. Revisione di Qualifica (RQ);
  4. Revisione di Accettazione (RA).

È importante notare che la logica sequenziale delle revisioni di avanzamento non implica che il modello di sviluppo scelto dai gruppi debba essere anch'esso sequenziale[2]!

Ricordiamo che ISO/IEC 12207 prevede due diversi tipi di processi di revisione: l'audit process e il joint review process. Alla prima classe appartengono le due revisioni esterne con effetto bloccante: RR e RA; alla seconda classe appartengono le due revisioni interne con valenza informativa: RP e RQ.

Documentazione

Tutto il progetto va documentato. In particolare, il fornitore deve documentare: le sue strategie di efficienza ed efficacia, nei documenti di strategia; le regole per attuare tali strategie, nelle Norme di Progetto. I documenti di strategia, che servono sia al fornitore sia al committente, sono:

Invece, le Norme di Progetto interessano solo il fornitore (e il docente) ma non il committente; esse servono a fissare il way of working.

In generale, i principali documenti del progetto didattico sono:

Possiamo suddividere i documenti anche tra interni (al gruppo) ed esterni. Documenti interni sono:

Documenti esterni sono:

Revisione dei Requisiti

Questa revisione ha la funzione di concordare con il cliente una visione condivisa del prodotto atteso. Tale visione è documentata nel documento di Analisi dei Requisiti, che studia i requisiti e i casi d'uso del prodotto da realizzare. I documenti valutati sono:

Revisione di Progettazione

Questa revisione può avvenire in una (sola) delle seguenti modalità:

  1. Revisione di Progettazione minima;
  2. Revisione di Progettazione massima.

La RP minima riguarda l'architettura del sistema ad alto livello; essa ha la funzione di accertare la realizzabilità del prodotto. I documenti valutati sono:

La RP massima riguarda l'architettura di dettaglio del sistema; essa ha la funzione di accordarsi sulle caratteristiche del prodotto da realizzare. I documenti valutati sono:

Revisione di Qualifica

Questa revisione ha la funzione di approvare l'esito finale delle verifiche e attivare quindi la validazione. I documenti valutati sono:

Revisione di Accettazione

Questa revisione ha la funzione di collaudare il sistema e di accertare il soddisfacimento di tutti i requisiti utente stabiliti nell'Analisi dei Requisiti. I documenti valutati sono le versioni definitive di:

Ore di lavoro

Le ore di lavoro si contano solo dopo la valutazione della RR; fino a quel momento, il tempo speso è tempo d'investimento non rendicontato (eventualmente registrato, ma non rendicontato). Le ore totali impiegate a progetto da ciascuna persona sono circa 25-30 ore di lavoro; a questo proposito, è bene notare come l'efficienza è proporzionale al rapporto tra ore di lavoro e ore effettive. L'impegno totale di ore rendicontabili presentate a consuntivo da ogni componente di un gruppo dovrà situarsi fra un minimo di 85 e un massimo di 105 ore produttive. Le ore rendicontabili non includono le attività di auto-formazione.

  1. Nota bene: il docente valuta i documenti e il prodotto, non il codice; questo può essere guardato ma non viene valutato.
  2. Anzi, il modello di sviluppo più gettonato dai gruppi è quello incrementale, non quello sequenziale.