72939 - INGEGNERIA DEI SISTEMI SOFTWARE M

Scheda insegnamento

  • Docente Antonio Natali

  • Crediti formativi 8

  • SSD ING-INF/05

  • Lingua di insegnamento Italiano

  • Campus di Bologna

  • Corso Laurea Magistrale in Ingegneria informatica (cod. 5826)

Anno Accademico 2021/2022

Conoscenze e abilità da conseguire

Approfondimento dei modelli, dei linguaggi e delle tecnologie per l'analisi, il progetto, la costruzione, la documentazione e la manutenzione di infrastrutture e sistemi software.

Contenuti

Al termine del corso lo studente:

  • è in grado di impostare processi di sviluppo cooperativo del software basati su approcci agili (in particolare SCRUM) avvalendosi anche di modelli eseguibili, espressi mediante meta-modelli custom;
  • è' in grado di progettare e sviluppare sistemi software e relativi piani di testing in modo incrementale ed evolutivo, partendo dal problema e dal dominio applicativo piuttosto che dalla tecnologia realizzativa, attraverso la definizione di modelli eseguibili dell'analisi dei requisiti e dell'analisi del problema;
  • è in grado di valutare in modo critico le continua evoluzione delle tecnologie informatiche, sia a livello computazionale, sia livello di sviluppo-software, acquisendo conoscenze teorico-operative su linguaggi, metododologie e strumenti quali Kotlin, Gradle, SCRUM, SpringBoot, Devops, Docker;
  • è in grado di comprendere il ruolo dei diversi stili di architetture software (layers, client-server, pipeline, microkernel, service-based, event-driven, space-based, microservices) e di come scegliere lo stile architetturale più opportuno per i diversi sotto-sistemi individuati;
  • è in grado di affrontare l'analisi, il progetto e la costruzione di applicazioni distribuite ed eterogenee di tipo proattivo e/o reattivo (unitamente a loro possibili piattaforme di sviluppo e di supporto run-time) con particolare riferimento a modelli computazionali a scambio di messaggi e ad eventi;
  • è in grado di realizzare le interazioni a scambio di messaggi tra componenti distribuiti utilizzando modelli logici di alto livello e implementazioni basate su protocolli diversi (TCP, UDP, HTTP, CoAP, MQTT);
  • è in grado di comprendere come sia possibile progettare e costruire ambienti di sviluppo custom capaci di generazione automatica di codice (Software Factories in 'ecosistemi' come Eclipse/IntelliJ), basandosi su Model Driven Software Development (MDSD) e sull'uso di Domain Specific Languages (DSL);
  • è in grado di sviluppare applicazioni capaci di combinare aspetti di alto livello (in particolare di AI) con aspetti di basso livello relativi a dispositivi di Internet of Things (IOT), utilizzando sia ambienti virtuali sia dispositivi reali costruibili utilizzando elaboratori a basso costo quali RaspberryPi e Arduino;
  • è in grado di applicare i concetti, i dispositivi, e gli strumenti sviluppati in modo concreto ed operativo durante il corso per lo sviluppo di una applicazione finale che utilizza uno o più dispositivi IOT 'situati' - con particolare riferimento a Differental Drive Robots (DDR) con sensori - che possono agire in modo relativamente autonomo in diversi ambienti virtuali o reali, senza modificare il software che esprime la 'business logic' del problema.

Testi/Bibliografia

Il docente fornisce materiale didattico come guida di riferimento per la consultazione di testi e siti specializzati esplicitamente indicati.

Più specificatamente, ogni caso di studio proposto nel corso è corredato da una documentazione in forma ipertestuale (HTML) utilizzabile sia come base per lo studio individuale sia come punto di partenza per lo sviluppo di versioni specializzate da parte dello studente.

Metodi didattici

Il corso prevede una stretta interazione tra la parte teorica e la parte pratica di laboratorio e lo sviluppo cooperativo (docente.studente e studente-studente) di casi di studio concreti.

I casi di studio vengono affrontati in modo incrementale, procedente dal semplice al complesso, con l'obiettivo di costruire componenti e sotto-sistemi riusabili, utilizzabili per l'applicazione finale.

Adottando une metodologia ispirata a SCRUM, il lavoro individuale e di gruppo verrà sistematicamente analizzato e discusso durante apposite fasi di revisione di prodotto e di processo in modo da meglio comprendere i motivi della moderna evoluzione di paradigmi computazionali di riferimento e delle metodologie di produzione.

Modalità di verifica e valutazione dell'apprendimento

Le attività di laboratorio sono intrinsecamente connesse in modo continuo a una autovalutazione del lavoro svolto da parte di ogni singolo studente.

Al termine del corso, viene proposto un tema di progetto come naturale punto di sintesi delle attività svolte, da affrontare in due fasi.

  • La prima fase inizia con la pubblicazione di un testo di requisiti per la costruzione di un prototipo La costruzione del prototipo mira a verificare il raggiungimento di adeguate abilità teorico/pratiche e può essere effettuata in modo individuale o in un gruppo di non più di tre studenti.
  • Al termine di questa fase seguirà una una discussione individuale orale sul lavoro svolto, volta a valutare il livello di conoscenza, consapevolezza e di autonomia analitico/progettuale del singolo studente. In questa fase lo studente è invitato a porre in luce gli aspetti salienti del lavoro svolto e le scelte effettuate alla luce delle nozioni teorico/pratiche apprese durante il corso.

Strumenti a supporto della didattica

Il corso utilizza diffusi ambienti e supporti per la produzione del software (come Eclipse, IntelliJ, Gradle, GIT) e per la promozione di lavoro cooperativo docente-studenti e studente-studente.

Il repository GIT del corso (https://github.com/anatali/issLab [https://github.com/anatali/issLab2021]2021 [https://github.com/anatali/issLab2021] ) fornisce sia il materiale didattico relativo alla parte teorica sia il codice dei casi di studio.

Ogni caso di studio è corredato da una documentazione in forma ipertestuale (HTML) utilizzabile come documentazione, come materiale didattico ad anche come punto di partenza per lo sviluppo di versioni specializzate da parte dello studente.

 

Orario di ricevimento

Consulta il sito web di Antonio Natali