ADVANCED SOFTWARE ENGINEERING Canale unico
Docente coordinatore e verbalizzante: PAOLO GASPARE BOTTONI
Obiettivi formativi
Obiettivi generali:
Il corso si propone di presentare un approccio tramite metodi formali, tipicamente basati su trasformazioni di modelli, allo sviluppo di sistemi software di media complessità (tipicamente applicazioni Enterprise).
Obiettivi specifici:
Il corso formerà gli studenti su:
1. Fondamenti di metamodellazione
2. Fondamenti di trasformazioni di modelli
3. Linguaggi specifici al dominio
4. Architetture software
Conoscenza e comprensione:
Gli studenti apprenderanno le nozioni fondamentali per la modellazione indipendente dalla piattaforma a partire dalle specifiche dei requisiti e come utilizzare gli strumenti di trasformazione per ottenere implementazioni di codice (parziale) che soddisfino i requisiti e l'utilizzo di architetture enterprise.
Applicazione di conoscenza e comprensione:
Gli studenti saranno in grado di utilizzare alcuni dei linguaggi e degli strumenti più popolari nel campo della modellazione dei sistemi e della trasformazione dei modelli e li utilizzeranno per sviluppare applicazioni a vari livelli di complessità.
Autonomia di giudizio:
Gli studenti svilupperanno le capacità di analisi necessarie per valutare diverse alternative nel campo della modellazione di sistema, in particolare per quanto riguarda la modellazione di dominio e della valutazione dei requisiti architetturali.
Abilità comunicative:
Gli studenti impareranno a documentare le loro scelte, anche attraverso l'uso di strumenti di generazione della documentazione, in particolare sfruttando notazioni diagrammatiche.
Capacità di apprendimento:
La padronanza dei concetti di modello formale e di trasformazione di modello, nonché la familiarità con ambienti di sviluppo software che integrino queste nozioni, permetterà agli studenti di proseguire nell'esplorazione e nell'apprendimento di linguaggi e approcci basati su questi concetti.
Risultati di apprendimento attesi
L'insegnamento è focalizzato sulle tematiche dello sviluppo guidato da modelli, nelle sue varie articolazioni, fornendo anche un fondamento teorico basatosull'approccio algebrico alla trasformazione di grafi.
Al termine del semestre, i e le partecipanti al corso avranno appreso la modellazione di sistemi attraverso linguaggi testuali e diagrammatici basati su vari tipi di metamodello e le nozioni fondamentali relative alla definizione di linguaggi specifici al dominio, e avranno acquisito competenze nell'utilizzo di diversi strumenti di modellazione.
Prerequisiti
Si assume una conoscenza dei concetti di base su programmazione orientata agli oggetti e su metodi logici dell'informatica. In particolare, verrà verificata la previa conoscenza di UML e OCL, e si procederà eventualmente a una breve introduzione.
Programma dell’insegnamento
Il corso si struttura in cinque parti principali
1. Fondamenti di metamodellazione (10 ore)
a. Modelli e metamodellazione.
b. Il metamodello di UML.
2. Fondamenti di trasformazioni di modello (14 ore)
a. Trasformazioni orizzontali
b. Trasformazioni verticali
c. Linguaggi per trasformazioni di modelli
c1. QVT
c2. Trasformazioni di grafi
3. Linguaggi specifici al dominio: (8 ore)
a. Metamodello per linguaggi specifici al dominio
b. Modelli di caratteristiche e linee di prodotto software
4. Utilizzo di strumenti: (16 ore)
a. AGG (Attributed Graph Grammars)
b. EMF (Eclipse Modeling Framework)
c. WebRatio
5. Fondamenti di architetture Software (6 ore)
a. Architetture distribuite
b. Architetture orientate ai servizi
c. Architetture a microservizio
Le restanti ore saranno dedicate ad affrontare collettivamente problematiche di carattere generale emergenti dallo svolgimento dei progetti.
Testi di riferimento
Marco Brambilla, Jordi Cabot, Manuel Wimmer, Model-Driven Software Engineering in Practice, Morgan & Claypool, USA, 2012.
Stefano Ceri, Piero Fraternali, Aldo Bongio, Marco Brambilla, Sara Comai, Maristella Matera, Designing Data Intensive Web Applications, Morgan Kauffman, 2003
Markus Völter, Thomas Stahl, Jorn Bettin, Arno Haase, Simon Helsen, Model-Driven Software Development: Technology, Engineering, Management, Wiley, 2006
Ian Sommerville, Engineering Software Products, Pearson, 2019
Bibliografia
Documentazione OMG su UML e MDA
Markus Völter, DSL Engineering - Designing, Implementing and Using Domain-Specific Languages, http://voelter.de
Steven Kelly, Juha-Pekka Tolvanen, Domain-Specific Modeling: Enabling Full Code Generation, Wiley 2008
Letteratura scientifica su trasformazioni di grafi e linguaggi specifici al dominio.
Modalità di svolgimento
Il corso si svolge attraverso lezioni in presenza , fondamentalmente basate su slide illustrative degli argomenti dei diversi moduli, sull'utilizzo di tool dedicati, e momenti di tutoraggio sullo svolgimento dei progetti. Durante le lezioni si verifica anche lo svolgimento degli homework, tramite discussione collettiva.
Frequenza
La frequenza è fortemente consigliata.
Modalità di esame
Il voto è principalmente basato sulla valutazione del lavoro svolto in relazione al progetto. Vengono proposti anche homework in relazione ai diversi argomenti affrontati man mano nel corso, la cui soluzione viene discussa in aula. La qualità degli homework concorre a determinare il voto finale.
Esempi di domande
La descrizione dei temi di progetto è pubblicata su Classroom (codice )
- Anno accademico2024/2025
- Corso di studio a cui afferisce l’insegnamentoComputer Science - Informatica
- Codice insegnamento1047614
- Anno e semestre2º anno - 2º semestre
- TipologiaAttività formative caratterizzanti
- AmbitoDiscipline Informatiche
- SSDINF/01
- Presenza obbligatoriaNo
- Linguaeng
- CFU6 CFU
- Durata complessiva60 ore
- Distribuzione delle ore36 classroom hours, 24 training hours