Voltar para projetos

Engenharia de Software • Refactoring • Extensão

Refatoração do Projeto de Extensão

Modernização de sistema legado de extensão universitária: de monolito acoplado a arquitetura limpa, testes e observabilidade.

Clean ArchitectureSOLIDDockerCI/CDTestes
Ver no GitHub Ver outros projetos

Sobre o projeto

Sistema legado de gestão de projetos de extensão com código acoplado, sem testes e deploy manual. O objetivo foi refatorar sem reescrever do zero (strangler fig): isolar domínios, aplicar SOLID e Clean Architecture e criar suíte de testes para habilitar evolução contínua.

Mapeei fluxos críticos (cadastro de propostas, avaliação, certificação), quebrei god classes, introduzi casos de uso, repositórios e injeção de dependência. Pipeline CI passou a rodar lint, testes e build de imagem Docker a cada PR.

Galeria — Antes e Depois

Diagramas de arquitetura e métricas de qualidade.

Arquitetura monolítica antes
Figura 1 — Antes: monolito acoplado.
Arquitetura em camadas depois
Figura 2 — Depois: camadas domain/application/infra.
Cobertura de testes
Figura 3 — Cobertura de testes de 18% → 74%.

Estratégia de Refatoração

1) Caracterização com testes de caracterização, 2) Extração de casos de uso, 3) Inversão de dependência para repositórios, 4) Introdução de DTOs e validação, 5) Containerização e pipeline. Métricas: complexidade ciclomática -42% e tempo de deploy de 45min para 6min.

Tecnologias

TypeScript/Node ou Python, Docker, GitHub Actions, Vitest/Jest, Prisma/TypeORM, ESLint. Documentação de ADRs.

Aprendizados

Refatorar com testes de rede de segurança permite evoluir sem medo. Próximo: observabilidade com logs estruturados e métricas. Base sólida para disciplina de Arquitetura de Software.