|
|
## Description
|
|
|
# Technical Debt Toolbox - Description
|
|
|
|
|
|
The Technical Debt Toolbox is responsible for assessing and optimizing the quality of software applications written in Java, C, and C++ programming languages. The Technical Debt Toolbox enables the users to monitor and prevent technical debt during the software development. It provides software refactoring suggestions in order to mitigate the accumulation of technical debt. Furthermore, it measures a set of software quality metrics and detects code smells and bad design practices. It also presents the evolution of the TD principal, TD interest, and TD density overtime. Finally, the toolbox statically analyses the source code and provides maintainability metrics which can be leveraged by developers to support them with their code refactoring and optimizations. Project managers are also benefit since technical debt can be an index of the debt that the software has therefore, it provides support to their decision of the software future, if they will spent time to refactor the code, how much time they will continue to maintain it or if the need to declare bankruptcy of the software.
|
|
|
The toolbox consists of three individual web services, which are merged into a single Docker Container. These services are listed below:
|
|
|
## Overall Structure
|
|
|
|
|
|
* **Quantitative Security Assessment:** This web service is responsible for evaluating the internal security level of a given software application
|
|
|
* **Vulnerability Prediction:** This web service is responsible for identifying security hotspots, i.e., parts of a given software product (e.g., classes and source code files) that are likely to contain vulnerabilities
|
|
|
* **Optimum Checkpoint Interval Recommendation:** This web service is responsible for suggesting the optimum checkpoint interval for programs with loops
|
|
|
The Technical Debt Toolbox is responsible for monitoring and prevention the technical debt of software applications written in Java, C, and C++ programming
|
|
|
languages. The toolbox consists of three individual web services, which are merged into a two Docker Containers. These services are listed below:
|
|
|
|
|
|
The overall structure of the Dependability Toolbox is depicted in the figure below:
|
|
|
* **TD Analysis:** This web service is responsible for monitoring technical debt on file, package and project level of a given software application.
|
|
|
This is a version analysis that presents how the software evolves through versions
|
|
|
* **TD New Code:** This web service is responsible for prevention of technical debt on the addition of a new commit and work as a quality gate.
|
|
|
This is a commit analysis.
|
|
|
* **Code and Design Refactorings:** This web service is responsible for suggesting refactorings on code and design level. On code level, suggests refactorings
|
|
|
that solve code smells while on design level suggests refactorings that solve the long method and improve coupling and cohesion on project level.
|
|
|
|
|
|
![dep-tool](uploads/8cb1ced12cb6f27e48cd50761dfe0d8b/dep-tool.png)
|
|
|
The overall structure of the Technical Debt Toolbox is depicted in the figure below:
|
|
|
|
|
|
As can be seen by this figure, the Dependability Toolbox back-end is actually a Microservice, which consists of the three aforementioned web services, i.e., Quantitative Security Assessment, Vulnerability Prediction, and Optimum Checkpoint Interval Recommendation. This microservice has been implemented as an individual Docker Image, which is deployed as an individual Docker Container. An independent MongDB database has been implemented, for storing the results of the three web services that the Dependability Toolbox provides. Although the database has been developed as a standalone Docker Container, access is only feasible through dedicated APIs that are provided by the Dependability Toolbox back-end. Finally, as can be seen by the figure above, the SDK4ED Dashboard communicates with the Dependability Toolbox back-end for invoking its services and visualizing their results in an intuitive and easy-to-understand manner.
|
|
|
![dep-tool](uploads/technical-debt/TechnicalDebtToolbox.png)
|
|
|
|
|
|
As can be seen by this figure, the Technical Debt Toolbox back-end consists of three Microservices, which consists of the four aforementioned web services, i.e.,
|
|
|
TD Analysis, Refactorings Identification, TD New Code and Architectural Technical Debt. These microservices have been implemented as three
|
|
|
individual Docker Images, which are deployed as an individual Docker Compose. Compose is a tool for defining and running multi-container Docker applications. Three independent databases have been implemented, for storing the results of the three web services that the Technical Debt Toolbox provides. Although the databases have been developed as a standalone Docker Container for each, access is only feasible through dedicated APIs that are provided by the Technical Debt Toolbox back-end. Finally, as can be seen by the figure above, the SDK4ED Dashboard communicates with the Technical Deb Toolbox back-end for invoking its services and visualizing their results in an intuitive and easy-to-understand manner.
|
|
|
|
|
|
## External References
|
|
|
|
|
|
For more information about the Dependability Toolbox we highly recommend the reader to have a look at the following resources:
|
|
|
For more information about the Technical Debt Toolbox we highly recommend the reader to have a look at the following resources:
|
|
|
|
|
|
The aim of this document is to provide an overview of the indicators for TD principal and interest
|
|
|
that are applicable in the context of the SDK4ED project.
|
|
|
|
|
|
- **Deliverable 3.3:** This deliverable contains information about the research work related to the Security services of the SDK4ED Dependability Toolbox [link](https://redmine.microlab.ntua.gr/dmsf/files/1035/view)
|
|
|
- **Deliverable 4.3:** This deliverable contains information about the research work related to the Optimum Checkpoint Interval Recommendation service of the SDK4ED Dependability Toolbox [link](https://redmine.microlab.ntua.gr/dmsf/files/1350/view)
|
|
|
- **Deliverable 5.7:** This deliverable contains information about the technical details of the SDK4ED Dependability Toolbox [link](https://redmine.microlab.ntua.gr/dmsf/files/1577/view)
|
|
|
- **Installation Tutorial:** A video showing how the Dependability Toolbox docker container can be installed locally [link]()
|
|
|
- **Demo Video:** A video showing how the SDK4ED Dashboard is linked to the Dependability Toolbox, and what is executed behind the scenes when the services are invoked [link](https://www.youtube.com/watch?v=7s5mbDhK3as)
|
|
|
- **Deliverable 3.1:** The aim of this document is to provide an overview of the indicators for TD principal and interest
|
|
|
that are applicable in the context of the SDK4ED project. In addition, it presents a brief overview of the refactorings suggested by Technical Debt Toolbox
|
|
|
[link](https://redmine.microlab.ntua.gr/dmsf/files/1020/view)
|
|
|
- **Deliverable 4.1:** This deliverable investigates on the strategies for repaying and prioritizing technical debt in embedded and heterogeneous systems of the SDK4ED Technical Debt Toolbox [link](https://redmine.microlab.ntua.gr/dmsf/files/1329/view)
|
|
|
- **Deliverable 5.7:** This deliverable contains information about the technical details of the SDK4ED Technical Debt Toolbox [link](https://redmine.microlab.ntua.gr/dmsf/files/1573/view)
|
|
|
- **Installation Tutorial:** A video showing how the Technical Debt Toolbox docker container can be installed locally [link]()
|
|
|
- **Demo Video:** A video showing how the SDK4ED Dashboard is linked to the Technical Debt Toolbox and Refactorings Panel, and what is executed behind the scenes when the services are invoked [link](https://sdk4ed.eu/developers/)
|
|
|
|
|
|
## Relevant Papers
|
|
|
|
|
|
The Dependability Toolbox is the outcome of the research work conducted for the purposes of the [SDK4ED]() project, which is funded by the European Union Horizon 2020 program, under Grant Agreement number 780572. Some of the research outcomes that are related to this toolbox have been published in scientific journals and conference proceedings. An indicative list of the most notable publications can be found below:
|
|
|
The Technical Debt Toolbox is the outcome of the research work conducted for the purposes of the [SDK4ED]() project, which is funded by the European Union Horizon 2020 program, under Grant Agreement number 780572. Some of the research outcomes that are related to this toolbox have been published in scientific journals and conference proceedings. An indicative list of the most notable publications can be found below:
|
|
|
|
|
|
1. Siavvas M., Gelenbe E., “Optimum Checkpoints for Programs with Loops”, Simulation Modelling Practice and Theory, Elsevier, vol. 97, 2019.
|
|
|
1. Arvanitou, Elvira-Maria, et al. “Monitoring Technical Debt in an Industrial Setting.” Proceedings of the Evaluation and Assessment on Software Engineering. ACM, 2019.
|
|
|
|
|
|
2. Siavvas M., Gelenbe E., Kehagias D., Tzovaras D., Static analysis-based approaches for secure software development. Security in Computer and Information Sciences. Euro-CYBERSEC 2018. Communications in Computer and Information Science, Springer, Cham, 2018.
|
|
|
3. Siavvas M., Jankovic M., Kehagias D., and Tzovaras D., Is Popularity an Indicator of Software Security?,” IEEE 9th International Conference on Intelligent Systems (IS), IEEE, 2018.
|
|
|
2. Angeliki-Agathi Tsintzira, Areti Ampatzoglou, Oliviu Matei, Apostolos Ampatzoglou, Alexander Chatzigeorgiou, Robert Heb, “Technical Debt Quantification through Metrics: An Industrial Validation”, 15th China-Europe International Symposium on Software Engineering Education (CEISEE ’19)
|
|
|
|
|
|
3. Panagiotis Kouros, Theodoros Chaikalis, Elvira Maria Arvanitou, Alexander Chatzigeorgiou, Apostolos Ampatzoglou and Theodoros Amanatidis “JCaliper: Search-Based Technical Debt Management”, SAC ’19, April 8–12, 2019, Limassol, Cyprus
|
|
|
|
|
|
4. Siavvas M., Gelenbe E., “Optimum Interval for Application-level Checkpoints”, 6th IEEE International Conference on Cyber Security and Cloud Computing (CSCloud), IEEE, 2019.
|
|
|
4. Sofia Charalampidou, Elvira Maria Arvanitou, Apostolos Ampatzoglou, Alexander Chatzigeorgiou, Paris Avgeriou, Ioannis Stamelos “Structural Quality Metrics as Indicators of the Long Method Bad Smell: An Empirical Study”, 44th Conference on Software Enginering and Advanced Applications (SEAA’ 18)
|
|
|
|
|
|
5. Peggy Skiada, Apostolos Ampatzoglou, Elvira Maria Arvanitou, Alexander Chatzigeorgiou, Ioannis Stamelos, “Exploring the Relationship between Software Modularity and Technical Debt”, 44th Conference on Software Enginering and Advanced Applications (SEAA’ 18)
|
|
|
|
|
|
6. Areti Ampatzoglou, Alexander Michailidis, Christos Sarikyriakidis, Apostolos Ampatzoglou, Alexander Chatzigeorgiou, and Paris Avgeriou “A Framework for Managing Interest in Technical Debt: An Industrial Validation”, 2018 International Conference on Technical Debt (TechDEBT)
|
|
|
|
|
|
7. Amanatidis T., Mittas N., Chatzigeorgiou A., Ampatzoglou A., and Angelis L “The developer’s dilemma: Factors affecting the Decision to Repay Code Debt”, 2018 International Conference on Technical Debt (TechDEBT)
|
|
|
|
|
|
8. Nikolaos Tsantalis, Theodoros Chaikalis, Alexander Chatzigeorgiou, “Ten Years of JDeodorant: Lessons Learned from the Hunt for Smells”. In 25th IEEE International Conference on Software Analysis, Evolution, and Reengineering (SANER 2018), Campobasso, Italy, March 20-23, 2018.
|
|
|
|
|
|
9. Georgios Digkas, Mircea Lungu, Alexander Chatzigeorgiou, Apostolos Ampatzoglou, and Paris Avgeriou. “How Do Developers Pay Back Technical Debt in the Apache Ecosystem”. In 25th International Conference on Software Analysis, Evolution, and Reengineering (SANER 2018), Campobasso, Italy, March 20-23, 2018.
|
|
|
|
|
|
Please make sure to cite those publications in case you are using the Dependability Toolbox for research purposes.
|
|
|
Please make sure to cite those publications in case you are using the Technical Debt Toolbox for research purposes.
|
|
|
|