The comprehension of very large-scale software system evolution remains a challenging problem due to the sheer amount of time-based (i.e., a sequence of changes) data and its intrinsically complex nature (i.e., heterogeneous changes across the entire system source code). It is a necessary step for program comprehension, as systems are not simply created out of thin air in a bang, but are the sum of many changes over long periods of time, by various actors and due to various circumstances. We present SYN, a web-based tool that uses versatile vi- sualization and data processing techniques to create scalable depictions of ultra-scale software system evolution. SYN has been successfully applied on several systems versioned on GitHub, including the nearly 20-year history of the Linux operating system, which totals more than one million commits on more than 100k evolving files.
A live DEMO of SYN is available at its project homepage.
A video demonstration of its usage is available on YouTube.
List of major frameworks/libraries used to bootstrap SYN.
Frontend
- ReactJS
- Babylon
- Apollo GraphQL
Backend
- Java
- SpringBoot
- JGit
Build local container images and run SYN by following these simple example steps.
Dockerneeds to be installed in the machine.- Min.
Java 18to build the server.
Follow these steps to build and run the SYN docker containers:
- Clone the repo
git clone https://github.com/....
- Build the backend
cd syn-backend sh build.sh cd ..
- Build the frontend
cd syn-frontend docker-compose build cd ..
-
First, create a project with SYN-CLI using the following command (replace the
:projectNameand:projectGitHubURLvariables):docker run --rm --volume "$(pwd)/syn_data:/syn_data" -e SYN_HOME=/syn_data syn-cli project create -n :projectName -p :projectGitHubURLFor example:
docker run --rm --volume "$(pwd)/syn_data:/syn_data" -e SYN_HOME=/syn_data syn-cli project create -n JetUML -p https://github.com/prmr/JetUML -
Once the project is created, it can be analyzed with the following command (
-pis the project id,-tis the number of threads):docker run --rm --volume "$(pwd)/syn_data:/syn_data" -e SYN_HOME=/syn_data syn-cli analyze auto -p 1 -t 1 -
To inspect the analyzed project, spin up the containers:
docker-compose up
-
Finally, open SYN in a browser.
Copyright (c) 2023 REVEAL @ Software Institute – USI, Lugano.
See LICENSE for more information.