Using software metrics to study software evolution

title:Using software metrics to study software evolution
keywords:Software metrics, Software evolution, software technology
topics:Case studies and Applications, Software Technology
contact:prof.dr.ir. A. Rensink

Bachelor Project for INF students

Description

As a software project evolves, it usually becomes harder to maintain. Each new version of the software introduces new features and bugfixes that often increase the complexity of the software. The problem is often that these issues build slowly with each iteration. Over time, even a number of small changes can significantly reduce the maintainability of a software project.

Developers might be lazy in a bugfix and introduce a hackish solution, new unexpected features might break down the modularity of the project and new developers might not understand the existing architecture completely and implement some code against the idea of the architecture.

By introducing a number of such changes, even initially elegant code bases can become a nightmare to maintain. All the while no real point can be identified as when this issue started, it simply grows over time. By studying the evolution of a software repository, we hope to gain insights into how these issues arise, how they can be resolved and even how they might be prevented.

We want to investigate how software metrics may be used in the context of analysis of the evolution of a software repository.

Software metrics are used to quantitatively assess various aspects of software products, projects, and processes. These aspects include size, effort, cost, functionality, quality, complexity, efficiency, reliability, and maintainability of a software artifact, system, or the related process.

By obtaining such metrics about multiple versions of a code base, we hope to identify when and how the software becomes more difficult to maintain and extend.

 

During this project you will:

- Look at existing work in the field of mining software repositories in the context of software evolution.

- Look at several code metrics (e.g. cyclomatic complexity, law of demeter) and tools for obtaining these (PMD, SonarQube)

- Perform experiments on several (open-source) repositories in order to develop and validate a hypothesis.

 

We hope to use the results of this project in the ING Honours project. A collaboration project between the university and the ING bank where students iteratively develop new versions of a software system to create an experimental dataset. 


Below you can find some starting/background papers

References

  1. A survey and taxonomy of approaches for mining software repositories in the context of software evolution (Digital version available here)
  2. The road ahead for Mining Software Repositories (Digital version available here)
  3. Software Intelligence: The Future of Mining Software Engineering Data (Digital version available here)