Metodologie e architetture software avanzate
Focus
La linea di ricerca di Metodologie e Architetture Software Avanzate al Politecnico di Milano è organizzata in tre sottogruppi.
Il gruppo DEEPSE (DEpendable Evolvable Pervasive Software Engineering) svolge attività di ricerca sulle tecniche, gli strumenti e i framework per lo sviluppo di sistemi software complessi. DEEPSE affronta una varietà di aspetti di tali sistemi, che vanno dai problemi di modellazione e analisi nelle prime fasi del loro sviluppo, ai problemi legati alla loro implementazione e alla gestione e ottimizzazione a runtime. Tale attività di ricerca si concentra principalmente su applicazioni caratterizzate dall’essere distribuite, pervasive, adattive, riconfigurabili, mobili e critiche, e culmina quasi sempre nello sviluppo di prototipi. Il gruppo studia anche l'impatto economico e strategico del software sull'industria e sulla società in generale.
L'interesse e la competenza del gruppo di Compiler Technology sono incentrati su concetti, metodi e strumenti per la traduzione e l'ottimizzazione dei linguaggi di programmazione. Il gruppo ha sviluppato compilatori statici e dinamici per una varietà di linguaggi e piattaforme. Le attività di ricerca più recenti si concentrano sui linguaggi e modelli di programmazione parallela, sulla decompilazione da codice binario, e sul supporto fornito dal compilatore alle proprietà extra-funzionali dell'applicazione, come sicurezza ed efficienza energetica.
Il gruppo di Natural Language Processing and Accessibility svolge attività di ricerca per la creazione di applicazioni ed ambienti software adattabili a sostegno dei processi comunicativi, relazionali e cognitivi. Modelli e metodi presi dall’ingegneria del software e dall’intelligenza artificiale vengono impiegati per l’analisi e la gestione di informazioni linguistiche sia testuali sia vocali (NLP) e per la cura dell’accessibilità delle diverse soluzioni. La ricerca più innovativa riguarda: l’analisi dell’interazione dialogica con rilevazione di stati emotivi ed affettivi, il riconoscimento e il sostegno all’espressione della prosodia, l’apprendimento di una seconda lingua, lo storytelling multimodale, l’estrazione di informazioni e ragionamenti, il riassunto automatico, la valutazione della leggibilità, l’indicizzazione semantica, l’accessibilità dei contenuti in accordo con le normative internazionali in continua evoluzione.
Il gruppo DEEPSE (DEpendable Evolvable Pervasive Software Engineering) svolge attività di ricerca sulle tecniche, gli strumenti e i framework per lo sviluppo di sistemi software complessi. DEEPSE affronta una varietà di aspetti di tali sistemi, che vanno dai problemi di modellazione e analisi nelle prime fasi del loro sviluppo, ai problemi legati alla loro implementazione e alla gestione e ottimizzazione a runtime. Tale attività di ricerca si concentra principalmente su applicazioni caratterizzate dall’essere distribuite, pervasive, adattive, riconfigurabili, mobili e critiche, e culmina quasi sempre nello sviluppo di prototipi. Il gruppo studia anche l'impatto economico e strategico del software sull'industria e sulla società in generale.
L'interesse e la competenza del gruppo di Compiler Technology sono incentrati su concetti, metodi e strumenti per la traduzione e l'ottimizzazione dei linguaggi di programmazione. Il gruppo ha sviluppato compilatori statici e dinamici per una varietà di linguaggi e piattaforme. Le attività di ricerca più recenti si concentrano sui linguaggi e modelli di programmazione parallela, sulla decompilazione da codice binario, e sul supporto fornito dal compilatore alle proprietà extra-funzionali dell'applicazione, come sicurezza ed efficienza energetica.
Il gruppo di Natural Language Processing and Accessibility svolge attività di ricerca per la creazione di applicazioni ed ambienti software adattabili a sostegno dei processi comunicativi, relazionali e cognitivi. Modelli e metodi presi dall’ingegneria del software e dall’intelligenza artificiale vengono impiegati per l’analisi e la gestione di informazioni linguistiche sia testuali sia vocali (NLP) e per la cura dell’accessibilità delle diverse soluzioni. La ricerca più innovativa riguarda: l’analisi dell’interazione dialogica con rilevazione di stati emotivi ed affettivi, il riconoscimento e il sostegno all’espressione della prosodia, l’apprendimento di una seconda lingua, lo storytelling multimodale, l’estrazione di informazioni e ragionamenti, il riassunto automatico, la valutazione della leggibilità, l’indicizzazione semantica, l’accessibilità dei contenuti in accordo con le normative internazionali in continua evoluzione.
Risultati principali della ricerca
Applicazioni IoT ad alimentazione intermittente
Stiamo sviluppando tecniche software per supportare applicazioni IoT che potrebbero essere interrotte in modo imprevedibile a causa di carenze energetiche e in seguito dovranno riprendere l'esecuzione non appena l'energia sarà nuovamente disponibile. Esempi sono nel dominio degli edifici intelligenti e dei dispositivi indossabili, il cui approvvigionamento energetico può essere assistito attraverso la raccolta di energia ambientale e il trasferimento di energia wireless. Poiché la disponibilità di energia sarà irregolare, si verificheranno spesso arresti e riavvii. Per risolvere il problema, la ricerca avviene in tre direzioni. La prima è come abilitare un checkpoint dello stato del programma su storage stabile con minima latenza e consumo energetico. Il secondo è come determinare quando e come coordinare il checkpoint con l'elaborazione dell'applicazione. Terzo è quale supporto offrire agli sviluppatori per gestire la possibilità che le applicazioni vengano interrotte per un periodo di tempo non trascurabile.
Gestione delle risorse e monitoraggio di sistemi a servizi, cloud e big data
Abbiamo sviluppato un sistema di monitoraggio (EcoWare) che permette ai progettisti di specificare le proprietà funzionali e non di sistemi a servizi, cloud e big data. Abbiamo anche sviluppato tecniche che sfruttano il monitoraggio per consentire l’allocazione automatica delle risorse di calcolo. Le soluzioni proposte si basano sull’uso di tecniche mutuate dalla teoria del controllo e sull’uso di container per avere tempi di reazione sufficientemente piccoli rispetto all’evoluzione dei sistemi. La sperimentazione è stata condotta sia su applicazioni a servizi e Web, sia su applicazioni per big data.
Un Approccio Model-Driven per lo sviluppo di applicazioni Big Data con garanzie di qualità
Il gruppo ha sviluppato una metodologia e strumenti a supporto della progettazione di applicazioni data-intensive che sfruttano tecnologie Big Data ospitate in cloud privati o pubblici. In particolare, abbiamo sviluppato un nuovo profilo UML e strumenti per la valutazione delle prestazioni, la verifica, l'ottimizzazione ed il deployment automatico di applicazioni Big Data basati sui principi del paradigma DevOps.
Astrazioni middleware per sistemi distribuiti
Abbiamo svolto numerose ricerche nel campo dei middleware per sistemi reattivi e ad eventi. I risultati più rilevanti sono: REDS, un middleware publish/subscribe distribuito e riconfigurabile; T-Rex, un sistema di Complex Event Processing (CEP) che combina un linguaggio a regole espressivo con un'infrastruttura efficiente e in grado di sfruttare CPU multi-core e GPU per massimizzare le prestazioni; CCBR, un'infrastruttura di routing publish/subscribe per reti di sensori wireless; DREAM, un middleware per la programmazione reattiva distribuita che offre livelli di consistenza configurabili; T-SPoon, un sistema di stream processing che integra garanzie transazionali.
Metodi formali per sistemi real-time e safe-critical
Abbiamo studiato le caratteristiche di una serie di formalismi per la descrizione e l'analisi dei sistemi real-time. Abbiamo anche studiato le tecniche per modellare e analizzare i sistemi real-time attraverso logiche temporali. Abbiamo anche sviluppato una tecnica per integrare specifiche temporali a tempo continuo e discreto in un unico framework che abbiamo usato per la verifica di sistemi real-time reali.
Un approccio model-driven per la realizzazione di app cross-platform
Abbiamo studiato le caratteristiche di Android ed iOS ed abbiamo realizzato un modello “generico” di app mobile. Il modello è stato poi usato per realizzare ProtoCode, strumento per la generazione automatica del codice nativo necessario per la realizzazione di app Android ed iOS. L’utente può usare un IDE specifico per progettare l’applicazione in modo “astratto” e ProtoCode genera poi automaticamente il 70/80% del codice necessario.
Linguaggi a precedenza d’operatore
Linguaggi a precedenza d’operatore (OPL, Floyd 1963) godono di tutte le proprietà di chiusura dei linguaggi Regolari, a Parentesi di McNaughton, e dei Visibly Pushdown (o Input-Driven), pur essendo molto più espressivi. Sono state definite caratterizzazioni logiche, automi, e linguaggi omega, oltre ad altre notazioni logiche, con l'obiettivo di applicarle alla verifica di sistemi a pila temporali e reattivi. Abbiamo inoltre dimostrato che gli OPL godono della proprietà di parsabilità locale, che permette un'analisi sintattica parallela ed efficiente; abbiamo sviluppato a questo proposito un generatore di parser paralleli molto efficiente, chiamato PAPAGENO.
Tecnologie dei Compilatori per il supporto a proprietà extra-funzionali
Abbiamo sviluppato un compilatore e supporto di runtime OpenCL basato sull'infrastruttura LLVM, OpenCRun, una libreria di supporto di runtime per sistemi eterogenei con gestione automatica delle risorse, mangolibs, e una libreria per la gestione di compilazione e ricompilazione dinamica parziale per applicazioni ad alte prestazioni, libVC. A supporto dell'efficienza energetica di sistemi ad alte prestazioni e sistemi dedicati a basso consumo, sviluppiamo tecniche basate sul compilatore per regolare la precisione del calcolo in modo automatica. Infine, è stato sviluppato un insieme di tecniche per aumentare la sicurezza in presenza di attacchi side-channel, comprensive dell'analisi automatica della vulnerabilità e dell'applicazione di contromisure dedicate.
Decompilatori
Abbiamo sviluppato rev.ng, un decompilatore basato su LLVM e QEMU. rev.ng è in grado di supportare facilmente nuove architetture, grazie alla sua architettura modulare basata su solide infrastrutture open source. Inoltre, rev.ng supporta la ricompilazione dei binari decompilati su architetture diverse, a pari sistema operativo, nonché l'instrumentazione dei binari ricompilati. rev.ng può quindi essere utilmente impiegato nel supporto di applicazioni progettate per architetture obsolete e di cui si siano persi i sorgenti, nonché per analisi di sicurezza di applicazioni.
ICF*
Il modello dell'Organizzazione Mondiale della Sanità ICF permette di descrivere ogni persona attraverso un elenco di valori qualitativi. L'ICF non permette di descrivere le capacità di interazione con computer, telefoni e altri dispositivi ICT. L’ICF* che abbiamo definito cerca di affrontare questi problemi, fornendo un modello semplice ma espressivo, su misura per la descrizione degli studenti universitari e la personalizzazione delle applicazioni software.
Applicazioni NLP
DIKE permette di descrivere gli interrogatori di tribunale, secondo un modello multi-livello che comprende analisi a livello di frase, discorso e dialogo. DIKE consente l’analisi dei momenti di discontinuità e la definizione dei profili dei parlanti e degli interrogatori stessi. PrEmA riconosce e classifica le emozioni presenti nel parlato sfruttando sia feature acustiche sia informazioni testuali provenienti dalla trascrizione dell’audio. KASPAR permette di “allenare” l’espressività prosodica, invitando ad emulare il parlato di esperti (attori, madrelingua, …). La prosodia viene rappresentata attraverso la visualizzazione dell’andamento nel tempo dei parametri fondamentali.
Stiamo sviluppando tecniche software per supportare applicazioni IoT che potrebbero essere interrotte in modo imprevedibile a causa di carenze energetiche e in seguito dovranno riprendere l'esecuzione non appena l'energia sarà nuovamente disponibile. Esempi sono nel dominio degli edifici intelligenti e dei dispositivi indossabili, il cui approvvigionamento energetico può essere assistito attraverso la raccolta di energia ambientale e il trasferimento di energia wireless. Poiché la disponibilità di energia sarà irregolare, si verificheranno spesso arresti e riavvii. Per risolvere il problema, la ricerca avviene in tre direzioni. La prima è come abilitare un checkpoint dello stato del programma su storage stabile con minima latenza e consumo energetico. Il secondo è come determinare quando e come coordinare il checkpoint con l'elaborazione dell'applicazione. Terzo è quale supporto offrire agli sviluppatori per gestire la possibilità che le applicazioni vengano interrotte per un periodo di tempo non trascurabile.
Gestione delle risorse e monitoraggio di sistemi a servizi, cloud e big data
Abbiamo sviluppato un sistema di monitoraggio (EcoWare) che permette ai progettisti di specificare le proprietà funzionali e non di sistemi a servizi, cloud e big data. Abbiamo anche sviluppato tecniche che sfruttano il monitoraggio per consentire l’allocazione automatica delle risorse di calcolo. Le soluzioni proposte si basano sull’uso di tecniche mutuate dalla teoria del controllo e sull’uso di container per avere tempi di reazione sufficientemente piccoli rispetto all’evoluzione dei sistemi. La sperimentazione è stata condotta sia su applicazioni a servizi e Web, sia su applicazioni per big data.
Un Approccio Model-Driven per lo sviluppo di applicazioni Big Data con garanzie di qualità
Il gruppo ha sviluppato una metodologia e strumenti a supporto della progettazione di applicazioni data-intensive che sfruttano tecnologie Big Data ospitate in cloud privati o pubblici. In particolare, abbiamo sviluppato un nuovo profilo UML e strumenti per la valutazione delle prestazioni, la verifica, l'ottimizzazione ed il deployment automatico di applicazioni Big Data basati sui principi del paradigma DevOps.
Astrazioni middleware per sistemi distribuiti
Abbiamo svolto numerose ricerche nel campo dei middleware per sistemi reattivi e ad eventi. I risultati più rilevanti sono: REDS, un middleware publish/subscribe distribuito e riconfigurabile; T-Rex, un sistema di Complex Event Processing (CEP) che combina un linguaggio a regole espressivo con un'infrastruttura efficiente e in grado di sfruttare CPU multi-core e GPU per massimizzare le prestazioni; CCBR, un'infrastruttura di routing publish/subscribe per reti di sensori wireless; DREAM, un middleware per la programmazione reattiva distribuita che offre livelli di consistenza configurabili; T-SPoon, un sistema di stream processing che integra garanzie transazionali.
Metodi formali per sistemi real-time e safe-critical
Abbiamo studiato le caratteristiche di una serie di formalismi per la descrizione e l'analisi dei sistemi real-time. Abbiamo anche studiato le tecniche per modellare e analizzare i sistemi real-time attraverso logiche temporali. Abbiamo anche sviluppato una tecnica per integrare specifiche temporali a tempo continuo e discreto in un unico framework che abbiamo usato per la verifica di sistemi real-time reali.
Un approccio model-driven per la realizzazione di app cross-platform
Abbiamo studiato le caratteristiche di Android ed iOS ed abbiamo realizzato un modello “generico” di app mobile. Il modello è stato poi usato per realizzare ProtoCode, strumento per la generazione automatica del codice nativo necessario per la realizzazione di app Android ed iOS. L’utente può usare un IDE specifico per progettare l’applicazione in modo “astratto” e ProtoCode genera poi automaticamente il 70/80% del codice necessario.
Linguaggi a precedenza d’operatore
Linguaggi a precedenza d’operatore (OPL, Floyd 1963) godono di tutte le proprietà di chiusura dei linguaggi Regolari, a Parentesi di McNaughton, e dei Visibly Pushdown (o Input-Driven), pur essendo molto più espressivi. Sono state definite caratterizzazioni logiche, automi, e linguaggi omega, oltre ad altre notazioni logiche, con l'obiettivo di applicarle alla verifica di sistemi a pila temporali e reattivi. Abbiamo inoltre dimostrato che gli OPL godono della proprietà di parsabilità locale, che permette un'analisi sintattica parallela ed efficiente; abbiamo sviluppato a questo proposito un generatore di parser paralleli molto efficiente, chiamato PAPAGENO.
Tecnologie dei Compilatori per il supporto a proprietà extra-funzionali
Abbiamo sviluppato un compilatore e supporto di runtime OpenCL basato sull'infrastruttura LLVM, OpenCRun, una libreria di supporto di runtime per sistemi eterogenei con gestione automatica delle risorse, mangolibs, e una libreria per la gestione di compilazione e ricompilazione dinamica parziale per applicazioni ad alte prestazioni, libVC. A supporto dell'efficienza energetica di sistemi ad alte prestazioni e sistemi dedicati a basso consumo, sviluppiamo tecniche basate sul compilatore per regolare la precisione del calcolo in modo automatica. Infine, è stato sviluppato un insieme di tecniche per aumentare la sicurezza in presenza di attacchi side-channel, comprensive dell'analisi automatica della vulnerabilità e dell'applicazione di contromisure dedicate.
Decompilatori
Abbiamo sviluppato rev.ng, un decompilatore basato su LLVM e QEMU. rev.ng è in grado di supportare facilmente nuove architetture, grazie alla sua architettura modulare basata su solide infrastrutture open source. Inoltre, rev.ng supporta la ricompilazione dei binari decompilati su architetture diverse, a pari sistema operativo, nonché l'instrumentazione dei binari ricompilati. rev.ng può quindi essere utilmente impiegato nel supporto di applicazioni progettate per architetture obsolete e di cui si siano persi i sorgenti, nonché per analisi di sicurezza di applicazioni.
ICF*
Il modello dell'Organizzazione Mondiale della Sanità ICF permette di descrivere ogni persona attraverso un elenco di valori qualitativi. L'ICF non permette di descrivere le capacità di interazione con computer, telefoni e altri dispositivi ICT. L’ICF* che abbiamo definito cerca di affrontare questi problemi, fornendo un modello semplice ma espressivo, su misura per la descrizione degli studenti universitari e la personalizzazione delle applicazioni software.
Applicazioni NLP
DIKE permette di descrivere gli interrogatori di tribunale, secondo un modello multi-livello che comprende analisi a livello di frase, discorso e dialogo. DIKE consente l’analisi dei momenti di discontinuità e la definizione dei profili dei parlanti e degli interrogatori stessi. PrEmA riconosce e classifica le emozioni presenti nel parlato sfruttando sia feature acustiche sia informazioni testuali provenienti dalla trascrizione dell’audio. KASPAR permette di “allenare” l’espressività prosodica, invitando ad emulare il parlato di esperti (attori, madrelingua, …). La prosodia viene rappresentata attraverso la visualizzazione dell’andamento nel tempo dei parametri fondamentali.