1. Project title: Detection and Resolution of Collaboration Conflicts in Distributed Software Development
2. Area of knowledge: Engineering Panel
3. Group of disciplines: Computer Sciences and IT
4. Research project/ Research Group description:
The development of software systems is nowadays a highly collaborative process where software developers work in parallel over shared code repositories. Work is developed in a series of update-modify-commit cycles and conflicts may arise in the merged code upon committing which may introduce defects to the code base. The type of conflicts can be identified as textual, syntactic, and semantic. Textual conflicts occur when there are concurrent changes in the same region of a source file. Typically, the version control systems handle such conflicts based on textual analysis. Syntactic conflicts occur when the syntax of the project source code is invalid, i.e, it does not compile, after applying the changes to the code base. Semantic conflicts typically arise from complex, not explicit, and dynamic interdependencies among software artefacts. As the detection of conflicts in current version control systems is based on a textual analysis, semantically incompatible changes remain unnoticed and often manifest themselves either as failures of manually-writing test cases, or worse, as defects in released software.
The goal of this project is therefore to develop a highly extensible framework for conflict detection and resolution that can be integrated with mainstream version control systems, e.g., Git and SVN, and that is programming language independent. This project will exploit approaches to automatically generate test
cases that, when executed during merge operations, are able to detect existing semantic conflicts with high probability and precision. In order to achieve language-independence, approaches to abstractly represent semantic conflicts in a wide variety of programming languages and also abstract representations of
test cases will be investigated. Finally, by exploiting information available in the test cases that reveal a conflict, this project would also develop novel methods to assist developers in the resolution of detected conflicts.
5. Job position description:
To help to accomplish the goals that were set up for the project, the candidate would be responsible for:
(1) Developing the formalisms that support the abstract representation of semantic conflicts in a programming language.
(2) Constructing a dataset of real semantic conflicts that have occurred in open source projects. This will allow the candidate to evaluate his/her developed solutions on real cases, and it will also allow other researchers to replicate and reproduce candidate’s results and perhaps conduct further research.
(3) Developing a technique to automatically generated test cases that reveal the existence of semantic conflicts. The generation of test cases could exploit the change sets to be merged to generate test cases that are able to detect existing semantic conflicts with high probability and precision.
(4) Developing an approach that could help developers understand why automatically generated test cases may reveal a semantic conflict and assist developers in its resolution. When a conflict is caught by the execution of an automatically generated test, the knowledge that emerges from the various steps of the test generation process may be used to precisely diagnose the problem and provide meaningful advices.
(5) Performing empirical evaluations of the developed solutions.
As a proof-of-concept, the formalism defined in (1), the dataset created in (2), and the test generator developed in (3) may only support the Java programming language and a mainstream version control system, e.g., Git. It is expected that libraries, tools, and all scripts used to run the empirical evaluations defined in (5) will be made available online to foster reproducibility.
6. Group leader:
Full name: José Carlos Medeiros de Campos
Research project / Research group website:
– Laboratório de SIstemas de Grande Escala (LaSIGE) — lasige.pt
– Reliable Software Systems (RSS) — rss.di.fc.ul.pt
– Jose’s webpage — jose.github.io/publications