USIREVEAL / SYN

SYN is a web-based tool that uses versatile visualization and data processing techniques to create scalable depictions of ultra-scale software system evolution.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SYN: Ultra-Scale Software Evolution Comprehension

About SYN

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.

Live DEMO & Video

A live DEMO of SYN is available at its project homepage.

A video demonstration of its usage is available on YouTube.

Built With

List of major frameworks/libraries used to bootstrap SYN.

Frontend

  • ReactJS
  • Babylon
  • Apollo GraphQL

Backend

  • Java
  • SpringBoot
  • JGit

Getting Started

Build local container images and run SYN by following these simple example steps.

Prerequisites

  • Docker needs to be installed in the machine.
  • Min. Java 18 to build the server.

Building Docker Images

Follow these steps to build and run the SYN docker containers:

  1. Clone the repo
    git clone https://github.com/....
  2. Build the backend
    cd syn-backend
    sh build.sh
    cd ..
  3. Build the frontend
    cd syn-frontend
    docker-compose build
    cd ..

Usage

  1. First, create a project with SYN-CLI using the following command (replace the :projectName and :projectGitHubURL variables):

    docker run --rm --volume "$(pwd)/syn_data:/syn_data" -e SYN_HOME=/syn_data syn-cli project create -n :projectName -p :projectGitHubURL

    For 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
  2. Once the project is created, it can be analyzed with the following command (-p is the project id, -t is 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
  3. To inspect the analyzed project, spin up the containers:

    docker-compose up
  4. Finally, open SYN in a browser.

License

Copyright (c) 2023 REVEAL @ Software Institute – USI, Lugano.

See LICENSE for more information.

Contacts

About

SYN is a web-based tool that uses versatile visualization and data processing techniques to create scalable depictions of ultra-scale software system evolution.

License:Other


Languages

Language:Java 61.5%Language:TypeScript 35.6%Language:JavaScript 1.5%Language:CSS 0.8%Language:HTML 0.4%Language:Dockerfile 0.2%Language:Shell 0.0%