UML: Diagrama de Casos de Uso
Introdução
Olá a todos, dando continuidade sobre o assunto de UML, vou falar um pouco sobre um dos principais diagramas desse padrão. O diagrama de Caso de Uso.
Este é geralmente o primeiro diagrama a ser desenvolvido. É com ele que os primeiros requisitos e comportamentos são pensados.
Se você caiu neste artigo e não sabe exatamente o que é UML, sugiro este artigo que escrevi aqui no tabnews: UML: Uma Apresentação.
Objetivo
O primeiro objetivo dele é mapear de forma muito macro os requisitos e necessidades do cliente. Com ele não é possível mapear todos, e nem é a função dele, mas é a primeira etapa de mapeamento.
Com ele também é feita uma discussão entre o problema que o sistema solucionará e o que o cliente acha/espera. De novo, este é o primeiro passo para alinhar também as expectativas com os clientes e a equipe de desenvolvimento. Mesmo assim, não quer dizer que não haverá percalços.
Artefatos
Não vou entrar em detalhes minuciosos sobre todos os artefatos do diagrama. Pretendo fazer isso em outros momentos. De qualquer forma, segue os principais:
Atores
Os atores são papeis desempenhados pelos usuários da aplicação. Representa exatamente quem está interagindo com uma funcionalidade do sistema.
Aqui vale dizer que os atores não são necessariamente humanos. Tudo externo que interage com o sistema a ser desenvolvido, pode ser considerado um ator. Um exemplo disso pode ser um aluno de faculdade entrando no sistema, quanto um sistema externo que guarda o conteúdo das aulas.
Os atores são representados como bonecos palitinhos como é apresentado na imagem abaixo:
No exemplo temos três atores, dois (Aluno e Admin) são pessoas mesmo usando e interagindo com um ou mais casos de uso. Além disso, estes dois atores podem ser até a mesma pessoa em momentos diferentes. O terceiro ator é um outro sistema externo responsável por outra coisa, de qualquer forma ele interage com o sistema em questão.
Casos de Uso
Nesta seção eu vou falar no core do diagrama, da parte central. Os casos de uso referem-se a tudo com que, de alguma maneira (que por enquanto não importa como), os atores vão interagir. Muitas vezes no dia a dia do desenvolvimento podemos associar estes casos de uso a funcionalidades inteiras do nosso sistema, mas podemos também dissecar um pouco e até fazer casos de uso de outros casos de uso.
A representação de um caso de uso é um eclipse com uma breve descrição do objetivo da funcionalidade:
Repare que temos dois casos de uso que facilmente representam funcionalidades por si só:
- Acessa Atividade: que de alguma forma é para recuperar os dados de atividade, seja lá onde quer que esteja;
- Completa Atividade: de alguma forma registrar que o ator aluno já completou a atividade, seja ela qual for e onde esteja também;
Aqui não estamos preocupados em como fazer, isso é importante ter sempre em mente, e sim o que fazer.
O caso de uso "Administra Atividade" é um exemplo de caso de uso que pode facilmente ser especializado em outros, pois administrar uma atividade pode dar origem a outras funcionalidades para o nosso sistema. Como por exemplo:
- Lista Atividades
- Desativa Atividades
- Edita Atividades
Muito mais
Associações
As associações de caso de uso representam interações dos atores com os casos de uso. Temos diversos tipos de associações, e a mais comum de se usar é apenas uma linha reta. Falando de forma mais técnica representa uma interação de um ator com o caso de uso, assim como a resposta da interação:
Tomei a liberdade de pegar o diagrama feito do meu outro post. Neste caso temos a interação do ator Aluno
com os seguintes casos de uso: Acessa Atividade
e Completa Atividade
. Neste contexto temos a interação do aluno com as funcionalidades assim como sua resposta para o mesmo. Este tipo de funcionalidade é uma das mais comum que encontrarão.
Conclusão
Neste artigo foi introduzido tanto o diagrama de forma geral, quanto seus principais artefatos, atores, casos de uso e associações.
Falei de atores como agentes de interação com o sistema. Casos de uso como funcionalidades, podendo até sendo especificadas em outras funcionalidades. Associações como relacionamentos mesmo entre estes últimos artefatos.
Não entrei em muitos detalhes e nem apresentei muitos outros artefatos, mas o farei com o passar o tempo.