Salta al contenuto principale
CODICE 109208
ANNO ACCADEMICO 2023/2024
CFU
SETTORE SCIENTIFICO DISCIPLINARE INF/01
LINGUA Italiano
SEDE
  • GENOVA
PERIODO 1° Semestre
MATERIALE DIDATTICO AULAWEB

PRESENTAZIONE

L’insegnamento fornisce un’introduzione di alcuni strumenti (ovvero tool/framework) e servizi utili allo sviluppo e gestione del software, con l'obiettivo di formare figure professionali che contribuiscano alla realizzazione di progetti software avendo anche consapevolezza delle esigenze gestionali.

OBIETTIVI E CONTENUTI

OBIETTIVI FORMATIVI

L'insegnamento ha l'obiettivo primario di aumentare la consapevolezza degli studenti sugli strumenti e servizi legati allo sviluppo e gestione del software, con particolare riferimento agli aspetti di: sviluppo e debugging del codice realizzato tramite ambienti di sviluppo integrato (IDE), building automatico, gestione delle dipendenze nei progetti, configuration management e versioning, testing, continuos integration e delivery/deployment.

OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

Questo insegnamento riprende alcuni strumenti per lo sviluppo e gestione del software già introdotti durante il corso di laurea (ad esempio IDE e sistemi di versioning, quali Git) e li integra con altri strumenti e servizi che possono essere utilizzati per effettuare il building automatico, gestire le dipendenze, effettuare l’integrazione continua del codice (Continuos Integration) e il deployment.

L’insegnamento è pratico ed ha come obiettivo formativo quello di introdurre gli studenti allo sviluppo moderno del software così come viene svolto in un ambito lavorativo reale.

Al termine dell’insegnamento, lo studente sarà in grado di:

  • Utilizzare un IDE (ad esempio Eclipse IDE o Visual Studio Code) per svolgere alcuni task, quali: creare un progetto software, effettuare le operazioni di import/export di un progetto, eseguire il running e il debugging di un programma, eseguire il refactoring del codice, gestire le dipendenze, eseguire una testsuite di casi di test di unità;
  • Utilizzare uno strumento di gestione delle dipendenze e building automatico (ad esempio Maven o Gradle) per svolgere task quali: compilazione, packaging, esecuzione dei test, generazione della documentazione;
  • Utilizzare un sistema per il controllo di versione (ad esempio Git) ed effettuare l’integrazione continua del codice tramite piattaforme Web tali come, ad esempio, GitHub o GitLab;
  • Automatizzare le diverse fasi del ciclo di vita del software, dalla compilazione al testing e infine al deployment attraverso CI tool quali, ad esempio, Jenkins o GitHub Actions;
  • Creare, mantenere e utilizzare i container (ad esempio Docker container) ed effettuare il deploy di un container su un nodo in modo automatico. I container sono una tecnologia utilizzata per raggruppare un’applicazione con tutti i file necessari in un unico ambiente di runtime. Il container può essere facilmente deployato ed eseguito su diveri sistemi operativi.

PREREQUISITI

  • Conscenze dei fondamenti della programmazione;
  • Conoscenza di un linguaggio di programmazione orientato agli oggetti (ad esempio Java e/o C#);
  • Conoscenze base di Ingegneria del software. Risulta utile possedere alcune conoscenze e capacità di comprensione della terminologia dell'Ingegneria del software e delle tecniche di base di gestione del processo di sviluppo del software, di progettazione del software e di verifica e convalida.

MODALITA' DIDATTICHE

Lezioni pratiche di laboratorio svolte in piccoli Team (2/3 studenti). Ogni strumento trattato verrà corredato da immediata sperimentazione pratica, al fine di acquisire rapidamente confidenza e manualità. I laboratori saranno guidati e le attività integrative saranno rese disponibili su AulaWeb.

AulaWeb verrà usata per tre scopi: come repository del materiale del corso; come canale per le comunicazioni burocratiche, le spiegazioni e le discussioni inerenti il corso; e infine per facilitare il lavoro di gruppo.

PROGRAMMA/CONTENUTO

L'insegnamento, che è di natura pratica, introduce alcuni (e a diverso livello di dettaglio di approfondimento) tra i seguenti strumenti/ambienti e servizi per lo sviluppo e gestione del software:

  • Ambienti di sviluppo integrato (ad esempio Eclipse IDE o Visual Studio Code);
  • Strumenti di gestione delle dipendenze e building automatico (ad esempio Maven o Gradle);
  • Sistemi per il controllo di versione (ad esempio Git);
  • Servizi di hosting per progetti software (ad esempio GitHub o GitLab);
  • Strumenti per automatizzare il flusso di lavoro degli sviluppatori, come ad esempio l’integrazione continua e il testing (ad esempio Jenkins o GitHub Actions);
  • Strumenti per la creazione ed utilizzo di container (ad esempio Docker);
  • Strumenti per effettuare il deployment (ad esempio Heroku);

Al termine del corso lo studente possiederà conoscenze specialistiche avanzate nell'ambito dello sviluppo e gestione dei moderni sistemi software. In particolare sarà in grado di:

  • selezionare alcuni tra gli strumenti più popolari per lo sviluppo e gestione del software;
  • impostare efficacemente processi di sviluppo, testing e manutenzione di software basati su meccanismi avanzati di continuous integration

TESTI/BIBLIOGRAFIA

Documentazione online dei vari strumenti e servizi selezionati.

DOCENTI E COMMISSIONI

Commissione d'esame

FILIPPO RICCA (Presidente)

MAURA CERIOLI

MAURIZIO LEOTTA (Presidente Supplente)

LEZIONI

INIZIO LEZIONI

In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica

Orari delle lezioni

L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy

ESAMI

MODALITA' D'ESAME

L'obiettivo della procedura di verifica consiste nel quantificare, per ogni studente, il livello di raggiungimento degli obiettivi formativi precedentemente indicati. La procedura di verifica consiste nella valutazione di alcuni laboratori guidati e in una prova scritta.

L'esame è composto dalle seguenti seguenti attività

  1. Attività di laboratorio
  2. Scritto

Attività di laboratorio

L'insegnamento prevede delle attività di laboratorio da svolgersi in gruppo. Per alcune di queste attività verrà richiesta la consegna del lavoro svolto. Per altre verrà semplicemente monitorata la partecipazione degli studenti. Attività alternative da consegnare tramite AulaWeb verranno proposte a chi (es. studenti lavoratori) è impossibilitato a frequentare le attività in laboratorio.

Scritto

La prova scritta sarà costituita da domande a risposta multipla. Le domande saranno sia di tipo teorico che pratico e verteranno sugli argomenti/strumenti trattati a lezione. Durante le lezioni verranno discussi alcuni esempi di possibili domande ed esercizi per ogni argomento, in modo che a fine corso sia chiara la tipologia di prova.

MODALITA' DI ACCERTAMENTO

L'attività di laboratorio mira ad accertare: (1) la conoscenza degli strumenti proposti e (2) le abilità collaborative nel risolvere problemi nell'ambito delle tematiche affrontate nel corso.

Lo scritto ha il duplice obbiettivo di verificare la conoscenza degli aspetti di base della disciplina e appurare la partecipazione degli studenti ai laboratori guidati. In entrambe le prove verranno considerate le conoscenze specifiche della materia e la capacità di ragionamento critico.

 

 

Calendario appelli

Data appello Orario Luogo Tipologia Note
18/01/2024 09:30 GENOVA Laboratorio
12/02/2024 09:30 GENOVA Laboratorio
11/06/2024 09:30 GENOVA Laboratorio
17/07/2024 09:30 GENOVA Laboratorio
19/09/2024 09:30 GENOVA Laboratorio