🎯 ATIVIDADE 01: ESCOPO E PERSONAS

📖 Fundamentação Teórica

Para realizar este laboratório com sucesso, certifique-se de ter compreendido os conceitos apresentados no:
👉 CAPÍTULO 01: INTRODUÇÃO E NATUREZA DO SOFTWARE

Bem-vindo a mais uma etapa da sua jornada no curso de Gestão de TI / Desenvolvimento de Sistemas. Hoje vamos mergulhar em conceitos que conectam a teoria técnica diretamente com o padrão de excelência da indústria, definindo as bases de um projeto real de Engenharia de Software. 🛡️🧩


🎯 Objetivos de Aprendizagem do Laboratório

Ao final deste laboratório prático (estimativa: 4 horas presenciais / autoguiadas), você será capaz de:

  • Definir um Escopo claro de projeto, diferenciando o que o sistema fará (In) do que não fará (Out).
  • Criar Personas que representem usuários reais, mapeando suas dores e necessidades.
  • Documentar a ideia central de um software profissional de ponta a ponta.

🏢 O Cenário Prático (Seu Desafio)

Imagine que você é o Líder de Produto (Product Owner) da TecProExpress. A diretoria identificou que os motoristas terceirizados estão com dificuldades para encontrar as entregas do dia, e o SAC está lotado de clientes perguntando "Onde está meu pacote?". O desafio desta semana é:

"Você precisa documentar a proposta de um novo App de Rastreamento. Sua primeira missão é definir o Escopo do projeto (para não estourar o orçamento da empresa) e descrever exatamente quem são as Personas (O Motorista e O Cliente) que vão usar a ferramenta."


🧠 Fundamentos: A Teoria Traduzida

Na Engenharia de Software, não saímos programando no primeiro dia. Precisamos alinhar as expectativas com os stakeholders (pessoas interessadas).

Escopo e Personas

  • Escopo (Scope): É o limite do projeto. Se o cliente pede um carro, o escopo é o carro; um avião está fora do escopo.
  • Persona: É uma representação semi-fictícia do seu cliente ideal baseada em dados reais e suposições educadas. Ela tem nome, dores e objetivos.

📊 Visualizando a Lógica

Dica

Em projetos ágeis, um escopo mal definido leva ao "Scope Creep" (quando o projeto cresce descontroladamente e nunca termina). Delimite desde o dia 1!

```mermaid flowchart TD A[Dor do Cliente] --> B{Análise de Escopo} B -->|"Dentro (In)"| C[Desenvolver Funcionalidade] B -->|"Fora (Out)"| D[Registrar para o Futuro] ```

📖 Exemplo Guiado

Abaixo, veja como aplicar a teoria passo a passo no cenário da TecProExpress.

PassoAção de EngenhariaResultado Esperado
01Definir o ProblemaMotoristas e Clientes perdidos sem saber onde está o pacote.
02Mapear Escopo In/OutO que o App fará e o que ele vai deixar de fora.
03Criar PersonaFicha técnica do usuário alvo.

📊 Delimitação Visual do MVP (Escopo In/Out)

flowchart TD
    subgraph IN [Escopo Ativo - MVP]
        direction TB
        F1["Chave de Ignição: Login Seguro"]
        F2["Painel do Motorista: Lista de Entregas"]
        F3["Status da Carga (Pendente / Trânsito / Entregue)"]
    end
    subgraph OUT [Escopo Futuro - Fora]
        direction TB
        NF1["Gestão Financeira & Comissões"]
        NF2["Algoritmo Avançado de Inteligência Artificial para Rotas"]
    end
    IN -.-> OUT
    style IN fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
    style OUT fill:#ffebee,stroke:#c62828,stroke-width:2px

🛠️ Exemplo de Documentação

# Projeto: Rastreio Express

**Escopo (In):**
- Login do Motorista.
- Atualização de status da entrega (Pendente, Em Trânsito, Entregue).

**Escopo (Out):**
- Pagamento de comissão do motorista (Fora do escopo atual).

**Persona:**
*Nome:* Roberto "Beto", 45 anos.
*Ocupação:* Motorista Terceirizado.
*Dor:* "O aplicativo antigo trava muito e eu perco tempo ligando pro cliente."
*Objetivo:* Um botão gigante de "Cheguei no local".

🔍 Detalhamento da Documentação:

  • Escopo (In): É o MVP (Mínimo Produto Viável).
  • Escopo (Out): Protege a equipe de desenvolvimento contra pedidos abusivos que atrasam a entrega.
  • Persona: Vai muito além de "homens de 40 a 50 anos". O Beto tem uma Dor e a nossa interface tem que curar essa dor.

🛠️ Prática Obrigatória 1: Definição do Escopo

Cenário: O projeto semestral que você vai desenvolver. Você pode escolher um sistema de Delivery, Gestão Escolar, PetShop ou criar o seu próprio.

  1. Dê um Título para o seu sistema.
  2. Escreva 1 parágrafo descrevendo "O Problema" que ele resolve.
  3. Liste 3 funcionalidades que estão Dentro (In) do escopo.
  4. Liste 2 funcionalidades que estão Fora (Out) do escopo.

🏁 Resultado Esperado (Para sua Referência)

Você deverá gerar um documento (Markdown ou PDF) contendo essas definições claras, sem jargões excessivos, provando que você sabe limitar o tamanho do seu projeto.


💻 Validação Prática & Resultado Esperado no Terminal

Para apoiar a análise automatizada do seu escopo, utilize o script de validação de requisitos e personas em Python:

# validar_escopo.py
import json

projeto = {
    "nome": "TecProExpress - App de Rastreamento",
    "mvp_in": ["Autenticação de Motorista", "Lista de Entregas do Dia", "Atualização de Status"],
    "mvp_out": ["Módulo Financeiro de Comissões", "Algoritmo de Roteirização por IA"],
    "personas": [
        {"nome": "Roberto 'Beto'", "papel": "Motorista Terceirizado", "dor": "App antigo trava e exige ligações"},
        {"nome": "Mariana Lima", "papel": "Cliente Destinatária", "dor": "Incerteza sobre horário de entrega"}
    ]
}

print("=" * 60)
print(f"🚀 VALIDADOR DE ESCOPO: {projeto['nome']}")
print("=" * 60)
print(f"✅ Itens no Escopo (IN): {len(projeto['mvp_in'])} funcionalidades")
for item in projeto["mvp_in"]:
    print(f"   • [IN]  {item}")

print(f"\n⛔ Itens Fora do Escopo (OUT): {len(projeto['mvp_out'])} funcionalidades")
for item in projeto["mvp_out"]:
    print(f"   • [OUT] {item}")

print(f"\n👥 Personas Mapeadas: {len(projeto['personas'])}")
for p in projeto["personas"]:
    print(f"   • {p['nome']} ({p['papel']}) -> Dor: \"{p['dor']}\"")
print("=" * 60)

🖥️ Saída Esperada no Terminal:

============================================================
🚀 VALIDADOR DE ESCOPO: TecProExpress - App de Rastreamento
============================================================
✅ Itens no Escopo (IN): 3 funcionalidades
   • [IN]  Autenticação de Motorista
   • [IN]  Lista de Entregas do Dia
   • [IN]  Atualização de Status

⛔ Itens Fora do Escopo (OUT): 2 funcionalidades
   • [OUT] Módulo Financeiro de Comissões
   • [OUT] Algoritmo de Roteirização por IA

👥 Personas Mapeadas: 2
   • Roberto 'Beto' (Motorista Terceirizado) -> Dor: "App antigo trava e exige ligações"
   • Mariana Lima (Cliente Destinatária) -> Dor: "Incerteza sobre horário de entrega"
============================================================

🌐 Exemplo de Payload JSON para Cadastro de Personas (Swagger /docs)

{
  "nome": "Roberto 'Beto'",
  "idade": 45,
  "ocupacao": "Motorista Terceirizado",
  "dores": [
    "Aplicativo antigo trava com frequência",
    "Perda de tempo ligando para o cliente para confirmar endereço"
  ],
  "objetivos": [
    "Confirmar entrega com apenas 1 toque na tela",
    "Visualizar rota consolidada do dia"
  ]
}

📤 Instruções de Entrega (Microsoft Teams)

Após validar as suas definições de engenharia:

  1. Salve o arquivo de documentação com o nome Atividade_01.md na pasta es-atv-01-escopo/ do seu repositório GitHub.
  2. Certifique-se de fazer o commit e push para o repositório público.
  3. Submeta o link do seu repositório no Microsoft Teams para avaliação do professor.

💡 Checkpoint de Lógica

Importante

Reflexão Profissional: Por que é tão difícil dizer "Não" para o cliente na fase de escopo? (Resposta: Porque queremos agradar, mas como engenheiros, nossa função é garantir a entrega. Cada "Sim" para uma ideia fora do escopo aumenta o risco de falha do projeto inteiro). 🧠🛡️

---

🔥 Desafio de Fixação (Opcional)

Nível: Expert 🏆

Se você terminou rápido, expanda o seu escopo criando a "Matriz de Priorização (MoSCoW)":

  • Must have (Deve ter)
  • Should have (Deveria ter)
  • Could have (Poderia ter)
  • Won't have (Não vai ter nesta versão)

Classifique as funcionalidades do seu projeto nessas 4 categorias e anexe ao documento final.


📊 Rubrica Formativa de Avaliação

Critério de Avaliação Insuficiente (0% - 40%) Regular (41% - 70%) Excelente (71% - 100%)
Delimitação de Escopo (In/Out) Não delimita o escopo ou confunde funcionalidades internas com externas. Define In/Out mas sem justificativas claras ou com itens ambíguos. Mapeia perfeitamente os limites do software com ao menos 3 itens In e 2 Out detalhados.
Mapeamento de Personas Personas genéricas ou incompletas, sem dores e objetivos. Cria 2 personas mas com perfil superficial. Personas ricas com nome, idade, ocupação, dores e objetivos realistas de mercado.
Entrega no GitHub Entrega fora do prazo, em pasta incorreta ou repositório privado. Entregue no repositório mas sem a estrutura Markdown adequada. Arquivo `Atividade_01.md` publicado em `es-atv-01-escopo/` com Markdown impecável.