Abordagem para seleção de exemplos trabalhados para engenharia de software do domínio de sistemas distribuídos
Resumo
Este artigo aborda a escassez de exemplos trabalhos do domínio de Sistemas Distribuídos (SD) relevantes para o ensino de Engenharia de Software (ES). O objetivo é identificar exemplos de código de projetos de software livre que demonstrem melhorias significativas na qualidade do design de código e sejam adequados para o ensino de SD e ES. O método compreendeu o desenvolvimento de uma heurística para seleção de exemplos, utilizando métricas de qualidade de código (CK), análise de refatorações (RefactoringMiner) e avaliação por especialistas. A ferramenta Worked-Example-Miner (WEM) automatiza a coleta e análise de dados. Ao usar a heurística, com auxílio da ferramenta WEM, nos projetos Apache Kafka e ZooKeeper (ZK), foi possível selecionar códigos candidatos a exemplos trabalhados para ensino de SD e ES. A análise de um caso específico no ZK mostrou melhorias significativas nas métricas de qualidade após refatoração, ilustrando a aplicabilidade da abordagem.Referências
Abad, C. L., Ortiz-Holguin, E., e Boza, E. F. (2021). Have we reached consensus? an analysis of distributed systems syllabi. In 52nd ACM Technical Symposium on Computer Science Education, p. 1082–1088, New York, NY, USA. ACM.
ACM (2023). CS2023: ACM/IEEE-CS computing curricula 2023. Disponível em: [link]. Acessado em 21 agosto 2024.
ASF (2008). Zookeeper. Disponível em: [link]. Acessado em 19 setembro 2023.
ASF (2011). Kafka. Disponível em: [link]. Acessado em 19 setembro 2023.
Atkinson, R. K., Derry, S. J., Renkl, A., e Wortham, D. (2000). Learning from examples: Instructional principles from the worked examples research. Review of Educational Research, 70(2):181–214.
Barr, M., Andrei, O., Morrison, A., e Nabi, S. W. (2024). The development of students’ professional competencies on a work-based software engineering program. In 55th ACM Technical Symposium on Computer Science Education, p. 81–87, New York, NY, EUA. ACM.
Bonetti, T. P., Dias, M. M., Silva, W., e Colanzi, T. E. (2023). Students’ perception of example-based learning in software modeling education. In XXXVII Brazilian Symposium on Software Engineering (SBES 2023), p. 67–76, New York, NY, EUA. ACM.
Cabral, R., Kalinowski, M., Baldassarre, M. T., Villamizar, H., Escovedo, T., e Lopes, H. (2024). Investigating the impact of SOLID design principles on machine learning code understanding. In 3rd International Conference on AI Engineering – Software Engineering for AI, p. 1–11. ACM.
Chidamber, S. e Kemerer, C. (1994). A metrics suite for object oriented design. IEEE Transactions on Software Engineering, 20(6):476–493.
da Silva, B. F. (2023). Worked-example-miner (wem): A comprehensive tool for analyzing java repositories. Software. Acessado em 4 de dezembro de 2023.
da Silva, B. F. (2024). Worked-example-miner-candidates: Repositório de candidatos para análise e construção de exemplos trabalhados no domínio de sistemas distribuídos. Conjunto de dados. Acessado em 19 de fevereiro de 2025.
Filó, T. G. S., Bigonha, M. A. S., e Ferreira, K. A. M. (2024). Evaluating thresholds for object-oriented software metrics. Journal of the Brazilian Computer Society, 30(1):315–346.
Gamma, E., Helm, R., Johnson, R., e Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Pearson Education.
Ghafoor, S., Brown, D. W., Rogers, M., e Haynes, A. (2023). Faculty development workshops for integrating PDC in early undergraduate curricula: An experience report. In Qasem, A., Thiruvathukal, G., e Bunde, D., editors, 11th Workshop on Education for High-Performance Computing (EduHPC-23), p. 1–8.
Google (2023). Google AI research. Disponível em: [link]. Acessado em 9 de setembro de 2024.
Martin, R. C. (2003). Agile Software Development: Principles, Patterns, and Practices. Prentice Hall PTR, USA.
Martin, R. C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall PTR, USA, 1 edition.
McQuaigue, M., Saule, E., Subramanian, K., e Payton, J. (2023). Data-driven discovery of anchor points for PDC content. In Qasem, A., Thiruvathukal, G., e Bunde, D., editors, 11th Workshop on Education for High-Performance Computing (EduHPC-23), p. 1–8.
Muldner, K., Jennings, J., e Chiarelli, V. (2022). A review of worked examples in programming activities. ACM Trans. Comput. Educ., 23(1).
NSF/IEEE-TCPP (2024). Nsf/ieee-tcpp curriculum initiative on parallel and distributed computing. Online. Disponível em: [link].
NSF/IEEE-TCPP Curriculum Initiative (2023). EduPar-23: 13th NSF/TCPP Workshop on Parallel and Distributed Computing Education. In In conjunction with 37th IEEE International Parallel and Distributed Processing Symposium, St. Petersburg, Florida, USA. National Science Foundation (NSF) and the TCPP Curriculum Initiative on Parallel and Distributed Computing. EduPar-23 Workshop.
Raj, R. K. e Kumar, A. N. (2022). Toward computer science curricular guidelines 2023 (cs2023). ACM Inroads, 13(4):22–25.
Skudder, B. e Luxton-Reilly, A. (2014). Worked examples in computer science. In 6th Australasian Computing Education Conference, volume 148, p. 59–64, Darlinghurst, Austrália. Australian Computer Society.
Subramanyam, R. e Krishnan, M. (2003). Empirical analysis of CK metrics for object-oriented design complexity: implications for software defects. IEEE Transactions on Software Engineering, 29(4):297–310.
Tonhão, S., Colanzi, T., e Steinmacher, I. (2023). Using real worked examples to aid software engineering teaching. In 35th Brazilian Symposium onSoftware Engineering (SBES 2021), p. 133–142, New York, NY, EUA. ACM.
Tonhão, S., Silva, W., Colanzi, T., e Steinmacher, I. (2022). Uma plataforma gamificada de desafios baseados em worked examples extraídos de projetos de software livre para o ensino de engenharia de software. In XVII Simpósio Brasileiro de Sistemas Colaborativos, p. 33–38, Porto Alegre, RS, Brasil. SBC.
Tsantalis, N. (2018). RefactoringMiner: A tool for detecting refactoring patterns. Available in [link].
Tsantalis, N., Mansouri, M., Eshkevari, L. M., Mazinanian, D., e Dig, D. (2018). Accurate and efficient refactoring detection in commit history. In 40th International Conference on Software Engineering, p. 483–494, New York, NY, USA. ACM.
ACM (2023). CS2023: ACM/IEEE-CS computing curricula 2023. Disponível em: [link]. Acessado em 21 agosto 2024.
ASF (2008). Zookeeper. Disponível em: [link]. Acessado em 19 setembro 2023.
ASF (2011). Kafka. Disponível em: [link]. Acessado em 19 setembro 2023.
Atkinson, R. K., Derry, S. J., Renkl, A., e Wortham, D. (2000). Learning from examples: Instructional principles from the worked examples research. Review of Educational Research, 70(2):181–214.
Barr, M., Andrei, O., Morrison, A., e Nabi, S. W. (2024). The development of students’ professional competencies on a work-based software engineering program. In 55th ACM Technical Symposium on Computer Science Education, p. 81–87, New York, NY, EUA. ACM.
Bonetti, T. P., Dias, M. M., Silva, W., e Colanzi, T. E. (2023). Students’ perception of example-based learning in software modeling education. In XXXVII Brazilian Symposium on Software Engineering (SBES 2023), p. 67–76, New York, NY, EUA. ACM.
Cabral, R., Kalinowski, M., Baldassarre, M. T., Villamizar, H., Escovedo, T., e Lopes, H. (2024). Investigating the impact of SOLID design principles on machine learning code understanding. In 3rd International Conference on AI Engineering – Software Engineering for AI, p. 1–11. ACM.
Chidamber, S. e Kemerer, C. (1994). A metrics suite for object oriented design. IEEE Transactions on Software Engineering, 20(6):476–493.
da Silva, B. F. (2023). Worked-example-miner (wem): A comprehensive tool for analyzing java repositories. Software. Acessado em 4 de dezembro de 2023.
da Silva, B. F. (2024). Worked-example-miner-candidates: Repositório de candidatos para análise e construção de exemplos trabalhados no domínio de sistemas distribuídos. Conjunto de dados. Acessado em 19 de fevereiro de 2025.
Filó, T. G. S., Bigonha, M. A. S., e Ferreira, K. A. M. (2024). Evaluating thresholds for object-oriented software metrics. Journal of the Brazilian Computer Society, 30(1):315–346.
Gamma, E., Helm, R., Johnson, R., e Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Pearson Education.
Ghafoor, S., Brown, D. W., Rogers, M., e Haynes, A. (2023). Faculty development workshops for integrating PDC in early undergraduate curricula: An experience report. In Qasem, A., Thiruvathukal, G., e Bunde, D., editors, 11th Workshop on Education for High-Performance Computing (EduHPC-23), p. 1–8.
Google (2023). Google AI research. Disponível em: [link]. Acessado em 9 de setembro de 2024.
Martin, R. C. (2003). Agile Software Development: Principles, Patterns, and Practices. Prentice Hall PTR, USA.
Martin, R. C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall PTR, USA, 1 edition.
McQuaigue, M., Saule, E., Subramanian, K., e Payton, J. (2023). Data-driven discovery of anchor points for PDC content. In Qasem, A., Thiruvathukal, G., e Bunde, D., editors, 11th Workshop on Education for High-Performance Computing (EduHPC-23), p. 1–8.
Muldner, K., Jennings, J., e Chiarelli, V. (2022). A review of worked examples in programming activities. ACM Trans. Comput. Educ., 23(1).
NSF/IEEE-TCPP (2024). Nsf/ieee-tcpp curriculum initiative on parallel and distributed computing. Online. Disponível em: [link].
NSF/IEEE-TCPP Curriculum Initiative (2023). EduPar-23: 13th NSF/TCPP Workshop on Parallel and Distributed Computing Education. In In conjunction with 37th IEEE International Parallel and Distributed Processing Symposium, St. Petersburg, Florida, USA. National Science Foundation (NSF) and the TCPP Curriculum Initiative on Parallel and Distributed Computing. EduPar-23 Workshop.
Raj, R. K. e Kumar, A. N. (2022). Toward computer science curricular guidelines 2023 (cs2023). ACM Inroads, 13(4):22–25.
Skudder, B. e Luxton-Reilly, A. (2014). Worked examples in computer science. In 6th Australasian Computing Education Conference, volume 148, p. 59–64, Darlinghurst, Austrália. Australian Computer Society.
Subramanyam, R. e Krishnan, M. (2003). Empirical analysis of CK metrics for object-oriented design complexity: implications for software defects. IEEE Transactions on Software Engineering, 29(4):297–310.
Tonhão, S., Colanzi, T., e Steinmacher, I. (2023). Using real worked examples to aid software engineering teaching. In 35th Brazilian Symposium onSoftware Engineering (SBES 2021), p. 133–142, New York, NY, EUA. ACM.
Tonhão, S., Silva, W., Colanzi, T., e Steinmacher, I. (2022). Uma plataforma gamificada de desafios baseados em worked examples extraídos de projetos de software livre para o ensino de engenharia de software. In XVII Simpósio Brasileiro de Sistemas Colaborativos, p. 33–38, Porto Alegre, RS, Brasil. SBC.
Tsantalis, N. (2018). RefactoringMiner: A tool for detecting refactoring patterns. Available in [link].
Tsantalis, N., Mansouri, M., Eshkevari, L. M., Mazinanian, D., e Dig, D. (2018). Accurate and efficient refactoring detection in commit history. In 40th International Conference on Software Engineering, p. 483–494, New York, NY, USA. ACM.
Publicado
07/04/2025
Como Citar
SILVA, Breno Farias da; WIESE, Igor Scaliante; CAMPIOLO, Rodrigo; SILVA, Marco Aurélio Graciotto.
Abordagem para seleção de exemplos trabalhados para engenharia de software do domínio de sistemas distribuídos. In: SIMPÓSIO BRASILEIRO DE EDUCAÇÃO EM COMPUTAÇÃO (EDUCOMP), 5. , 2025, Juiz de Fora/MG.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2025
.
p. 228-239.
DOI: https://doi.org/10.5753/educomp.2025.5407.