Replication package of the paper: "UML is Back. Or is it? Investigating the Past, Present, and Future of UML in Open Source Software"
Creators: name: Romeo, Joseph
name: Raglianti, Marco
name: Nagy, Csaba
name: Lanza, Michele
Publisher: name: figshare
Year: 2024
Subjects: classificationCode: 461202
subject: Empirical software engineering
classificationCode: 461299
subject: Software engineering not elsewhere classified

description: This is the replication package of the paper:<b> </b><b>"UML is Back. Or is it? Investigating the Past, Present, and Future of UML in Open Source Software"</b>.The paper has been accepted at <b>ICSE 2025</b> and will be available in the conference proceedings.Structure of Replication PackageThis replication package has the following structure:<b>appendices</b>: Additional material (<i>e.g.,</i> examples, counter-examples, file tagging heuristics, UML repositories with extensions).<b>charts</b>: Charts generated from the replication notebook.<b>notebook</b>: Replication notebook to rerun the analysis.<b>stats</b>: Additional statistics exported from the notebook.<b>uml-replication-data</b><b>/</b><b><i>uml_replication.sql</i></b>: Postgres database dump of the entire dataset used in our study.How to Setup the DatabaseDependenciesTo be able to restore the database we provide in the dump <code>uml_replication.sql</code>, you need PostgreSQL (https://www.postgresql.org) and <code>libpq </code>(https://www.timescale.com/blog/how-to-install-psql-on-mac-ubuntu-debian-windows/) to be properly installed on your system.This procedure was tested with PostgreSQL 16.<br><br>To create the environment for the notebook, docker (https://www.docker.com/) is needed.Running Docker ImageTo build and run the docker image which contains both the postgres server and the jupyter notebook, run the following commands:<br><code> &gt; docker-compose build</code><br><code> &gt; docker-compose up</code>Restoring the DatasetNote: a full restoration can take one hour to complete (tested with 4 parallel jobs, --jobs=4), and the final database can use up to ~100GBs. It is recommended to use a partial DB restore unless you specifically want to query file paths.The dataset can be restored by the following commands (when prompted for a password use <code>uml_replication_password</code>):<br><code> &gt; createdb -h 127.0.0.1 -U uml_replication_admin uml_replication</code><br><br>For a partial restore (only the tables used in notebook analysis, takes ~10 minutes and ~3GBs):<code> </code><code> &gt; pg_restore -U uml_replication_admin -h 127.0.0.1 -p 5432 --no-owner -t authors_cleaned -t authors_raw -t commit_extension_stats -t commits -t file_extensions -t lines_of_code -t repositories -t uml_extensions_by_year --dbname=uml_replication uml-replication-data/uml_replication.sql</code>For a full restore (this can take ~1 hour and ~100GB):<br><code> &gt; pg_restore -U uml_replication_admin -h 127.0.0.1 -p 5432 --no-owner --jobs=4 --verbose --dbname=uml_replication uml-replication-data/uml_replication.sql</code>Jupyter NotebookIf the docker commands and the database restore completed successfully, the jupyter notebook (<b>replication.ipynb</b>) can be accessed with a web browser at http://127.0.0.1:8888/tree/notebook.<br>