CODICE 111102 ANNO ACCADEMICO 2026/2027 CFU 6 cfu anno 1 COMPUTER ENGINEERING 11965 (LM-32) - GENOVA SETTORE SCIENTIFICO DISCIPLINARE IINF-05/A LINGUA Inglese SEDE GENOVA PERIODO 2° Semestre PRESENTAZIONE L'ingegneria del software è la branca dell'informatica che crea soluzioni pratiche ed economiche ai problemi di calcolo e di elaborazione delle informazioni. Questo corso presenta una raccolta di metodi con un approccio "ingegneristico" allo sviluppo di software. Verranno presentate metodologie per l'analisi, la progettazione, il test e l'implementazione di sistemi software grandi e complessi. OBIETTIVI E CONTENUTI OBIETTIVI FORMATIVI Software Engineering is a discipline that rules every aspect of the software development process. In other word is the application of Engineering to the Software. It is concerned with requirement specification, design, models, writing documentation and also writing unit tests, not just coding. Moreover it also provide metrics to quantify the quality of the product, i.e. the software developed. Software Development Templates, Requirement Analysis, UML Modeling Systems, Design Patterns, Verification and Validation, Time Template Specification Languages, Temporary Property Verification Algorithms, Modeling and Case Resolution using Model Checkers " OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO Al termine del corso gli studenti dovrebbero essere in grado di: Comprendere principi, concetti, metodi e tecniche dell'approccio dell'ingegneria del software alla produzione di software di qualità (in particolare per sistemi grandi dimensioni e complessi). Gestire un progetto di sviluppo software di medie dimensioni, inclusa la pianificazione e tutta la documentazione di supporto Compilare documenti di ingegneria del software come ad esempio documenti sui requisiti utente o il test planning Utilizzare strumenti per lavorare in gruppo come ad esempio git/github PREREQUISITI Non ci sono requisiti specifici. Il docente assume che gli studenti abbiano familiarità con i linguaggi di programmazione e le strutture dati, anche complesse. Questo corso propone metodologie di lavoro sia indipendente che cooperativo. Il linguaggio di implementazione utilizzato durante le lezioni è Java. L'esperienza di programmazione Java non è un prerequisito, perché si presume che, in qualità di professionisti del software, gli studenti abbiano la capacità di apprendere rapidamente nuovi linguaggi e strumenti. MODALITA' DIDATTICHE Durante il corso si alternano lezioni frontali a dimostrazioni pratiche dei concetti didattici appresi. Per ogni argomento sono disponibili sul sito principale del corso (aulaweb) un set di slides. Inoltre anche una serie di esempi pratici vengono utilizzati durante le lezioni e disponibili su github. Infine docente e studenti insieme durante il corso collaboreranno per risolvere un esempio pratico. Gli studenti con certificazioni valide per Disturbi Specifici dell’Apprendimento (DSA), per disabilità o altri bisogni educativi sono invitati a contattare il docente e il referente di Scuola per la disabilità all’inizio dell’insegnamento per concordare eventuali modalità didattiche che, nel rispetto degli obiettivi dell’insegnamento, tengano conto delle modalità di apprendimento individuali. I contatti del referente di Scuola per la disabilità sono disponibili al seguente link https://unige.it/commissioni/comitatoperlinclusionedeglistudenticondisabilita. PROGRAMMA/CONTENUTO Una (possibile) lista di argomenti trattati a lezione e': Introduction to Software Engineering Software Development life cycles: Process Models and Solution Life Cycle Phases,Traditional Life Cycle Models, CBSE, Agile Version control using Git & GitHub UML diagramming Requirement Engineering (User Requirement and Requirement Engineering for Critical Systems) User Requirement Specification Document Design Requirement Specification Document Coding Standards and best practices to follow in the development process Presenting software demonstration Software testing, Unit, and Functional Testing How to Plan the development phase TESTI/BIBLIOGRAFIA Libri per approfondire i concetti visti in aula R. Martin, Agile Software Development, Principles, Patterns, and Practices, Prentice Hall, 2002 (ISBN: 0-135-97444-5). C. Atkinson et al, Component-Based Product Line Engineering with UML, Addison-Wesley, 2001, (ISBN 0-201-73791-4). A. Cockburn, Writing Effective Use Cases, Addison Wesley, 2000 (ISBN: 0-201-70225-8). M. Fowler and K. Scott, UML Distilled: A Brief Guide to the Standard Object Modeling Language, 2nd Edition, Addison Wesley, 2002 (ISBN: 0-201-65783-X). I. Jacobson, G. Booch, and J. Rumbaugh, Unified Software Development Process, Addison Wesley, 1999, (ISBN: 0-201-57169-2). Software Engineering, Ian Sommerville, Pearson Editor DOCENTI E COMMISSIONI MASSIMO NARIZZANO Ricevimento: Il Docente riceve su appuntamento, sia di persona che in via telematica (Teams. MAURA CERIOLI Ricevimento: Su appuntamento o via mail. Commissione d'esame MASSIMO NARIZZANO (Presidente) ENRICO GIUNCHIGLIA ARMANDO TACCHELLA (Presidente Supplente) LEZIONI INIZIO LEZIONI https://easyacademy.unige.it/portalestudenti/index.php?view=easycourse&_lang=it&include=corso Orari delle lezioni L'orario di questo insegnamento è consultabile all'indirizzo: Portale EasyAcademy ESAMI MODALITA' D'ESAME Lo studente per poter superare il corso dovra' portare a termine un progetto in gruppo seguendo le regole: Un insieme di aziende esterne e laboratori universitari propone una serie di progetti di gruppo Durante le prime due settimane di corso, i progetti vengono presentati da aziende esterne. Successivamente, ogni studente può scegliere fino a cinque proposte che è disposto a realizzare come progetto di gruppo. Ogni studente può scegliere anche uno o più colleghi per formare un gruppo. Successivamente, l'istruttore creerà dei team (due persone per gruppo) e assegnerà un progetto a ciascun team, rispettando il più possibile le preferenze del gruppo. Ci si aspetta che ogni progetto sia realizzato dai gruppi insieme I progetti di gruppo dovrebbero essere sviluppati parallelamente al corso. Ogni progetto terminerà quando tutti i requisiti saranno soddisfatti. Maggiori informazioni saranno fornite dal docente durante le lezioni. Ad ogni progetto è assegnato un tutor (aziendale o universitario). MODALITA' DI ACCERTAMENTO Il voto dell'esame sara' dato valutando il progetto nelle seguenti composizioni: 50%: del voto sara' assegnato valutando quanto il software soddisfa i requisiti dell'utente. Di solito viene valutato dal tutor aziendale/universitario 50% del voto sara' assegnato valutando la qualità del software prodotto, dal punto di vista delle pratiche di ingegneria del software. Di solito questo sarà valutato dal Docente del Corso. ALTRE INFORMAZIONI Gli studenti con certificazioni valide per Disturbi Specifici dell’Apprendimento (DSA) possono richiedere adattamenti in sede d'esame, con almeno 7 giorni di anticipo rispetto alla data dell’esame, compilando il "modulo richieste adattamenti" (dai servizi online https://modulionline.unige.it/richiesta-adattamenti#no-back) che verrà inviato in automatico dal sistema al/alla docente responsabile dell’insegnamento e al/alla docente referente per gli studenti con disabilità e con DSA della propria Scuola/Area. Lo studente riceverà una copia della sua richiesta. Agenda 2030 Istruzione di qualità Parità di genere Lavoro dignitoso e crescita economica Imprese, innovazione e infrastrutture