Este projeto foi desenvolvido como parte de um Trabalho de Conclusão de Curso (TCC) na área de Engenharia de Software, com o objetivo de comparar arquiteturas de software em projetos de e-commerce desenvolvidos em Python, utilizando Domain-Driven Design (DDD) e uma arquitetura tradicional sem DDD (CRUD/monolítica).
A aplicação permite analisar dois repositórios GitHub ou arquivos ZIP de projetos e calcular métricas de qualidade de software, gerando relatórios comparativos.
- Upload de dois projetos via:
- URL do GitHub (públicos ou privados com token).
- Upload direto de arquivos ZIP.
- Extração de métricas de engenharia de software:
- Linhas de Código (LOC)
- Número de classes, funções e módulos
- Complexidade Ciclomática (via radon)
- Índice de Manutenibilidade
- Acoplamento entre módulos
- Comparação visual:
- Tabelas comparativas
- Gráfico radar mostrando forças e fraquezas de cada projeto.
- Geração de relatório com insights automáticos.
Para a análise proposta no TCC, sugerimos os seguintes repositórios públicos:
DDD (com Domain-Driven Design)
🔗 pgorecki/python-ddd
Sem DDD (arquitetura tradicional)
🔗 codingforentrepreneurs/eCommerce
(se apresentar erro no branch main
, usar django-beginners-ecommerce)
git clone https://github.com/seu-usuario/architecture-compare.git
cd architecture-compare
python3 -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows
pip install -r requirements.txt
streamlit run app.py
Forneça os links de dois repositórios (um com DDD, outro sem DDD).
Ajuste os pesos das métricas (manutenibilidade, complexidade, acoplamento).
Clique em Rodar Análise.
Veja os resultados em tabelas e gráficos radar.
A análise se fundamenta em métricas de qualidade de software (ISO/IEC 25010), destacando:
Manutenibilidade
Complexidade
Modularidade
Testabilidade
O projeto contribui com uma forma prática de comparar arquiteturas, evidenciando vantagens do DDD em sistemas de e-commerce.
-
Python 3.13+
-
Streamlit (UI interativa)
-
Radon (complexidade e manutenibilidade)
-
Pylint (análise estática)
-
Requests (integração com GitHub API)
-
Plotly (gráficos radar)
Este projeto é de uso acadêmico. Você pode utilizá-lo como base para estudos e trabalhos educacionais.
Projeto desenvolvido para TCC de Ciência da Computação
👤 Pedro Vinicius Mota Barreiro
📧 Email: pedromb.dev@gmail.com