Trilha de Especialização Pedagógica — Curso 25: Sistemas Desktop com Python & POO
- Visão Geral da Trilha: 📚 Módulo Sistemas com Python
- Catálogo de Projetos: 🏗️ Projetos Práticos
- Relatório de Complexidade: 📊 Relatório Técnico de Complexidade Intermediária
- ➡️ Especificação Formal (este guia): Trilha Evolutiva em 4 Fases & 10 Projetos Integradores Intermediários
O maior desafio no ensino superior de computação é superar o “abismo cognitivo” existente entre resolver problemas de lógica pura em simuladores web (onde o código é efêmero, procedural e restrito à memória RAM) e construir aplicações de software completas, robustas, concorrentes e orientadas a dados.
Esta trilha pedagógica foi concebida para conduzir o estudante por uma jornada de 4 fases incrementais, em que o mesmo problema de negócio evolui de um script procedural simples com persistência em arquivos para um produto de software de padrão corporativo com banco híbrido, concorrência e interface gráfica atraente.
flowchart TD
subgraph F1 ["Fase 1: Transição & Requisitos"]
direction TB
A1["Lógica Pura: Funções & Coleções (list/dict)"]
A2["Persistência: I/O em .txt / .json / .csv"]
A3["Engenharia: Entrevista, RF/RNF e Casos de Uso"]
A1 --> A2 --> A3
end
subgraph F2 ["Fase 2: Estruturação & Banco Relacional"]
direction TB
B1["POO: Classes, Métodos, Dataclasses e Type Hints"]
B2["Persistência: SQLite3 (CRUD Parametrizado & ACID)"]
B3["Engenharia: MER / DER, Dicionário de Dados"]
B1 --> B2 --> B3
end
subgraph F3 ["Fase 3: Integração & Arquitetura Híbrida"]
direction TB
C1["Arquitetura em Camadas: MVC / Repository (DAO)"]
C2["Persistência: Híbrida (SQLite Relacional + NoSQL Documentos)"]
C3["Concorrência: Threads, Workers em Segundo Plano e Filas"]
C1 --> C2 --> C3
end
subgraph F4 ["Fase 4: Entrega Visual & Empacotamento"]
direction TB
D1["Interface em Python Puro: CustomTkinter, Streamlit ou Flet"]
D2["Empacotamento Nativo: PyInstaller (.exe) & Inno Setup"]
D3["🏆 Produto de Software Palpável e Portfólio"]
D1 --> D2 --> D3
end
F1 ==>|Desafio: Limitações de I/O e Sem ACID| F2
F2 ==>|Desafio: Acoplamento & Dados Flexíveis| F3
F3 ==>|Desafio: Usabilidade, Concorrência e Distribuição| F4
style F1 fill:#fffde7,stroke:#fbc02d,stroke-width:2px
style F2 fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
style F3 fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
style F4 fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
Esta trilha atende diretamente às Diretrizes Curriculares Nacionais (DCNs do MEC) para cursos de Ciência da Computação, Engenharia de Software, Sistemas de Informação e Análise e Desenvolvimento de Sistemas (ADS):
graph LR
subgraph Disciplinas ["Disciplinas Universitárias Integradas"]
D1["Algoritmos & Lógica"] --> F1["Fase 1: Transição"]
D2["Engenharia de Software (Requisitos)"] --> F1
D3["POO & Tipagem"] --> F2["Fase 2: Estruturação"]
D4["Banco de Dados Relacional (SQL)"] --> F2
D5["Padrões de Projeto (GoF/DAO)"] --> F3["Fase 3: Integração"]
D6["Bancos NoSQL & Sistemas Concorrentes"] --> F3
D7["Interação Humano-Computador (IHC)"] --> F4["Fase 4: Entrega Visual"]
D8["Implantação & DevOps Desktop"] --> F4
end
A trilha foi estruturada para que o aluno não faça projetos puramente teóricos de “brinquedo”, mas sim aplique o desenvolvimento de software para solucionar dores de parceiros comunitários reais em sua cidade:
Em pequenas cidades e municípios do interior do Brasil, o ecossistema comercial e de serviços possui particularidades que demandam soluções de engenharia específicas:
graph TD
subgraph Pilares ["4 Pilares de Viabilidade para Pequenas Cidades"]
P1["1. Offline-First\nOpera 100% sem internet nas vendas diárias"]
P2["2. Custo Zero de Servidor\nSem mensalidades de nuvem (AWS/Azure)"]
P3["3. Hardware Modesto\nExecução fluida em PCs com 4GB RAM"]
P4["4. Backup Descomplicado\nBasta copiar o arquivo .db para pendrive"]
end
| # | Projeto Integrador | Aplicação Típica em Cidades do Interior |
| :—: | :— | :— |
| 1 | Gestor de Cantina / Comércios | Mercadinhos de bairro, padarias, quitandas e lanchonetes com controle de “caderneta / fiado”. |
| 2 | Clínica Veterinária / Pet Shop | Casas de ração, lojas agropecuárias, clínicas veterinárias e atendimento de pequenos e grandes animais. |
| 3 | Patrimônio de TI & HelpDesk | Pequenos provedores de internet via rádio/fibra (ISPs regionais), lojas de informática e secretarias municipais. |
| 4 | Biblioteca Comunitária | Bibliotecas municipais, escolas estaduais/municipais, ONGs locais e acervos paroquiais. |
| 5 | Processador de Arquivos em Lote | Escritórios de contabilidade do interior, despachantes e cooperativas que recebem planilhas com encodings corrompidos. |
| 6 | To-Do List Comparativo | Pequenas oficinas de costura, serralherias, marcenarias e escritórios de advocacia local. |
| 7 | Dashboard Analítico Concorrente | Armazéns de grãos, distribuidoras de bebidas regionais, cooperativas de laticínios e revendas de insumos. |
| 8 | Automação Comercial Executável | Lojas de materiais de construção, autopeças, oficinas mecânicas e postos de combustível (PDV local .exe). |
| 9 | Telemetria IoT & Energia | Granjas avícolas, estufas agrícolas, confinamento de gado de corte e silos de armazenamento de grãos. |
| 10 | Gestor Financeiro & Orçamentos | Gestão de Microempreendedores Individuais (MEI), produtores rurais familiares e finanças domésticas. |
| Fase | Foco Técnico | Persistência & I/O | Interface | Entregáveis de Engenharia | Marco Cognitivo do Estudante |
|---|---|---|---|---|---|
| 1. Transição | Funções puras, coleções nativas (list, dict), validação de entrada |
Arquivos planos .txt (delimitados), .json ou .csv |
CLI Interativo via Terminal | Entrevista com cliente fictício/real, Requisitos (RF/RNF), Casos de Uso | “Compreendo como traduzir uma necessidade real em regras lógicas e persistir dados simples no disco.” |
| 2. Estruturação | Introdução à POO (Classes, Métodos, @dataclass, Type Hints PEP 484) |
Banco Relacional SQLite3 (Tabelas, PK, FK, Índices, Constraints) | CLI Estruturado | MER/DER (Modelo Entidade-Relacionamento), Dicionário de Dados | “Entendo por que bancos relacionais com ACID, tipos estritos e integridade referencial superam arquivos planos.” |
| 3. Integração | Arquitetura em Camadas (Model, View, DAO/Repository), Concorrência com Threads | Híbrida: SQLite3 (estruturado) + NoSQL Documentos (TinyDB/MongoDB) | CLI Avançado / Protótipo de Serviços | Diagrama de Classes UML, Modelagem Híbrida, Logs de Auditoria | “Consigo desacoplar a lógica de negócio do banco, processar tarefas pesadas sem travar e escolher o modelo de dados ideal.” |
| 4. Entrega Visual & Deploy | Construção de UI moderna sem HTML/CSS/JS e empacotamento executável | Camadas integradas (DAO + Concorrência + UI) | Desktop: CustomTkinter Web: Streamlit / Flet |
Manual do Usuário, Executável .exe (PyInstaller), Pitch/Demo do Produto |
“Construí um produto de software completo, funcional, atraente, distribuível e pronto para uso real de mercado.” |
A introdução precoce do ferramental correto reduz atritos técnicos e prepara o estudante para fluxos de desenvolvimento profissionais do mercado. Recomendamos a escolha entre Visual Studio Code e JetBrains PyCharm:
| Recurso / Dimensão | 🟦 Visual Studio Code (Microsoft) | 🟩 PyCharm Community / Pro (JetBrains) |
|---|---|---|
| Filosofia de Uso | Editor leve, modular e extensível via plugins | IDE completa “out-of-the-box” voltada 100% ao ecossistema Python |
Gerenciamento de Ambientes (venv) |
Seleção manual via Command Palette (Ctrl+Shift+P $\rightarrow$ Python: Select Interpreter) |
Criação e isolamento automático de .venv ao abrir ou criar o projeto |
| Inspeção de Tipos e POO | Extensões mypy e Pylance com validação estática |
Motor semântico nativo de análise profunda de tipos, herança e refatoração |
| Visualização de Bancos SQLite | Extensão SQLite Viewer (qwtel.sqlite-viewer) |
Ferramenta nativa Database (Pro) ou plugin Database Navigator / SQLite Viewer (Community) |
| Refatoração de Código | Renomeação básica de símbolos e importações | Refatoração avançada (Extract Method, Inline Variable, Change Signature, Pull Up/Down) |
| Depuração e Testes | Painel “Run & Debug” e painel de testes com pytest/unittest |
Depurador visual com visualizador de DataFrame/variáveis e Test Runner gráfico nativo |
| Consumo de Memória / Hardware | Muito leve (~200MB–400MB RAM), inicialização quase instantânea | Mais robusto (~800MB–1.5GB RAM), ideal para projetos médios a grandes |
ms-python.python): Habilita execução, depuração e integração com formatadores.qwtel.sqlite-viewer): Permite inspecionar tabelas .db, registros e executar queries SQL diretamente dentro da interface gráfica do VS Code.charliermarsh.ruff): Linter e formatador ultrarrápido padronizado pela PEP 8.ms-python.mypy-type-checker): Validação de Type Hints em tempo real (PEP 484/585).Shift + F6 para renomear classes/métodos com atualização automática em todo o projeto ou Ctrl + Alt + M para extrair trechos procedurais em funções/métodos dedicados.json / csv / .txt): Bibliotecas nativas do Python (import json, import csv, open()) sem necessidade de pacotes externos.sqlite3): Motor relacional embutido no Python, dispensando instalação ou configuração de servidores de banco.tinydb ou pymongo):
pip install tinydb), salva documentos em JSON local com API similar ao MongoDB, ideal para evitar a complexidade de configuração de instâncias Docker/Mongo no início..exe no Windows, binário no Linux/macOS) sem exigir Python instalado na máquina do usuário final.graph TD
subgraph Trilhas ["10 Projetos Integradores de Mercado"]
P1["1. To-Do List Persistência Comparada (P02)"]
P2["2. Processador de Arquivos em Lote (P01)"]
P3["3. Gestor de Cantina / Comércios"]
P4["4. Biblioteca Comunitária"]
P5["5. Clínica Veterinária / Pet Shop"]
P6["6. Patrimônio de TI & HelpDesk"]
P7["7. Gestor Financeiro & Orçamentos"]
P8["8. Dashboard Analítico Concorrente (P03)"]
P9["9. Telemetria IoT & Energia em Tempo Real"]
P10["10. Automação Comercial Executável (P04)"]
end
| # | Projeto Integrador | Domínio de Aplicação no Interior | Foco Técnico Principal | Persistência Híbrida | Interface Alvo |
|---|---|---|---|---|---|
| 1 | To-Do List Comparativo (P02) | Escritórios locais, oficinas de costura | Comparativo Procedural vs POO, DAO, SQL Injection | .txt delimitado vs SQLite3 ACID |
Tkinter / Treeview |
| 2 | Processador de Arquivos em Lote (P01) | Escritórios de contabilidade, despachantes | Tratamento de encodings, validação de schema, MVC | Arquivos CSV / Excel / JSON | CustomTkinter (Desktop) |
| 3 | Gestor de Cantina / Comércios | Mercadinhos de bairro, padarias, quitandas | Regras financeiras, baixa atômica de estoque, fiado | SQLite + TinyDB (Recibos Imutáveis) | Streamlit (Web) |
| 4 | Biblioteca Comunitária | Bibliotecas municipais, escolas locais | Regras temporais, cálculo de juros por atraso | SQLite + TinyDB (Tags & Resenhas) | CustomTkinter / Flet |
| 5 | Clínica Veterinária / Pet Shop | Casas de ração, lojas agropecuárias, clínicas | Relacionamentos 1:N / N:N, Agenda médica | SQLite + TinyDB (Prontuário Flexível) | CustomTkinter (Desktop) |
| 6 | Patrimônio de TI & HelpDesk | Provedores de internet (ISPs), suporte local | Máquina de estados de chamados, Kanban | SQLite + NoSQL (Fichas Polimórficas) | Streamlit (Web) |
| 7 | Gestor Financeiro & Orçamentos | MEIs, produtores familiares, finanças pessoais | Conciliação OFX/CSV, Teto de Gastos, Projeções | SQLite (Lançamentos) + TinyDB (Metas) | CustomTkinter (Desktop) |
| 8 | Dashboard Analítico Concorrente (P03) | Cooperativas agrícolas, distribuidoras locais | Multithreading, Worker Threads sem travar a UI | SQLite3 + Cache em Memória | CustomTkinter + Matplotlib |
| 9 | Telemetria IoT & Energia | Granjas avícolas, estufas, silos de grãos | Concorrência assíncrona / Threads, Time-Series | SQLite (Time-Series) + NoSQL (Alertas) | Streamlit / Flet |
| 10 | Automação Comercial Executável (P04) | Lojas de materiais de construção, autopeças | PyInstaller .exe, Inno Setup, Splash Screen, Logs |
SQLite3 Embutido + .ini/.yaml |
CustomTkinter (Nativo) |
Gerenciamento de tarefas em pequenos escritórios locais (marcenarias, serralherias, pequenas confecções), demonstrando as diferenças de engenharia entre armazenar dados em arquivos de texto delimitados versus banco de dados relacional.
flowchart LR
E1["Fase 1: Procedural (.txt)\nI/O Sequencial e Parsing com Delimitador Pipe"] --> E2["Fase 2: POO + SQLite\nDataclasses, Enums, Type Hints e AUTOINCREMENT"]
E2 --> E3["Fase 3: Repository DAO\nQueries Parametrizadas e Context Managers"]
E3 --> E4["Fase 4: Tkinter ttk.Treeview\nBusca em Tempo Real e Alternância de Estados"]
tarefas.txt com delimitador |, cálculo manual de IDs em memória (max(id) + 1) e reescrita total do arquivo $O(n)$ a cada alteração.@dataclass Tarefa e Enum (Prioridade, StatusTarefa). Criação do schema SQLite relacional com constraints e auto-incremento atômico.TarefaRepository encapsulando operações CRUD completas, context managers com commit e rollback preventivo, e 100% de proteção contra SQL Injection via parâmetros ?.ttk.Treeview, barras de rolagem, busca textual em tempo real via SQL LIKE, tags visuais de status e contadores analíticos na barra de rodapé.Escritórios de contabilidade do interior, despachantes e cooperativas que recebem diariamente planilhas CSV e Excel de diferentes fontes com encodings corrompidos (UTF-8, Latin-1) e dados inconsistentes que precisam ser higienizados e validados.
flowchart LR
E1["Fase 1: CLI\nScripts de Limpeza CSV e Tratamento de Encoding"] --> E2["Fase 2: POO\nClasses Parser, Validator, Transformer & Relatório"]
E2 --> E3["Fase 3: Arquitetura MVC\nIsolamento de Regras e Exportador Multi-formato"]
E3 --> E4["Fase 4: CustomTkinter\nInterface Desktop Drag & Drop com Barra de Progresso"]
.csv e .txt brutos com manipulação de strings, detecção de erros de encoding e remoção de linhas nulas via CLI.ProcessadorArquivo, ValidadorSchema e RegistroConsolidado com Type Hints rigorosos e tratamento de exceções customizadas (ArquivoInvalidoException).Mercadinhos de bairro, cantinas escolares e padarias enfrentam dificuldades para controlar vendas diárias, fluxo de caixa, estoque de itens perecíveis e o controle de “fiado” (crédito concedido na caderneta a clientes conhecidos).
flowchart LR
E1["Fase 1: CLI\nVendas e Estoque em JSON"] --> E2["Fase 2: SQLite\nTabelas Clientes, Produtos, Pedidos"]
E2 --> E3["Fase 3: NoSQL\nRecibos Imutáveis e Logs de Caixa"]
E3 --> E4["Fase 4: Streamlit\nPainel Financeiro & PDV Web"]
vendas.json. Interface CLI com menu de opções: registrar venda, consultar estoque e calcular faturamento do dia.Produto, Cliente, Pedido e ItemPedido. Banco relacional SQLite (mercado.db): Tabelas normalizadas com chaves estrangeiras e integridade referencial.Bibliotecas municipais, escolas estaduais e acervos comunitários necessitam de um sistema para cadastrar livros, controlar empréstimos para moradores locais, calcular multas automáticas por atraso e organizar resenhas.
flowchart LR
E1["Fase 1: CLI\nEmpréstimos Sequenciais em TXT/CSV"] --> E2["Fase 2: SQLite\nLivros, Exemplares, Leitores e Multas"]
E2 --> E3["Fase 3: NoSQL\nResenhas, Tags Semânticas e Avaliações"]
E3 --> E4["Fase 4: CustomTkinter / Flet\nCatálogo Visual & Checkout de Livros"]
emprestimos.txt) delimitado por pipes (|). Funções procedurais para calcular dias de empréstimo e aplicar taxa simples.Livro, Exemplar, Leitor e Emprestimo. SQLite: Tabelas normalizadas garantindo que um exemplar não possa ser emprestado simultaneamente a mais de um leitor.#ficcao, #agro).Casas de ração, lojas agropecuárias e clínicas veterinárias do interior precisam gerenciar agendamentos de banho/tosa, consultas a campo (grandes animais) e na clínica (pequenos animais), mantendo histórico de vacinas e prontuários.
flowchart LR
E1["Fase 1: CLI\nFila de Banhos/Consultas em TXT/JSON"] --> E2["Fase 2: SQLite\nTutor (1) -> Animais (N) -> Agendamentos"]
E2 --> E3["Fase 3: NoSQL\nProntuário Médico Flexível e Vacinas"]
E3 --> E4["Fase 4: CustomTkinter\nApp Desktop com Abas & Agenda"]
agenda.json ou agendamentos.txt. CLI com menu de marcação de horários, listagem do dia e confirmação de presença.Tutor, Animal, Veterinario e Atendimento. SQLite: Tabelas tutores, animais (relacionamento 1:N) e atendimentos com chaves estrangeiras.Provedores de internet regionais (ISPs locais de fibra óptica), pequenas prefeituras e lojas de informática necessitam controlar o inventário de equipamentos (roteadores, ONUs, switches, computadores) e gerenciar ordens de serviço e chamados técnicos.
flowchart LR
E1["Fase 1: CLI\nTickets de Suporte em Dicionários JSON"] --> E2["Fase 2: SQLite\nUsuários, Ativos, Chamados & SLA"]
E2 --> E3["Fase 3: NoSQL\nFichas Técnicas Variáveis de Hardware"]
E3 --> E4["Fase 4: Streamlit\nPainel Kanban & SLA de Atendimento"]
chamados.json. Controle de status sequencial (Aberto, Em Atendimento, Resolvido).Usuario, Tecnico, Equipamento e Chamado. SQLite: Controle transacional de chamados com timestamps de abertura e resolução, além de integridade de alocação de hardware.Microempreendedores Individuais (MEIs), pequenos produtores rurais familiares e autônomos que precisam separar as finanças pessoais das profissionais, importar extratos bancários de cooperativas de crédito (.ofx/.csv) e controlar metas de investimento.
flowchart LR
E1["Fase 1: CLI\nLançamentos Diários de Receitas e Despesas em JSON"] --> E2["Fase 2: SQLite\nContas, Categorias, Transações e Orçamentos"]
E2 --> E3["Fase 3: NoSQL Híbrido\nParser OFX, Metas Financeiras e Tags Livres"]
E3 --> E4["Fase 4: CustomTkinter\nInterface Financeira com Gráficos Donut e Projeções"]
financas.json.ContaBancaria, Categoria, Transacao e OrcamentoMensal. SQLite: Tabelas relacionais com cálculo transacional de saldo e restrições de chave estrangeira..ofx/.csv) com conciliação automática para evitar duplicidade de lançamentos. Persistência NoSQL (TinyDB): Armazenamento de metas financeiras de longo prazo com regras variáveis (ex: “Compra de Trator”, “Reserva de Emergência”) e tags personalizadas (#lavoura, #pessoal).Cooperativas agrícolas, distribuidoras de bebidas regionais e cerealistas que precisam analisar grandes volumes de transações históricas sem que o sistema desktop congele durante o processamento de relatórios pesados.
flowchart LR
E1["Fase 1: CLI\nCálculos Estatísticos com List Comprehensions"] --> E2["Fase 2: POO + SQLite\nAgrupamentos SQL (GROUP BY, SUM, AVG)"]
E2 --> E3["Fase 3: Multithreading\nThread Worker + Queue para desacoplar a UI"]
E3 --> E4["Fase 4: CustomTkinter + Matplotlib\nGráficos Embutidos com Atualização em Tempo Real"]
AnaliseVendas, MetricasOperacionais) consumindo queries SQL otimizadas com índices e funções de agregação.threading e filas thread-safe (queue.Queue). As consultas demoradas rodam em threads trabalhadoras sem travar a interface visual.FigureCanvasTkAgg, com animação de carregamento e atualização dinâmica.Granjas avícolas, estufas agrícolas, laticínios e silos de secagem de grãos do interior que exigem monitoramento contínuo de temperatura, umidade e consumo elétrico de motores para evitar perdas milionárias de safra ou aves.
flowchart LR
E1["Fase 1: CLI\nSimulador de Sensores e Gravação em Log TXT"] --> E2["Fase 2: SQLite\nTabelas de Dispositivos e Séries Temporais (Time-Series)"]
E2 --> E3["Fase 3: NoSQL Híbrido\nAlertas Anômalos e Metadados Flexíveis de Sensores"]
E3 --> E4["Fase 4: Streamlit / Flet\nDashboard com Gauge Meters e Atualização por Polling"]
.csv.Sensor, LeituraTelemetria e DispositivoIoT. Banco SQLite otimizado para séries temporais com índices em timestamp e chaves estrangeiras para dispositivos.Lojas de materiais de construção, oficinas mecânicas e autopeças que necessitam de um sistema de Ponto de Venda (PDV) instalado localmente via instalador tradicional do Windows (.exe), operando 100% offline e com banco de dados embutido protegido.
flowchart LR
E1["Fase 1: CLI\nConfigurações em Arquivo .ini / .yaml"] --> E2["Fase 2: POO\nSingleton para Configuração e Logging Rotativo"]
E2 --> E3["Fase 3: PyInstaller Spec\nConfiguração de Assets, Ícones e SQLite Embutido"]
E3 --> E4["Fase 4: Inno Setup (.exe)\nInstalador com Assistente de Instalação no Windows"]
.ini e .yaml para desacoplar caminhos e parâmetros operacionais do código-fonte.logging.handlers.RotatingFileHandler) gravando eventos e erros em disco..spec do PyInstaller, incluindo assets visuais (ícones .ico, imagens), dependências dinâmicas do Tkinter e banco SQLite inicial.Para orientar a correção e a autoavaliação dos estudantes em seus Projetos Integradores Universitários, cada entrega deve respeitar os seguintes critérios:
pie title Distribuição de Pesos na Avaliação Acadêmica
"Arquitetura e Qualidade do Código (PEP 8, Type Hints, POO)" : 30
"Persistência e Modelagem de Dados (SQL + NoSQL)" : 25
"Concorrência, Funcionalidade e Testes" : 20
"Interface do Usuário e Usabilidade (UI/UX)" : 15
"Documentação de Engenharia e Apresentação" : 10
try...except FileNotFoundError, erros de parsing).@dataclass e anotações estritas de tipo (PEP 484/585).?) prevenindo SQL Injection.commit/rollback).| ⬅️ Voltar aos Projetos Práticos | 📊 Ver Relatório Técnico de Complexidade | 📚 Voltar ao Módulo Sistemas com Python | 🏠 Página Inicial do Portal |