The work presented in this thesis is the result of a one-year collaboration with the professor Thomas D. LaToza (CMU) and the professor André van der Hoek (UCI). The collaboration took place at the Software Design and Collaboration Laboratory – SDCL, part of the Department of Informatics of the University of California Irvine. In the last few years, crowdsourcing has become a popular mechanism to accomplishing online work. By leveraging the power of the crowd, it is feasible to complete in just few hours tasks that were previously impossible to complete otherwise. One of the possible ways to crowdsource a complex work relies on the decomposition of the work in little pieces, called microtasks, to be completed by a single user. These microtasks have to be short, independent and low in complexity, requiring little cognitive effort to be completed. Intelligent automatic approaches have to be used in order to effectively manage the microtask generation, assignment and aggregation. In this document we present CrowdCode, a prototype of a crowdsourcing platform aimed to explore, evaluate and study the feasibility of microtask programming. Clients can submit requests of small JavaScript function libraries (function APIs) to be developed by the crowd. After analyzing the previously existing CrowdCode platform, we found different development paths that could be explored to improve and extend its functionalities. To test the reimplemented platform and the added extensions, we conducted two sets of user studies. The first one is aimed to understand if a system such as CrowdCode is able to produce functional software, the latter is aimed to study how transient workers collaborate when making common decisions while working on a microtasking platform.

Il lavoro presentato in questa tesi è il risultato di un anno di collaborazioni effettuate con il professor Thomas LaToza (CMU) ed il professor André van der Hoek (UCI) presso il laboratorio Software Design and Collaboration Laboratory - SDCL, situato all’interno della University of California Irvine. Il crowdsourcing (da crowd, "folla", e sourcing, da outsourcing, e cioè esternalizzazione aziendale ) è lo sviluppo collettivo di un progetto da parte di numerose perso-ne, esterne all'entità che ha ideato il progetto stesso . Negli ultimi anni, il crowdsourcing è stato ampiamente adottato dalle comunità online per lo svolgimento di svaria-te tipologie di lavoro. Esso infatti potenzialmente permetterebbe di completare in poche ore progetti che a causa della loro grandezza e complessità sono considerati inaccessibili. Attraverso il gioco Foldit [1] per esempio, 57000 utenti sono riusciti in dieci giorni a determinare la struttura molecolare di una proteina, problema per cui gli scienziati stavano lavorando da 15 anni. La riuscita nel crowdsourcing di un lavoro complesso dipende dalle possibilità che si hanno di scomporlo in microtasks. Una microtask è una piccola porzione di lavoro, risultato della scomposizione di un lavoro più grande. Ogni microtask è svolta da un singolo utente. Per scomporre un progetto in maniera efficace, bisogna fare in modo che le microtask siano quanto più possibile indipendenti tra loro, in modo che sia possibile eseguirle in parallelo. Oggigiorno la piattaforma di microtasking più conosciuta è Amazon MechanicalTurk (MTurk). I clienti si servono di MTurk per fare il crowdsourcing di tanti piccoli compiti, svolti successivamente dagli utenti del sistema dietro una adeguata ricompensa economica. Questa pratica funziona molto bene per semplici progetti con compiti per natura in-dipendenti tra di loro, come per esempio la trascrizione del testo presente su molteplici immagini. Incontra invece molti più problemi per il crowdsourcing di lavori complessi, come ad esempio lo sviluppo di software. Ad oggi la principale piattaforma che applica il crowdsourcing a progetti complessi è TopCoder. Essa usa tuttavia un approccio di tipo competitivo: per ogni competizione, solo il lavoro migliore viene selezionato, portando allo scarto di tutti gli altri. Le principali difficoltà riscontrabili nel crowdsourcing di lavori complessi sono state suddivise in tre macro categorie: • qualità del lavoro risultante: nei sistemi di crowdsourcing, è difficile produrre risultati di qualità. Gli utenti possono essere malevoli e completare le micro-task solo per ricevere una ricompensa, senza prestare attenzione alla qualità del lavoro svolto. • scomposizione del lavoro in microtasks: per scomporre il lavoro in microtasks bisogna considerare differenti aspetti. Uno di essi è capire il giusto livello di decomposizione da applicare. Se da un lato è vero che microtasks di piccola dimensione aiutano a diminuire il tempo totale necessario al completamento del lavoro, dall’altro il tempo impiegato dai singoli lavoratori per l’apprendimento dei dati contestuali alla microtask viene moltiplicato, introducendo un elevato tempo di overhead. Combinando workflow di tipo iterativo con quelli di tipo parallelo è possibile ottenere diverse modalità di decomposizione del lavoro.. • coordinamento: i progetti software sono insitamente caratterizzati da elevate dipendenze tra i singoli artefatti. Una efficace gestione delle dipendenze inter-artefatto è di fondamentale importanza per la riuscita o meno dell’applicazione del crowdsourcing ad un lavoro complesso. CrowdCode è stato sviluppato per studiare la possibilità di sviluppare software attraverso tecniche di microtask crowdsourcing. CrowdCode è il prototipo di una piatta-forma online che consente ad un client di specificare una lista di funzioni (una API) da far sviluppare dal crowd. Una volta che l’API è stata descritta, il sistema si occupa in maniera autonoma di generare le microtasks, assegnarle agli utenti ed aggregare i risultati del loro lavoro. Nei primi due capitoli spiegheremo le scelte progettuali e di funzionamento della prima versione di CrowdCode, implementata prima del nostro coinvolgimento all’interno del progetto. Successivamente, nel capitolo 3, presentiamo diversi modi per aumentarne funzionalità e prestazioni. Le scelte progettuali dietro le suddette funzionalità sono frutto di diversi esperimenti condotti con utenti. Le estensioni pro-poste sono state classificate secondo una delle tre categorie individuate precedentemente. Il capitolo 4 ne descrive i dettagli implementativi. Successivamente presentiamo i due principali studi che abbiamo condotto: il primo è stato maggiormente incentrato sulla fattibilità del microtask programming, mentre il secondo sugli strumenti e le modalità di collaborazione usati dagli utenti di una piattaforma come CrowdCode. Infine discutiamo i risultati ottenuti, proponendo possibili sviluppi a partire dal nostro lavoro.

CrowdCode. A microtask programming platform

RICCI, FABIO;DI LECCE, ARTURO
2015/2016

Abstract

The work presented in this thesis is the result of a one-year collaboration with the professor Thomas D. LaToza (CMU) and the professor André van der Hoek (UCI). The collaboration took place at the Software Design and Collaboration Laboratory – SDCL, part of the Department of Informatics of the University of California Irvine. In the last few years, crowdsourcing has become a popular mechanism to accomplishing online work. By leveraging the power of the crowd, it is feasible to complete in just few hours tasks that were previously impossible to complete otherwise. One of the possible ways to crowdsource a complex work relies on the decomposition of the work in little pieces, called microtasks, to be completed by a single user. These microtasks have to be short, independent and low in complexity, requiring little cognitive effort to be completed. Intelligent automatic approaches have to be used in order to effectively manage the microtask generation, assignment and aggregation. In this document we present CrowdCode, a prototype of a crowdsourcing platform aimed to explore, evaluate and study the feasibility of microtask programming. Clients can submit requests of small JavaScript function libraries (function APIs) to be developed by the crowd. After analyzing the previously existing CrowdCode platform, we found different development paths that could be explored to improve and extend its functionalities. To test the reimplemented platform and the added extensions, we conducted two sets of user studies. The first one is aimed to understand if a system such as CrowdCode is able to produce functional software, the latter is aimed to study how transient workers collaborate when making common decisions while working on a microtasking platform.
LATOZA, THOMAS
VAN DER HOEK, ANDRE'
ING - Scuola di Ingegneria Industriale e dell'Informazione
27-apr-2016
2015/2016
Il lavoro presentato in questa tesi è il risultato di un anno di collaborazioni effettuate con il professor Thomas LaToza (CMU) ed il professor André van der Hoek (UCI) presso il laboratorio Software Design and Collaboration Laboratory - SDCL, situato all’interno della University of California Irvine. Il crowdsourcing (da crowd, "folla", e sourcing, da outsourcing, e cioè esternalizzazione aziendale ) è lo sviluppo collettivo di un progetto da parte di numerose perso-ne, esterne all'entità che ha ideato il progetto stesso . Negli ultimi anni, il crowdsourcing è stato ampiamente adottato dalle comunità online per lo svolgimento di svaria-te tipologie di lavoro. Esso infatti potenzialmente permetterebbe di completare in poche ore progetti che a causa della loro grandezza e complessità sono considerati inaccessibili. Attraverso il gioco Foldit [1] per esempio, 57000 utenti sono riusciti in dieci giorni a determinare la struttura molecolare di una proteina, problema per cui gli scienziati stavano lavorando da 15 anni. La riuscita nel crowdsourcing di un lavoro complesso dipende dalle possibilità che si hanno di scomporlo in microtasks. Una microtask è una piccola porzione di lavoro, risultato della scomposizione di un lavoro più grande. Ogni microtask è svolta da un singolo utente. Per scomporre un progetto in maniera efficace, bisogna fare in modo che le microtask siano quanto più possibile indipendenti tra loro, in modo che sia possibile eseguirle in parallelo. Oggigiorno la piattaforma di microtasking più conosciuta è Amazon MechanicalTurk (MTurk). I clienti si servono di MTurk per fare il crowdsourcing di tanti piccoli compiti, svolti successivamente dagli utenti del sistema dietro una adeguata ricompensa economica. Questa pratica funziona molto bene per semplici progetti con compiti per natura in-dipendenti tra di loro, come per esempio la trascrizione del testo presente su molteplici immagini. Incontra invece molti più problemi per il crowdsourcing di lavori complessi, come ad esempio lo sviluppo di software. Ad oggi la principale piattaforma che applica il crowdsourcing a progetti complessi è TopCoder. Essa usa tuttavia un approccio di tipo competitivo: per ogni competizione, solo il lavoro migliore viene selezionato, portando allo scarto di tutti gli altri. Le principali difficoltà riscontrabili nel crowdsourcing di lavori complessi sono state suddivise in tre macro categorie: • qualità del lavoro risultante: nei sistemi di crowdsourcing, è difficile produrre risultati di qualità. Gli utenti possono essere malevoli e completare le micro-task solo per ricevere una ricompensa, senza prestare attenzione alla qualità del lavoro svolto. • scomposizione del lavoro in microtasks: per scomporre il lavoro in microtasks bisogna considerare differenti aspetti. Uno di essi è capire il giusto livello di decomposizione da applicare. Se da un lato è vero che microtasks di piccola dimensione aiutano a diminuire il tempo totale necessario al completamento del lavoro, dall’altro il tempo impiegato dai singoli lavoratori per l’apprendimento dei dati contestuali alla microtask viene moltiplicato, introducendo un elevato tempo di overhead. Combinando workflow di tipo iterativo con quelli di tipo parallelo è possibile ottenere diverse modalità di decomposizione del lavoro.. • coordinamento: i progetti software sono insitamente caratterizzati da elevate dipendenze tra i singoli artefatti. Una efficace gestione delle dipendenze inter-artefatto è di fondamentale importanza per la riuscita o meno dell’applicazione del crowdsourcing ad un lavoro complesso. CrowdCode è stato sviluppato per studiare la possibilità di sviluppare software attraverso tecniche di microtask crowdsourcing. CrowdCode è il prototipo di una piatta-forma online che consente ad un client di specificare una lista di funzioni (una API) da far sviluppare dal crowd. Una volta che l’API è stata descritta, il sistema si occupa in maniera autonoma di generare le microtasks, assegnarle agli utenti ed aggregare i risultati del loro lavoro. Nei primi due capitoli spiegheremo le scelte progettuali e di funzionamento della prima versione di CrowdCode, implementata prima del nostro coinvolgimento all’interno del progetto. Successivamente, nel capitolo 3, presentiamo diversi modi per aumentarne funzionalità e prestazioni. Le scelte progettuali dietro le suddette funzionalità sono frutto di diversi esperimenti condotti con utenti. Le estensioni pro-poste sono state classificate secondo una delle tre categorie individuate precedentemente. Il capitolo 4 ne descrive i dettagli implementativi. Successivamente presentiamo i due principali studi che abbiamo condotto: il primo è stato maggiormente incentrato sulla fattibilità del microtask programming, mentre il secondo sugli strumenti e le modalità di collaborazione usati dagli utenti di una piattaforma come CrowdCode. Infine discutiamo i risultati ottenuti, proponendo possibili sviluppi a partire dal nostro lavoro.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
Thesis.pdf

accessibile in internet per tutti

Descrizione: Testo della tesi
Dimensione 7.08 MB
Formato Adobe PDF
7.08 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/121291