my other websites
abigail.sh 88x31 button
uwu.gal 88x31 button

abigail phoebe

software engineer & scientific researcher

e-mail[email protected]
github@ijsbol
linkedinin/abigailphoebe



Research Project: Historical Analysis of Software Metrics

This project initially started as a university assignment, however I found the assignment could be expanded upon into a much more interesting, and importantly a technically useful resource. Eventually, it grew into a fully-fledged suite of software analysis tools for Python software packages published on PyPI.

The initial assignment was simple: Choose 4 significantly distinct versions of a given Python package, and analyze a few metrics over time and see what those changes mean.

However, I found myself wondering: Why only 4? Why not expand this to every version ever published? Why only limit myself to a handful of metrics when I can explore several different metrics? As I looked into this more, I found why: existing tooling simply doesn't support such large scale analysis, nor does it provide a way to visualise changes in metrics over time. Thus, this project was born.


With this in mind, I set out to develop my own set of tools that can automatically evaluate several software health metrics for an entire projects release history.

The metrics I elected to build tools for were: Fan-in/Fan-out (Fi/Fo), Instability, and Modularity Quality (MQ), alongside several Chidamber & Kemerer (CK) Metrics: Weighted Methods per Class (WMC), Response For a Class (RFC), Coupling Between Objects (CBO), and Lack of Cohesion in Methods (LCOM).

In addition to these software metrics, I also automated the extraction of SourceMeter metrics for Logical Lines of Code (LLOC) and several types of Code Clones (CC), which can provide insight into a projects maintainability at any given moment.

All code for this project can be found at github:ijsbol/historical-analysis-of-software-metrics


The tool developed produces 29 different graphs containing the 9 metrics (as well as some interpreted metrics) at key points throughout a projects lifespan, correlating them with matched metrics to visually show the change over time in relation to one another - telling an important story of a projects development.

Some of these graphs are attached below - please read the paper at the bottom of this page to learn more about the referenced figures.


The original paper

The paper attached below was written by myself as an extension to the aforementioned university assignment, and specifically focuses on how the software development metrics change over a larger period of time for the iCalendar PyPI package.