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

Comunicazione integrata per team agili e DevOps

Gli sviluppatori usano molti strumenti di comunicazioni diversi per il proprio lavoro. Essi infatti usano, per esempio, l’email per la comunicazione extra-team, Skype per le video conferenze, Twitter per interagire con i clienti, GitHub per condurre code review, etc. L’attività di ricerca, e le relative tesi, vertono due rami principali.

1. I team moderni usano sempre meno l’email come strumento di comunicazione, preferendo altri canali come Slack e Gitter. Le tesi relative a questo ramo, prevedono:

  • analisi dell’uso del più popolare strumento di comunicazione per team, Slack, in grandi progetti open e closed source
  • confronto tra l’uso degli strumenti di comunicazione Slack e Gitter nel supportare le discussioni tra sviluppatori in progetti Open Source.

2. Per ridurre la frammentazione delle informazioni derivante dalla molteplicità dei tool per lo sviluppo agile e il rilascio continuo, abbiamo definito un modello di comunicazione integrata Hub-and-Spoke incentrato su hub di comunicazione, di continuous integration e di continuous deployment. Le tesi relative a questo ramo, prevedono:

  • sperimentazione dell’integrazione di tool con Slack in ambienti di sviluppo software ed erogazione di servizi in cloud computing
  • sviluppo di smart bot per Slack, ovvero bot conversazionali, che filtrano in modo personalizzato le informazioni tenendo conto del contesto in cui agiscono e dell’utente con cui interagiscono.

I tesisti utilizzeranno le risorse di cloud computing del data center ReCaS-Bari, tra i più grandi e versatili d’Italia, interagendo con il personale tecnico del data center oltre che con i ricercatori del Collab.

GitHub

GitHub è un popolare servizio di hosting per progetti software, costruito intorno a Git, il sistema di version control distribuito ideato da Linus Torvalds. GitHub è una piattaforma di social coding in quanto integra strumenti di supporto allo sviluppo del software con funzionalità simili a quelle di un social network (per es., feed di attività, followers, preferiti).

Attualmente, la ricerca su GitHub si concentra sull’analisi di progetti open source per:

  • I progetti software diventano sempre più complessi e, pertanto, diventano il risultato della collaborazione di molti sviluppatori diversi, ciascuno con caratteristiche personali differenti. La collaborazione, spesso a distanza, tra sviluppatori di progetti distrubuiti su scala globale nasconde diverse insidie (e.g., scarsa fiducia, mancato senso di appartenenza al team, disallineamento tra obiettivi personali e di progetto). La comprensione della personalità degli sviluppatori, tenuto conto delle attività svolto e del ruolo ricoperto, potrebbe essere in grado di spiegare e, in futuro anticipare, parte delle difficoltà incontrate nei progetti software. L’obiettivo di questa tesi è effettuare benchmark di tool di analisi psicometrica, ossia strumenti automatici in grado di misurare la personalità degli sviluppatori software a partire da testi scritti (e.g., email, messaggi di chat).
  • Nello stesso contesto della tesi precedente, questa ha come obiettivo specifico misurare l’effetto della personalità dell’integration manager che ispeziona il codice di una pull request sull’accettazione di contributo in progetti Open Source in GitHub
  • SZZ è un algoritmo per identificare i bug-inducing commit, ossia modifche al codice che hanno introdotto dei difetti e, di conseguenza, hanno richiesto successivi bug-fixing commit per la loro risoluzione. Per ciascuno di questi bug-fixing commit di un progetto, l’algoritmo SZZ analizza le modifiche linea per linea, risalendo indietro nella storia al primo commit (ossia il bug-inducing commit) che ha creato ciascuna riga modificate. Tuttavia, i progetti di grandi dimensioni hanno un numero di commit molto grande, che può facilmente superare le decine di migliaia. Di conseguenza, l’algoritmo SZZ è estremamento lento se eseguito in modo sequenziale. L’obiettivo di questa tesi è creare una implementazione massivamente parallela di SZZ sfruttando la piattaforma di parallel computing CUDA per GPU di NVIDIA.
  • valutare l’effetto della fiducia reciproca (trust) che si instaura nel tempo tra l’integration manager e l’autore del contributo, sull’accettazione del contributo
  • valutare l’effetto della numerosità dei revisori sull’accettazione del contributo

I tesisti utilizzeranno librerie per l’estrazione dei dati, le risorse di cloud computing del data center ReCaS-Bari per il calcolo e lo storage, risorse linguistiche e strumenti di analisi statistica dei dati e di sentiment analysis.

Stack Overflow

Stack Overflow è il sito di Question and Answer (Q&A) più popolare per la condivisione della conoscenza nello sviluppo del software. Con milioni di utenti in cerca di informazioni e milioni di domande, risposte e commenti, Stack Overflow è un caso di Big Data da analizzare per migliorare l’efficacia della ricerca di informazioni.

L’attività di ricerca, e le relative tesi, vertono sui seguenti rami principali:

  • Replica indipendente di studi precedenti che hanno effettuato sentiment analysis su artefatti software (bug report, app review), utilizzando un (nostro) classificatore sviluppato specificatamente sul dominio del software engineering.
  • Studiare l’effetto del genere (gender effect) e della mancanza di esperienza e reputazione (newbie users) sulla partecipazione in Stack Overflow. In particolare, attraverso il sentiment analysis delle domande poste in Stack Overflow, intendiamo trovare evidenza circa  la presenza di barriere che causano disugualianza nella partecipazione degli utenti.
  • Mining dei milioni di domande e risposte da Stack Overflow al fine di comprendere l’impatto dei sub-topic (o canali, per esempio, Java, Ruby, Python) e la loro età/dimensione (quanto è mainstream la tecnologia?) sull’accettazione delle risposte e la reputazione degli utenti.

I tesisti utilizzeranno librerie di scraping per l’estrazione dei dati, le risorse di cloud computing del data center ReCaS-Bari per il calcolo e lo storage, risorse linguistiche e strumenti di analisi statistica dei dati e di sentiment analysis.

Comunità Online

Sempre più utenti della Rete comunicano a distanza, condividono contenuti e coordinano le loro attività, usando piattaforme online per collaborare insieme su un obiettivo o interesse comune e formando così delle comunità creative online. Recentemente, le comunità creative online si stanno espandendo verso domini caratteristici delle industrie culturali e creative quali l’audiovisivo (film, televisione, animazione, videogiochi e multimedia), la musica e la letteratura. Nonostante la crescente diffusione di queste comunità creative online, non conosciamo del tutto i fattori che portano al successo delle collaborazioni.
Fattori rilevanti per il successo delle collaborazioni sia nel dominio tecnico (open source software), sia nel dominio artistico, sono di natura tecnica e sociale (sorprendentemente in misura maggiore). Diversi fattori possono influenzare il comportamento degli utenti (es. lo sviluppo di emozioni, fiducia reciproca, leadership, socialità) in un ambiente online in cui le persone interagiscono virtualmente per il raggiungimento di qualche obiettivo.
Alla luce delle evidenze e di alcune mancanze esistenti in letteratura, le domande che ci poniamo sono: Quali sono i fattori di successo delle collaborazioni nelle comunità creative online? Quali di questi fattori sono dipendenti dal dominio della collaborazione?
Per rispondere a tali domande vogliamo:

  • studiare comunità creative online di diverso tipo, dalle comunità di sviluppo di software open source (OSS) a quelle per la collaborazione creativa artistica;
  • valutare in che misura i diversi fattori determinano il successo delle interazioni nelle comunità creative online;
  • stabilire quali dei risultati e delle evidenze finora riscontrate dalla ricerca precedente possano trasferirsi da un da una comunità creativa all’altra.

Lo studio sulle comunità creative online, è attualmente concentrato su Songtree, una comunità per la creazione collaborativa di musica. Nel dicembre 2016, la comunità contava circa 26K utenti registrati attivi, di cui ~5.300 sono autori che hanno caricato oltre 26.000 canzoni. Attualmente conta più di 175K utenti e un patrimonio di oltre 150K canzoni.
Songtree consente a qualsiasi utente di estendere qualsiasi canzone condivisa nella comunità sfruttando la metafora di un albero in crescita per rappresentare e tenere traccia della collaborazione nella creazione di canzoni. Una nuova canzone caricata è la radice del suo albero; per ogni brano derivato da esso, viene creato un nuovo ramo e aggiunto all’albero della canzone. Così, nel tempo, l’albero di una canzone cresce gradualmente quando nuove estensioni (dette overdub) vengono pubblicate, ciascuna derivata da una qualsiasi dei nodi dell’albero.
Songtree dispone anche di funzionalità tipiche dei social network, tra cui la possibilità di seguire altri musicisti (“follow”), nonché di esprimere apprezzamento tramite “like” e “bookmark”. Gli utenti di Songtree possono crescere in popolarità guadagnando diversi “badge” attraverso la loro attività all’interno della comunità. I badge fungono da misura proxy della reputazione degli artisti all’interno della comunità, misurata dalla quantità e dalla qualità del contenuto creato in essi. Le pagine del profilo utente elencano le informazioni personali degli autori, la biografia, le immagini, i link a canzoni e follower, nonché le statistiche delle attività dell’utente.

Grazie alla possibilità di individuare similarità tra i domini tecnico e artistico, il nostro approccio comprenderà il riadattamento di alcuni studi già effettuati in un settore in modo da verificarne la validità nell’altro per definre un modello più generale per la comprensione delle collaborazioni online.

Controllo di versione per immagini

Il controllo di versione (e.g., Git, Mercurial, SVN) è considerato una componente vitale per lo sviluppo di software. Sebbene tali sistemi siano stati ampiamente utilizzati per gli artefatti testuali, come il codice sorgente o la documentazione, poca attenzione è stata riservata agli artefatti binari di grandi dimensioni come le immagini. Le strategie attualmente esistenti si limitano a sovrascrivere l’intero file per ogni revisione, causando così l’aumento spropositato della dimensione dei repository. L’idea di questa tesi è creare un’estensione di Git per supportare le operazione di versionamento (i.e., diff, patch e merge) per le immagini a livello di pixel, consentendo così di salvare spazio attraverso la memorizzazione del solo delta delle modifche tra un’immagine e la sua versione successiva. Tale estensione deve co-esistere con Git-LFS (Large Files Storage), un’estensione che sostituisce file di grandi dimensioni con puntatori di testo all’interno di Git,  memorizza il contenuto del file su un server remoto dedicato.

Social CDE
Gli ambienti di sviluppo collaborativo (CDE, altrimenti detti ALM) attualmente supportano le notifiche (awareness) a livello di workspace (es., fatta una nuova build, commit di nuovo codice) e di presence (es., occupato, assente). Intendiamo fornire agli sviluppatori che lavorano in remoto anche elementi di social awareness, cioé notifiche con informazioni “sociali” a livello di gruppo, al fine di favorire lo sviluppo di relazione interpersonali tra membri di team distanti.

Il nostro gruppo di ricerca ha avviato su questo tema il progetto SocialCDE, per il quale abbiamo sviluppato un estensione di Eclipse o Visual Studio (client) e di GitHub o TFS (server) al fine di aggregare i post dei social network dei componenti del proprio team all’interno del workspace.

Saranno attivate nuove tesi per evolvere il progetto con modifiche ed estensioni che saranno determinate in modo agile dal feedback delle sperimentazioni in corso. –>

Tecnologie assistive

La qualità della vita di persone affette da disabilità può migliorare grazie a sistemi software assistivi che aiutino a svolgere in modo indipendente attività lavorative e ricreative.

Progetti precedenti sono stati condotti in collaborazione con l’associazione Informatici Senza Frontiere (ISF), la cui finalità è mettere a disposizione conoscenze e strumenti informatici per aiutare chi vive situazioni di emarginazione e difficoltà. Attualmente è attivo, e suscettibile di estensioni, il progetto Scriba finalizzato alla trascrizione realtime in eventi pubblici per non udenti.

 

Tesi da assegnare – supervisionate da personale tecnico universitario

Data Center ReCaS-Bari

Il data center ReCaS-Bari è stato realizzato dall’Università degli Studi di Bari Aldo Moro e dall’Istituto Nazionale di Fisica Nucleare (INFN) nell’ambito del progetto ReCaS (PON R&C 2007-2013) e completato a luglio 2015. Il Data Center è tra i più grandi e versatili d’Italia, ha una potenza di calcolo equivalente a 15.000 processori ed una capacità di memoria di oltre 6.000 terabyte, con la potenzialità di scambiare dati con l’esterno a una velocità di 10 Gbps. Il data center espone le risorse di calcolo e storage attraverso il paradigma del cloud computing non solo ai ricercatori  nel campo della fisica, ma anche a ricercatori di altre discipline scientifiche, inclusa l’informatica. Di fatto tutto il sistema di gestione del data center è basato su software open source: OpenStack, Docker, Mesos, Kubernetes, OpenNebula. Il lavoro di tesi sarà svolto presso il gruppo di tecnici INFN/UniBA che gestisce il data center.

MAN UniBA / Rete GARR

La rete metropolitana dell’Università di Bari è interconnessa con la rete GARR, la rete italiana per l’università e la ricerca. La rete GARR è a sua volta interconnessa con le altre reti della ricerca europee e mondiali, e con il resto dell’Internet commerciale. Sono disponibili tesi di laurea su argomenti legati sia ad aspetti infrastrutturali che di servizi quali DNS, web hosting, email e sicurezza. Il lavoro di tesi sarà svolto presso il gruppo del Centro Servizi Informatici che gestisce la rete UniBA e il PoP (Point of Presence) del GARR. Per informazioni rivolgersi al Delegato del Rettore per la Rete GARR.

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 la guida all’open source di GitHub 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.