Diagramas de Casos de Uso (Use Cases)
1. Introdução aos Diagramas de Casos de Uso
Os casos de uso (Use Cases) são uma técnica fundamental para modelar requisitos funcionais de um sistema. Representam as interações entre atores externos e o sistema, ajudando a definir o comportamento esperado do sistema sob diferentes cenários.
- Objetivo:
Identificar e descrever as funcionalidades que o sistema deve fornecer, sempre do ponto de vista do utilizador. - Notação:
Diagramas UML que incluem atores, casos de uso, associações e possíveis relações como include, extend e generalizações.
2. Componentes Principais
- Ator:
- Representa entidades externas que interagem com o sistema (pessoas, outros sistemas, dispositivos).
- Exemplos: Cliente, Funcionário, Sistema Externo.
- Caso de Uso:
- Descreve uma funcionalidade ou serviço fornecido pelo sistema.
- Exemplos: "Levantar Dinheiro", "Pagar Serviço".
- Associação:
- Define a comunicação entre o ator e o sistema. Pode ser unidirecional ou bidirecional.
- Sistema:
- Define os limites da aplicação, indicando o que está dentro e fora do escopo.
3. Tipos de Fluxos em Casos de Uso
- Fluxo Normal:
- Sequência padrão de interações que levam à conclusão bem-sucedida do caso de uso.
- Exemplo: O cliente apresenta o cartão, insere o PIN, seleciona a quantia e retira o dinheiro.
- Fluxo Alternativo:
- Variantes do fluxo principal que dependem de condições específicas.
- Exemplo: O cliente escolhe receber um talão ao retirar o dinheiro.
- Fluxo de Exceção:
- Descreve situações onde o caso de uso não pode ser completado.
- Exemplo: PIN incorreto ou saldo insuficiente.
4. Relações Entre Casos de Uso
- Include:
- Representa a reutilização de um comportamento comum entre diferentes casos de uso.
- Exemplo: O caso de uso "Autenticar Cliente" é incluído em "Levantar Dinheiro" e "Pagar Serviço".
- Extend:
- Adiciona comportamento condicional a um caso de uso base.
- Exemplo: "Premiar Cliente" estende "Levantar Dinheiro" se o cliente for premium e a máquina tiver papel.
- Generalização/Especialização:
- Relaciona casos de uso ou atores em hierarquias, onde subtipos herdam o comportamento do tipo base.
- Exemplo: "Autenticar com PIN" e "Autenticar com Reconhecimento Facial" especializam "Autenticar Cliente".
5. Estruturação e Modelagem
- Dependências:
Incluem relações como include e extend, além de generalizações para organizar os casos de uso. - Pré-condições e Pós-condições:
- Definem o estado necessário antes do início do caso de uso e o estado esperado após a sua execução.
- Exemplo:
- Pré-condição: Cliente autenticado.
- Pós-condição: Saldo atualizado e dinheiro entregue ao cliente.
6. Vantagens dos Casos de Uso
- Comunicação Clara:
Facilita o diálogo entre a equipa de desenvolvimento e os clientes. - Centralidade no Processo:
Os casos de uso guiam o desenvolvimento, desde a conceção da arquitetura até aos testes e documentação. - Flexibilidade:
Permitem incorporar alterações nos requisitos ao longo do ciclo de vida do projeto.
7. Exemplos de Casos de Uso
- Levantar Dinheiro:
- Fluxo Normal: O cliente apresenta o cartão, insere o PIN, seleciona a quantia e retira o dinheiro.
- Fluxo Alternativo: Cliente opta por receber talão.
- Fluxo de Exceção: PIN inválido ou reconhecimento facial falhado.
- Pagar Serviço:
- Semelhante a "Levantar Dinheiro", com a diferença de que o cliente especifica o serviço a pagar.
- Premiar Cliente:
- Estende "Levantar Dinheiro", emitindo um talão de prémio caso o cliente seja premium.
8. Considerações e Boas Práticas
- Evitar Complexidade Excessiva:
O uso de include e extend deve ser moderado para evitar confusões. - Modelos Refináveis:
Casos de uso devem ser ajustados iterativamente, alinhando-se às mudanças nos requisitos. - Foco na Compreensão:
Diagramas e descrições devem ser simples e acessíveis, evitando detalhes técnicos da interface.
9. Cenários Realistas
- Diretor de Curso: Configuração e alocação manual de horários, respeitando preferências de UC e conflitos de horários.
- Aluno: Consultar e exportar o horário gerado pelo sistema.