Influencia del uso de recomendaciones de legibilidad en la facilidad de comprensión de software: Un estudio experimental
Una de las actividades más frecuentes en mantenimiento de software es la lectura y comprensión de código fuente la cual demanda una proporción considerable del tiempo de los desarrolladores de software. Si el código fuente, no está escrito siguiendo buenas prácticas de programación los tiempos de ma...
- Autores:
-
Lubo Argumedo, Sergio Luis
- Tipo de recurso:
- Work document
- Fecha de publicación:
- 2019
- Institución:
- Universidad Nacional de Colombia
- Repositorio:
- Universidad Nacional de Colombia
- Idioma:
- spa
- OAI Identifier:
- oai:repositorio.unal.edu.co:unal/75524
- Acceso en línea:
- https://repositorio.unal.edu.co/handle/unal/75524
- Palabra clave:
- Ingeniería de Sistemas e Industrial
Program comprehension; Source code readability rules; Correctness; Controlled experiment
Program comprehension; Source code readability rules; Correctness; Controlled experiment
- Rights
- openAccess
- License
- Atribución-NoComercial-SinDerivadas 4.0 Internacional
id |
UNACIONAL2_4c4a66e1c8e35063e7947123b12e3cd5 |
---|---|
oai_identifier_str |
oai:repositorio.unal.edu.co:unal/75524 |
network_acronym_str |
UNACIONAL2 |
network_name_str |
Universidad Nacional de Colombia |
repository_id_str |
|
dc.title.spa.fl_str_mv |
Influencia del uso de recomendaciones de legibilidad en la facilidad de comprensión de software: Un estudio experimental |
title |
Influencia del uso de recomendaciones de legibilidad en la facilidad de comprensión de software: Un estudio experimental |
spellingShingle |
Influencia del uso de recomendaciones de legibilidad en la facilidad de comprensión de software: Un estudio experimental Ingeniería de Sistemas e Industrial Program comprehension; Source code readability rules; Correctness; Controlled experiment Program comprehension; Source code readability rules; Correctness; Controlled experiment |
title_short |
Influencia del uso de recomendaciones de legibilidad en la facilidad de comprensión de software: Un estudio experimental |
title_full |
Influencia del uso de recomendaciones de legibilidad en la facilidad de comprensión de software: Un estudio experimental |
title_fullStr |
Influencia del uso de recomendaciones de legibilidad en la facilidad de comprensión de software: Un estudio experimental |
title_full_unstemmed |
Influencia del uso de recomendaciones de legibilidad en la facilidad de comprensión de software: Un estudio experimental |
title_sort |
Influencia del uso de recomendaciones de legibilidad en la facilidad de comprensión de software: Un estudio experimental |
dc.creator.fl_str_mv |
Lubo Argumedo, Sergio Luis |
dc.contributor.advisor.spa.fl_str_mv |
Aponte Melo, Jairo Hernan |
dc.contributor.author.spa.fl_str_mv |
Lubo Argumedo, Sergio Luis |
dc.contributor.corporatename.spa.fl_str_mv |
Departamento de Ingeniería de Sistemas e Industrial |
dc.contributor.researchgroup.spa.fl_str_mv |
Colectivo de Investigación en Ingeniería de Software - ColSWE |
dc.subject.ddc.spa.fl_str_mv |
Ingeniería de Sistemas e Industrial |
topic |
Ingeniería de Sistemas e Industrial Program comprehension; Source code readability rules; Correctness; Controlled experiment Program comprehension; Source code readability rules; Correctness; Controlled experiment |
dc.subject.proposal.spa.fl_str_mv |
Program comprehension; Source code readability rules; Correctness; Controlled experiment |
dc.subject.proposal.eng.fl_str_mv |
Program comprehension; Source code readability rules; Correctness; Controlled experiment |
description |
Una de las actividades más frecuentes en mantenimiento de software es la lectura y comprensión de código fuente la cual demanda una proporción considerable del tiempo de los desarrolladores de software. Si el código fuente, no está escrito siguiendo buenas prácticas de programación los tiempos de mantenimiento de este pueden incrementarse. Con el propósito de disminuir los tiempos de lectura y comprensión es necesario por tanto considerar qué tan legible es el código fuente. El consenso general es que el código fuente debe escribirse pensando en minimizar el tiempo que tardarán otros desarrolladores en leerlo y comprenderlo. En esta investigación, se realizó un experimento controlado para analizar dos reglas de legibilidad de anidamiento y bucles. Se utilizaron 32 fragmentos (métodos) Java en cuatro categorías: unos que siguen la regla, otros que no siguen la regla y que son lógicamente correctos o incorrectos. El experimento se realizó en línea con 275 participantes. Los resultados indican que minimizar el anidamiento de estructuras de control disminuye el tiempo que los desarrolladores requieren para leer y comprender código fuente, aumenta su nivel de confianza sobre el grado de comprensión del código y también mejora la capacidad para encontrar errores (bugs). Los resultados también muestran que la regla de evitar el uso de bucles do/while no tuvo impacto significativo en ninguno de los aspectos analizados. Por último, al ser un experimento totalmente en inglés, también se encontró que cuanto mayor era el nivel de conocimiento en inglés los resultados asociados a la regla de minimizar el anidamiento fueron mejores. Se analizan las implicaciones de estos hallazgos sobre legibilidad y comprensión de código fuente. |
publishDate |
2019 |
dc.date.issued.spa.fl_str_mv |
2019-10-08 |
dc.date.accessioned.spa.fl_str_mv |
2020-01-27T11:53:14Z |
dc.date.available.spa.fl_str_mv |
2020-01-27T11:53:14Z |
dc.type.spa.fl_str_mv |
Documento de trabajo |
dc.type.driver.spa.fl_str_mv |
info:eu-repo/semantics/workingPaper |
dc.type.version.spa.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.coar.spa.fl_str_mv |
http://purl.org/coar/resource_type/c_8042 |
dc.type.coarversion.spa.fl_str_mv |
http://purl.org/coar/version/c_970fb48d4fbd8a85 |
dc.type.content.spa.fl_str_mv |
Text |
dc.type.redcol.spa.fl_str_mv |
http://purl.org/redcol/resource_type/WP |
format |
http://purl.org/coar/resource_type/c_8042 |
status_str |
publishedVersion |
dc.identifier.citation.spa.fl_str_mv |
R. Brooks, «Towards a theory of the comprehension of computer programs,» International journal of man-machine studies, vol. 18, pp. 543-554, 1983. E. Soloway y K. Ehrlich, «Empirical studies of programming knowledge,» IEEE Transactions on software engineering, Vols. %1 de %2SE-10, pp. 595-609, 1984. M.-A. Storey, «Theories, methods and tools in program comprehension: past, present and future,» de 13th International Workshop on Program Comprehension (IWPC'05), 2005. [4] A. Mayrhauser y A. M. Vans, «Program understanding behavior during debugging of large scale software,» de Papers presented at the seventh workshop on Empirical studies of programmers, 1997. [5] R. Flesch, «A new readability yardstick,» Journal of Applied Psychology, vol. 32, pp. 221-233, 1948. [6] T. Busjahn, R. Bednarik, A. Begel, M. Crosby, J. H. Paterson, C. Schulte, B. Sharif y S. Tamm, «Eye Movements in Code Reading: Relaxing the Linear Order,» de Proceedings of the 2015 IEEE 23rd International Conference on Program Comprehension, Florence, 2015. [7] S. Scalabrino, G. Bavota, C. Vendome, M. Linares-Vásquez, D. Poshyvanyk y R. Oliveto, «Automatically Assessing Code Understandability: How Far Are We?,» de Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering, Urbana-Champaign, IL, USA, 2017. [8] S. Scalabrino, M. Linares-Vásquez, D. Poshyvanyk y R. Oliveto, «Improving code readability models with textual features,» de 2016 IEEE 24th International Conference on Program Comprehension (ICPC), 2016. [9] J. Börstler, M. E. Caspersen y M. Nordström, «Beauty and the Beast: On the Readability of Object-oriented Example Programs,» Software Quality Journal, vol. 24, pp. 231-246, 2016. [10] A. Trockman, K. Cates, M. Mozina, T. Nguyen, C. Kästner y B. Vasilescu, «"Automatically assessing code understandability" reanalyzed: combined metrics matter,» de Proceedings of the 15th International Conference on Mining Software Repositories, 2018. [11] K. B. Lakshmanan, S. Jayaprakash y P. K. Sinha, «Properties of Control-Flow Complexity Measures,» IEEE Transactions on Software Engineering, vol. 17, pp. 1289-1295, 1991. [12] G. K. Gill y C. F. Kemerer, «Cyclomatic complexity density and software maintenance productivity,» IEEE Transactions on Software Engineering, vol. 17, pp. 1284-1288, 1991. [13] A. Jbara, A. Matan y D. G. Feitelson, «High-MCC functions in the Linux kernel,» de 2012 20th IEEE International Conference on Program Comprehension (ICPC), 2012. [14] S. Ajami, Y. Woodbridge y D. G. Feitelson, «Syntax, Predicates, Idioms - What Really Affects Code Complexity?,» de 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC), 2017. [15] J. Shao y Y. Wang, «A new measure of software complexity based on cognitive weights,» Canadian Journal of Electrical and Computer Engineering, vol. 28, pp. 69-74, 2003. [16] Y. Wang, «Cognitive Complexity of Software and its Measurement,» de 2006 5th IEEE International Conference on Cognitive Informatics, 2006. [17] J. C. Johnson, S. Lubo, N. Yedla, J. Aponte y B. Sharif, «An Empirical Study Assessing Source Code,» de 35th IEEE International Conference on Software Maintenance and Evolution (ICSME), Cleveland, OH USA, 2019. [18] D. Lawrie, C. Morrell, H. Feild y D. Binkley, «What's in a Name? A Study of Identifiers,» de 14th IEEE International Conference on Program Comprehension (ICPC'06), 2006. [19] D. Binkley, M. Davis, D. Lawrie, J. I. Maletic, C. Morrell y B. Sharif, «The Impact of Identifier Style on Effort and Comprehension,» Empirical Software Engineering, vol. 18, pp. 219-276, 2013. [20] A. Schankin, A. Berger, D. V. Holt, J. C. Hofmeister, T. Riedel y M. Beigl, «Descriptive Compound Identifier Names Improve Source Code Comprehension,» de Proceedings of the 26th Conference on Program Comprehension, Gothenburg, 2018. [21] S. Fakhoury, Y. Ma, V. Arnaoudova y O. Adesope, «The Effect of Poor Source Code Lexicon and Readability on Developers' Cognitive Load,» de Proceedings of the 26th Conference on Program Comprehension, Gothenburg, 2018. [22] T. R. Beelders y J.-P. L. Plessis, «Syntax highlighting as an influencing factor when reading and comprehending source code,» Journal of Eye Movement Research, vol. 9, 2015. [23] J. Feigenspan, C. Kästner, S. Apel, J. Liebig, M. Schulze, R. Dachselt, M. Papendieck, T. Leich y G. Saake, «Do Background Colors Improve Program Comprehension in the #Ifdef Hell?,» Empirical Software Engineering, vol. 18, pp. 699-745, 2013. [24] R. P. L. Buse y W. R. Weimer, «Learning a Metric for Code Readability,» IEEE Transactions on software engineering, vol. 36, pp. 546-558, 2010. [25] R. M. Santos y M. A. Gerosa, «Impacts of Coding Practices on Readability,» de Proceedings of the 26th Conference on Program Comprehension, Gothenburg, 2018. [26] M. E. Hansen, R. L. Goldstone y A. Lumsdaine, «What Makes Code Hard to Understand?,» CoRR, vol. abs/1304.5257, 2013. [27] A. Wulff-Jensen, K. Ruder, E. Triantafyllou y L. E. Bruni, «Gaze Strategies Can Reveal the Impact of Source Code Features on the Cognitive Load of Novice Programmers,» de Advances in Neuroergonomics and Cognitive Engineering, 2019. [28] E. R. Iselin, «Conditional statements, looping constructs, and program comprehension: an experimental study,» International Journal of Man-Machine Studies, vol. 28, pp. 45-66, 1988. [29] J. Borstler y B. Paech, «The Role of Method Chains and Comments in Software Readability and Comprehension-An Experiment,» IEEE Transactions on Software Engineering, vol. 42, pp. 886-898, 2016. [30] T. Sedano, «Code Readability Testing, an Empirical Study,» de 2016 IEEE 29th International Conference on Software Engineering Education and Training (CSEET), 2016. [31] D. Boswell y T. Foucher, The Art of Readable Code, O'Reilly Media, Inc., 2011. [32] R. C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, 1 ed., Upper Saddle River, NJ, USA: Prentice Hall PTR, 2008. |
dc.identifier.uri.none.fl_str_mv |
https://repositorio.unal.edu.co/handle/unal/75524 |
identifier_str_mv |
R. Brooks, «Towards a theory of the comprehension of computer programs,» International journal of man-machine studies, vol. 18, pp. 543-554, 1983. E. Soloway y K. Ehrlich, «Empirical studies of programming knowledge,» IEEE Transactions on software engineering, Vols. %1 de %2SE-10, pp. 595-609, 1984. M.-A. Storey, «Theories, methods and tools in program comprehension: past, present and future,» de 13th International Workshop on Program Comprehension (IWPC'05), 2005. [4] A. Mayrhauser y A. M. Vans, «Program understanding behavior during debugging of large scale software,» de Papers presented at the seventh workshop on Empirical studies of programmers, 1997. [5] R. Flesch, «A new readability yardstick,» Journal of Applied Psychology, vol. 32, pp. 221-233, 1948. [6] T. Busjahn, R. Bednarik, A. Begel, M. Crosby, J. H. Paterson, C. Schulte, B. Sharif y S. Tamm, «Eye Movements in Code Reading: Relaxing the Linear Order,» de Proceedings of the 2015 IEEE 23rd International Conference on Program Comprehension, Florence, 2015. [7] S. Scalabrino, G. Bavota, C. Vendome, M. Linares-Vásquez, D. Poshyvanyk y R. Oliveto, «Automatically Assessing Code Understandability: How Far Are We?,» de Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering, Urbana-Champaign, IL, USA, 2017. [8] S. Scalabrino, M. Linares-Vásquez, D. Poshyvanyk y R. Oliveto, «Improving code readability models with textual features,» de 2016 IEEE 24th International Conference on Program Comprehension (ICPC), 2016. [9] J. Börstler, M. E. Caspersen y M. Nordström, «Beauty and the Beast: On the Readability of Object-oriented Example Programs,» Software Quality Journal, vol. 24, pp. 231-246, 2016. [10] A. Trockman, K. Cates, M. Mozina, T. Nguyen, C. Kästner y B. Vasilescu, «"Automatically assessing code understandability" reanalyzed: combined metrics matter,» de Proceedings of the 15th International Conference on Mining Software Repositories, 2018. [11] K. B. Lakshmanan, S. Jayaprakash y P. K. Sinha, «Properties of Control-Flow Complexity Measures,» IEEE Transactions on Software Engineering, vol. 17, pp. 1289-1295, 1991. [12] G. K. Gill y C. F. Kemerer, «Cyclomatic complexity density and software maintenance productivity,» IEEE Transactions on Software Engineering, vol. 17, pp. 1284-1288, 1991. [13] A. Jbara, A. Matan y D. G. Feitelson, «High-MCC functions in the Linux kernel,» de 2012 20th IEEE International Conference on Program Comprehension (ICPC), 2012. [14] S. Ajami, Y. Woodbridge y D. G. Feitelson, «Syntax, Predicates, Idioms - What Really Affects Code Complexity?,» de 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC), 2017. [15] J. Shao y Y. Wang, «A new measure of software complexity based on cognitive weights,» Canadian Journal of Electrical and Computer Engineering, vol. 28, pp. 69-74, 2003. [16] Y. Wang, «Cognitive Complexity of Software and its Measurement,» de 2006 5th IEEE International Conference on Cognitive Informatics, 2006. [17] J. C. Johnson, S. Lubo, N. Yedla, J. Aponte y B. Sharif, «An Empirical Study Assessing Source Code,» de 35th IEEE International Conference on Software Maintenance and Evolution (ICSME), Cleveland, OH USA, 2019. [18] D. Lawrie, C. Morrell, H. Feild y D. Binkley, «What's in a Name? A Study of Identifiers,» de 14th IEEE International Conference on Program Comprehension (ICPC'06), 2006. [19] D. Binkley, M. Davis, D. Lawrie, J. I. Maletic, C. Morrell y B. Sharif, «The Impact of Identifier Style on Effort and Comprehension,» Empirical Software Engineering, vol. 18, pp. 219-276, 2013. [20] A. Schankin, A. Berger, D. V. Holt, J. C. Hofmeister, T. Riedel y M. Beigl, «Descriptive Compound Identifier Names Improve Source Code Comprehension,» de Proceedings of the 26th Conference on Program Comprehension, Gothenburg, 2018. [21] S. Fakhoury, Y. Ma, V. Arnaoudova y O. Adesope, «The Effect of Poor Source Code Lexicon and Readability on Developers' Cognitive Load,» de Proceedings of the 26th Conference on Program Comprehension, Gothenburg, 2018. [22] T. R. Beelders y J.-P. L. Plessis, «Syntax highlighting as an influencing factor when reading and comprehending source code,» Journal of Eye Movement Research, vol. 9, 2015. [23] J. Feigenspan, C. Kästner, S. Apel, J. Liebig, M. Schulze, R. Dachselt, M. Papendieck, T. Leich y G. Saake, «Do Background Colors Improve Program Comprehension in the #Ifdef Hell?,» Empirical Software Engineering, vol. 18, pp. 699-745, 2013. [24] R. P. L. Buse y W. R. Weimer, «Learning a Metric for Code Readability,» IEEE Transactions on software engineering, vol. 36, pp. 546-558, 2010. [25] R. M. Santos y M. A. Gerosa, «Impacts of Coding Practices on Readability,» de Proceedings of the 26th Conference on Program Comprehension, Gothenburg, 2018. [26] M. E. Hansen, R. L. Goldstone y A. Lumsdaine, «What Makes Code Hard to Understand?,» CoRR, vol. abs/1304.5257, 2013. [27] A. Wulff-Jensen, K. Ruder, E. Triantafyllou y L. E. Bruni, «Gaze Strategies Can Reveal the Impact of Source Code Features on the Cognitive Load of Novice Programmers,» de Advances in Neuroergonomics and Cognitive Engineering, 2019. [28] E. R. Iselin, «Conditional statements, looping constructs, and program comprehension: an experimental study,» International Journal of Man-Machine Studies, vol. 28, pp. 45-66, 1988. [29] J. Borstler y B. Paech, «The Role of Method Chains and Comments in Software Readability and Comprehension-An Experiment,» IEEE Transactions on Software Engineering, vol. 42, pp. 886-898, 2016. [30] T. Sedano, «Code Readability Testing, an Empirical Study,» de 2016 IEEE 29th International Conference on Software Engineering Education and Training (CSEET), 2016. [31] D. Boswell y T. Foucher, The Art of Readable Code, O'Reilly Media, Inc., 2011. [32] R. C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, 1 ed., Upper Saddle River, NJ, USA: Prentice Hall PTR, 2008. |
url |
https://repositorio.unal.edu.co/handle/unal/75524 |
dc.language.iso.spa.fl_str_mv |
spa |
language |
spa |
dc.rights.spa.fl_str_mv |
Derechos reservados - Universidad Nacional de Colombia |
dc.rights.coar.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.rights.license.spa.fl_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional |
dc.rights.spa.spa.fl_str_mv |
Acceso abierto |
dc.rights.uri.spa.fl_str_mv |
http://creativecommons.org/licenses/by-nc-nd/4.0/ |
dc.rights.accessrights.spa.fl_str_mv |
info:eu-repo/semantics/openAccess |
rights_invalid_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional Derechos reservados - Universidad Nacional de Colombia Acceso abierto http://creativecommons.org/licenses/by-nc-nd/4.0/ http://purl.org/coar/access_right/c_abf2 |
eu_rights_str_mv |
openAccess |
dc.format.extent.spa.fl_str_mv |
104 |
dc.format.mimetype.spa.fl_str_mv |
application/pdf |
dc.coverage.sucursal.spa.fl_str_mv |
Universidad Nacional de Colombia - Sede Bogotá |
dc.publisher.branch.spa.fl_str_mv |
Universidad Nacional de Colombia - Sede Bogotá |
institution |
Universidad Nacional de Colombia |
bitstream.url.fl_str_mv |
https://repositorio.unal.edu.co/bitstream/unal/75524/1/Tesis%20Oct%202019%20v1.pdf https://repositorio.unal.edu.co/bitstream/unal/75524/2/license.txt https://repositorio.unal.edu.co/bitstream/unal/75524/3/license_rdf https://repositorio.unal.edu.co/bitstream/unal/75524/4/Tesis%20Oct%202019%20v1.pdf.jpg |
bitstream.checksum.fl_str_mv |
b819d9a1f875811214573309ced1ab50 6f3f13b02594d02ad110b3ad534cd5df 4460e5956bc1d1639be9ae6146a50347 abf34df14422c86d1fe01dbf953a5115 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Institucional Universidad Nacional de Colombia |
repository.mail.fl_str_mv |
repositorio_nal@unal.edu.co |
_version_ |
1814089851621867520 |
spelling |
Atribución-NoComercial-SinDerivadas 4.0 InternacionalDerechos reservados - Universidad Nacional de ColombiaAcceso abiertohttp://creativecommons.org/licenses/by-nc-nd/4.0/info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Aponte Melo, Jairo Hernan01761b7e-9a09-4da5-b3a1-06752e7255da-1Lubo Argumedo, Sergio Luis677f0843-d726-4352-a366-65dfa94db40dDepartamento de Ingeniería de Sistemas e IndustrialColectivo de Investigación en Ingeniería de Software - ColSWE2020-01-27T11:53:14Z2020-01-27T11:53:14Z2019-10-08R. Brooks, «Towards a theory of the comprehension of computer programs,» International journal of man-machine studies, vol. 18, pp. 543-554, 1983.E. Soloway y K. Ehrlich, «Empirical studies of programming knowledge,» IEEE Transactions on software engineering, Vols. %1 de %2SE-10, pp. 595-609, 1984.M.-A. Storey, «Theories, methods and tools in program comprehension: past, present and future,» de 13th International Workshop on Program Comprehension (IWPC'05), 2005.[4] A. Mayrhauser y A. M. Vans, «Program understanding behavior during debugging of large scale software,» de Papers presented at the seventh workshop on Empirical studies of programmers, 1997.[5] R. Flesch, «A new readability yardstick,» Journal of Applied Psychology, vol. 32, pp. 221-233, 1948.[6] T. Busjahn, R. Bednarik, A. Begel, M. Crosby, J. H. Paterson, C. Schulte, B. Sharif y S. Tamm, «Eye Movements in Code Reading: Relaxing the Linear Order,» de Proceedings of the 2015 IEEE 23rd International Conference on Program Comprehension, Florence, 2015.[7] S. Scalabrino, G. Bavota, C. Vendome, M. Linares-Vásquez, D. Poshyvanyk y R. Oliveto, «Automatically Assessing Code Understandability: How Far Are We?,» de Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering, Urbana-Champaign, IL, USA, 2017.[8] S. Scalabrino, M. Linares-Vásquez, D. Poshyvanyk y R. Oliveto, «Improving code readability models with textual features,» de 2016 IEEE 24th International Conference on Program Comprehension (ICPC), 2016.[9] J. Börstler, M. E. Caspersen y M. Nordström, «Beauty and the Beast: On the Readability of Object-oriented Example Programs,» Software Quality Journal, vol. 24, pp. 231-246, 2016.[10] A. Trockman, K. Cates, M. Mozina, T. Nguyen, C. Kästner y B. Vasilescu, «"Automatically assessing code understandability" reanalyzed: combined metrics matter,» de Proceedings of the 15th International Conference on Mining Software Repositories, 2018.[11] K. B. Lakshmanan, S. Jayaprakash y P. K. Sinha, «Properties of Control-Flow Complexity Measures,» IEEE Transactions on Software Engineering, vol. 17, pp. 1289-1295, 1991.[12] G. K. Gill y C. F. Kemerer, «Cyclomatic complexity density and software maintenance productivity,» IEEE Transactions on Software Engineering, vol. 17, pp. 1284-1288, 1991.[13] A. Jbara, A. Matan y D. G. Feitelson, «High-MCC functions in the Linux kernel,» de 2012 20th IEEE International Conference on Program Comprehension (ICPC), 2012.[14] S. Ajami, Y. Woodbridge y D. G. Feitelson, «Syntax, Predicates, Idioms - What Really Affects Code Complexity?,» de 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC), 2017.[15] J. Shao y Y. Wang, «A new measure of software complexity based on cognitive weights,» Canadian Journal of Electrical and Computer Engineering, vol. 28, pp. 69-74, 2003.[16] Y. Wang, «Cognitive Complexity of Software and its Measurement,» de 2006 5th IEEE International Conference on Cognitive Informatics, 2006.[17] J. C. Johnson, S. Lubo, N. Yedla, J. Aponte y B. Sharif, «An Empirical Study Assessing Source Code,» de 35th IEEE International Conference on Software Maintenance and Evolution (ICSME), Cleveland, OH USA, 2019.[18] D. Lawrie, C. Morrell, H. Feild y D. Binkley, «What's in a Name? A Study of Identifiers,» de 14th IEEE International Conference on Program Comprehension (ICPC'06), 2006.[19] D. Binkley, M. Davis, D. Lawrie, J. I. Maletic, C. Morrell y B. Sharif, «The Impact of Identifier Style on Effort and Comprehension,» Empirical Software Engineering, vol. 18, pp. 219-276, 2013.[20] A. Schankin, A. Berger, D. V. Holt, J. C. Hofmeister, T. Riedel y M. Beigl, «Descriptive Compound Identifier Names Improve Source Code Comprehension,» de Proceedings of the 26th Conference on Program Comprehension, Gothenburg, 2018.[21] S. Fakhoury, Y. Ma, V. Arnaoudova y O. Adesope, «The Effect of Poor Source Code Lexicon and Readability on Developers' Cognitive Load,» de Proceedings of the 26th Conference on Program Comprehension, Gothenburg, 2018.[22] T. R. Beelders y J.-P. L. Plessis, «Syntax highlighting as an influencing factor when reading and comprehending source code,» Journal of Eye Movement Research, vol. 9, 2015.[23] J. Feigenspan, C. Kästner, S. Apel, J. Liebig, M. Schulze, R. Dachselt, M. Papendieck, T. Leich y G. Saake, «Do Background Colors Improve Program Comprehension in the #Ifdef Hell?,» Empirical Software Engineering, vol. 18, pp. 699-745, 2013.[24] R. P. L. Buse y W. R. Weimer, «Learning a Metric for Code Readability,» IEEE Transactions on software engineering, vol. 36, pp. 546-558, 2010.[25] R. M. Santos y M. A. Gerosa, «Impacts of Coding Practices on Readability,» de Proceedings of the 26th Conference on Program Comprehension, Gothenburg, 2018.[26] M. E. Hansen, R. L. Goldstone y A. Lumsdaine, «What Makes Code Hard to Understand?,» CoRR, vol. abs/1304.5257, 2013.[27] A. Wulff-Jensen, K. Ruder, E. Triantafyllou y L. E. Bruni, «Gaze Strategies Can Reveal the Impact of Source Code Features on the Cognitive Load of Novice Programmers,» de Advances in Neuroergonomics and Cognitive Engineering, 2019.[28] E. R. Iselin, «Conditional statements, looping constructs, and program comprehension: an experimental study,» International Journal of Man-Machine Studies, vol. 28, pp. 45-66, 1988.[29] J. Borstler y B. Paech, «The Role of Method Chains and Comments in Software Readability and Comprehension-An Experiment,» IEEE Transactions on Software Engineering, vol. 42, pp. 886-898, 2016.[30] T. Sedano, «Code Readability Testing, an Empirical Study,» de 2016 IEEE 29th International Conference on Software Engineering Education and Training (CSEET), 2016.[31] D. Boswell y T. Foucher, The Art of Readable Code, O'Reilly Media, Inc., 2011.[32] R. C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, 1 ed., Upper Saddle River, NJ, USA: Prentice Hall PTR, 2008.https://repositorio.unal.edu.co/handle/unal/75524Una de las actividades más frecuentes en mantenimiento de software es la lectura y comprensión de código fuente la cual demanda una proporción considerable del tiempo de los desarrolladores de software. Si el código fuente, no está escrito siguiendo buenas prácticas de programación los tiempos de mantenimiento de este pueden incrementarse. Con el propósito de disminuir los tiempos de lectura y comprensión es necesario por tanto considerar qué tan legible es el código fuente. El consenso general es que el código fuente debe escribirse pensando en minimizar el tiempo que tardarán otros desarrolladores en leerlo y comprenderlo. En esta investigación, se realizó un experimento controlado para analizar dos reglas de legibilidad de anidamiento y bucles. Se utilizaron 32 fragmentos (métodos) Java en cuatro categorías: unos que siguen la regla, otros que no siguen la regla y que son lógicamente correctos o incorrectos. El experimento se realizó en línea con 275 participantes. Los resultados indican que minimizar el anidamiento de estructuras de control disminuye el tiempo que los desarrolladores requieren para leer y comprender código fuente, aumenta su nivel de confianza sobre el grado de comprensión del código y también mejora la capacidad para encontrar errores (bugs). Los resultados también muestran que la regla de evitar el uso de bucles do/while no tuvo impacto significativo en ninguno de los aspectos analizados. Por último, al ser un experimento totalmente en inglés, también se encontró que cuanto mayor era el nivel de conocimiento en inglés los resultados asociados a la regla de minimizar el anidamiento fueron mejores. Se analizan las implicaciones de estos hallazgos sobre legibilidad y comprensión de código fuente.Software developers spend a significant amount of time reading source code. If code is not written with readability in mind, it impacts the time required to maintain it. In order to alleviate the time taken to read and understand code, it is important to consider how readable the code is. The general consensus is that source code should be written to minimize the time it takes for others to read and understand it. In this paper, we conduct a controlled experiment to assess two code readability rules: nesting and looping. We test 32 Java methods in four categories: ones that follow/do not follow the readability rule and that are correct/incorrect. The study was conducted online with 275 participants. The results indicate that minimizing nesting decreases the time a developer spends reading and understanding source code, increases her level of confidence about her own understanding of the code, and also suggests that it improves her ability to find bugs. The results also show that avoiding the do-while statement had no significant impact on level of understanding, time spent reading and understanding, confidence in understanding, or ease of finding bugs. It was also found that the better knowledge of English a participant had, the more their readability and comprehension confidence ratings were affected by the minimize nesting rule. We discuss the implications of these findings for code readability and comprehension.Magíster en Ingeniería de Sistemas y Computación. Línea de Investigación: Evolución y Mantenimiento de Software.104application/pdfspaIngeniería de Sistemas e IndustrialProgram comprehension; Source code readability rules; Correctness; Controlled experimentProgram comprehension; Source code readability rules; Correctness; Controlled experimentInfluencia del uso de recomendaciones de legibilidad en la facilidad de comprensión de software: Un estudio experimentalDocumento de trabajoinfo:eu-repo/semantics/workingPaperinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_8042http://purl.org/coar/version/c_970fb48d4fbd8a85Texthttp://purl.org/redcol/resource_type/WPUniversidad Nacional de Colombia - Sede BogotáUniversidad Nacional de Colombia - Sede BogotáORIGINALTesis Oct 2019 v1.pdfTesis Oct 2019 v1.pdfapplication/pdf1280887https://repositorio.unal.edu.co/bitstream/unal/75524/1/Tesis%20Oct%202019%20v1.pdfb819d9a1f875811214573309ced1ab50MD51LICENSElicense.txtlicense.txttext/plain; charset=utf-83991https://repositorio.unal.edu.co/bitstream/unal/75524/2/license.txt6f3f13b02594d02ad110b3ad534cd5dfMD52CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8805https://repositorio.unal.edu.co/bitstream/unal/75524/3/license_rdf4460e5956bc1d1639be9ae6146a50347MD53THUMBNAILTesis Oct 2019 v1.pdf.jpgTesis Oct 2019 v1.pdf.jpgGenerated Thumbnailimage/jpeg5532https://repositorio.unal.edu.co/bitstream/unal/75524/4/Tesis%20Oct%202019%20v1.pdf.jpgabf34df14422c86d1fe01dbf953a5115MD54unal/75524oai:repositorio.unal.edu.co:unal/755242023-02-28 23:07:25.061Repositorio Institucional Universidad Nacional de Colombiarepositorio_nal@unal.edu.coUExBTlRJTExBIERFUMOTU0lUTwoKQ29tbyBlZGl0b3IgZGUgZXN0ZSDDrXRlbSwgdXN0ZWQgcHVlZGUgbW92ZXJsbyBhIHJldmlzacOzbiBzaW4gYW50ZXMgcmVzb2x2ZXIgbG9zIHByb2JsZW1hcyBpZGVudGlmaWNhZG9zLCBkZSBsbyBjb250cmFyaW8sIGhhZ2EgY2xpYyBlbiBHdWFyZGFyIHBhcmEgZ3VhcmRhciBlbCDDrXRlbSB5IHNvbHVjaW9uYXIgZXN0b3MgcHJvYmxlbWFzIG1hcyB0YXJkZS4KCk5PVEFTOgoqU0kgTEEgVEVTSVMgQSBQVUJMSUNBUiBBRFFVSVJJw5MgQ09NUFJPTUlTT1MgREUgQ09ORklERU5DSUFMSURBRCBFTiBFTCBERVNBUlJPTExPIE8gUEFSVEVTIERFTCBET0NVTUVOVE8uIFNJR0EgTEEgRElSRUNUUklaIERFIExBIFJFU09MVUNJw5NOIDAyMyBERSAyMDE1LCBQT1IgTEEgQ1VBTCBTRSBFU1RBQkxFQ0UgRUwgUFJPQ0VESU1JRU5UTyBQQVJBIExBIFBVQkxJQ0FDScOTTiBERSBURVNJUyBERSBNQUVTVFLDjUEgWSBET0NUT1JBRE8gREUgTE9TIEVTVFVESUFOVEVTIERFIExBIFVOSVZFUlNJREFEIE5BQ0lPTkFMIERFIENPTE9NQklBIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgVU4sIEVYUEVESURBIFBPUiBMQSBTRUNSRVRBUsONQSBHRU5FUkFMLgoqTEEgVEVTSVMgQSBQVUJMSUNBUiBERUJFIFNFUiBMQSBWRVJTScOTTiBGSU5BTCBBUFJPQkFEQS4KUGFyYSB0cmFiYWpvcyBkZXBvc2l0YWRvcyBwb3Igc3UgcHJvcGlvIGF1dG9yOiBBbCBhdXRvYXJjaGl2YXIgZXN0ZSBncnVwbyBkZSBhcmNoaXZvcyBkaWdpdGFsZXMgeSBzdXMgbWV0YWRhdG9zLCBZbyBnYXJhbnRpem8gYWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBVTiBlbCBkZXJlY2hvIGEgYWxtYWNlbmFybG9zIHkgbWFudGVuZXJsb3MgZGlzcG9uaWJsZXMgZW4gbMOtbmVhIGRlIG1hbmVyYSBncmF0dWl0YS4gRGVjbGFybyBxdWUgZGljaG8gbWF0ZXJpYWwgZXMgZGUgbWkgcHJvcGllZGFkIGludGVsZWN0dWFsIHkgcXVlIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgVU4gbm8gYXN1bWUgbmluZ3VuYSByZXNwb25zYWJpbGlkYWQgc2kgaGF5IGFsZ3VuYSB2aW9sYWNpw7NuIGEgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIGFsIGRpc3RyaWJ1aXIgZXN0b3MgYXJjaGl2b3MgeSBtZXRhZGF0b3MuIChTZSByZWNvbWllbmRhIGEgdG9kb3MgbG9zIGF1dG9yZXMgYSBpbmRpY2FyIHN1cyBkZXJlY2hvcyBkZSBhdXRvciBlbiBsYSBww6FnaW5hIGRlIHTDrXR1bG8gZGUgc3UgZG9jdW1lbnRvLikgRGUgbGEgbWlzbWEgbWFuZXJhLCBhY2VwdG8gbG9zIHTDqXJtaW5vcyBkZSBsYSBzaWd1aWVudGUgbGljZW5jaWE6IExvcyBhdXRvcmVzIG8gdGl0dWxhcmVzIGRlbCBkZXJlY2hvIGRlIGF1dG9yIGRlbCBwcmVzZW50ZSBkb2N1bWVudG8gY29uZmllcmVuIGEgbGEgVW5pdmVyc2lkYWQgTmFjaW9uYWwgZGUgQ29sb21iaWEgdW5hIGxpY2VuY2lhIG5vIGV4Y2x1c2l2YSwgbGltaXRhZGEgeSBncmF0dWl0YSBzb2JyZSBsYSBvYnJhIHF1ZSBzZSBpbnRlZ3JhIGVuIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwsIHF1ZSBzZSBhanVzdGEgYSBsYXMgc2lndWllbnRlcyBjYXJhY3RlcsOtc3RpY2FzOiBhKSBFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWUgZW4gZWwgcmVwb3NpdG9yaW8sIHBvciB1biBwbGF6byBkZSA1IGHDsW9zLCBxdWUgc2Vyw6FuIHByb3Jyb2dhYmxlcyBpbmRlZmluaWRhbWVudGUgcG9yIGVsIHRpZW1wbyBxdWUgZHVyZSBlbCBkZXJlY2hvIHBhdHJpbW9uaWFsIGRlbCBhdXRvci4gRWwgYXV0b3IgcG9kcsOhIGRhciBwb3IgdGVybWluYWRhIGxhIGxpY2VuY2lhIHNvbGljaXTDoW5kb2xvIGEgbGEgVW5pdmVyc2lkYWQgY29uIHVuYSBhbnRlbGFjacOzbiBkZSBkb3MgbWVzZXMgYW50ZXMgZGUgbGEgY29ycmVzcG9uZGllbnRlIHByw7Nycm9nYS4gYikgTG9zIGF1dG9yZXMgYXV0b3JpemFuIGEgbGEgVW5pdmVyc2lkYWQgTmFjaW9uYWwgZGUgQ29sb21iaWEgcGFyYSBwdWJsaWNhciBsYSBvYnJhIGVuIGVsIGZvcm1hdG8gcXVlIGVsIHJlcG9zaXRvcmlvIGxvIHJlcXVpZXJhIChpbXByZXNvLCBkaWdpdGFsLCBlbGVjdHLDs25pY28gbyBjdWFscXVpZXIgb3RybyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSB5IGNvbm9jZW4gcXVlIGRhZG8gcXVlIHNlIHB1YmxpY2EgZW4gSW50ZXJuZXQgcG9yIGVzdGUgaGVjaG8gY2lyY3VsYSBjb24gdW4gYWxjYW5jZSBtdW5kaWFsLiBjKSBMb3MgYXV0b3JlcyBhY2VwdGFuIHF1ZSBsYSBhdXRvcml6YWNpw7NuIHNlIGhhY2UgYSB0w610dWxvIGdyYXR1aXRvLCBwb3IgbG8gdGFudG8sIHJlbnVuY2lhbiBhIHJlY2liaXIgZW1vbHVtZW50byBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgQ3JlYXRpdmUgQ29tbW9ucyBjb24gcXVlIHNlIHB1YmxpY2EuIGQpIExvcyBhdXRvcmVzIG1hbmlmaWVzdGFuIHF1ZSBzZSB0cmF0YSBkZSB1bmEgb2JyYSBvcmlnaW5hbCBzb2JyZSBsYSBxdWUgdGllbmVuIGxvcyBkZXJlY2hvcyBxdWUgYXV0b3JpemFuIHkgcXVlIHNvbiBlbGxvcyBxdWllbmVzIGFzdW1lbiB0b3RhbCByZXNwb25zYWJpbGlkYWQgcG9yIGVsIGNvbnRlbmlkbyBkZSBzdSBvYnJhIGFudGUgbGEgVW5pdmVyc2lkYWQgTmFjaW9uYWwgeSBhbnRlIHRlcmNlcm9zLiBFbiB0b2RvIGNhc28gbGEgVW5pdmVyc2lkYWQgTmFjaW9uYWwgZGUgQ29sb21iaWEgc2UgY29tcHJvbWV0ZSBhIGluZGljYXIgc2llbXByZSBsYSBhdXRvcsOtYSBpbmNsdXllbmRvIGVsIG5vbWJyZSBkZWwgYXV0b3IgeSBsYSBmZWNoYSBkZSBwdWJsaWNhY2nDs24uIGUpIExvcyBhdXRvcmVzIGF1dG9yaXphbiBhIGxhIFVuaXZlcnNpZGFkIHBhcmEgaW5jbHVpciBsYSBvYnJhIGVuIGxvcyDDrW5kaWNlcyB5IGJ1c2NhZG9yZXMgcXVlIGVzdGltZW4gbmVjZXNhcmlvcyBwYXJhIHByb21vdmVyIHN1IGRpZnVzacOzbi4gZikgTG9zIGF1dG9yZXMgYWNlcHRhbiBxdWUgbGEgVW5pdmVyc2lkYWQgTmFjaW9uYWwgZGUgQ29sb21iaWEgcHVlZGEgY29udmVydGlyIGVsIGRvY3VtZW50byBhIGN1YWxxdWllciBtZWRpbyBvIGZvcm1hdG8gcGFyYSBwcm9ww7NzaXRvcyBkZSBwcmVzZXJ2YWNpw7NuIGRpZ2l0YWwuIFNJIEVMIERPQ1VNRU5UTyBTRSBCQVNBIEVOIFVOIFRSQUJBSk8gUVVFIEhBIFNJRE8gUEFUUk9DSU5BRE8gTyBBUE9ZQURPIFBPUiBVTkEgQUdFTkNJQSBPIFVOQSBPUkdBTklaQUNJw5NOLCBDT04gRVhDRVBDScOTTiBERSBMQSBVTklWRVJTSURBRCBOQUNJT05BTCBERSBDT0xPTUJJQSwgTE9TIEFVVE9SRVMgR0FSQU5USVpBTiBRVUUgU0UgSEEgQ1VNUExJRE8gQ09OIExPUyBERVJFQ0hPUyBZIE9CTElHQUNJT05FUyBSRVFVRVJJRE9TIFBPUiBFTCBSRVNQRUNUSVZPIENPTlRSQVRPIE8gQUNVRVJETy4KUGFyYSB0cmFiYWpvcyBkZXBvc2l0YWRvcyBwb3Igb3RyYXMgcGVyc29uYXMgZGlzdGludGFzIGEgc3UgYXV0b3I6IERlY2xhcm8gcXVlIGVsIGdydXBvIGRlIGFyY2hpdm9zIGRpZ2l0YWxlcyB5IG1ldGFkYXRvcyBhc29jaWFkb3MgcXVlIGVzdG95IGFyY2hpdmFuZG8gZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBVTikgZXMgZGUgZG9taW5pbyBww7pibGljby4gU2kgbm8gZnVlc2UgZWwgY2FzbywgYWNlcHRvIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHBvciBjdWFscXVpZXIgaW5mcmFjY2nDs24gZGUgZGVyZWNob3MgZGUgYXV0b3IgcXVlIGNvbmxsZXZlIGxhIGRpc3RyaWJ1Y2nDs24gZGUgZXN0b3MgYXJjaGl2b3MgeSBtZXRhZGF0b3MuCkFsIGhhY2VyIGNsaWMgZW4gZWwgc2lndWllbnRlIGJvdMOzbiwgdXN0ZWQgaW5kaWNhIHF1ZSBlc3TDoSBkZSBhY3VlcmRvIGNvbiBlc3RvcyB0w6lybWlub3MuCg== |