Programma di Costruzione Del Software:

 

DOCENTI

Prof. Ing. Giovanni Cantone         3 CFU

Dott. Ing. Manuel Mastrofini, PhD   3 CFU

 

OBIETTIVI FORMATOVI E RISULTATI DI APPRENDIMENTO ATTESI

OBIETTIVI FORMATIVI: Tecniche industriali di costruzione di software con sviluppo agile in gruppo ampio e con attività di laboratorio anche distribuito. Metriche software: loro ontologie, sviluppo e impiego. Metodi e strategie per il miglioramento continuo della qualità basato su metriche.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE: Sviluppo e comprensione di progetti software per il web. Metriche per la misura del software. Pianificazione strategica e piano di misure.

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE: Applicazione di pattern progettuali allo sviluppo di applicazioni software per il web. Metriche per la misura del software. Pianificazione strategica basata su dati.

AUTONOMIA DI GIUDIZIO: Utilità di una metrica e stadio del suo ciclo di vita. Valutazione del grado di realizzazione di obiettivi strategici di qualità. Esperienza con lavoro di gruppo.

 

PREREQUISITI

Basi di dati. Ingegneria del Software I e II (comprensivi di UML, Software patterns, Sofware testing, Elementi di Machine Learning per l’Ingegneria del software). Elementi di architetture web e programmazione web. Sistemi distribuiti.

PROGRAMMA

Il programma del corso include:

  • Evoluzione delle ontologie per la misurazione del software.
  • Ulteriori pattern per la progettazione del software.
  • Richiami di architetture software e linguaggi per il web
  • Tecniche avanzate di storicizzazione dei dati: pattern, tecniche e strumenti
  • Aapproccio Scrum per lo sviluppo software
  • Progettazione di back-end: pattern, tecniche e strumenti
  • Progettazione di front-end: pattern, tecniche e strumenti
  • Dalla definizione dei requisiti allo sviluppo di un progetto di taglio industriale con approccio Scrum.

 

ARGOMENTI E LORO PESI

  • La misura del software: ontologie e produzione di modelli (47%)
  • Approcci Agile allo sviluppo del software (3%)
  • Costruzione software (50%)
  • Framework per la persistenza: da Hibernate a Spring
  • Architettura e sviluppo di applicazioni web
  • Sviluppo software orientato ai Servizi: da SOAP a RESTfull  
  • Framework per la progettazione e implementazione di Front-end: ReactJS 
  • Impiego di misure software come componenti funzionali di prodotti software
  • Introduzione all'organizzazione e all'impiego di ulteriori tecnologie software: Adobe XD, Git, IntelliJIdea, Slack, Miro, Atlassian Jira, Weka, etc.
  • Sviluppo di un progetto software di tipo industriale basandosi su Scrum e impiegando molte delle metodologie, tecniche e tecnologie erogate in questo e in precedenti corsi. I docenti, oltre a ruoli di Special Domain Expert, svolgeranno ruoli di Sensei, Scrum Coach, Scrum Master e di Product owner. Un istruttore di provenienza industriale sarà l'Esperto di Programmazione di Front-end. Eventuali esperti del dominio di impiego del prodotto fungeranno da consulenti del Product owner e del l'intero team.

ATTIVITA’ FACOLTATIVE CON DOCENTI

  • 2 ore settimanali per un totale di 10 ore circa su ulteriori approcci Agili
  • 2 ore a settimana in laboratorio per un totale di circa 30 ore su progetto, di cui fino a 10 dopo a fine dei corsi se richieste dagli studenti.

 

MODALITA’ DI VALUTAZIONE

  • Valutazione in itinere
    • Valutazione di progetto
    • Prova di laboratorio
    • Prova orale

DESCRIZIONE DELLE MODALITA’ E DEI CRITERI DI VERIFICA DELL’APPRENDIMENTO

Prova scritta finale. l candidato dimostra, in apposito incontro, di conoscere teoria e pratica delle metriche software, come presentate nel corso, e loro impiego in approcci di miglioramento continuo della qualità.

Verifiche intermedie. Essendo gli studenti organizzati in team di sviluppo di massimo dieci persone, essi incontrano i docenti, tipicamente con frequenza settimanale, in sessioni di avanzamento progettuale. Ciascun membro del team verifica e discute, con i docenti e con gli di ulteriori esperti industriali e di dominio applicativo eventualmente presenti, degli incrementi progettuali realizzati. Il team riceve quindi la specifica degli incrementi da realizzare nel successivo periodo. Tali verifiche intermedie sono necessariamente informali ma, se necessario, spronano lo studente a integrarsi maggiormente nel gruppo e fare di più e meglio.

Incontro finale. L'ultimo meeting è ufficialmente convocato. Codice e documentazione alla mano, i docenti discutono individualmente di tutto lo sviluppo con ogni membro.

 

 

TESTI ADOTTATI

Nessun testo specifico, le trasparenze e tutto il materiale sviluppato durante il corso sono messe a disposizione dello studente anche tramite video registrati nella piattaforma resa disponibile per la didattica dall'Università.

 

BIBLIOGRAFIA DI RIFERIMENTO

  • Trasparenze e altro materiale e link dal corso.
  • Registrazione delle lezioni e degli incontri Scrum.
  • V.R. Basili et al: GQM + Strategies: A Comprehensive Methodology for Aligning Business Strategies with Software Measurement. Fraunhofer IESE, Springer, 2014.
  • Parti di norme iSO su Sw. Measurement.

 

DESCRIZIONE DELLA MODALITA’ DI SVOLGIMENTO E METODI DIDATTICI ADOTTATI

Una lezione di due ore a settimana è tenuta ex catedra, su tematiche di misure software, da uno solo dei docenti, per un totale di circa trenta ore. Le altre sessanta ore del corso saranno tenute in laboratorio. Dieci ore del corso saranno dedicate all’approccio Agile. Le restanti cinquanta ore saranno dedicate alla progettazione software, salvo alcune altre lezioni su metriche. Delle ore di progettazione, otto saranno dedicate alla progettazione di front-end. La parte di progettazione esecutiva e sviluppo è tenuta sempre in laboratorio da almeno due docenti, nei ruoli di Senser e Product Owner e in quello di Scrum Master, rispettivamente, con in più eventuali istruttori industriali volontari ed esperti di dominio. Un terzo docente, compatibilmente con propri impegni professionali, svolgerà il ruolo di esperto di Scrum Mastering.

Gli studenti partecipano attivamente, costituendo essi il gruppo di lavoro secondo Scrum; nel caso – non desiderato e non sperato – di affluenza maggiore di quella tipica dei corsi elettivi, si organizzeranno più gruppi Scrum di lavoro. Di regola, la partecipazione degli studenti al gruppo di lavoro è in presenza e le assenze dovranno essere dagli stessi giustificate e possibilmente anticipate a un docente. Gli studenti possono incontrare i docenti per altre due ore a settimana sul progetto da sviluppare loro assegnato. Per la sperimentazione dello sviluppo con team distribuito, alcuni docenti, studenti o istruttori parteciperanno, volta per volta, da remoto. In qualche caso, ciò potrà accadere per tutto il team Scrum.

 

MODALITA’ DI FREQUENZA

La frequenza in presenza è obbligatoria.

DESCRIZIONE DELLA MODALITA’ DI FREQUENZA

Gli studenti sono organizzati in gruppo Scrum. Incontro con un docente una volta a settimana in classe. Incontro in laboratorio con almeno due docenti e con eventuali istruttori volontari ed esperti di dominio una volta a settimana. Altri incontri settimanali di tipo facoltativo, ciascuno della durata di due ore, sono proposti agli studenti.

MODALITA’ DI VALUTAZIONE

Il voto finale viene assegnato dai docenti a ciascuno degli studenti frequentanti in occasione di incontri formalmente schedulati alla fine del corso.