Abstract
Software engineering activities such as code reviews, change management, knowledge management, issue tracking etc. tend to be heavily process oriented and are repetitive in nature. Serious games, simulations, augmented reality, gamification are seen as potential options to improve human motivation towards performing process oriented repetitive tasks. However, gamification differs from other techniques as the original intent of the activity is not overly impacted. The idea of making a user lose or win is optional while gamifying an application. All these factors add on building a healthy competitive environment which is suitable for software product development industry as well as academic community. Prior research has shown gamification helped in building interesting e-learning systems which impact the academic community by improving the learning experience of students. Gamification of such activities is done by composing the core activities with game design elements like extit{badges, points} etc. Gamification can increase developers' interest in performing such activities. While there are various frameworks/applications that assist in gamification, extending and configuring the frameworks to add any/all the desired game design elements has not been adequately addressed. Implying configurable rules within a rule engine instead of implementing business logic to award game design elements is still unaddressed.
Addressing the aforementioned issues in this thesis, an extensible architectural framework for gamification of software engineering activities is designed and developed. The framework supports building new game design elements and gamifying software engineering processes. Game design elements are implemented as rest-full services. Gamifying an application involves adding features without modifying the original look and feel of the application. The framework consists of three major components : 1) A base framework consisting of software packages required to support an SE activity. 2) Game design elements which are implemented as micro services using python's Flask micro framework and 3) Basic front end components namely table, matrix and list which support the UI of game design elements. %These components are developed as Ember.js UI components.
The validation of this work is done in three ways. 1) A Gamified instance of code review activity is created using the framework developed. 2) To evaluate the ease of use and extensibility of the framework, developers are asked to extend the framework and instantiate gamified applications from the framework and our results are encouraging - developers are able to quickly develop new services as well as use the existing framework to instantiate new gamified instances for software engineering activities. 3) The impact of tool developed is quantitatively analyzed by calculating the usefulness of code review comments. The number of comments given using the gamified code review tool are significantly similar to the number of comments given when code review is performed using existing tools. Thus indicating that the tool developed has the required elements of a code review tool.
%We performed a study consisting of nearly 180+ participants to measure the usefulness of code review comments given by them during code review process in a gamified versus non-gamified environment using machine learning techniques. Further, we assess the impact of gamification based on Code smells and bugs identified in a gamified and non-gamified environment.
% and has five game design elements implemented as services, and exposed using restful APIs.
%We also built and used our own production ready framework to instantiate gamified applications for SE activities. To validate our claims of extensibility and productivity improvement in developer while gamified application development, we considered a group of developers consisting of undergraduate students, industry experts working as teams to build gamified applications. We present out results which demonstrate the adaptability of our framework by developers.
%we instantiate a gamified version of the code review process from our extensible architectural framework that supports gamification of various software engineering activities.
%In industry, inspections, reviews, and refactoring are considered as necessary software engineering activities for enhancing quality of code. In academia, such activities are rarely taught and practiced at Undergraduate level due to various reasons like limited skill set, limited knowledge of the available tools, time constraints, project setting, project client availability, flexibility with Syllabus, etc. However, we argue that such activities are an essential part of introductory software engineering courses and can result in improvement of coding skills, knowledge of coding standard and compliance to the same, and peer communication within teams. We have studied the use of such a