Large-scale software applications that combine all their functions in a single component are becoming less common. Instead, we increasingly see applications that are made up of smaller components called microservices. Researchers involved in a newly launched project are working on improving the detection of undesired side effects caused by changes in individual microservices.
Over the past two decades, microservices have emerged as a new type of architecture for developing software applications, consisting of a set of loosely coupled and reusable software components. Microservices are used, among other things, in online shopping applications, where each microservice delivers a specific functionality. This means, for instance, that one microservice provides the shopping cart feature, while another microservice provides the payment functionality. This differs from monolithic software applications, where all services are implemented within a single component. The key advantage of microservices is that they can be developed, tested, deployed and reused independently of each other. “Although microservices are highly independent of each other, there is a certain degree of coupling between them. What this means is that changes to one microservice can cause unexpected side effects in other microservices. As a consequence, the affected microservices may cease to function as expected, which can be highly unsatisfactory for the users of the microservice,” as Martin Pinzger, professor at the Department of Informatics Systems and project leader, explains. For this reason, software developers undertake various quality assurance measures to identify the potential side-effects of their changes and to prevent errors. Yet existing quality assurance methods and tools are imprecise and therefore potential side effects have to be analysed manually. This process is not only time-consuming, but also prone to errors.
The aim of the research project called “Semantic Change Impact Analysis” is to explore novel methods and techniques that will allow software developers to accurately determine and understand the side effects of changes in a microservice. Determining possible side effects is a major challenge and, as a rule, it is not easy to calculate even for small-scale programs, as the number of possible effects very quickly approaches infinity. Martin Pinzger explains further: “To address this challenge, we will first explore different approaches to abstracting programs and to interpreting the impact of individual changes. Next, we will experiment with different visualisation techniques to help software developers understand the impact more quickly and accurately.” In addition, the research team will investigate techniques for the targeted selection of test cases that use the information about a change and its impact in order to reduce the testing effort. The researchers intend to deploy their methods and techniques in several prototypes for evaluation in experiments and in user studies involving open source systems as well as systems and developers from industry partners. All prototypes created as part of this project will be made available publicly as open source. The project is funded by the Austrian Science Fund FWF.