Métricas para comprender el esfuerzo de mantenimiento futuro requerido de un código fuente complicado
Resumen
Un problema de ingeniería duradero es la creación de código fuente demasiado complicado para que los humanos lo revisen y comprendan. Una consecuencia del código fuente complicado es que requiere más esfuerzo para implementar y mantener. Lo que exacerba el problema es la falta de una comprensión adecuada de lo que significan exactamente las palabras “complicado” y “complejo”, ya que estas definiciones a menudo se interpretan mal. Algunos sistemas son realmente intrínsecamente complejos, pero esto no significa que deban ser complicados. En nuestra investigación, se evaluaron varios proyectos de código abierto utilizando métricas de software para mapear la complejidad del código fuente con el esfuerzo continuo para mantener el proyecto. Los resultados de nuestra investigación muestran que existe una relación entre el código fuente complicado y el esfuerzo de mantenimiento. Está claro que adherirse a las prácticas de codificación adecuadas y evitar el código complicado puede resultar en un esfuerzo de mantenimiento futuro mucho más manejable.
Descargas
Citas
Bardas, A. G. (2010). Static code analysis. Journal of Information Systems & Operations Management, 4(2), 99-107.
Borowiec, D. (2014). Commented Code Detector. Retrieved June 16, 2019, from https:// https://github.com/dborowiec/commentedCodeDetector
Dorin, M. (2018, May). Coding for inspections and reviews. In Proceedings of the 19th International Conference on Agile Software Development: Companion (p. 34). ACM.
Foucault, M., Palyart, M., Blanc, X., Murphy, G. C., & Falleri, J. R. (2015, August). Impact of developer turnover on quality in open-source software. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (pp. 829-841). ACM.
GitHub. (2019). Build software better, together. Retrieved June 16, from https://github.com/
Halstead, M. H. (1977). Elements of software science (Vol. 7, p. 127). New York: Elsevier.
Hatton, L. (1997). Reexamining the fault density component size connection. IEEE software, 14(2), 89-97.
Kobashi, Y., Fukuda, M., Yoshida, K., Miyashita, N., Niki, Y., & Oka, M. (2006). Chronic necrotizing pulmonary aspergillosis as a complication of pulmonary Mycobacterium avium complex disease. Respirology, 11(6), 809-813.
Lissack, M., & Roos, J. (1999). The next common sense: Mastering corporate complexity through coherence. Nicholas Brealey Publishing.
Manser, M. (2004). Good Word Guide. Bloomsbury Publishing UK.
Marjamäki , D. (2019). Cppcheck. Retrieved June 16, 2019, from http://cppcheck.sourceforge.net
McCabe, T. J. (1976). A complexity measure. IEEE Transactions on software Engineering, (4), 308-320.
Mish, F. C. (Ed.). (2004). Merriam-Webster’s collegiate dictionary. Merriam-Webster.
Nagappan, N., & Ball , T. (2005, May). Use of relative code churn measures to predict system defect density. In Proceedings of the 27th international conference on Software engineering (pp. 284-292). ACM.
Spinellis, D. (2012). Git. IEEE software, 29(3), 100-101.
Sturtevant, D. J. (2013). System design and the cost of architectural complexity (Doctoral dissertation, Massachusetts Institute of Technology).
Torek, A. C. Distributed Version Control With Git And Mercurial. Retrieved June 16, 2019,
from http://web.torek.net/torek/tmp/book.pdf
Yin, T. (2019). Lizard. Retrieved June 16, 2019, from https://github.com/terryyin/lizard
Yoon and K. Tyagi. (2014) nsiqcppstyle. Retrieved June 16, 2019, from https://github.com/kunaltyagi/nsiqcppstyle