Coupled change suggestions lead to better perfective software maintenance

One important part of software maintenance is perfective maintenance. I understand it here as adding new features and functionality to the software system. Especially for developers new to a system or developer beginners, adding a feature to a large, long-lived software system can be a challenge.

While looking through hundreds of thousands of lines of code, it is hard to keep track of where which parts of the system are and should be located. Architecture and design documents are often out-of-date or completely missing. So one classic question in software engineering is: Where in the source code do I have to make changes?

Several researchers have worked on this problem over the years. One direction in this research uses the idea of suggestions that we get in web shops: "Who bought diapers also bought romper suits." In our context: Who changed this file also changed these three files. Gall, Hajek and Jazayeri already published this idea in 1998. Over the years, there have been many proposals of methods and tools for coupled change analysis as well as the application on existing data sets.

What has been missing so far, however, is experimental validation that these approaches actually help developers. Therefore, we conducted an experiment comparing two groups of students performing perfective maintenance tasks. We measured the correctness of the feature implementation as well as the time needed to complete the tasks. We found almost no difference in the time needed, but there is a statistically significant difference in the correctness. In short: students having suggestions from coupled change analysis produced more correct implementations.

Of course, our first- and second-year students are not representative for all kinds of developers, but especially software engineering beginners have similar characteristics. In the end, this is only one experiment but at least first solid evidence on the usefulness of coupled change suggestions.

You can find all details to our study openly accessible in the journal PeerJ Computer Science.