Programma di Costruzione Del Software:

DOCENTI

Prof. Ing. Giovanni Cantone             3 CFU

Dott. Ing. Manuel Mastrofini, PhD   3 CFU

 

OBIETTIVI FORMATVI E RISULTATI DI APPRENDIMENTO ATTESI

OBIETTIVI FORMATIVI: Tecniche industriali di costruzione di software con sviluppo agile in gruppo ampio e con attività di laboratorio in presenza. Metriche software: loro ontologie, sviluppo e impiego. Metodi e strategie per il miglioramento continuo della qualità basato su metriche. Elementi di data privacy by default & by design.

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. Software Data Privacy.

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. Software data privacy by design and by default. Applicazione di IA nello sviluppo software e analisi di documenti.

AUTONOMIA DI GIUDIZIO: Utilità di una metrica e stadio del suo ciclo di vita. Valutazione del grado di realizzazione di obiettivi strategici di qualità. Capacità di un software a proteggere la privacy dei propri dati secondo le caratteristiche degli stessi. Esperienza con lavoro di gruppo.

 

PREREQUISITI

Basi di dati. Ingegneria del Software  (comprensivo di UML, Software patterns, Software 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.

Il programma del corso include:

  1. Evoluzione delle ontologie per la misurazione del software.
  2. Ulteriori pattern per la progettazione del software.
  3. Richiami di architetture software e linguaggi per il web
  4. Tecniche avanzate di storicizzazione dei dati: pattern, tecniche e strumenti
  5. Elementi sull'approccio Agile per lo sviluppo software e su Scrum, per quanto necessario allo sviluppo del progetto del corso
  6. Progettazione di back-end: pattern, tecniche e strumenti
  7. Progettazione di front-end: pattern, tecniche e strumenti
  8. Data privacy by default e by design
  9. Impiego di strumenti di IA nello sviluppo del SW e nella ricerca di e in documenti
  10. Dalla definizione dei requisiti allo sviluppo di un progetto di taglio industriale inclusivo di quanto qui sopra elencato e di quanto riportato in pre-requisiti.

 

ARGOMENTI E LORO PESI

  • La misura del software: ontologie e produzione di modelli (30%; 30%)
  • 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. (40%; 40%)
  • Complementi (30%, 100%)
    • Elementi di data privacy by default e by design
    • Framework per la persistenza: da Hibernate a Spring
    • Architettura e sviluppo di applicazioni web
    • Sviluppo software orientato ai Servizi: da SOAP a RESTfull per la progettazione e implementazione di Front-end: AngularJS | Angular | ReactJS 
    • Impiego di misure software come componenti funzionali di prodotti software
    • Stack tecnologici a supporto del "Big-data! e relativo impiego
    • Introduzione all'organizzazione e all'impiego di ulteriori tecnologie software: Adobe XD, Git, IntelliJIdea, Slack, Miro, Atlassian Jira, Weka, etc.
    • Impiego di strumenti di IA

 

ATTIVITA’ FACOLTATIVE CON DOCENTI

  • 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

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

 

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

PROVA SCRITTA. Il 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à e/o nel progetto del corso.

INCONTRI INTERMEDI. Gli studenti vengono organizzati in gruppo (Scrum team) di sviluppo di massimo dieci persone. Un gruppo incontra in classe, tipicamente con frequenza settimanale, i docenti, eventualmente anche nei ruoli Scrum di Product-Owner e Scrum-Master, i quali assegnano i compiti da sviluppare entro il prossimo incontro. Ciascun membro del team, a turno, verifica e discute gli incrementi realizzati con i docenti, i quali li accettano, e con gli di ulteriori esperti industriali e di dominio applicativo eventualmente presenti. Il team riceve quindi la specifica degli incrementi da realizzare nel successivo periodo (Sprint).

INCONTRO FINALE. Codice e documentazione alla mano, i docenti discutono con ogni studente di argomenti riguardanti tutto lo sviluppo del progetto.

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.
  • GDPR e Fondazione per il Codice di condotta - software

 

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 trenta ore del corso, più eventuali altre facoltative, saranno tenute in laboratorio da entrambi i docenti. Qualche ora del corso sarà dedicate all’approccio Agile, in quanto, per lo sviluppo del progetto del corso, è seguito un approccio Scrum-like. Le restanti ore saranno dedicate alla progettazione software. Delle ore di progettazione, sei saranno dedicate alla progettazione di front-end. La parte di progettazione esecutiva e sviluppo è tenuta sempre in laboratorio dai 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.

Gli studenti partecipano attivamente a un gruppo di lavoro costituito, secondo Scrum, da massimo dieci membri. 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 motivate e possibilmente anticipate a un docente. Gli studenti si incontrano autonomamente altre volte a settimana per lo sviluppo dell'incremento 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

Una volta a settimana in aula. Alcune ore sono altresì dedicate alla descrizione dell’approccio Agile. Per il resto, gli studenti, organizzati in gruppo di sviluppo Agile-Scrum, incontrano in laboratorio almeno due docenti e eventuali istruttori volontari ed esperti di dominio una volta a settimana.

 

MODALITA’ DI VALUTAZIONE

Il voto finale viene assegnato dai docenti a ciascuno degli studenti frequentanti in occasione di incontri formalmente fissati, fin dal primo giorno del corso, alla fine semestre.