# Diagrama de caso de uso

O diagrama de caso de uso descreve a funcionalidade proposta para um novo sistema que será projetado, é uma excelente ferramenta para o levantamento dos requisitos funcionais do sistema. Segundo Ivar Jacobson, podemos dizer que um caso de uso é um "documento narrativo que descreve a sequência de eventos de um ator que usa um sistema para completar um processo". Um caso de uso representa uma unidade discreta da interação entre um ator (humano, dispositivo ou outro software) e o sistema. Um caso de uso é uma unidade de um trabalho significante. Por exemplo: o "login para o sistema", "registrar no sistema" e "criar pedidos" são todos casos de uso. Cada caso de uso tem uma descrição da funcionalidade que será construída no sistema proposto. Um caso de uso pode "incluir" outra funcionalidade de caso de uso ou "estender" outro caso de uso com seu próprio comportamento.
Casos de uso são tipicamente relacionados a "atores". Um ator é um humano ou entidade máquina que interage com o sistema para executar um significante trabalho.

## Componentes do diagrama de Caso de Uso
### Ator

O ator especifica um papel executado por um usuário ou outro sistema que interage com o assunto (sistema). O Ator deve ser externo ao sistema. Um ator deve ter associações exclusivamente para casos de uso, componentes ou classes a exceção que um ator possa herdar o papel de outro. Um ator é representado por um boneco palito (stick man).

### Caso de uso

É uma especificação de um conjunto de ações executadas por um sistema, que contém um resultado observável. Caso de uso é representado por uma elipse, com o nome do caso de uso dentro ou abaixo. Se há limites do sistema no diagrama, o caso de uso deve ficar dentro.

## Relação entre componentes

Interações entre atores não são mostradas no diagrama de caso de uso. Se esta interação é essencial para uma descrição coerente do comportamento desejado, talvez o limite do sistema ou caso de uso deva ser re-examinado. Alternativamente, interação entre atores pode fazer parte de suposições dos sistemas.

### Generalização de atores

Uma popular relação entre atores é a generalização/especialização. Isto é útil para definir sobreposição de papéis entre atores. A notação é uma linha sólida com um triângulo em direção ao ator mais geral.

### Relações entre casos de usos
#### Include

Uma das formas de interação, um dado caso de uso pode incluir outro. Incluir é uma relação direta entre dois casos de usos, implicando que o comportamento do caso de uso incluído é inserido no comportamento do caso de uso inclusor. Esta relação indica uma obrigatoriedade do caso de uso incluir a funcionalidade do caso de uso incluído. Assim, sempre que o primeiro ocorrer obrigatoriamente o incluído ocorrerá.
Ex: Caso de Uso:
ALTERAR DADOS DO CLIENTE e INCLUIR CLIENTE, obrigatoriamente será necessário CONSULTAR DADOS DO CLIENTE.
A seta pontilhada escrita <<include>> partirá de ALTERAR DADOS DO CLIENTE e de INCLUIR CLIENTE e apontará para CONSULTAR DADOS DO CLIENTE.
A notação é uma seta pontilhada para o caso de uso incluído com o estereótipo <<include>>.

#### "Extend"

Outra forma de interação, um caso de uso pode estender outro. Esta relação indica que o comportamento do caso de uso extensor pode ser ou não inserido no caso de uso estendido. Notas ou restrições podem ser associadas ao relacionamento para ilustrar as condições em que este comportamento será executado.
A notação é uma seta pontilhada da extensão (caso de uso extensor) para o caso de uso estendido com a etiqueta <<extend>>.

### Exemplo de um Diagrama de Caso de Uso

O diagrama de casos de uso corresponde a uma visão externa do sistema e representa graficamente os atores, os casos de uso, e os relacionamentos entre estes elementos. Ele tem como objetivo ilustrar em um nível alto de abstração quais elementos externos interagem com que funcionalidades do sistema, ou seja, a finalidade de um diagrama de caso de uso é apresentar um tipo de diagrama de contexto que apresenta os elementos externos de um sistema e as maneiras segundo as quais eles as utilizam.
A notação utilizada para ilustrar atores em um diagrama de caso de uso é a figura de um boneco, com o nome do ator definido abaixo dessa figura. Vale ressaltar que um ator nem sempre é um ser humano. É qualquer elemento externo que interage com o sistema (pessoas, organizações, outros sistemas, equipamentos).
Para representar casos de uso, utilizamos uma elipse, com o nome do caso de uso dentro da elipse, ou abaixo dela.
Um relacionamento de comunicação é representado por um segmento de reta ligando ator e caso de uso, sendo que um ator pode estar relacionado a vários casos de uso em um mesmo diagrama.