Salta al contenuto principale
CODICE 109208
ANNO ACCADEMICO 2024/2025
CFU
SETTORE SCIENTIFICO DISCIPLINARE INF/01
LINGUA Italiano
SEDE
  • GENOVA
PERIODO 2° 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

Lo scopo primario del corso è quello di aumentare la consapevolezza degli studenti sugli strumenti e i servizi utilizzati nello sviluppo e nella gestione del software. Oltre a ciò, si mira a fornire loro competenze pratiche per l'efficace utilizzo di tali risorse. Il corso approfondirà inoltre i concetti fondamentali del ciclo di vita del software e illustrerà come tali strumenti possano essere integrati per ottimizzare il processo di sviluppo e gestione del software.

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 ad altri strumenti e servizi che possono essere utilizzati per la gestione e il monitoraggio di progetti software, effettuare il building automatico, effettuare l’integrazione continua del codice (CI) e il deployment, ottimizzare il processo di sviluppo software. 

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/la studentessa sarà in grado di:

  • Utilizzare uno strumento per la gestione e il monitoraggio di progetti software (quali ad esempio Jira o Azure Boards), pianificando il lavoro in task da eseguire secondo una metodologia Agile (come Scrum o Kanban), ottimizzando i flussi di lavoro attraverso strumenti automatici e utilizzando i principali strumenti di monitoraggio;
  • 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 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;
  • Utilizzare metriche ingegneristiche, come le metriche DORA o il tempo di ciclo, per ottimizzare il processo di sviluppo software, utilizzando i dati disponibili nei sistemi di gestione e monitoraggio dei progetti (come i già menzionati JIra o Azure Boards) e nelle piattaforme Web che consentono l’hosting di progetti software (come GitHub o GitLab);
  • 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#) o di scripting (ad esempio JavaScript e/o Python);
  • 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 frontali e attività 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 organizzative, 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:

  • Strumenti per la gestione di progetti software (ad esempio Jira o Azure Boards);
  • Ambienti di sviluppo integrato (ad esempio Eclipse IDE o Visual Studio Code);
  • 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);
  • Metriche ingegneristiche per ottimizzare il processo di sviluppo software;
  • Strumenti per la creazione ed utilizzo di container (ad esempio Docker).

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

CRISTIANO SPADARO (Presidente)

MAURIZIO LEOTTA

FILIPPO RICCA (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
16/01/2025 09:30 GENOVA Laboratorio
10/02/2025 09:30 GENOVA Laboratorio
05/06/2025 09:30 GENOVA Scritto
18/06/2025 09:30 GENOVA Scritto
02/07/2025 09:30 GENOVA Scritto
17/09/2025 09:30 GENOVA Scritto