Work in process

Integration failure and merge conflicts in software development

In contemporary collaborative software development environments, developers usually work in parallel. They often share changes with other developers or incorporate changes from them, with the help of version control systems (VCSs), such as Git and Subversion. This parallel collaboration process improves the development speed; yet, it often leads to integration conflicts that slow developers down and hinder product quality.

Conflicts typically occur when multiple developers make inconsistent changes to the related code. There are three types of conflicts: textual, syntactic, and semantic. Textual conflicts happen when multiple developers simultaneously make different changes to the same line of code. Such conflicts prevent code merging in VCS. Syntactic conflicts are conflicts where code is merged by VCS successfully but has compilation error, whereas semantic conflicts are conflicts where merged code passes compilation but has test failures.

This project focuses on identifying, explaining, and resolving semantic conflicts: one of the most time-consuming and challenging tasks developers face in parallel work.

Investigation on industrial usage of microservices

Microservice-based architectures is an software architecture with SOA-inspired principle of building complex applications as a composition of small, loosely coupled components that encapsulate individual business capabilities and communicate with each other using language-agnostic APIs. This architectural style is particularly popular in cloud-based software-as-a-service (SaaS) offerings; its advantages include greater software development agility and improved scalability of deployed applications, etc. The objective of this project is to investigate the microservices usage in industry.