81614 - LABORATORIO DI SISTEMI SOFTWARE

Anno Accademico 2018/2019

  • Docente: Antonio Natali
  • Crediti formativi: 6
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano
  • Modalità didattica: Convenzionale - Lezioni in presenza
  • Campus: Cesena
  • Corso: Laurea Magistrale in Ingegneria e scienze informatiche (cod. 8614)

Conoscenze e abilità da conseguire

Al termine del corso lo studente: - è in grado di impostare processi di sviluppo del software cooperativo basati sia su approcci agili (in particolare SCRUM) sia su approcci basati su modelli espressi in UML2 oppure espressi mediante meta-modelli custom, domain specific; - è in grado di valutare criticamente il ruolo e l'uso di UML2 come linguaggio di modellazione nella costruzione di sistemi distribuiti eterogeni - e' in grado di sviluppare sistemi software in modo technology-independent attraverso opportune formalizazioni dell'analisi dei requisiti e dell'analisi del problema - è in grado di affrontare il progetto e la costruzione di piattaforme custom di supporto allo sviluppo di sistemi software proattivi/reattivi con particolare riferimento ai modelli message-passing e event.driven - è in grado di progettare e costruire (in ambiente Eclipse) ambienti di sviluppo custom (Software Factories) capaci di generazione automatica di codice in accordo all'approccio Model Driven Software Development (MDSD) - è in grado di costruire dispositivi a basso costo tipici dell'Internet of Things (IOT) per lo svliuppo di case-study concreti basati su dispositici quali Raspberry, Arduino e Android con particolare riferimento a robot differential drive (DDR) - è in grado di applicare i concetti, i dispostivi, e gli strunmenti sviluppati in modo concreto ed operativo durante il laboratorio nello svluppo di applicazioni IOT che utilizzano DDR singoli o coordinati come sistemi che operano sulla base di dati sensoriali

Contenuti

  • Impostazione di un ambiente iniziale di riferimento
    per lo sviluppo cooperativo del software.
    Gli strumenti di lavoro (Eclipse) e i processi di produzione a spirale.
  • Il ruolo dell'analisi del problema e della architettura logica della applicazione.
  • Il ruolo dei componenti e delle interfacce nella analisi, progetto e collaudo del software.
  • La pianificazione del collaudo come contributo alla progettazione.
  • Metodologie per la modellazione di un sistema: l'architecture driven design e i pattern architetturali.
    Progettazione (in)dipendente dalla tecnologia: Android, Arduino e RaspberryPi come caso di studio.
  • Dai modelli eseguibili al codice come modello: possibili forme di integrazione tra Model Driven Design e metodi agili (SCRUM).
  • Progettare e costruire linguaggi/metamodelli domain specific mediante la tecnologia Xtext con particolare riferimento a costrutti per la definizione di sistemi distributi ad eventi capaci di eseguire azioni reattive.
  • Progettazione e costruzione di un caso di studio su piattaforme Java/Android/Arduino/RaspberryPi nel dominio di Internet of Things (IOT).Progettazione ed uso di semplici differential drive robots per lo sviluppo di case-study applicativi.

Testi/Bibliografia

Dispense a cura del docente come guida per la consultazione di testi e siti specializzati esplicitamente indicati.


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 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 frequentante.

Al termine del corso, viene proposto un tema di progetto come naturale punto di sintesi delle attività svolte durante il laboratorio, 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.

 

 

 

Strumenti a supporto della didattica

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

Per ogni caso di studio viene fornito dal docente (mediante un sito GIT accessibile via password) codice e documentazione (in forma ipertestuale) come base per lo studio individuale e come punto di partenza per lo sviluppo di versioni specializzate.

 

 

 

 

Orario di ricevimento

Consulta il sito web di Antonio Natali