Continuous Monitoring of Software Evolution

Abstract

As software continues to evolve, complexity accumulates through various maintenance activities, such as bug fixes, new feature implementations, etc., inevitably resulting in architecture degradation that can cause significant maintenance difficulties into the software systems. Therefore, continuous monitoring of software evolution and quality is crucial for developers and architects. Current state-of-the-art research analyzes software evolution among different releases by tracking software problems, such as code smells or anti-pattern etc, or monitoring metrics which reflect software complexity or quality, such as McCabe complexity or decouple level, etc. While these artifacts provide valuable insights to software evolution, they have some limitations. First, these code smells or anti-pattern detection tools report too many problems, most of which are false positives and are not causing maintenance cost. Second, these techniques failed to report these problems early as a threshold is required in their measurements. For example, one anti-pattern is called Unstable Interface. According to its default setting, a file will be detected as an unstable interface if it has 1% of all the project's files as dependents and has co-changed with at least 10 of them at least two times. So when such a problem is detected, it has already incurred severe negative impacts. In this dissertation, we propose three novel evolutionary models: propagation pattern, maintenance community and active hotspot to address these problems. The rationale behind these models is to use issues as first-class entities to continuously monitor the changes to a system instead of scanning discrete releases of the whole system. We focus on problematic files in issues which are the early warning signs of smells and anti-patterns. Propagation patterns reveal the propagation of changes in non-trivial issues and they are atomic smells as they can be mapped to common smells and anti-patterns. Maintenance communities capture files groups addressing an issue in a project's revision history as a community and detect the most persistent communities in software evolution. In addition, we proposed to use the files modified by multiple issues as seeds and group these seeds along with files in which changes are actively propagating to and from these seeds as an active hotspot. We studies dozens of open-source projects, covering hundreds of releases, thousands of security and general issues, and millions of lines of code, and our results show that propagation pattern can identify problematic smells and maintenance community can detect file groups linked by issues so that developers can prioritize these most severe problems in their systems. Most importantly, by monitoring the emergence and evolution of active hotspots, it is possible to detect signs of software degradation 18 to 25 months earlier than another state-of-the-art tool, so that these problems won't accumulate into severe maintenance costs. Furthermore, we implemented a tool suite to automatically detect and visualize the life cycle, such as the birth, growth and the death, of maintenance community and active hotspot. In this way, not only can developers detect true problems more precisely, but they can also identify these problems early, as they emerge, to prevent further severe maintenance cost.Ph.D., Computer Science -- Drexel University, 201

Similar works

Full text

thumbnail-image

Drexel Libraries E-Repository and Archives

redirect
Last time updated on 07/12/2019

This paper was published in Drexel Libraries E-Repository and Archives.

Having an issue?

Is data on this page outdated, violates copyrights or anything else? Report the problem now and we will take corresponding actions after reviewing your request.