73025 - SISTEMI DISTRIBUITI M

Anno Accademico 2021/2022

  • Docente: Luca Foschini
  • Crediti formativi: 8
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano
  • Modalità didattica: Convenzionale - Lezioni in presenza
  • Campus: Bologna
  • Corso: Laurea Magistrale in Ingegneria informatica (cod. 0937)

Conoscenze e abilità da conseguire

Approfondimento delle tematiche e delle strategie di soluzione riguardanti le infrastrutture di supporto a servizi in sistemi distribuiti. Nuove metodologie per la produzione di servizi e loro integrazione in framework di supporto con qualità di servizio differenziate.

Contenuti

Il corso cercherà di affrontare in profondità tematiche di:

-         metodologie e modelli architetturali per la progettazione di applicazioni distribuite di livello enterprise

-         evoluzione di modelli a componenti e loro integrazione con architetture distribuite (tipicamente 3-tier e integrate Web) 

-         Application Server (ad esempio JBoss) e middleware/framework di supporto runtime ad applicazioni distribuite di livello enterprise

-         servizi di nomi e loro integrazione, con esemplificazioni da Java Naming and Directory Interface (JNDI)

-         dal modello Enterprise Java Beans iniziale (EJB1.0) all'attuale ampio utilizzo di EJB 3.0 (motivazioni e linee evolutive)

o       Persistenza

o       Interazione con dati

o       Componenti orientati alla sessione e ai messaggi

o       Interceptor

o       Transazioni

o       Esempi ed esercizi integrati con JBoss

-         sistemi di messaging, ad es. Java Messaging System (JMS) e cenni di Enterprise Service Bus e Java Business Integration

-         verso modelli enterprise leggeri con lightweight container: l'esempio di Spring

o       Spring e inversion of control

o       Spring e aspect-oriented programming

o       gestione delle transazioni

-         persistenza: evoluzione dei modelli di supporto alla persistenza nello sviluppo di applicazioni enterprise. Gli esempi di JPA e Hibernate

o       persistenza trasparente

o       supporto a mapping e query

o       supporto a metadata

o       performance

-         monitoraggio, controllo e gestione runtime di application server e di framework di supporto distribuito in generale: l'esempio di JMX

o       Valutazione dell'efficienza e delle prestazioni

o       Scalabilità

o       Fault-tolerance

o       Affidabilità

-         clustering e meccanismi/soluzioni proprietarie di clustering in JBoss

-         direzioni di evoluzione verso modelli e tecnologie non-thread-oriented per alta scalabilità di server enterprise

o         Framework node.js e gestione eventi asincroni

-         cenni introduttivi su online stream processing ad alte prestazioni su architetture clustered per il processamento di big data

-         Numerosi casi di studio (anche tramite alcuni seminari aziendali in aggiunta all'orario di lezione)

 

Il corso sarà affiancato da un set di esercitazioni pratiche di laboratorio, in cui gli studenti saranno stimolati a compiere attività a svolgimento guidato in forma di lavoro personale e autonomo. Tali attività saranno necessarie per il completamento della preparazione e il raggiungimento delle abilità desiderate; testi e soluzioni delle esercitazioni saranno rese disponibili sul sito Web del corso.

 

Il set di esercitazioni proposto includerà:

- 1 esercitazione su EJB in WildFly

- 1 esercitazione su messaging e Java Business Integration (JBI)

- 1 esercitazione su Spring 

- 1 esercitazione su JMX

- 1 esercitazione su clustering in WildFly

 

Testi/Bibliografia

Il materiale mostrato a lezione (slide, esercizi risolti, esercizi suggeriti, esempi e proposte di progetto) sarà interamente messo a disposizione sul sito Web del corso:

http://lia.disi.unibo.it/Courses/sd2122-info/

Come utile riferimento a materiale già disponibile, si veda anche il sito Web relativo all'aa precedente:

http://lia.disi.unibo.it/Courses/sd2021-info/

 

Testi suggeriti:

  • A.L. Rubinger, B. Burke, Enterprise JavaBeans 3.1, 1st ed., O'Reilly, 2010
  • D. Ayers et al., Professional Java Server Programming: with Servlets, JavaServer Pages (JSP), XML, Enterprise JavaBeans (EJB), JNDI, CORBA, Jini and Javaspaces, 1st edition, Wrox, 1999
  • C. Walls, Spring in Action, 3rd ed., Manning, 2011
  • C. Bauer, G. King, Java Persistence with Hibernate, Manning, 2006
  • J.S. Perry, Java Management Extensions, 1° ed., O'Reilly, 2002

Altre utili sorgenti on-line di informazioni:

Metodi didattici

Durante le lezioni in aula verranno discusse le problematiche generali connesse alla modellazione, progettazione, implementazione e supporto runtime di applicazioni distribuite su larga scala basate su componenti. Le principali tecnologie utilizzate saranno basate sul linguaggio Java e l'ambiente Java Enterprise Edition (J2EE): Enterprise Java Beans, Spring, Java Naming and Directory Interface, Java Annotations, Java Messaging Service, Java Persistence Architecture, Hibernate, Java Management Extensions, JBoss Clustering. Il focus su queste tecnologie di ampio interesse industriale e generalmente open-source permetterà la sperimentazione sul campo dei modelli e delle architetture di soluzione mostrati a lezione.

Il corso sarà affiancato da un set di esercitazioni pratiche di laboratorio , in cui gli studenti saranno stimolati a compiere attività a svolgimento guidato in forma di lavoro personale e autonomo. Tali attività saranno necessarie per il completamento della preparazione e il raggiungimento delle abilità desiderate; testi e soluzioni delle esercitazioni saranno rese disponibili sul sito Web del corso.

Le attività di laboratorio includeranno:

  • 1 esercitazione su EJB in JBoss
  • 1 esercitazione su Spring
  • 1 esercitazione su Hibernate
  • 1 esercitazione su JMX
  • 1 esercitazione su messaging and Java Business Integration (JBI)

Modalità di verifica e valutazione dell'apprendimento

Il corso prevede una prova finale orale mirata a valutare il livello di apprendimento raggiunto sia in termini di metodologie di progettazione architetturale e modelli, sia in termini di operatività implementativa in relazione alle principali tecnologie descritte e utilizzate nel corso. La prova orale, della durata di circa 60-75 minuti, prevederà almeno quattro domande, in parte dedicate alla risoluzione di esercizi concreti di utilizzo delle tecnologie enterprise investigate durante il corso.

Gli studenti potranno anche decidere di associare a questo insegnamento una attività progettuale (4 cfu a partire dall'aa 2013/2014) - per maggiore dettagli, vedere la voce della guida che descrive tale attività formativa.

Strumenti a supporto della didattica

Materiale Didattico

Diapositive proiettate a lezione (sia in aula che in laboratorio) consultabili sul sito Web del corso

http://lia.disi.unibo.it/Courses/sd2122-info/

Testi e soluzioni di esercizi proposti in laboratorio e di frequenti domande d'esame saranno resi man mano disponibili sul sito Web del corso:

http://lia.disi.unibo.it/Courses/sd2122-info/


Come utile riferimento a materiale già disponibile, si veda anche il sito Web relativo all'aa precedente:

http://lia.disi.unibo.it/Courses/sd2021-info/

 

 

Altri strumenti:

Ambienti di sviluppo integrato per J2EE (principalmente Eclipse IDE; seconda opzione NetBeans IDE), JBoss Application Server ed altre implementazioni di tecnologie mostrate a lezione, disponibili in laboratorio (Lab2 principalmente, ma anche Lab4) e indicati sul sito Web del corso.

 

Le slide utilizzate durante le lezioni devono essere considerate il principale materiale di studio per la preparazione dell'esame; la bibliografia suggerita è indicata come supporto e integrazione opzionale.

 


http://lia.disi.unibo.it/Courses/sd1819-info/

Come utile riferimento a materiale già disponibile, si veda anche il sito Web relativo all'aa precedente:

http://lia.disi.unibo.it/Courses/sd1718-info/

Link ad altre eventuali informazioni

http://lia.disi.unibo.it/Courses/sd2122-info/

Orario di ricevimento

Consulta il sito web di Luca Foschini

SDGs

Imprese innovazione e infrastrutture

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.