Vinaora Nivo Slider 3.xVinaora Nivo Slider 3.xVinaora Nivo Slider 3.xVinaora Nivo Slider 3.xVinaora Nivo Slider 3.xVinaora Nivo Slider 3.x

Web and real time communication systems

WEB AND REAL TIME COMMUNICATION SYSTEMS"

SSD ING-INF/05


DEGREE PROGRAMME: ADVANCED DEGREE (LAUREA MAGISTRALE) IN COMPUTER ENGINEERING (INGEGNERIA INFORMATICA)

ACADEMIC YEAR 2022-2023

 

GENERAL INFORMATION – TEACHER REFERENCES

TEACHER: PROF. SIMON PIETRO ROMANO
PHONE: +39 081 7683823
EMAIL: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.


GENERAL INFORMATION ABOUT THE COURSE

INTEGRATED COURSE (IF APPLICABLE):
MODULE (IF APPLICABLE):
CHANNEL (IF APPLICABLE):
YEAR OF THE DEGREE PROGRAMME (I, II, III): II – ADVANCED DEGREE
SEMESTER (I, II): II
CFU: 6

 


REQUIRED PRELIMINARY COURSES (IF MENTIONED IN THE COURSE STRUCTURE “ORDINAMENTO”)


PREREQUISITES (IF APPLICABLE)


LEARNING GOALS

The aim of the class is to provide students with advanced notions in the field of both web-based and real-time communication. Students will become familiar with the design and development of complex communication systems, by focusing both on the client-side and on the server-side. They will become acquainted with the networking protocols that form the basis of web-based and real-time communication, as well as learn how to use the standard Application Programming Interfaces (APIs) laying on top of them. This is both a programming class and a networking class. All of the networking protocols and solutions will be first studied in detail and then put into practice through the design and implementation of proof-of-concept prototypes representing real-world application scenarios.

EXPECTED LEARNING OUTCOMES (DUBLIN DESCRIPTORS)

At the end of the class, students will be able to demonstrate advanced knowledge in the field of web-based and real-time communication. They will have a clear understanding of the protocols and APIs representing the state of the art in both fields. Step by step, the class will bring them towards an integrated approach, whereby web-based and real-time communication eventually co-exist in a single, unified scenario adhering to the latest standards issued by both the Internet Engineering Task Force (IETF) and the World Wide Web Consortium (W3C).
They will be ready to enter the professional arena and become part of cutting-edge development teams, by actively contributing to the design and the implementation of advanced communication systems. Successful completion of the class will allow them to effectively apply the acquired knowledge to a number of real-world scenarios requiring advanced engineering capabilities, by putting together their networking competences and their advanced programming skills.

Knowledge and understanding

Students need to show ability to know and understand problems related to both the communication and the programming issues associated with the design and development of complex interoperating distributed systems.
They need to elaborate arguments related to the relationship between communication protocols, synchronous and asynchronous interaction, client-side, server-side and peer-to-peer programming, by embracing an engineering approach and looking at them in an integrated fashion. The class provides students with advanced knowledge in the field of web-based real-time communication, by also illustrating how to leverage both methodological and practical tools in order to design and implement effective, interoperable, scalable and secure real-time multimedia communication systems that are compliant with state-of-the-art standard protocols and APIs. Such tools will allow students to grasp the causal connections among network-based communication and event-based programming, as well as understand the implications of the adoption of an agile design and development paradigm for the realization of advanced communication systems.

Applying knowledge and understanding

Students need to show ability to design complex systems involving distributed components that exchange multiple media in a real-time fashion. They will have to demonstrate a clear understanding of the main networking protocols offering support to such systems for all what concerns their communication requirements. They will have to demonstrate advanced programming skills, with special reference to the use of the standard APIs that are offered to programmers both on the client-side and on the server-side. The course delivers skills and tools needed to apply knowledge in practice, favoring the ability to use a methodological approach that properly integrates different technologies (as well as different programming languages) in a unified framework allowing to effectively look after the many facets of a complex communication system.

COURSE CONTENT/SYLLABUS


The class will proceed step-wise towards the final goal of designing and implementing integrated systems putting together the most up-to-date solutions in the fields of web-based and real-time communication. Web-based communication protocols and technologies will be first introduced, by focusing both on the communication and on the programming aspects. Server-side web application development will be analyzed in detail, with the help of real-world examples associated with state-of-the-art frameworks and programming languages. Client-side web programming through the JavaScript language will be discussed, with a focus on both the synchronous and the asynchronous paradigm. The XML (eXtensible Markup Language) language and APIs will be introduced and analyzed in depth. The focus will then move to real-time communication, by looking at both the data layer and the signaling layer. State-of-the-art streaming technologies will be discussed in detail and comparatively analyzed. Network reachability and NAT (Network Address Translation) traversal issues will be presented, together with the standard protocols that have been designed in order to effectively deal with them. A detailed overview of the most up-to-date Instant Messaging applications and related standard protocols will be presented. Finally, the class will show how to put things all together in an integrated framework that leverages both the IETF RtcWeb and the W3C WebRTC standard protocols and APIs in order to realize next-generation web-enabled real-time communication scenarios.

Syllabus:
- Web-based communication basics: HTTP protocol deep-dive
- Server-side programming basics: Common Gateway Interface (CGI)
- Server-side programming in Java through Java servlets
- Server-side programming in Python through the Flask framework
- Server-side programming in Java through the Spring Boot framework
- Client-side programming with JavaScript
- Asynchronous JavaScript and XML (AJAX) and the Fetch API
- The XML language
- XML programming
- Server-side programming in JavaScript with Node.JS
- Web-based interaction through WebSockets
- The Real-time Transport Protocol (RTP)
- Voice over IP (VoIP) applications and the Session Initiation Protocol (SIP)
- Streaming protocols and technologies:
o Real Time Streaming Protocol (RTSP)
o MPEG-DASH (Dynamic Adaptive Streaming over HTTP)
o Real Time Messaging Protocol (RTMP)
o Peer-to-peer approaches
- NAT-traversal protocols:
o Session Traversal Utilities for NAT (STUN)
o Traversal Using Relays Around NAT (TURN)
o Interactive Connectivity Establishment (ICE)
- Instant Messaging protocols and technologies:
o Internet Relay Chat (IRC)
o Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions (SIP/SIMPLE)
o eXtensible Messaging and Presence Protocol (XMPP)
o WebRTC-enabled IM through data channels
o Web-socket enabled IM
o Message Queuing Telemetry Transport (MQTT) enabled IM
o Advanced Message Queuing Protocol (AMQP) enabled IM
o Simple Text Orientated Messaging Protocol (STOMP) enabled IM
o The RabbitMQ library
o Secure, decentralized real-time communication through Matrix
- User interface design and implementation through React.js
- Using native components instead of web components with React Native
- WebRTC: the new frontier of real-time communications in the web
- The Janus WebRTC media server and gateway

READINGS/BIBLIOGRAPHY

6. Official references like, e.g., Requests For Comments (RFC), available at: https://www.ietf.org
7. “Real-Time Communication with WebRTC”, Salvatore Loreto, Simon Pietro Romano, Released May 2014, Publisher: O'Reilly Media, Inc. ISBN: 9781449371876
8. Slides and additional materials provided by the teacher and made available on the official sites associated with the class


TEACHING METHODS

Teacher will use a hands-on approach for the entire duration of the class. All of the course topics will be both presented in theory and further analyzed through practical examples.
All of the students will have to work on a practical project, either individually or in groups, focused on an in-depth study of one or more of the topics addressed during the class.

EXAMINATION/EVALUATION CRITERIA

a) Exam type:


Exam type

written and oral
only written
only oral X
project discussion X
other


In case of a written exam, questions refer to: (*) Multiple choice answers
Open answers
Numerical exercises
(*) multiple options are possible

 

b) Evaluation pattern:
[this field needs to be filled in only when there are different weights among written and oral exams, or among modules if this refers to an integrated course]
- 35% of the final mark will depend on an evaluation of the practical project developed by the student (either individually or in group). The project itself will have to be delivered (with a fully-fledged documentation, including source code, if applicable) to the teacher at least seven days in advance of the oral examination date;
- 65% of the final mark will depend on the results of the oral interview.

Text mining

SCHEDA DELL'INSEGNAMENTO (SI)

TEXT MINING

SSD: ING-INF/05

 

DENOMINAZIONE DEL CORSO DI STUDIO: LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA

ANNO ACCADEMICO 2022-23

 

INFORMAZIONI GENERALI - DOCENTE

DOCENTE: FLORA AMATO
TELEFONO: 081-7683851
EMAIL: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.


INFORMAZIONI GENERALI - ATTIVITÀ

INSEGNAMENTO INTEGRATO (EVENTUALE):
MODULO (EVENTUALE):
CANALE (EVENTUALE):
ANNO DI CORSO (I, II, III): I/II
SEMESTRE (I, II): I
CFU: 6

 


INSEGNAMENTI PROPEDEUTICI (se previsti dall'Ordinamento del CdS)


EVENTUALI PREREQUISITI


OBIETTIVI FORMATIVI
Il corso ha l’obiettivo di fornire i principi metodologici e tecnologici relativi all’elaborazione di testi in linguaggio naturale. Questo prevede l’apprendimento dei principali algoritmi per l’analisi e l’interpretazione del linguaggio naturale, dei modelli utilizzati per la descrizione di argomenti e concetti, tecniche di estrazione delle informazioni e apprendimento automatico sui testi.
Gli studenti acquisiranno i principali modelli e le tecniche avanzate per l’annotazione automatica di risorse testuali, la formalizzazione della conoscenza contenuta nei testi, la strutturazione e l’estrazione di informazioni.
Relativamente all’apprendimento automatico, saranno approfondite ed utilizzate tecniche avanzate di Machine Learning e Deep Learning, applicate in diversi domini di interesse quali E-health, Giustizia, Amministrazione e Industria 4.0.

RISULTATI DI APPRENDIMENTO ATTESI (DESCRITTORI DI DUBLINO)

Conoscenza e capacità di comprensione
Il percorso formativo intende fornire agli studenti le conoscenze, i metodi e le tecniche necessarie per analizzare le problematiche sul trattamento automatico del testo, l’estrazione delle informazioni da esso, l’individuazione degli argomenti del discorso (topic).
Questi strumenti consentiranno agli studenti di capire le problematiche, padroneggiare la teoria, delineare una metodologia di strutturazione e analisi dei testi, di trattamento semantico e di rappresentazione della conoscenza alla base della costruzione di sistemi, e in particolare di interfacce intelligenti.

 

Capacità di applicare conoscenza e comprensione
Il percorso formativo è orientato a trasmettere le capacità e gli strumenti metodologici e operativi necessari ad applicare le conoscenze di trattamento automatico del linguaggio naturale, nonché a favorire la capacità di utilizzare gli strumenti metodologici acquisiti per la progettazione e la realizzazione di sistemi e interfacce intelligenti. Le tecniche e i modelli proposti saranno applicati a domini specialistici quali E-health, Giustizia, Amministrazione e Industria 4.0.


PROGRAMMA-SYLLABUS


Introduzione alle tecniche di Elaborazione del Linguaggio Naturale (NLP). Intelligenza artificiale e NLP.

Modelli di Rappresentazione delle Informazioni. Ontologie, vocabolari e dizionari personalizzati.

Trasformazione di testo non strutturato in strutture dati idonee all'elaborazione automatica.
Estrazione di caratteristiche testuali. Riconoscimento di modelli per scoprire e identificare categorie di informazioni.

Apprendimento automatico ed elaborazione del linguaggio naturale.
Algoritmi di apprendimento automatico di tipo Machine Learning per il testo.
Pattern recognition per scoprire e identificare categorie di informazioni, confronto con approcci basati su dizionari.

Identificazione, etichettatura e ricerca in sezioni specifiche del documento. Elaborazione linguistica per riconoscere unità significative all'interno del testo come frasi, gruppi di nomi, verbi e relazioni sussistenti.

Strumenti semantici per identificare concetti all'interno del testo, normalizzazione dei concetti su ontologie standard. Individuazione di termini di dominio. Ontologie di dominio (come MedDRA e MeSH), dizionari personalizzati. identificazione, etichettatura e ricerca in sezioni specifiche del documento.

Algoritmi di apprendimento automatico di tipo Deep Learning per il testo

Reti neurali dense e ricorrenti, LSTMs, GRUs, in TensorFlow per eseguire l'analisi del testo, il riconoscimento delle entità e l'identificazione delle relazioni.
Uso di encoder-decoder, causale, e auto-attenzione per eseguire l'elaborazione automatica avanzata di frasi complete, implementazione di interfacce intelligenti e chatbot.

T5, BERT, transformer, reformer: uso dei modelli T5 e BERT per implementare un sistema automatico di risposta alle domande; implementazione di un chatbot usando un modello Reformer.


MATERIALE DIDATTICO
Libri di testo consigliati:
• Materiale prodotto e fornito dalla Docente
• D. Jurafsky, J.H. Martin, Speech and Language Processing. 3nd edition, Prentice-Hall, pp. 653, 2018 (con aggiornamenti di dicembre 2021 reperibili su https://web.stanford.edu/~jurafsky/slp3/ed3book_dec292021.pdf).
• S. Bird, E. Klein, E. Loper. Natural Language Processing with Python. O'Reilly, pp.903.

Altro materiale didattico:
• Aggarwal, Charu C. Machine learning for text. Springer, 2018.
• Dipanjan Sarkar. Text Analytics with Python: A Practitioner's Guide to Natural Language Processing. Apress, 2019
• Clinical text mining: Secondary use of electronic patient records. Springer

MODALITÀ DI SVOLGIMENTO DELL'INSEGNAMENTO
L’insegnamento si svolgerà con lezioni frontali (55% delle ore totali) ed esercitazioni di laboratorio (45% delle ore totali). Nelle esercitazioni di laboratorio sarà utilizzato il linguaggio Python, le librerie di trattamento testi NLTK e spaCy, i framework di deep learning TensorFlow e Keras. In modalità blended, tutte le lezioni saranno registrate e rese disponibili.


VERIFICA DI APPRENDIMENTO E CRITERI DI VALUTAZIONE

a) Modalità di esame:


L'esame si articola in prova

scritta e orale
solo scritta
solo orale X
discussione di elaborato progettuale X
altro


L’elaborato Progettuale sarà proposto al centro del corso e sarà sviluppato anche durante le lezioni di laboratorio con il supporto del docente.

b) Modalità di valutazione:
La prova di esame avrà lo scopo di accertare il raggiungimento degli obiettivi formativi previsti per l’insegnamento, è articolata in una prova di laboratorio ed una prova orale incentrata sulla discussione del progetto.

 

ELABORAZIONE DI SEGNALI MULTIMEDIALI

SCHEDA DELL'INSEGNAMENTO (SI)
SSD ING-INF/03

 

LAUREA MAGISTRALE IN INGEGNERIA DELLE TELECOMUNICAZIONI E DEI MEDIA DIGITAL

ANNO ACCADEMICO: 2022-2023

 

INFORMAZIONI GENERALI - DOCENTE

DOCENTE: LUISA VERDOLIVA
TELEFONO: 0817683929
EMAIL: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

 

INFORMAZIONI GENERALI - ATTIVITÀ

INSEGNAMENTO INTEGRATO (EVENTUALE): 
MODULO (EVENTUALE):
CANALE (EVENTUALE):
ANNO DI CORSO (I, II, III): I-II
SEMESTRE (I, II): II
CFU: 9

 

INSEGNAMENTI PROPEDEUTICI

(se previsti dall'Ordinamento del CdS)

...................................................................................................................................................

 

EVENTUALI PREREQUISITI

...................................................................................................................................................

 

OBIETTIVI FORMATIVI

Obiettivo dell’insegnamento è di fornire la conoscenza dei concetti di base e degli algoritmi per l’elaborazione di immagini digitali e presentare le principali tecniche per la codifica di immagini fisse e sequenze video, con particolare attenzione agli standard più comuni. Oltre a fornire gli strumenti matematici e concettuali per trattare analiticamente questi argomenti, il corso si propone di dare le conoscenze necessarie per sviluppare in Python i principali algoritmi per l’elaborazione delle immagini.

 

RISULTATI DI APPRENDIMENTO ATTESI

(Descrittori di Dublino)

Conoscenza e capacità di comprensione
Lo studente deve dimostrare di conoscere e saper comprendere gli strumenti metodologici per l’analisi e l’elaborazione delle immagini. Tali strumenti consentiranno agli studenti di risolvere problemi più complessi sia nel dominio dello spazio che nel dominio della frequenza.

Capacità di applicare conoscenza e comprensione
Lo studente deve dimostrare di saper ragionare sulle problematiche riguardo l’analisi e l’elaborazione di immagini e di saper scegliere la tecnica più adatta per la risoluzione di un problema pratico.

 

PROGRAMMA-SYLLABUS

Enhancement di immagini. Enhancement nel dominio spaziale. Trasformazioni basilari dell’intensità: operazioni puntuali lineari e non lineari. Equalizzazione dell’istogramma. Bit-plane slicing. Operazioni aritmetiche. Operazioni geometriche. Basi del filtraggio spaziale. Filtri di smoothing e di sharpening. Filtro mediano. Operazioni morfologiche. Enhancement nel dominio frequenziale. Trasformata di Fourier bidimensionale. DFT-2D. Esempi di filtro passa-basso e passa-alto. Filtraggio in frequenza: filtri ideali, filtri di Butterworth e filtri gaussiani.
Rappresentazione del colore. Cenni sul sistema visivo umano. Coni e bastoncelli. Sensibilità relativa dei coni di tipo S, M e L. Teoria tricromatica dei colori. Color matching. Gli spazi di colore (RGB, HSI). Pigmenti: colorazione sottrattiva, sistemi di stampa CMY, CMYK (quadricromia).
Segmentazione. Tecniche edge based. Point detection e line detection. Gradienti di Roberts, Prewitt e Sobel. Thresholding del gradiente. Zero-crossing del Laplaciano. Canny edge detector. Tecniche class-based. Algoritmo K-means.
Compressione di immagini. Codifica di sorgente. Generalità sulla compressione dati. La quantizzazione. Quantizzazione uniforme e non uniforme. Codifica predittiva. Schema del codificatore e decodificatore. Quantizzazione predittiva. Codifica mediante trasformata. Compattazione dell'energia e allocazione ottima delle risorse. Le trasformate lineari. Trasformata di Karhunen-Loéve e sue proprietà. Trasformata coseno discreta. Lo standard JPEG.
Codifica video. Generalità sul segnale video. Compressione spaziale e temporale. Conditional replenishment e compensazione del movimento. Il codificatore ibrido. Cenni allo standard MPEG-1 e MPEG-2. La scalabilità in risoluzione e in frame-rate
Trasformata Wavelet. Localizzazione tempo-frequenza. Wavelet continua (CWT). Mother Wavelet. Analisi multirisoluzione, funzione di scaling. Equazioni MRA. Estensione al caso bidimensionale. Implementazione della trasformata wavelet discreta (DWT). Banco di filtri di analisi e sintesi. Codifica mediante Wavelet. Algoritmo EZW.
Applicazioni. Esempi di applicazioni avanzate per l’elaborazione di immagini: denoising, super-risoluzione, riconoscimento di volti o oggetti, classificazione mediante descrittori locali, segmentazione semantica, riconoscimento di manipolazioni nelle immagini e nei video anche con tecniche basate sull’apprendimento (cenni alle reti neurali convoluzionali).

 

MATERIALE DIDATTICO

Libri di testo consigliati:
• R.C.Gonzalez, R.E.Woods: “Digital image processing”, 3nd edition, Prentice Hall, 2008.
• A.Bovik: “The essential guide to image processing”, Academic Press, 2009.
• K.Sayood: “Introduction to data compression”, 2nd edition, Morgan Kaufmann, 2000.

Appunti del corso di Elaborazione di Segnali Multimediali: http://wpage.unina.it/verdoliv/esm/

 

MODALITÀ DI SVOLGIMENTO DELL'INSEGNAMENTO

La didattica è erogata: a) per circa il 70% con lezioni frontali; b) per circa il 30% con esercitazioni guidate in laboratorio per lo sviluppo di applicazioni software in Python per comprendere al meglio le tecniche studiate.
Gli argomenti delle lezioni frontali e delle esercitazioni sono esposti con l’ausilio di lavagne elettroniche e/o trasparenze dettagliate, messe a disposizione dello studente nel materiale didattico tramite il sito web ufficiale del docente. E’ anche prevista la registrazione delle lezioni.

 

VERIFICA DI APPRENDIMENTO E CRITERI DI VALUTAZIONE

a) Modalità di esame:

L'esame si articola in prova:
 Scritta e orale
 Solo scritta o intercorso a metà  
 Solo orale  
 Discussione di elaborato progettuale   
 Altro  

 

In caso di prova scritta i quesiti sono (*):
 A risposta multipla  
 A risposta libera  
 Esercizi numerici  

  

 L’esame si articola in una prova scritta e una orale. La prova scritta, che consiste di tre algoritmi da sviluppare in Python al calcolatore, può essere sostituita dallo sviluppo di un progetto pratico in Python su un’applicazione avanzata di elaborazione di immagini. La prova orale consiste in due domande su problemi/algoritmi esposti al corso.

 

CLOUD AND NETWORK INFRASTRUCTURES

SCHEDA DELL'INSEGNAMENTO (SI)
SSD ING-INF/05

 

LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA

ANNO ACCADEMICO: 2022-2023

 

INFORMAZIONI GENERALI - DOCENTE

DOCENTE: ROBERTO CANONICO
TELEFONO: +39 081 7683831
EMAIL: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

 

INFORMAZIONI GENERALI - ATTIVITÀ

INSEGNAMENTO INTEGRATO (EVENTUALE): 
MODULO (EVENTUALE):
CANALE (EVENTUALE):
ANNO DI CORSO (I, II, III): I
SEMESTRE (I, II): II
CFU: 6

 

INSEGNAMENTI PROPEDEUTICI

(se previsti dall'Ordinamento del CdS)

...................................................................................................................................................

 

EVENTUALI PREREQUISITI

Sistemi Operativi, Reti di Calcolatori, Programmazione I

 

OBIETTIVI FORMATIVI

Scopo del corso è impartire una conoscenza approfondita delle principali metodologie e tecniche impiegate nei contesti di Cloud Computing (pubblico, privato ed ibrido) per il dimensionamento dinamico, la configurazione e la gestione di infrastrutture virtualizzate. In particolare, il corso tratta:
- gli aspetti ingegneristici di progetto e realizzazione di un moderno datacenter e le principali tecnologie IT impiegate in questo specifico contesto;
- le peculiari soluzioni architetturali e protocollari che caratterizzano il networking nel contesto dei datacenter;
- le principali tecniche di virtualizzazione attualmente impiegate per le varie componenti di un sistema IT basato sul Cloud e come queste siano impiegate per la realizzazione di sistemi scalabili, elastici, flessibili e riconfigurabili attraverso il dispiegamento e l’orchestrazione di VM, container e componenti serverless;
- la tecniche di automazione che, attraverso il paradigma DevOps, consentono di automatizzare le procedure di messa in esercizio, configurazione e gestione dei sistemi cloud e rete.
Il corso prevede anche una parte laboratoriale ed esercitativa funzionale allo sviluppo di un elaborato.

 

RISULTATI DI APPRENDIMENTO ATTESI

(Descrittori di Dublino)

Conoscenza e capacità di comprensione
Lo studente dovrà dimostrare di aver compreso le caratteristiche fondamentali delle tecniche di virtualizzazione utilizzate nei sistemi cloud e di come esse debbano essere gestite per la realizzazione e la messa in esercizio di sistemi scalabili.

Capacità di applicare conoscenza e comprensione
Lo studente dovrà dimostrare di aver acquisito la capacità di applicare le tecniche apprese per la risoluzione di tipici problemi di progetto di applicazioni scalabili in cloud e per la configurazione delle componenti infrastrutturali di un datacenter che ospiti applicazioni cloud.

 

PROGRAMMA-SYLLABUS

Part I - Cloud Computing: enabling technologies
Virtualization technologies. The virtualization concept. Different approaches to IT resource virtualization. Type-1 and Type-2 hypervisors. Linux KVM. Container-based virtualization. Docker. Docker Image Layers. Container image repositories.
Switched networks. Switching systems. Input-queued crossbar switches and Head-of-Line blocking. Virtual output queues. Multi-stage interconnection networks. Clos theorem. Spanning Tree Protocol (STP). TRILL.
Virtual networking. Ethernet VLANs. Virtual network interfaces: TUN/TAP, MacVLAN, and MacVTap. Virtual Ethernet Port Aggregator (VEPA). Software switches: Linux Bridge, Open vSwitch. VM networking. Docker networking. SR-IOV NICs. Virtual routers. Virtualized network functions. Network Function Virtualization (NFV). Virtual Network Functions chaining and orchestration.
Lab #1: Docker. Creation of Docker containers. Multi-stage docker build.

Part II - Cloud Computing: the user perspective
Cloud Computing: foundational concepts. Cloud service models (IaaS, PaaS, SaaS). Cloud deployment models (public, private, hybrid, community). Elastic computing. Horizontal vs vertical scalability in the cloud. Cloud resources and identity. Service Level Agreements. Billing models for cloud services. Cloud APIs and interoperability. Serverless computing. Cloud edge computing.
Public cloud services. A review of main IaaS public cloud services.
Lab #2: Creation of a scalable infrastructure in a private cloud.

Part III - Datacenter engineering
Datacenter architecture and organization. General architecture and organization of a datacenter. Main datacenter facilities. Rack layouts. Rackable servers. Blade servers. ANSI/TIA-942 standard. Data Center Infrastructure Management (DCIM). Data center power management. Cooling solutions for datacenters. Power Usage Effectiveness (PUE). Datacenters for HPC applications.
Datacenter networking. Transmission media for datacenter links. UTP cabling. Optical fibers. Optical transceivers. Datacenter network architectures and topologies. Access layer organization: Top-of-Rack vs. End-of-Row. Leaf-Spine datacenter networks. Multipath in datacenter networks. ECMP and TRILL. Flowlets. TCP Incast and TCP variants for datacenter networks.
Other datacenter networking technologies. Storage networking technologies. SANs. Fiber Channel. ATA over Ethernet (AoE). Fibre Channel over Ethernet (FcoE). iSCSI and its Linux implementation. Infiniband.
Multi-tenancy in cloud networking. IEEE 802.1ad Q-in-Q. Overlay networking. NVGRE. VxLAN. Ethernet over MPLS. Ethernet over IP. MP-BGP. EVPN.
Lab #3: Emulation of a multitenant cloud in GNS3.

Part IV - Cloud management
Private cloud platforms. OpenStack. OpenStack general architecture and fundamental services. Kubernetes.
Resource management and configuration in private cloud infrastructures. The CloudSim simulator. The CloudSimNFV simulator. The VM placement problem and solution methods. The NFV placement problem and solution methods. Green datacenters and green cloud computing.
DevOps and Cloud automation. Basic DevOps concepts. CI/CD. Frameworks for automatic deployment and configuration of cloud components. Ansible. YAML. Lab #4: Use of YAML for automatic deployment of cloud components.

 

MATERIALE DIDATTICO

• Dispense e lucidi delle lezioni
• Altro materiale didattico reso disponibile dal docente
• Cloud Native Data Center Networking: Architecture, Protocols, and Tools (1st Edition). Dinesh G. Dutt. O'Reilly Media, 2019
• Network Programmability and Automation. Jason Edelman, Scott S. Lowe, Matt Oswalt. O'Reilly Media, 2018

 

MODALITÀ DI SVOLGIMENTO DELL'INSEGNAMENTO

Il corso consisterà di: a) lezioni frontali per l’80% delle ore totali; b) esercitazioni per il restante 20% delle ore totali.

 

VERIFICA DI APPRENDIMENTO E CRITERI DI VALUTAZIONE

a) Modalità di esame:

L'esame si articola in prova:
 Scritta e orale  
 Solo scritta o intercorso a metà  
 Solo orale
 Discussione di elaborato progettuale 
 Altro (discussione esercitazioni)  

 

In caso di prova scritta i quesiti sono (*):
 A risposta multipla  
 A risposta libera  
 Esercizi numerici  

 

L’esame consisterà di una prova orale durante la quale verrà anche discusso un elaborato progettuale precedentemente redatto dallo studente.

 

SOFTWARE TESTING

SCHEDA DELL'INSEGNAMENTO (SI)
SSD ING-INF/05

 

LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA

ANNO ACCADEMICO: 2022-2023

 

INFORMAZIONI GENERALI - DOCENTE

DOCENTE: PORFIRIO TRAMONTANA
TELEFONO: 0817683901
EMAIL: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

 

INFORMAZIONI GENERALI - ATTIVITÀ

INSEGNAMENTO INTEGRATO (EVENTUALE): 
MODULO (EVENTUALE):
CANALE (EVENTUALE):
ANNO DI CORSO (I, II, III): II
SEMESTRE (I, II): I
CFU: 6

 

INSEGNAMENTI PROPEDEUTICI

(se previsti dall'Ordinamento del CdS)

...................................................................................................................................................

 

EVENTUALI PREREQUISITI

I prerequisiti fondamentali di questo corso sono la conoscenza di base della programmazione ad oggetti, ed in particolare del linguaggio Java. Inoltre, è necessaria una conoscenza di base delle problematiche relative all’Ingegneria del Software. Nessuna conoscenza preliminare relativa al testing è invece necessaria.

 

OBIETTIVI FORMATIVI

Il corso si propone di definire e approfondire tematiche di Verifica e Validazione del Software, includenti metodologie, strategie, tecniche, strumenti e processi di Software Testing e Debugging. Il corso si propone di contribuire all’acquisizione di competenze relative allo sviluppo di software di qualità e alla sua valutazione, con particolare attenzione all’automazione di tali attività.
Questi obiettivi sono di fondamentale importanza nella realizzazione e valutazione di qualsiasi impianto informatico e sistema di elaborazione, da quelli hardware a quelli software, dai sistemi operativi alle reti di elaboratori, dalle basi di dati ai sistemi informativi, dall'intelligenza artificiale alla robotica.

 

RISULTATI DI APPRENDIMENTO ATTESI

(Descrittori di Dublino)

Conoscenza e capacità di comprensione
Lo studente deve essere in grado di comprendere l’importanza della qualità del software e della sua valutazione, in particolare la ricerca e correzione dei suoi difetti tramite l’applicazione di adeguate strategie e tecniche di testing. Lo studente deve comprendere quali siano le difficoltà intrinseche nel testing di un sistema software e saper scegliere tra le soluzioni che possono essere applicate. Tali conoscenze permetteranno agli studenti di poter integrare le conoscenze relative all’ingegneria del software allo scopo di organizzare processi di sviluppo di software di qualità e ad alta affidabilità. Lo studente deve anche essere in grado di comprendere come le metodologie e tecniche apprese possano contribuire a risolvere problemi relativi alla realizzazione di sistemi hardware o software di qualità.

Capacità di applicare conoscenza e comprensione
Lo studente deve dimostrare di saper organizzare processi di sviluppo software che prevedano una continua valutazione e miglioramento della qualità grazie all’esecuzione di efficaci ed efficienti attività di testing. Lo studente deve essere in grado di progettare e sviluppare piani di test del software a diversi livelli di dettaglio, dal testing di unità fino al testing di sistema e a quello di accettazione. Lo studente deve essere in grado di realizzare casi di test con elevato livello di automazione, sia in fase di generazione dei casi di test, che in fase di esecuzione e valutazione dell’esito. Lo studente deve essere in grado di utilizzare al meglio gli strumenti di testing esistenti e di aver acquisito la capacità di progettare e realizzare strumenti di testing innovativi.

 

PROGRAMMA-SYLLABUS

Elementi teorici del testing software: Definizioni – Problemi indecidibili – Tassonomia delle attività di testing
Qualità del testing: Adeguatezza - Precisione - Ripetibilità - Capacità di trovare i difetti - Efficacia – Efficienza
Specifica dei casi di test: Input – Output – Oracoli – Pre e post-condizioni
JUnit: Introduzione a JUnit - Implementazione di test di unità con JUnit su programmi Java – Assunzioni e asserzioni – Testing delle eccezioni – Test dinamici e parametrici – Testing Data Driven con JUnit
Testing Black Box. Testing basato sui requisiti e sugli scenari dei casi d'uso - Test con classi di equivalenza e valori limite - Strumenti e tecniche per la generazione combinatoriale dei casi di test - Testing con tabelle di decisione.
Testing White Box – Modelli e metriche di copertura - Strumenti per la misura automatica della copertura del codice.
Testing di integrazione e testing in isolamento – Tecniche di testing in isolamento con driver e stub – Grafi delle dipendenze - Strategie per il testing di integrazione: top-down, bottom-up, sandwich – Testing con Mock Objects – Cenni di dependency injection – Framework per la creazione di Mock Objects
Testing dell’interfaccia utente – Tecniche di testing delle interfacce utente a caratteri - Testing delle GUI - Modellazione delle GUI con macchine a stati finiti - Problema dell'esplosione degli stati e tecnica degli stati equivalenti – Librerie a supporto del testing di GUI - Validazione degli input.
Tecniche User Session: Tassonomia delle tecniche Capture & Replay per la generazione di test sull'interfaccia utente - Problematiche relative alla generazione di locatori robusti – Problematiche legate alla replicabilità dei test catturati – Strumenti di Capture & Replay per applicazioni Web
Tecniche di testing automation: Automazione nella generazione/esecuzione/valutazione dell'esito dei casi di test - Generazione e valutazione automatica di oracoli - Crash testing - Smoke Testing - Regression Testing.
Random testing: Caratteristiche e parametri del random testing - Problema della terminazione del random testing - Tecniche e strumenti per l’esplorazione automatica della GUI - Riduzione e prioritizzazione delle test suite.
Mutation Testing: Test case mutation – Mutation Analysis – Mutation based Testing – Strumenti per la generazione di mutant - Search based software testing: utilizzo di EvoSuite.
Experience based Testing: Exploratory Testing – Error Guessing e Checklist based Testing – Beta Testing - Crowdtesting – Piattaforme di CrowdTesting - Software Testing Gamification – Testing di unità con Code Defenders
Testing in Continuous Integration: Cenni su tecniche, linguaggi e strumenti per la build automation - Cenni su tecniche e strumenti per la gestione delle versioni concorrenti – Automazione di attività di testing in Github con Github Actions
Analisi statica del codice sorgente: Tecniche per l’analisi statica - Strumenti automatici di analisi statica: Checkstyle, PMD, Findbugs, Android Lint - Cenno all’utilizzo di SonarQube per il monitoraggio continuo della qualità del software
Debugging: Localizzazione e correzione dei difetti - Tecniche per il debugging: forza bruta - backtracking, eliminazione delle cause - Strumenti per il debugging: breakpoint, breakpoint condizionali, watch, watchpoint.
Testing delle applicazioni Android. Introduzione al sistema Android e alla programmazione di app Android - Testing di unità: utilizzo di JUnit e Robolectric - Testing della GUI: utilizzo di Robotium e Android Espresso - Utilizzo di Espresso Recorder per il Capture & Replay di casi di test - Testing di sistema: utilizzo di UIAutomator - Strumenti di testing a basso livello: Monkey - Strumenti di monitoraggio - Testing dei memory leaks - Strumenti di testing sistematico: Android Ripper - Testing di applicazioni con risorse remote: Cloud testing con Firebase TestLab, Alpha Testing, Beta Testing.

 

MATERIALE DIDATTICO

Il materiale didattico comprende un insieme completo di presentazioni realizzate dal docente che accompagnano tutte le lezioni del corso. In queste presentazioni sono riportati riferimenti a numerosi libri, articoli scientifici, strumenti di sviluppo, materiale sperimentale, esempi ed altre risorse online, che sono tutte messe a disposizione degli studenti.
Tra i libri consigliati:
Ian Sommerville, Ingegneria del Software, Pearson Addison Wesley
Mauro Pezzè and Michal Young, Software Testing and Analysis, John Wiley & Sons, 2008

 

MODALITÀ DI SVOLGIMENTO DELL'INSEGNAMENTO

Il corso si compone di 48 ore di lezione complessive, nelle quali si alterna didattica frontale (36 ore) con presentazione e discussione degli argomenti del corso ed esercitazioni (12 ore), nelle quali vengono mostrati e provati interattivamente tecniche e strumenti software a supporto delle attività di testing. Per alcuni argomenti sono proposte delle sperimentazioni basate sulla realizzazione di casi di test per sistemi software con l’applicazione di tecniche innovative di testing.
Vengono fornite le registrazioni di tutte le lezioni (prese in diretta mentre si tengono), il codice di tutti gli esempi ed esercitazioni svolte. Per le attività pratiche sono utilizzati esclusivamente software aperti e di libero utilizzo e vengono fornite le indicazioni fondamentali sul loro reperimento e utilizzo.

 

VERIFICA DI APPRENDIMENTO E CRITERI DI VALUTAZIONE

a) Modalità di esame:

L'esame si articola in prova:
 Scritta e orale  
 Solo scritta o intercorso a metà  
 Solo orale
 Discussione di elaborato progettuale 
 Altro  

 

In caso di prova scritta i quesiti sono (*):
 A risposta multipla  
 A risposta libera  
 Esercizi numerici  

  

L’esame si articola in uno o due elaborati progettuali, seguiti da una prova orale. Uno dei due elaborati progettuali consiste nella progettazione e realizzazione di un piano di test su di un software specifico, eventualmente proposto dal docente, applicando le tecniche e strumenti presentati al corso. Il secondo elaborato, invece, consiste nell’approfondimento di una tematica di testing innovativa rispetto ai contenuti del corso o nella realizzazione di uno strumento innovativo di testing del software.
La consegna e discussione con esito positivo degli elaborati di natura progettuale consente di accedere alla prova orale.
La prova orale consiste di una valutazione complessiva del raggiungimento degli obiettivi di apprendimento previsti, tramite interrogazione su argomenti relativi a tutto il programma del corso.

 

b) Modalità di valutazione:

Il voto finale terrà in considerazione sia della correttezza e innovatività degli elaborati progettuali, che della valutazione della prova orale.

 

 

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.