CODICE 101807 ANNO ACCADEMICO 2025/2026 CFU 9 cfu anno 1 COMPUTER SCIENCE 11964 (LM-18) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE INF/01 LINGUA Inglese SEDE GENOVA PERIODO 1° Semestre PRESENTAZIONE Questo corso si propone di introdurre e analizzare le tecniche attuali per la progettazione e la modellazione di sistemi software su larga scala. Il corso guiderà gli studenti nella loro applicazione, con particolare attenzione alla selezione delle varianti più appropriate per specifici progetti software. Sarà inoltre incoraggiato l'apprendimento autonomo di argomenti avanzati, in linea con i principi dell'apprendimento continuo. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Apprendere attraverso l'esperienza pratica gli strumenti concettuali di base per la progettazione e la modellazione dei sistemi software, acquisendo competenze comunicative e capacità di apprendimento continuo. OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Al termine di questo corso, gli studenti più attenti saranno in grado di: Conoscenza e comprensione: Comprendere i principi e le tecniche fondamentali della modellazione visuale del software basata su UML. Identificare e descrivere i concetti chiave della progettazione, come pattern, componenti riutilizzabili, tattiche e framework per lo sviluppo di sistemi software. Spiegare i concetti chiave dell'architettura dei sistemi software e le relative implicazioni progettuali. Applicare conoscenza e comprensione: Applicare la modellazione visuale basata su UML a supporto della progettazione architetturale di un sistema software. Utilizzare pattern, tattiche, architetture di riferimento, framework e componenti riutilizzabili specifici nello sviluppo concreto di sistemi software. Progettare l'architettura di un sistema software, selezionando le soluzioni più appropriate in base ai requisiti. Autonomia di giudizio: Valutare criticamente diverse soluzioni alternative applicabili a problemi di progettazione architetturale per selezionare quelle più adatte a un progetto specifico. Analizzare e risolvere problemi di progettazione e qualità relativi alle architetture software. Competenze comunicative: Presentare in modo efficace un argomento tecnico complesso a un gruppo di colleghi, dimostrando chiarezza e capacità argomentative. Discutere e collaborare in team su problemi di progettazione software. Competenze di apprendimento: Esplorare in modo autonomo specifici argomenti tecnici relativi al programma del corso. Valutare la loro comprensione e individuare aree di apprendimento continuo, nell'ottica di una formazione continua. PREREQUISITI Per partecipare con successo a questo corso, gli studenti devono possedere solide conoscenze di base di: Programmazione (in particolare orientata agli oggetti). Database. Sviluppo di applicazioni web. Utilizzo della notazione di modellazione UML. Ingegneria del software (terminologia e principali attività di sviluppo). Per i primi quattro argomenti elencati, oltre alle conoscenze teoriche, sono richieste anche comprovate competenze pratiche. MODALITA' DIDATTICHE Il corso si avvarrà di una combinazione di: Lezioni frontali: per la presentazione dei concetti e delle tecniche fondamentali nella progettazione e modellazione del software. Attività pratiche e di laboratorio: per consentire agli studenti di applicare i concetti appresi, comprendere le sfide pratiche e sviluppare competenze concrete. Studio individuale e presentazione autonoma: gli studenti saranno incoraggiati ad approfondire autonomamente un argomento correlato al programma e a presentarlo ai propri colleghi, sviluppando così le proprie capacità di autoapprendimento e di comunicazione. PROGRAMMA/CONTENUTO Il corso tratterà i seguenti argomenti: Revisione dei requisiti software: Requisiti funzionali e non funzionali. Specifica dei requisiti mediante casi d'uso. Specifica dei requisiti orientata agli obiettivi. Modellazione visuale del software: Ripasso dei concetti fondamentali della modellazione. Studio dei diagrammi UML più frequentemente utilizzati nelle attività pratiche del corso. Architetture dei sistemi software: Principi e concetti di base dell'architettura software. Progettazione di architetture di sistemi software. Metodo di progettazione basata sugli attributi (AAD) con casi di studio. Varie categorie di concetti di progettazione (vari tipi di pattern, tattiche, architetture di riferimento, framework e componenti riutilizzabili). TESTI/BIBLIOGRAFIA Testo di riferimento: Cervantes, H., e Kazman, R. (2016). Designing Software Architectures: A Practical Approach. Addison-Wesley. Bibliografia aggiuntiva: Ulteriore bibliografia e risorse online saranno indicate e discusse durante le lezioni e rese disponibili sulla pagina AulaWeb del corso. DOCENTI E COMMISSIONI GIANNA REGGIO Ricevimento: Su appuntamento, da richiedere con una email MAURA CERIOLI Ricevimento: Su appuntamento o via mail. LEZIONI INIZIO LEZIONI In accordo con il calendario didattico approvato dal Consiglio dei Corsi di Studio in Informatica: https://corsi.unige.it/corsi/11964/studenti-orario Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME L'insegnamento è erogato integralmente in lingua Inglese. Per tutte le informazioni relative, si veda la corrispondente sezione in lingua Inglese. MODALITA' DI ACCERTAMENTO L'insegnamento è erogato integralmente in lingua Inglese. Per tutte le informazioni relative, si veda la corrispondente sezione in lingua Inglese. ALTRE INFORMAZIONI Per ulteriori informazioni, consultare il modulo Aulaweb dell'insegnamento o contattare il docente. OpenBadge PRO3 - Soft skills - Imparare a imparare avanzato 1 - A