EEVEE: Uma Arquitetura Extensível Baseada em Workers para Avaliação Automatizada de Programação

  • João Vitor Coimbra CEFET/RJ
  • Diego Castro CEFET/RJ

Resumo


Ferramentas de avaliação automatizada de exercícios de programação costumam estar acopladas a uma linguagem ou a uma cadeia de ferramentas específica, o que dificulta sua evolução para novos contextos de ensino. Este artigo de ferramenta descreve, do ponto de vista arquitetural, o mecanismo de execução do EEVEE, uma plataforma de avaliação automatizada que desacopla a execução do código submetido da linguagem de programação por meio de imagens de contêiner. Cada submissão é executada em um job efêmero e isolado, orquestrado por Kubernetes, no qual um contêiner de inicialização padronizado injeta o código do estudante em um volume compartilhado e um contêiner principal, específico da tecnologia, executa os testes e escreve o resultado em sua saída padrão, que a plataforma converte em um resultado estruturado comum. Como o núcleo de orquestração manipula apenas contêineres opacos, o suporte a uma nova tecnologia reduz-se a construir uma imagem que cumpra um contrato mínimo e a registrar a estratégia que interpreta sua saída, sem alterar o bootstrap, o ciclo de vida do job, a coleta de logs nem o esquema comum de resultados. Descrevemos esse contrato, o catálogo atual de imagens e o caminho de extensão, e disponibilizamos a ferramenta em repositório público e em uma instância acessível.

Palavras-chave: Avaliação Automatizada, Contêineres, Kubernetes, Arquitetura de Software, Extensibilidade, Isolamento de Execução

Referências

Brendan Burns, Joe Beda, and Kelsey Hightower. 2019. Kubernetes: Up and Running (2 ed.). O’Reilly Media.

Brendan Burns, Brian Grant, David Oppenheimer, Eric Brewer, and John Wilkes. 2016. Borg, Omega, and Kubernetes. Commun. ACM 59, 5 (2016), 50–57. DOI: 10.1145/2890784

Sébastien Combéfis. 2022. Automated Code Assessment for Education: Review, Classification and Perspectives on Techniques and Tools. Software 1, 1 (2022), 3–30. DOI: 10.3390/software1010002

Cypress. 2025. Cypress: JavaScript End-to-End Testing Framework. [link]. Acesso em: 08 jul. 2026.

Guillaume Derval, Anthony Gego, Pierre Reinbold, Benjamin Frantzen, and Peter Van Roy. 2015. Automatic grading of programming exercises in a MOOC using the INGInious platform. In Proceedings of the European MOOCs Stakeholders Summit (EMOOCs). 86–91.

Herman Zvonimir Došilović and Igor Mekterović. 2020. Robust and Scalable Online Code Execution System. In 2020 43rd International Convention on Information, Communication and Electronic Technology (MIPRO). IEEE, 1627–1632. DOI: 10.23919/MIPRO48935.2020.9245310

EEVEE Project. 2026. EEVEE: Instância Pública. [link]. Instância implantada em infraestrutura da RNP. Acesso em: 08 jul. 2026.

EEVEE Project. 2026. EEVEE: Plataforma de Avaliação Automatizada de Programação. [link]. Repositório do código-fonte. Acesso em: 08 jul. 2026.

Jest. 2025. Jest: Delightful JavaScript Testing. [link]. Acesso em: 08 jul. 2026.

Kubernetes Documentation. 2025. Network Policies. [link]. Acesso em: 10 jul. 2026.

Richard Lobb and Jenny Harlow. 2016. Coderunner: A Tool for Assessing Computer Programming Skills. ACM Inroads 7, 1 (2016), 47–51. DOI: 10.1145/2810041

Marcus Messer, Neil C. C. Brown, Michael Kölling, and Miaojing Shi. 2024. Automated Grading and Feedback Tools for Programming Education: A Systematic Review. ACM Transactions on Computing Education 24, 1 (2024). DOI: 10.1145/3636515

José Paiva, José Leal, and Álvaro Figueira. 2022. Automated Assessment in Computer Science Education: A State-of-the-Art Review. ACM Transactions on Computing Education 22, 3 (2022). DOI: 10.1145/3513140

Allison Randal. 2020. The Ideal Versus the Real: Revisiting the History of Virtual Machines and Containers. Comput. Surveys 53, 1 (2020). DOI: 10.1145/3365199

Jerome H. Saltzer and Michael D. Schroeder. 1975. The Protection of Information in Computer Systems. Proc. IEEE 63, 9 (1975), 1278–1308. DOI: 10.1109/PROC.1975.9939

Sachchidanand Singh and Nirmala Singh. 2016. Containers & Docker: Emerging Roles & Future of Cloud Technology. In 2016 2nd International Conference on Applied and Theoretical Computing and Communication Technology (iCATccT). IEEE, 804–807. DOI: 10.1109/ICATCCT.2016.7912109

Niko Strijbol, Charlotte Van Petegem, Rien Maertens, Boris Sels, Christophe Scholliers, Peter Dawyndt, and Bart Mesuere. 2023. TESTed — An educational testing framework with language-agnostic test suites for programming exercises. SoftwareX 22 (2023), 101404. DOI: 10.1016/j.softx.2023.101404

The Go Authors. 2025. Package testing — The Go Programming Language. [link]. Acesso em: 10 jul. 2026.

Yutaka Watanobe, Md. Mostafizer Rahman, Taku Matsumoto, Uday Kiran Rage, and Penugonda Ravikumar. 2022. Online Judge System: Requirements, Architecture, and Experiences. International Journal of Software Engineering and Knowledge Engineering 32, 6 (2022), 917–946. DOI: 10.1142/S0218194022500346

Matthew West, Geoffrey L. Herman, and Craig Zilles. 2015. PrairieLearn: Masterybased Online Problem Solving with Adaptive Scoring and Recommendations Driven byMachine Learning. In 2015 ASEE Annual Conference & Exposition. ASEE, 26.1238.1–26.1238.14. DOI: 10.18260/p.24575
Publicado
11/09/2026
COIMBRA, João Vitor; CASTRO, Diego. EEVEE: Uma Arquitetura Extensível Baseada em Workers para Avaliação Automatizada de Programação. In: WORKSHOP DE VISUALIZAÇÃO, EVOLUÇÃO E MANUTENÇÃO DE SOFTWARE (VEM), 14. , 2026, São Paulo/SP. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2026 . p. 189-193. DOI: https://doi.org/10.5753/vem.2026.32978.