Skip to content

Software Dependency Visualizer identifies class-level dependencies in JARs, such as inheritance, implementation, and composition and presents them through intuitive, graphical navigation.

Notifications You must be signed in to change notification settings

viren-joshi/software-visualizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Software Dependency Visualizer

Software Dependency Visualizer is a tool aimed at identifying the class level dependency information of JARs with the help of inheritance, implementation and composition. It provides this in an easily visualized manner via flash and graphical based navigations allowing users to visualize the structure of their software projects. Further, the tool can help in project management by enabling its users to store their dependency analyses and then load them for further evaluation and modification.


Upload .jar file

Screenshot 2024-11-28 at 6.06.16 PM Users can upload the .jar file of their SpringBoot project

Class List and Dependency Graph View

Screenshot 2024-11-28 at 6.09.33 PM Users can view and search from list of classes. The classes are shown in an interactive-graphical format on the right side.

Dependency Filter

Screenshot 2024-11-28 at 6.17.57 PM Users can filter the nodes and edges according to the type of dependency.

Class definitions

Screenshot 2024-11-28 at 6.20.13 PM Users can see methods and variables for each class.

Custom Class View

Screenshot 2024-11-28 at 6.24.37 PM Users can create a custom view of nodes and edges for better understanding of their class relationships.

Revisit Projects

Screenshot 2024-11-28 at 6.42.10 PM Users can revisit the saved projects after clicking the 'save view'

Dependencies

  • Java 17
  • Maven
  • Node.js

CI/CD

The project is integrated with CI-CD pipeline for automated builds, testing and deployment. The workflow files are in .github/worklows directory of the repository.

Testing & Code Coverage

We utilize JUnit, a widely used open-source testing framework for Java, to ensure the quality of our application. JUnit tests are integrated into our CI pipeline by executing the mvn test command, which leverages the Maven build tool to run the tests.

We also ensure that all components of the system are tested via JaCoCo; it tells us the code coverage. The code coverage report generated by Jacoco is also stored in the server which can be accessed reotely.

Screenshot 2024-11-28 at 4.05.45 PM

image

Code Quality

The Continuous Integration (CI) Pipeline of the application includes a stage for code quality assurance.

The backend code quality is assessed using DesigniteJava, a code smell detection tool that generates reports highlighting potential issues in the code. These reports are stored on the server and can be downloaded later for detailed analysis.

TDD adherence

We followed the Test Driven Development (TDD) for building the project.

TDD Commit                               - Code Implementation Commit 
____________________________________________________________________________________

7df05af680905a5df4d6ecb412ab9cee55b38c0c - 7aceae964d3dce30cb8e5a0bf154c6e827be0567
8002d0a2f8eda991c717d098aed6a23f53e41ae2 - d355d6c5c735f3472f1d60e191286a06ecd4ba59
80ff72c01b8e6481a849ebef007336abde0d0c54 - 7bd5d6fa23bfc770445a71391b7ab997841ec51a
9bd18f5566355d525593dcd53d7a3d515397213b - 606a5923b9a745c5d56c50bc26c14cb8240ac4ff
c5def1ae2ae92da6def0b9833c2d01a000c8672b - 4534ed75262d18f97e20f16a562ae78261ba5106
2dd5374c73db78df97395f788548eab3624e253f - 8cd8912eebfd5fb27403404e8b5be487d79d5981
a8418f3bb7dbb719a5acd439c9a760a3694b8ae4 - b3b757d5f41bccfdfe7e77b3e4d7028e7835ceae
1247874ed2e3c63fcc11e5314b65f0e229eebc63 - 59d4b617dfffd947af9a74b8e17d1ab6bad2e594
3e1a087b8b56186697ebed8b4d977e285677e3d6 - 9db66136bc1a6d3353ea01fe096da2df6166c29e
a589a5dcb9846e5d1ce7018faf58179dd9440085 - d17d282a91383d8525074018282055ca27dbfbcd
c21904fe62b812ebda8f8983d1ca42b5209dbecc - 344e8214e4e219548f437d0e027e9755daf72393
8d968a7e67c389f4fe7572092c7e37965093a7e5 - 499a031589cb49aad2a64370ca4d16eddb832521
b86927de296d1da6575cd19b0c08a9c0d64fb5fb - c316dfe6dc5aeb892cf68b868ab0ac6d9da783bf

Design Principles

We adhered to design principles in the design and development phases of creating this project.

Single Responsibility Principle

The Single Responsibility Principle states that a class should have only one responsibility, encouraging the separation of concerns and making the code easier to modify, test, and reuse. We followed this principle by creating dedicated controllers and services for different stakeholders, ensuring clear and focused functionality.

This principle was implemented in our project via modularization of functioanlities into different packages and classes, namely, util, service, model, controller and configs.

About

Software Dependency Visualizer identifies class-level dependencies in JARs, such as inheritance, implementation, and composition and presents them through intuitive, graphical navigation.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages