Linee guida di scrittura | Linee guida di sviluppo | Tesi in corso | Tesi svolte

Prima di richiedere la tesi…

Prima di richiedere formalmente la tesi, assicuratevi di avere letto con attenzione questa pagina. Leggere con attenzione significa anche e soprattuto seguire gli hyperlink presenti nelle descrizione perché possiate approfondire gli argomenti di tesi.
Quando infine avrete qualcosa da discutere, contattate il responsabile del Collab, prof. Filippo Lanubile.

 

Tesi da assegnare – supervisionate da un ricercatore del Collab

Software Engineering for Artificial Intelligence (SE4AI)

L’Intelligenza Artificiale (AI) è sempre più al centro dell’attenzione per le applicazioni innovative che è in grado di sostenere. Anche i sistemi software si arriccchiscono di funzionalità di AI e si aprono nuove sfide per sviluppare sistemi AI-enabled.

In tale ambito, proponiamo tesi di laurea sui seguenti argomenti principali per estendere Behaviz, un nostro prodotto di AI incentrato sui dati comportamentali, tra cui il riconoscimento delle emozioni da testi scritti.

  • Integrazione di un model registry, un sistema centralizzato per la memorizzazione e la gestione collaborativa di modelli di Machine Learning con i relativi metadati. Uno strumento open-source che potrebbe essere adottato a tale scopo è MLflow Model Registry.
  • Implementazione di un sistema di monitoraggio delle performance dei modelli, al fine di rilevare e gestire tempestivamente fenomeni di data/concept drift.
  • Implementazione di un sistema di monitoraggio delle risorse, al fine di poter valutare le prestazioni del sistema nel suo complesso.
  • Implementazione di librerie wrapper in Python e Javascript per la fruizione dell’API, con lo scopo di fornire agli utenti di BehaViz una astrazione di alto livello che ne faciliti l’integrazione in sistemi di terze parti.
  • Adattamento architetturale del sistema per la gestione di richieste con input di grandi dimensioni (implementazione di una modalità bulk per la classificazione di frasi in batch).
  • Orchestrazione dei container di BehaViz tramite Kubernetes, al fine di ottimizzare la disponibilità, la robustezza e la scalabilità dell’architettura a microservizi.

AI-augmented software development

Issue  Management in Software Engineering

La corretta gestione degli issue (bug, enhancement, question) è fondamentale per il coordinamento di un progetto di sviluppo software, sia open che closed source.

In questo ambito, attualmente proponiamo le seguenti tesi relative alla gestione degli issue:

  • Classificazione di Issue Reports tramite Few Shot Learning e Domain Adaptation
  • Analisi di drift nei dati di Issue Report di GitHub

Emotion detection in Software Engineering

Per garantire il successo di progetti software di successo è importante monitorare le emozioni a livello individuale e i team, poichè le emozioni negative possono rappresentare un ostacolo allo sviluppo collaborativo.

Nell’ambito di queste tematiche, l’attività di ricerca e le relative tesi vertono sui seguenti argomenti principali:

  • Riconoscimento di emozioni a partire dall’analisi dei sensori biometrici su dispositivi indossabili
  • Sentiment analysis delle interazioni tra sviluppatori mediate da piattaforme collaborative quali Stack Overflow, GitHub, Jira, ecc.

Personality detection in Software Engineering

La collaborazione, spesso a distanza, tra sviluppatori di progetti distribuiti su scala globale nasconde numerose insidie tra cui scarsa fiducia, mancato gioco di squadra, disallineamento tra aspirazioni personali e obiettivi di progetto. Conoscere la personalità degli sviluppatori può essere di aiuto nel comprendere i problemi e possibilmente prevenirli.

Attualmente, proponiamo le seguenti tesi nell’ambito dell’analisi della personalità:

  • Riconoscimento automatico della personalità secondo il modello Big 5: basandosi sui recenti sviluppi delle tecnologie di AI/ML, individuare gli approcci basati su deep learning più promettenti e realizzare un prototipo in Python.

Tesi da assegnare su progetti esterni

Un invito sempre valido è quello di partecipare attivamente a un progetto open source di vostro interesse. Questa è un’opportunità concreta per mettere alla prova e migliorare le vostre capacità, confrontandovi con altri sviluppatori di tutto il mondo. E’ importante che la scelta sia dettata dall’interesse in un’applicazione o una tecnologia, soprattutto se già ne conoscete limiti e pregi: questo renderebbe più semplice l’inizio della collaborazione (ciononostante, ogni vuoto è colmabile). L’applicazione con la quale “provare” la tecnologia potreste averla già individuata oppure potreste trovarla consultando una guida alla contribuzione a un progetto open source o l’analizzatore di progetti open source Open Hub. Quello che vi si chiede non è granchè diverso dall’iniziativa Google Summer of Code, in cui un manipolo di studenti valorosi sono ingaggiati per pochi mesi al fine di creare o estendere un progetto di open source software. Nel vostro caso il premio è la tesi di laurea.