Skip to main content

Toward prioritization of self-admitted technical debt: an approach to support decision to payment

Abstract

Technical Debt (TD) is a metaphor that describes the cost–benefit relationship between postponing technical development activities and the consequences of this long-term postponement. The lack of TD Management compromises the Software’s internal quality. It makes its maintenance complex and costly. TD instances are called Self-Admitted Technical Debt (SATD) when intentionally committed and documented through comments in the source code. Several studies explore the identification of SATD, but approaches to support the payment stage are lacking, particularly approaches to indicate which SATD priority for payment. This paper presents an approach to support the prioritization activity in SATD payment. The Prioritization Approach focuses on creating associations between SATD associations and problems found in the source code, identified by Automatic Static Analysis. The results demonstrate that using the issues found on source code and SATD description (found in comments) has greater precision to establish the priority among the SATD compared to the SATD description on comments. We applied the approach proposed to different software projects, and the results support developers’ prioritization.

This is a preview of subscription content, access via your institution.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10

Notes

  1. https://github.com/brunoslima/SATDPriority-Dataset

  2. https://github.com/brunoslima/SATDPriorityParse

References

  • Alves, N. S., Mendes, T. S., de Mendonça, M. G., Spínola, R. O., Shull, F., & Seaman, C. (2016). Identification and management of technical debt. Information on Software Technololgy 70(C), 100–121. https://doi.org/10.1016/j.infsof.2015.10.008..

  • Bavota, G., & Russo, B. (2016). A large-scale empirical study on self-admitted technical debt. In: 2016 IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR) (pp. 315–326). https://doi.org/10.1109/MSR.2016.040.

  • Brown, N., Cai, Y., Guo, Y., Kazman, R., Kim, M., Kruchten, P., Lim, E., MacCormack, A., Nord, R., Ozkaya, I., Sangwan, R., Seaman, C., Sullivan, K., & Zazworka, N. (2010). Managing technical debt in software-reliant systems. In: Proceedings of the FSE/SDP Workshop on Future of Software Engineering Research, FoSER ’10 (pp. 47–52). ACM, New York, NY, USA. https://doi.org/10.1145/1882362.1882373

  • Cunningham, W. (1992). The wycash portfolio management system. SIGPLAN OOPS Mess., 4(2), 29–30. https://doi.org/10.1145/157710.157715.

    Article  Google Scholar 

  • Digkas, G., Lungu, M., Avgeriou, P., Chatzigeorgiou, A., & Ampatzoglou, A. (2018). How do developers fix issues and pay back technical debt in the apache ecosystem? In: 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER) (pp. 153–163). https://doi.org/10.1109/SANER.2018.8330205.

  • Digkas, G., Lungu, M., Chatzigeorgiou, A., & Avgeriou, P. (2017). The evolution of technical debt in the apache ecosystem. In: Proceedings of European Conference on Software Architecture (pp. 51–66). https://doi.org/10.1007/978-3-319-65831-5_4.

  • de Freitas Farias, M. A., de Mendona Neto, M. G., Kalinowski, M., Spanola, R. O. (2020). Identifying self-admitted technical debt through code comment analysis with a contextualized vocabulary. Information and Software Technology, 121, 106270. http://www.sciencedirect.com/science/article/pii/S0950584920300203..

  • Griffith, I., Taffahi, H., Izurieta, C., & Claudio, D. (2014). A simulation study of practical methods for technical debt management in agile software development. In: Proceedings of the Winter Simulation Conference 2014 (pp. 1014–1025). https://doi.org/10.1109/WSC.2014.7019961

  • Guo, Y., & Seaman, C. (2011). Measuring and monitoring technical debt. In: Advances in Computers, 82, 25–46.

  • Guo, Y., Seaman, C., Gomes, R., Cavalcanti, A., Tonin, G., Silva, F. Q. B. D., Santos, A.L.M., Siebra, C.: Tracking technical debt - an exploratory case study. In: 2011 27th IEEE International Conference on Software Maintenance (ICSM) (pp. 528–531). https://doi.org/10.1109/ICSM.2011.6080824.

  • Guo, Y., Spínola, R. O., & Seaman, C. (2016). Exploring the costs of technical debt management — a case study. Empirical Software Engineer, 21(1), 159–182. http://dx.doi.org/10.1007/s10664-014-9351-7.

  • Huang, Q., Shihab, E., Xia, X., Lo, D., & Li, S. (2018). Identifying self-admitted technical debt in open source projects using text mining. Empirical Software Engineering, 23(1), 418–451. https://doi.org/10.1007/s10664-017-9522-4.

    Article  Google Scholar 

  • Izureta, C., Vetro, A., Zazworka, N., Cai, Y., Seaman, C., & Shull, F. (2012). Organizing the technical debt landscape. In: Proceedings of the Third International Workshop on Managing Technical Debt, Piscataway, NJ, USA: IEEE Press (pp. 23–26)(MTD ’12, V.1).

  • Jesus, J. S. D., & Melo, A. C. V. D. (2017). Technical debt and the software project characteristics. a repository-based exploratory analysis. In: 2017 IEEE 19th Conference on Business Informatics (CBI), 01, 444–453. https://doi.org/10.1109/CBI.2017.62.

  • Kamei, Y., Maldonado, E. D. S., Shihab, E., & Ubayashi, N. (2016) Using analytics to quantify interest of self-admitted technical debt. In: 1st International Workshop on Technical Debt Analytics.

  • Kruchten, P., Nord, R. L., Ozkaya, I., & Falessi, D. (2013). Technical debt: Towards a crisper definition report on the 4th international workshop on managing technical debt. SIGSOFT Software Engineer Notes, 38(5), 51–54.

    Article  Google Scholar 

  • Li, Z., Avgeriou, P., & Liang, P. (2015). A systematic mapping study on technical debt and its management. Journal of Systems and Software, 101(C), 193–220. https://doi.org/10.1016/j.jss.2014.12.027.

  • Lim, E., Taksande, N., & Seaman, C. (2012). A balancing act: What software practitioners have to say about technical debt. IEEE Software, 29(6), 22–27. https://doi.org/10.1109/MS.2012.130.

    Article  Google Scholar 

  • Liu, Z., Huang, Q., Xia, X., Shihab, E., Lo, D., & Li, S. (2018). Satd detector: A text-mining-based self-admitted technical debt detection tool. In: 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion) (pp. 9–12).

  • Maldonado, E. D. S., Abdalkareem, R., Shihab, E., & Serebrenik, A. (2017). An empirical study on the removal of self-admitted technical debt. In: 2017 IEEE International Conference on Software Maintenance and Evolution (ICSME) (pp. 238–248). https://doi.org/10.1109/ICSME.2017.8.

  • Maldonado, E. D. S., & Shihab, E. (2015). Detecting and quantifying different types of self-admitted technical debt. In: 2015 IEEE 7th International Workshop on Managing Technical Debt (MTD) (pp. 9–15). https://doi.org/10.1109/MTD.2015.7332619.

  • Maldonado, E. D. S., Shihab, E., & Tsantalis, N. (2017). Using natural language processing to automatically detect self-admitted technical debt. IEEE Transactions on Software Engineering, 43(11), 1044–1062. https://doi.org/10.1109/TSE.2017.2654244.

    Article  Google Scholar 

  • Martini, A., Besker, T., & Bosch, J. (2018). Technical debt tracking: Current state of practice: A survey and multiple case study in 15 large organizations. Science of Computer Programming, 163, 42–61. https://doi.org/10.1016/j.scico.2018.03.007.

    Article  Google Scholar 

  • Mensah, S., Keung, J., Bosu, M., & Bennin, K. (2016). Rework effort estimation of self-admitted technical debt. CEUR Workshop Proceedings, 1771, 72–75.

    Google Scholar 

  • Mensah, S., Keung, J., Svajlenko, J., Bennin, K.E., & Mi, Q. (2018) On the value of a prioritization scheme for resolving self-admitted technical debt. Journal of System and and Software, 135(C), 37–5. https://doi.org/10.1016/j.jss.2017.09.026.

  • Nugroho, A., Visser, J., & Kuipers, T. (2011). An empirical model of technical debt and interest. In: Proceedings of the 2nd Workshop on Managing Technical Debt, MTD ’11 (pp. 1–8). ACM, New York, NY, USA.

  • Potdar, A., & Shihab, E. (2014). An exploratory study on self-admitted technical debt. In: 2014 IEEE International Conference on Software Maintenance and Evolution (pp. 91–100). https://doi.org/10.1109/ICSME.2014.31.

  • Rios, N., de MendoneSa Neto, M. G., & Spanola, R. O. (2018). A tertiary study on technical debt: Types, management strategies, research trends, and base information for practitioners. Information and Software Technology, 102, 117–145. https://doi.org/10.1016/j.infsof.2018.05.010.

    Article  Google Scholar 

  • Seaman, C., Guo, Y., Izurieta, C., Cai, Y., Zazworka, N., Shull, F., & Vetre, A. (2015). Using technical debt data in decision making: Potencial decision approaches. In: Proceedings of the Third International Workshop on Managing Technical Debt, Piscataway, NJ, USA: IEEE Press (pp. 45–48). (MTD ’12, V.1).

  • Sierra, G., Shihab, E., & Kamei, Y. (2019). A survey of self-admitted technical debt. Journal of Systems and Software, 152, 70 – 82. http://www.sciencedirect.com/science/article/pii/S0164121219300457

  • SonarSource, S.A. (2016). Sonarqube documentation. https://Docs.sonarqube.org/display/SONAR/Documentation.

  • Wehaibi, S., Shihab, E., & Guerrouj, L. (2016). Examining the impact of self-admitted technical debt on software quality. In: 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER), 1, 179–188. https://doi.org/10.1109/SANER.2016.72.

  • Zampetti, F., Noiseux, C., Antoniol, G., Khomh, F., & Penta, M. D. (2017). Recommending when design technical debt should be self-admitted. In: 2017 IEEE International Conference on Software Maintenance and Evolution (ICSME) (pp. 216–226). https://doi.org/10.1109/ICSME.2017.44

  • Zampetti, F., Serebrenik, A., & Di Penta, M. (2018). Was self-admitted technical debt removal a real removal?: An in-depth perspective. In: Proceedings of the 15th International Conference on Mining Software Repositories, MSR ’18 (pp. 526–536). ACM, New York, NY, USA. http://doi.acm.org/10.1145/3196398.3196423.

Download references

Acknowledgements

We are grateful to the Coordination of Superior Level Staff Improvement (CAPES) for financial support to develop this work. We are also grateful to São Paulo State University (UNESP), Faculty of Science and Technology and Laboratory of Software Engineering Research and Applications (LaPESA) for the infrastructure provided.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Bruno Santos de Lima.

Ethics declarations

Conflict of interest

The authors declare that they have no conflict of interest.

Additional information

Publisher’s Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

de Lima, B.S., Garcia, R.E. & Eler, D.M. Toward prioritization of self-admitted technical debt: an approach to support decision to payment. Software Qual J 30, 729–755 (2022). https://doi.org/10.1007/s11219-021-09578-7

Download citation

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11219-021-09578-7

Keywords

  • Self-Admitted Technical Debt
  • Technical Debt Prioritization
  • Technical Debt Managing
  • Software Maintenance
  • Software quality