Partilhar: WhatsApp
aulify · Sebenta
UC · Unidade de Competência · UC02837

Projectos de programação

Sebenta · Metodologia, Git, qualidade, PAP
50h · 4.5 pontos crédito Curso: T. Desenv. Software ↗ Referencial oficial SNQ
Índice

Apresentação

UC02837 (50h · 4,5 pts) é a UC capstone do curso TDS. Não introduz uma tecnologia nova: ensina a conduzir um projecto de software completo — do levantamento à entrega — integrando tudo o que foi aprendido. É o ensaio directo da PAP (Prova de Aptidão Profissional).

Ciclo de vida do software

Fases

  1. Levantamento de requisitos — perceber o problema e o que o sistema tem de fazer.
  2. Análise e desenho — modelo de dados, arquitectura, fluxos.
  3. Planeamento — tarefas, estimativas, cronograma.
  4. Implementação — escrever código em iterações.
  5. Testes — unitários, integração, aceitação.
  6. Entrega / deploy — pôr em produção.
  7. Manutenção — correcções, melhorias, evolução.

Os modelos ágeis percorrem estas fases em ciclos curtos repetidos, não uma só vez de forma linear.

Requisitos

Funcionais — o que o sistema faz:

"O utilizador pode criar uma conta com email e senha." "O administrador pode exportar relatórios em CSV."

Não-funcionais — qualidades do sistema:

"Páginas carregam em menos de 2 segundos." "O sistema suporta 500 utilizadores simultâneos." "Os dados pessoais são encriptados (RGPD)."

User stories — formato centrado no utilizador:

Como [papel], quero [objectivo] para [benefício]. "Como aluno, quero ver as minhas notas para acompanhar o meu progresso."

Critérios de aceitação — quando a story está "pronta":

Dado que estou autenticado, quando abro /notas, então vejo a lista das minhas notas ordenadas por data.

Estimativa e planeamento

Metodologias

Cascata (Waterfall)

Fases sequenciais: requisitos → desenho → implementação → testes → entrega. Cada fase termina antes da seguinte começar.

Adequado a projectos com requisitos muito bem definidos e estáveis (raro em software moderno).

Ágil

Filosofia (Manifesto Ágil): indivíduos e interacções, software funcional, colaboração com o cliente, resposta à mudança.

Iterações curtas, entrega incremental, feedback contínuo. Domina a indústria em 2026.

Scrum

Framework ágil mais usado.

Kanban

Fluxo contínuo visualizado num quadro:

To Do   In Progress  Review  Done

Para projectos individuais (como a PAP), um Kanban simples é frequentemente suficiente.

Controlo de versões com Git

Porquê

Para a PAP, Git serve também de prova de processo — o histórico mostra a evolução do trabalho ao longo do tempo (não tudo no último dia).

Comandos essenciais

git init                       # criar repositório
git clone <url>                # copiar repositório remoto
git status                     # estado actual
git add ficheiro.py            # preparar (stage)
git add .                      # preparar tudo
git commit -m "feat: login"    # gravar snapshot
git push origin main           # enviar para o remoto
git pull                       # trazer alterações
git log --oneline              # histórico resumido
git diff                       # ver alterações

Branches e Pull Requests

git checkout -b feature/carrinho   # criar e mudar de branch
# ... trabalhar, commitar ...
git push -u origin feature/carrinho
# No GitHub/GitLab: abrir Pull Request → revisão → merge
git checkout main
git pull

Modelo simples (GitHub Flow): - main está sempre funcional. - Cada funcionalidade numa feature/.... - Pull Request com revisão antes de juntar a main.

Conventional commits

Mensagens padronizadas e legíveis:

feat: adiciona autenticação por email
fix: corrige cálculo do total do carrinho
docs: actualiza README com instruções de deploy
refactor: extrai lógica de pagamento para serviço
test: adiciona testes ao módulo de utilizadores
chore: actualiza dependências

Verbo no imperativo, presente, curto. Explica o quê no título; o porquê no corpo se necessário.

.gitignore

Nunca versionar:

venv/
__pycache__/
node_modules/
.env
*.sqlite3
.DS_Store
dist/
build/

Secrets (.env) nunca no Git. Se acontecer: revogar credenciais e limpar histórico (BFG / git filter-repo).

Qualidade

Testes

Para a PAP, ter testes — mesmo que poucos — demonstra maturidade e cobre os pontos críticos.

Integração Contínua (CI)

Testes correm automaticamente a cada push.

# .github/workflows/ci.yml (resumo)
name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
      - run: pip install -r requirements.txt
      - run: pytest

Build falhado → não fazer merge. Garante que main está sempre funcional.

Qualidade de código

Segurança (recap)

Documentação do projecto

README

Primeiro contacto com o projecto. Deve responder rápido:

  1. O que é e para que serve.
  2. Tecnologias usadas.
  3. Como instalar e correr localmente.
  4. Como correr os testes.
  5. Estrutura do projecto.
  6. Autor, licença.

Documentação técnica

A Prova de Aptidão Profissional (PAP)

O que é

Projecto transversal e individual, parte integrante e obrigatória dos cursos profissionais (Portaria 235-A/2018). O aluno concebe, realiza e defende um projecto que demonstra as competências do curso, perante um júri.

Componentes: - Projecto — software funcional. - Relatório escrito. - Defesa oral perante o júri.

Escolher o tema

Características de um bom tema: - Problema real e concreto. - Âmbito adequado — exequível no tempo disponível (nem trivial nem impossível). - Integra várias competências do curso. - Demonstrável ao vivo. - Motivação genuína do aluno (vai trabalhar nisto muitos meses).

Exemplos: sistema de gestão para um negócio local, plataforma de apoio ao estudo, app móvel útil, ferramenta de automatização.

O relatório

Estrutura típica:

  1. Introdução — contexto, motivação, objectivos.
  2. Análise de requisitos — funcionais e não-funcionais.
  3. Tecnologias e arquitectura — escolhas e justificação.
  4. Desenvolvimento — implementação, decisões, dificuldades e como foram resolvidas.
  5. Testes — estratégia e resultados.
  6. Conclusões — objectivos atingidos, limitações, trabalho futuro.
  7. Bibliografia e anexos.

Escrita técnica clara, português cuidado, diagramas e capturas, referências às UCs aplicadas.

A defesa oral

Gestão do tempo da PAP

Um projecto acabado e modesto vale muito mais do que um ambicioso por terminar.

Integração das competências

A PAP/projecto final aplica, na prática, todas as UCs do curso:

Competência UC de origem
Lógica e algoritmia UC00245
Programação estruturada e OO UC00606, UC00607, UC00608
Modelo e SQL UC00602, UC02830
BD ↔ aplicação UC02831
Frontend web UC02833
Backend web UC02834
Aplicações móveis UC02835
CMS UC02832
Segurança UC02836, UC00613
Redes e protocolos UC00241, UC02817
Documentação técnica UC02823
Gestão de projecto UC02837 (esta)

Apêndices

A · Checklist de projecto

B · Glossário

Backlog. Lista priorizada de trabalho. CI. Integração Contínua. MVP. Minimum Viable Product. PAP. Prova de Aptidão Profissional. Pull Request. Pedido de revisão/merge de uma branch. Scrum / Kanban. Frameworks ágeis. Sprint. Iteração de tempo fixo (Scrum). User story. Requisito no formato "como… quero… para…".

C · Recursos