Salta al contenuto principale della pagina

FONDAMENTI DI INGEGNERIA DEL SOFTWARE

CODICE 80305
ANNO ACCADEMICO 2022/2023
CFU
  • 6 cfu al 3° anno di 8759 INFORMATICA (L-31) - GENOVA
  • SETTORE SCIENTIFICO DISCIPLINARE INF/01
    LINGUA Italiano
    SEDE
  • GENOVA
  • PERIODO 1° Semestre
    MATERIALE DIDATTICO AULAWEB

    PRESENTAZIONE

    L'insegnamento fornisce un'introduzione all'ingegneria del software.

    L’ingegneria del software è una disciplina ingegneristica che si occupa di tutti gli aspetti relativi allo sviluppo del software
    • —disciplina = materia/soggetto di studio di corsi
    • —ingegneria del software = un insieme di teorie, metodi, tecniche e strumenti (tool) per sviluppare software di qualità in maniera professionale

    OBIETTIVI E CONTENUTI

    OBIETTIVI FORMATIVI

    Acquisire i principi scientifici e professionali di base dell'ingegneria del software nelle diverse fasi di sviluppo del codice: pianificazione, progettazione, modellazione, implementazione, collaudo, verifica e manutenzione.

    OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

    L’obiettivo dell'insegnamento è quello di fornire una visione generale dell’Ingegneria del Software necessaria alla progettazione e allo sviluppo di sistemi software moderni di grandi dimensioni, nonché introdurre concetti, notazioni, metodi e strumenti per seguire l’intero ciclo di vita del software.

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

    • comprendere e descrivere gli elementi di base della disciplina (modellli di sviluppo, requisiti, design, testing, manutenzione, design pattern);
    • descrivere un sistema software con il formalismo UML e comprendere la documentazione di uno esistente;
    • risolvere semplici problemi di software design, refactoring e testing (almeno a livello di unit testing) anche lavorando in team;
    • utilizzare uno strumento CASE UML (ad esempio Visual Paradigm) e un IDE (ad esempio Eclipse) per svolgere semplici task (ad esempio creare un class diagram UML o effettuare il refactoring di una porzione di codice)

     

    PREREQUISITI

    Per seguire con successo questo corso è necessario aver sostenuto gli esami dei corsi di Linguaggi e Programmazione Orientata ad Oggetti.

    Il corso non prevede specifici prerequisiti: tutto ciò che è stato studiato negli anni precedenti sarà utile - ma niente indispensabile. Saranno utili:

    • Conscenze dei fondamenti della programmazione
    • Conoscenza di un linguaggio di programmazione orientato agli oggetti: in particolare Java
    • Conoscenza dei concetti OO:  Ereditarietà, Polimorfismo,  Incapsulamento
    • Conoscenze base di database
    • Conoscenze base di applicazioni Web

    MODALITA' DIDATTICHE

    Il corso include sia lezioni frontali che attività di laboratorio.

    • Lezioni frontali tradizionali mediante l'utilizzo di slide
    • Laboratori guidati ed attività integrative mediante l'uso di AulaWeb.

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

    PROGRAMMA/CONTENUTO

    • Introduzione all'insegnamento e all’ingegneria del software
    • Modelli di processo di sviluppo software, metodi agili (es. Extreme programming)
    • Ingegneria dei Requisiti. Scenari e  casi d’uso.
    • Design: principi e metodi di progettazione, accoppiamento e coesione, architetture software, design pattern, refactoring
    • Il linguaggio UML: concetto di modello. Class diagram, Sequence diagram, State Machine diagram, Activity diagram
    • Software Testing: Test funzionali/strutturali e copertura. Test di unità, integrazione, sistema. Test di accettazione e Test di regressione
    • Evoluzione del software e manutenzione

    TESTI/BIBLIOGRAFIA

    1. Martin Fowler UML Distilled. Pearson-Addison Wesley.
    2. Mike O'Docherty. Object-Oriented Analysis and Design: Understanding System Development with UML 2.0. John Wiley & Sons [per alcune parti]
    3. Sommerville I. Software Engineering, Addison Wesley [per alcune parti]
    4. Shari Lawrence Pfleeger, Joanne M. Atlee. Software Engineering: Theory and Practice [per alcune parti]

    DOCENTI E COMMISSIONI

    Commissione d'esame

    FILIPPO RICCA (Presidente)

    MAURIZIO LEOTTA

    DARIO OLIANAS (Supplente)

    GIANNA REGGIO (Supplente)

    LEZIONI

    Orari delle lezioni

    L'orario di tutti gli insegnamenti è consultabile su 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 dei laboratori guidati e in una prova scritta.

    MODALITA' DI ACCERTAMENTO

    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. L'attività di laboratorio verrà complessivamente valutata (su base individuale) con un punteggio nell'intervallo [0,4] da sommarsi al voto risultante dalla prova scritta.

    Scritto

    La prova scritta sarà articolata in due parti:

    • Prima parte: costituita da domande a risposta multipla, che costituisce sbarramento per la partecipazione alla parte successiva. Le domande saranno sia di tipo teorico che pratico e verteranno sugli argomenti visti a lezione.
    • Seconda parte: costituita da una domanda teorica aperta e da un esercizio che dovranno necessariamente essere svolti, ognuno, su un unica facciata di foglio A4. Domanda e esercizio verteranno sugli argomenti visti a lezione.

    Per la prima parte non sara' permessa la consultazione di alcun materiale. Nella seconda parte sarà ammessa solo la consultazione del riassunto UML che sarà reso disponibile durante il corso.

    Nel caso di superamento della prima parte, la seconda parte verrà valutata e verrà assegnato un voto massimo 27 (a cui poi andranno sommati i voti del laboratorio).

    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.

    Modalità di accertamento

    L'attività di laboratorio mira ad accertare le abilità collaborative nel risolvere problemi nell'ambito delle tematiche affrontate nel corso, in particolare uso di UML, refactoring e software testing.

    Lo scritto ha l'obbiettivo di verificare la conoscenza degli aspetti teorici della disciplina e valuta l'abilità a svolgere esercizi.

    Calendario appelli

    Data Ora Luogo Tipologia Note
    26/01/2023 09:30 GENOVA Scritto
    15/02/2023 09:30 GENOVA Scritto
    29/06/2023 09:30 GENOVA Scritto
    26/07/2023 09:30 GENOVA Scritto
    13/09/2023 09:30 GENOVA Scritto