Mariam El Mezour
Leveraging the Social Knowledge of Software Systems to Improve the Development Process
Supervisor: Ying Zou, Electrical and Computer Engineering / School of Computing
Internal Examiner: Juergen Dingel, School of Computing
Internal/External Examiner: Ali Etemad, Electrical and Computer Engineering
External: Examiner Michael W. Godfrey, David R. Cheriton School of Computer Science, University of Waterloo
Head's Representative: Randy Ellis, School of Computing
Abstract
The software development process is steadily evolving into a collaborative, distributed, and knowledge-intensive venture. This evolution has led to growing demands towards supportive technologies and tools. These demands have been addressed using a spectrum of social and communication channels, that are continuously evolving and growing. As a result, a wealth of knowledge has emerged around the intensive use of the social and communication channels, and can potentially be leveraged to benefit the software development process.
In this dissertation, we describe the empirical studies conducted to understand how mining the social knowledge of software systems can improve aspects of the development process. We look into three types of social knowledge: a) the crowdsourced feedback from the end-users, b) the organizational structure of the developers, and c) the developers' wisdom. We investigate the value of monitoring the end-users' feedback posted on non-developer oriented social media platforms, such as Twitter. Our findings demonstrate that the end-users feedback can possibly allow an earlier discovery of the bugs that are critical to a large user base. Next, we look into how the developers self-organize on social coding platforms, such as GitHub. We are able to identify the organizational structures that are associated to better project outcomes, such as faster merge time of code contributions. To learn from the wisdom of the developers, we perform user studies for two purposes. First, we focus on the mechanisms adopted for the informal communication of the developers, specifically the chat-based services. Our investigation highlights the affordances and impacts of such mechanisms, to allow for a more efficient and informed use of the chat-based services. Second, we ask the developers to reflect on their experiences using a set of communication channels. Results from the survey and from an associated quantitative analysis reveal interesting insights to guide the developers in setting up the communication flow of their projects. Overall, the research conducted in this dissertation highlights the value of accounting for the social aspects of the software development process, to improve the efficiency of the tasks and make informed decisions about the communication mechanisms used in the software projects.