Analisando a Qualidade do Código em Plataformas de Cursos Online Abertos e Massivos
Resumo
Frequentemente, estudantes utilizam Cursos Online Abertos e Massivos para aprender novas tecnologias. Nessas plataformas, os educadores podem fornecer código-fonte dos projetos para que os alunos realizem exercícios práticos. Nesse contexto, a qualidade do código é um fator relevante, visto que problemas podem impactar centenas de alunos. Além disso, os alunos aprendem usando estes exemplos. Neste trabalho, investiga-se a qualidade do código-fonte destes cursos. Especificamente, analisam-se 352 projetos, envolvendo cinco linguagens de programação: Java, JavaScript, TypeScript, Python e Go. Detectou-se cerca de 8 mil problemas de código em mais de 11 mil arquivos. A maioria dos problemas refere-se a code smells de baixa gravidade. Além disso, não existe uma correlação significativa entre a popularidade e a qualidade do código. Em resumo, os resultados sugerem que a qualidade do código disponibilizado nestas plataformas é satisfatória para os estudantes. Por fim, conclui-se o trabalho prospectando futuras linhas de pesquisa e discutindo sobre a adoção de ferramentas de análise de código.
Referências
Bey, A., Jermann, P., and Dillenbourg, P. (2018). A comparison between two automatic assessment approaches for programming: An empirical study on moocs. Journal of Educational Technology & Society, 21(2):259–272.
Bezerra, C., Damasceno, H., and Teixeira, J. (2022). Perceptions and difficulties of software engineering students in code smells refactoring. In 10th Workshop de Visualização, Evolução e Manutenção de Software (VEM), pages 41–45.
Bibiano, A. C., Garcia, E. F. D. O. A., Kalinowski, M., Fonseca, B., Oliveira, R., Oliveira, A., and Cedrim, D. (2019). A quantitative study on characteristics and effect of batch refactoring on code smells. In 13th International Symposium on Empirical Software Engineering and Measurement (ESEM), pages 1–11.
Birillo, A., Vlasov, I., Burylov, A., Selishchev, V., Goncharov, A., Tikhomirova, E., Vyahhi, N., and Bryksin, T. (2022). Hyperstyle: A tool for assessing the code quality of solutions to programming assignments. In Proceedings of the 53rd ACM Technical Symposium on Computer Science Education V. 1, pages 307–313.
Blackmon, S. and Major, C. (2017). Wherefore art thou mooc: Defining massive open online courses. Online Learning Journal, 21(4).
Borges, H. and Valente, M. T. (2018). What’s in a github star? understanding repository starring practices in a social coding platform. Journal of Systems and Software, 146:112–129.
Boutnaru, S. and Hershkovitz, A. (2015). Software quality and security in teachers’ and students’ codes when learning a new programming language. Interdisciplinary Journal of E-Skills and Lifelong Learning, 11:123–148.
Brito, A., Hora, A., and Valente, M. T. (2022). Understanding refactoring tasks over time: A study using refactoring graphs. In 25th Ibero-American Conference on Software Engineering (CIbSE), pages 1–15.
Campbell, G. A. and Papapetrou, P. P. (2013). SonarQube in action. Manning Publications Co.
Ferreira, F. and Valente, M. T. (2023). Detecting code smells in react-based web apps. Information and Software Technology, 155:107111.
Gasiba, T. E., Hodzic, S., Lechner, U., and Pinto-Albuquerque, M. (2021). Raising security awareness using cybersecurity challenges in embedded programming courses. In 2021 International Conference on Code Quality (ICCQ), pages 79–92. IEEE.
Gomes, P. H., Garcia, R. E., Eler, D. M., Correia, R. C., and Junior, C. O. (2021). Software quality as a subsidy for teaching programming. In 2021 IEEE Frontiers in Education Conference (FIE), pages 1–9. IEEE.
Hinkle, D. E., Wiersma, W., and Jurs, S. G. (2003). Applied statistics for the behavioral sciences, volume 663. Houghton Mifflin college division.
Hyman, P. (2012). In the year of disruptive education. Communications of the ACM, 55(12):20–22.
Iannone, E., Guadagni, R., Ferrucci, F., De Lucia, A., and Palomba, F. (2023). The secret life of software vulnerabilities: A large-scale empirical study. IEEE Transactions on Software Engineering, 49(1):44–63.
Keuning, H., Heeren, B., and Jeuring, J. (2017). Code quality issues in student programs. In Proceedings of the 2017 ACM Conference on Innovation and Technology in Computer Science Education, pages 110–115.
Kirk, D., Tempero, E., Luxton-Reilly, A., and Crow, T. (2020). High school teachers’ understanding of code style. In Koli Calling’20: Proceedings of the 20th Koli Calling International Conference on Computing Education Research, pages 1–10.
Lenarduzzi, V., Lomio, F., Huttunen, H., and Taibi, D. (2020). Are sonarqube rules inducing bugs? In 27th International Conference on Software Analysis, Evolution and Reengineering (SANER), pages 501–511.
Liyanagunawardena, T. R., Adams, A. A., and Williams, S. A. (2013). Moocs: A systematic study of the published literature 2008-2012. International Review of Research in Open and Distributed Learning, 14(3):202–227.
Lopes, M. and Hora, A. (2022). How and why we end up with complex methods: a multilanguage study. Empirical Software Engineering, 27(5):115.
Mahajan, R., Gupta, P., and Singh, T. (2019). Massive open online courses: concept and implications. Indian pediatrics, 56(6):489–495.
Marcilio, D., Bonifácio, R., Monteiro, E., Canedo, E., Luz, W., and Pinto, G. (2019). Are static analysis violations really fixed? a closer look at realistic usage of sonarqube. In 2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC), pages 209–219.
Pereira, R., Henriques, P. R., and Vieira, M. (2018). The effects of code smells on software maintainability: A replication study. Journal of Software: Evolution and Process, 30(1):e1941.
Qaralleh, E. A. and Darabkh, K. A. (2015). A new method for teaching microprocessors course using emulation. Computer Applications in Engineering Education, 23(3):455–463.
Sharma, K. and Chhabra, J. K. (2024). An empirical evaluation of design smells and code smells over multiple versions of software evolution. In 15th International Conference on Computing, Communications, and Cyber-Security, pages 961–973. Springer Nature Singapore.
Vassallo, C., Panichella, S., Palomba, F., Proksch, S., Zaidman, A., and Gall, H. C. (2018). Context is king: The developer perspective on the usage of static analysis tools. In 25th International Conference on Software Analysis, Evolution and Reengineering (SANER), pages 38–49.
Vegi, L. F. d. M. and Valente, M. T. (2022). Code smells in elixir: early results from a grey literature review. In 30th IEEE/ACM International Conference on Program Comprehension (ICPC), pages 580–584. Association for Computing Machinery.