Os Diagramas de Casos de Uso fazem parte da família de diagramas comportamentais da UML.
Os casos de uso especificam o comportamento esperado (o quê), e não o método exato de fazer isso acontecer (como).
Um Diagrama de Casos de Uso descreve uma visão geral de alto nível do relacionamento entre casos de uso, atores e sistemas.
Um Diagrama de Casos de Uso pode resumir os detalhes de perfis de usuários do sistema (também conhecidos como atores) e suas interações com o sistema.
Um Diagrama de Casos de Uso eficaz pode ajudar sua equipe a discutir e representar:
Cenários e contextos em que seu sistema interage com pessoas, organizações ou sistemas externos;
Objetivos que seu sistema ajuda essas pessoas, organizações ou sistemas externos a alcançarem;
O escopo do seu sistema com seus requisitos funcionais.
Além disso, os Diagramas de Casos de Uso também podem ser usados para:
Validar uma arquitetura de sistemas;
Impulsionar a implementação ;
Gerar casos de teste;
Os Diagramas de Casos de Usos são ideais para definir e organizar os requisitos funcionais em um sistema.
Um Diagrama de Casos de Uso geralmente é simples e não mostra os detalhes dos casos de uso e não modela a ordem em que as etapas de uma funcionalidade são executadas.
Geralmente, os Diagramas de Casos de Usos são desenvolvidos por analistas em conjunto com especialistas do domínio.
Cada requisito funcional pode especificar uma ou mais funcionalidades do sistema, ou seja, um processo automatizado ou manual
Cada funcionalidade do sistema é mapeada para um caso de uso
Sintaxe: são nomeados por verbo/ação + substantivo (ou oração substantiva); e representados visualmente por uma forma oval.
Procure sempre adotar um padrão na hora de escrever os nomes de casos de uso, ex.: verbos no infinitivo.
Todo caso de uso deve estar relacionado, pelo menos, a um ator ou a outro caso de uso.
Exemplos de Caso de Uso para um App de Corridas:
Cadastrar usuário
Cadastrar informações de pagamento
Solicitar corrida
Aceitar corrida
Cancelar corrida
Ver histórico de corridas
É um papel que um perfil de usuário desempenha em relação ao sistema, ou seja, alguém que interage com o caso de uso
Um usuário pode desempenhar papéis diferentes
Os atores executam ou acionam os casos de uso
Todo ator deve executar pelo menos um caso de uso
Um único ator pode executar vários casos de uso
Um único caso de uso pode ter reciprocamente vários atores executando-o
Atores podem ser: humanos, outros sistemas, dispositivos externos, etc., ou seja, qualquer entidade que interaja com o sistema.
Sintaxe: são nomeados por substantivos e representados visualmente por uma "pessoa palito"
Atores tem responsabilidades em relação ao sistema (entradas) e expectativas em relação ao sistema (saídas).
Exemplos de Atores para um App de Corridas:
Usuário
Motorista
Suporte
Sistema
Operadora de cartão
Estereótipos são mecanismos de extensibilidade em UML que permitem estender o vocabulário da UML para criar novos elementos de modelo. Ao aplicar estereótipos apropriados em seu modelo, você pode tornar o modelo de especificação mais compreensível semanticamente.
Estereótipos são mecanismos opcionais de classificação para os elementos de um diagrama UML, podendo ser utilizados em qualquer diagrama da linguagem.
Estereótipos permitem o uso de uma terminologia ou notação específica de domínio
Existem estereótipos convencionalmente definidos pela comunidade para cada tipo de elemento UML
Indo mais a fundo na especificação UML, estereótipos são classes de perfil que definem como as metaclasses existentes podem ser estendidas como parte de um perfil
Sintaxe: uma palavra-chave mostrada antes ou acima do nome do elemento UML estereotipado e escrita entre «».
CRUD: criar, ler, atualizar e apagar dados <<CRUD>>
Relatório: apresentar ou emitir uma quantidade de dados que sejam relacionados entre si <<relatório>>
Processo de Negócio: representam processos do negócio, geralmente processos manuais, que não estão diretamente ligados ao sistema, mas que são utilizados de alguma forma por ele <<processo de negócio>>
Admin e owner: para atores que tem acesso administrativo ou de dono no sistema <<admin>> ou <<owner>>
Service: para atores que representam serviços externos ao sistema <<service>>
System: para atores que representam sistemas <<system>>
Caixas de sistema ou de limite do sistema ou de assunto do sistema são caixas que definem um escopo para os casos de uso.
Todos os casos de uso fora da caixa seriam considerados fora do escopo definido.
O escopo de um sistema é potencialmente todo o sistema, conforme definido no documento de requisitos.
Mas para sistemas grandes e complexos, cada módulo pode ser o limite do sistema. Ex.: em um sistema ERP para uma organização, cada um dos módulos, como pessoal, folha de pagamento, contabilidade, etc. podem formar um limite do sistema para casos de uso específicos para cada uma dessas funções de negócios.
Módulos podem representar mais de uma funcionalidade do sistema.
Sintaxe: representada por um retângulo com o nome do sistema ou módulo localizado no topo interno da forma. Este retângulo funciona como um container para os casos de uso do sistema / módulo.
Um elemento UML que permite colocar diferentes elementos da linguagem em grupos, podendo ser utilizados em diversos diagramas da linguagem, principalmente, nos diagramas estruturais.
Sintaxe: representada por uma pasta de arquivos com o nome do pacote localizado no topo interno da forma ou na sua aba. Esta pasta funciona como um container para os demais elementos do diagrama de casos de uso.
A associação é um link de comunicação entre Atores e Casos de Uso.
Representa a participação do ator no caso de uso, indicando que o ator e o caso de uso se comunicam por meio de mensagens.
Sintaxe: representada visualmente por uma reta sólida.
Representa a generalização/especialização de papéis entre atores, relacionamento “é um”
Como toda relação de herança, significa que atores especialistas ou sub-atores herdam propriedades e comportamento de um ator generalista ou super-ator e acrescentam seus próprios comportamentos e propriedades. Ou seja, todo sub-ator herda os casos de uso executados pelo super-ator e pode executar também seus casos de uso específicos.
Podem constituir uma grande hierarquia.
Não é recomendada a herança múltipla.
Sintaxe: representada visualmente por uma reta sólida com um triângulo na ponta do super-ator / ator generalista.
Representa a generalização/especialização de casos de uso, relacionamento “é um”
Como toda relação de herança, significa que casos de uso especialistas ou subcasos de uso herdam propriedades e comportamento de um caso de uso generalista ou supercaso de uso e acrescentam seus próprios comportamentos e propriedades. Ou seja, todo subcaso de uso herda os passos do supercaso de uso e pode adicionar também seus passos específicos.
Na prática este relacionamento é usado para mostrar formas diferentes de executar a mesma funcionalidade
Podem constituir uma grande hierarquia.
Não é recomendada a herança múltipla.
Sintaxe: representada visualmente por uma reta sólida com um triângulo na ponta do supercaso de uso/ caso de uso generalista.
Além da generalização, todo vínculo entre dois casos de uso é uma dependência.
Assim como a dependência entre requisitos, a dependência entre casos de uso indica que o caso de uso origem depende em algum nível do caso de uso destino.
A dependência não precisa ser explicitada sempre, sua representação no modelo é opcional e deve ser utilizada quando for agregar um valor semântico útil ao diagrama.
Sintaxe: representada visualmente por uma reta tracejada com uma ponta na entidade de destino.
É um tipo de relacionamento de dependência recorrente, de estereótipo tão popular, que tornou-se um relacionamento a parte
Pode ser visto como um remendo, um acréscimo, um patch do caso de uso de destino
Adiciona, a depender do contexto, um comportamento alternativo já esperado do caso de uso de origem ao caso de uso de destino
Sintaxe: representada visualmente por uma reta tracejada com uma ponta na entidade de destino e o estereótipo <<extend>>
Em algumas ferramentas, é possível adicionar o passo que leva ao extension point do caso de uso destino dentro do caso de uso.
É um tipo de relacionamento de dependência recorrente, de estereótipo tão popular, que tornou-se um relacionamento a parte
Sempre adiciona o comportamento do caso de uso de destino ao caso de uso de origem
Tem o reuso como principal objetivo - é útil quando há repetição de ações
Sintaxe: representada visualmente por uma reta tracejada com uma ponta na entidade de destino e o estereótipo <<include>>
Identificar e modelar os Atores do sistema
Perguntas que ajudam a identificar atores de um sistema:
Quem usa o sistema?
Quem instala o sistema?
Quem inicia o sistema?
Quem mantém o sistema?
Quem desliga o sistema?
Que outros sistemas usam este sistema?
Quem obtém informações deste sistema?
Quem fornece informações ao sistema?
Alguma coisa acontece automaticamente no momento?
Identificar e modelar os Casos de Uso do sistema
Identificar e modelar os relacionamentos entre atores e casos de uso
Verificar quais os tipos de relacionamentos que existem entre casos de uso e modelá-los: inclusão, extensão, generalização e dependências
Dividir os casos de uso em pacotes se houver necessidade
Lembre-se: Os diagramas de casos de uso devem começar simples e na visão mais alta possível. Só então eles podem ser refinados e detalhados ainda mais.
Embora um caso de uso em si possa se aprofundar em muitos detalhes sobre todas as possibilidades, um diagrama de casos de uso geralmente é usado para uma visão de nível superior do sistema.