Emad Aghayi

SE
4papers
6citations
Novelty43%
AI Score19

4 Papers

SESep 11, 2020
Can Microtask Programming Work in Industry?

Shinobu Saito, Yukako Iimura, Emad Aghayi et al.

A critical issue in software development projects in IT service companies is finding the right people at the right time. By enabling assignments of tasks to people to be more fluid, the use of crowdsourcing approaches within a company offers a potential solution to this challenge. Inside a company, as multiple system development projects are ongoing separately, developers with slack time on one project might use this time to contribute to other projects. In this paper, we report on a case study of the application of crowdsourcing within an industrial web application system development project in a large telecommunications company. Developers worked with system specifications which were organized into a set of microtasks, offering a set of short and self-contained descriptions. When crowd workers in other projects had slack time, they fetched and completed microtasks. Our results offer initial evidence for the potential value of microtask programming in increasing the fluidity of team assignments within a company. Crowd contributors to the project were able to onboard and contribute to a new project in less than 2 hours. After onboarding, the crowd workers were together able to successfully implement a small program which contained only a small number of defects. Interview and survey data gathered from project participants revealed that crowd workers reported that they perceived onboarding costs to be reduced and did not experience issues with the reduced face to face communication, but experienced challenges with motivation.

SEMay 28, 2020
Large-Scale Microtask Programming

Emad Aghayi

To make microtask programming more efficient and reduce the potential for conflicts between contributors, I developed a new behavior-driven approach to microtasking programming. In our approach, each microtask asks developers to identify a behavior behavior from a high-level description of a function, implement a unit test for it, implement the behavior, and debug it. It enables developers to work on functions in isolation through high-level function descriptions and stubs. In addition, I developed the first approach for building microservices through microtasks. Building microservices through microtasks is a good match because our approach requires a client to first specify the functionality the crowd will create through an API. This API can then take the form of a microservice description. A traditional project may ask a crowd to implement a new microservice by simply describing the desired behavior in a API and recruiting a crowd. We implemented our approach in a web-based IDE, \textit{Crowd Microservices}. It includes an editor for clients to describe the system requirements through endpoint descriptions as well as a web-based programming environment where crowd workers can identify, test, implement, and debug behaviors. The system automatically creates, manages, assigns microtasks. After the crowd finishes, the system automatically deploys the microservice to a hosting site.

SEMay 23, 2020
Find Unique Usages: Helping Developers Understand Common Usages

Emad Aghayi, Aaron Massey, Thomas LaToza

When working in large and complex codebases, developers face challenges using \textit{Find Usages} to understand how to reuse classes and methods. To better understand these challenges, we conducted a small exploratory study with 4 participants. We found that developers often wasted time reading long lists of similar usages or prematurely focused on a single usage. Based on these findings, we hypothesized that clustering usages by the similarity of their surrounding context might enable developers to more rapidly understand how to use a function. To explore this idea, we designed and implemented \textit{Find Unique Usages}, which extracts usages, computes a diff between pairs of usages, generates similarity scores, and uses these scores to form usage clusters. To evaluate this approach, we conducted a controlled experiment with 12 participants. We found that developers with Find Unique Usages were significantly faster, completing their task in 35% less time.

SEMar 5, 2019
Crowdsourced Behavior-Driven Development: Implementing Microservices through Microtasks

Emad Aghayi, Thomas D. LaToza, Paurav Surendra et al.

Key to the effectiveness of crowdsourcing approaches for software engineering is workflow design, describing how complex work is organized into small, relatively independent microtasks. In this paper, we introduce a Behavior-Driven Development (BDD) workflow for accomplishing programming work through self-contained microtasks, implemented as a preconfigured environment called Crowd Microservices. In our approach, a client, acting on behalf of a software team, describes a microservice as a set of endpoints with paths, requests, and responses. A crowd then implements the endpoints, identifying individual endpoint behaviors which they test, implement, and debug, creating new functions and interacting with persistence APIs as needed. To evaluate our approach, we conducted a feasibility study in which a small crowd worked to implement a small ToDo microservice. The crowd created an implementation with only four defects, completing 350 microtasks and implementing 13 functions. We discuss the implications of these findings for incorporating crowdsourced programming contributions into traditional software projects.