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...

Full description

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==