Tecniche speciali di programmazione

A.A. 2022/2023
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
L'insegnamento ha l'obiettivo di esporre lo studente a tecniche e tecnologie che permettano di incrementare la riusabilità, il mantenimento e il testing di funzionalità software. In particolare, l'insegnamento si focalizzerà sulla definizione funzionalità software anche crosscutting e sulla loro estrusione in unità computazionali autonome, più semplici e facilmente componibili. A questo proposito verranno presentate le più recenti ed innovative tecniche di sviluppo software, come, ma non limitate a, aspect-oriented programming, riflessione computationale, context-oriented programming, software product-line, bytecode and intermediate language engineering, etc.
Risultati apprendimento attesi
Lo studente dovrà dimostrare di saper sviluppare ed implementare applicazioni le cui funzionalità sono separate e successivamente composte utilizzando le tecniche presentate a lezione. Lo studente dovrà anche essere in grado di riconoscere una funzionalità software all'interno di un'applicazione esistente e di separarla dal resto del codice usando una delle tecniche/tecnologie viste a lezione. Lo studente dovrà inoltre dimostrare di aver sviluppato una capacità di scrivere codice migliore (più semplice, riusabile e manutenibile) applicando le tecniche e i concetti forniti dall'insegnamento.
Corso singolo

Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.

Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Primo semestre

Programma
- Riflessione Computazionale
- Meta-Object Protocol and Separazione dei Compiti
- Riflessione in Java
- Proxy Dinamici e Class Loading
- Annotazioni
- OpenJava, Javassist e BCEL
- AOP e AspectJ
- AOP e Refactoring
Prerequisiti
Saper scrivere e debuggare programmi che usano i costrutti base di programmazione. Avere conoscenze di problem solving. Conoscere e sapere usare con profitto almeno un linguaggio di programmazione.

È consigliabile avere conseguito almeno un insegnamento di programmazione nella laurea triennale.
Metodi didattici
Lezioni Frontali ed alcune esercitazioni in preparazione dell'esame.
Materiale di riferimento
Web Site:
- https://cazzola.di.unimi.it/tsp.html
- http://wcazzolatsp.ariel.ctu.unimi.it

Libri Suggeriti
- Ira R. Forman and Nate B. Forman. Java Reflection in Action. Manning Publications. 2004.
- Ramnivas Laddad. AspectJ in Action: Practical Aspect-Oriented Programming. Manning Publications Company. 2003.
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame è scritto al calcolatore e dura quattro ore. Ogni appello propone due esercizi (uno per ognuna delle due parti dell'insegnamento). L'esame intende verificare l'acquisizione delle tecniche di programmazione insegnate a lezione.
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente: Cazzola Walter