Skip to content

PedroVMB/py-architecture-analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏗️ Comparador Arquitetural: DDD vs Não-DDD (E-commerce)

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.


📌 Funcionalidades

  • 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.

📊 Repositórios de Exemplo Utilizados

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)


⚙️ Instalação e Execução

1. Clonar este repositório

git clone https://github.com/seu-usuario/architecture-compare.git
cd architecture-compare

2. Criar e ativar um ambiente virtual

python3 -m venv .venv
source .venv/bin/activate   # Linux/Mac
.venv\Scripts\activate      # Windows

3. Instalar dependências

pip install -r requirements.txt

4. Executar a aplicação

streamlit run app.py

Acesse em:

http://localhost:8501

📈 Exemplo de Uso

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.

📚 Base Teórica

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.

👨‍💻 Tecnologias Utilizadas

  • 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)

📜 Licença

Este projeto é de uso acadêmico. Você pode utilizá-lo como base para estudos e trabalhos educacionais.

✨ Autor

Projeto desenvolvido para TCC de Ciência da Computação

👤 Pedro Vinicius Mota Barreiro

📧 Email: pedromb.dev@gmail.com

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages