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.






- Java 17
- Maven
- Node.js
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.
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.
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.
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 - c316dfe6dc5aeb892cf68b868ab0ac6d9da783bfWe adhered to design principles in the design and development phases of creating this project.
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.

