Engenharia De Software III - Aula 04
Diagramas de Caso de Uso na UML
Introdução e Conceitos Fundamentais
O Diagrama de Casos de Uso representa um dos artefatos essenciais da Unified Modeling Language (UML), estabelecendo-se como uma ferramenta primária na comunicação entre analistas e stakeholders. Este diagrama permite a visualização das funcionalidades do sistema a partir da perspectiva do usuário, constituindo uma representação gráfica dos requisitos funcionais que o sistema deve atender.
“O Diagrama de Casos de Uso tem o objetivo de auxiliar a comunicação entre os analistas e o cliente, descrevendo cenários que mostram as funcionalidades do sistema do ponto de vista do usuário.”
Elementos Estruturais do Diagrama
Atores
Um ator representa uma entidade externa que interage com o sistema, podendo ser:
- Usuário humano
- Sistema computacional externo
- Hardware específico
Os atores são representados graficamente por um boneco estilizado acompanhado por um rótulo que identifica sua função ou papel no contexto do sistema.
Tipos de Atores
- Atores Convencionais: Interagem diretamente com o sistema através de suas interfaces.
- Business Actors: Participam do processo de negócio, mas não interagem diretamente com o sistema automatizado. Representam pessoas ou entidades externas que fornecem informações ou recebem resultados do sistema sem manipulá-lo diretamente.
Casos de Uso
Um caso de uso é uma funcionalidade completa oferecida pelo sistema, representada graficamente por uma elipse contendo um rótulo descritivo. Cada caso de uso define uma unidade coerente de funcionalidade que proporciona valor ao usuário.
Tipos de Casos de Uso
- Casos de Uso Convencionais: Representam funcionalidades automatizadas do sistema.
- Business Use Cases: Representam processos de negócio que ocorrem de forma manual ou não automatizada, mas que fazem parte do fluxo completo da operação. São representados por elipses com uma notação visual distinta (geralmente em amarelo claro).
Relacionamentos entre Elementos
Associações Ator-Caso de Uso
A associação representa uma interação comunicativa entre um ator e um caso de uso, indicada por uma linha contínua. Esta associação define uma funcionalidade do sistema do ponto de vista do usuário.
Relacionamentos entre Atores
Generalização: Representada por uma linha com uma seta triangular apontando para o ator generalizado (superclasse). Indica que o ator especializado (subclasse) herda todos os casos de uso do ator generalizado, além de possuir seus próprios casos de uso específicos.
Relacionamentos entre Casos de Uso
Include
O relacionamento <<include>>
indica uma dependência obrigatória entre casos de uso, onde o caso de uso base incorpora o comportamento do caso de uso incluído como parte essencial de sua execução.
Características principais:
- Sempre será executado quando o caso de uso base for invocado
- A seta direcional parte do caso de uso base para o caso de uso incluído
- Pode ser interpretado como “is_part_of” (é parte de)
Extend
O relacionamento <<extend>>
representa uma variação opcional do caso de uso base, onde o caso de uso de extensão pode ser executado em determinadas condições.
Características principais:
- Executado opcionalmente, dependendo de condições específicas
- A seta direcional parte do caso de uso de extensão para o caso de uso base
- Requer a definição de pontos de extensão no caso de uso base
- A extensão é inserida em um ponto específico da execução do caso de uso base
Generalização
Similar à generalização entre atores, representa uma relação “é_um” entre casos de uso. O caso de uso especializado herda as características do caso de uso generalizado e pode adicionar comportamentos específicos.
Delimitação do Sistema
O diagrama de casos de uso frequentemente utiliza um retângulo para representar os limites do sistema, contendo todos os casos de uso internos. Os atores são posicionados externamente a este retângulo, destacando claramente o que está dentro e fora do escopo do sistema.
Package
Os packages podem ser utilizados para agrupar casos de uso relacionados, organizando-os em categorias lógicas e facilitando a compreensão de sistemas complexos.
Considerações Importantes
Pontos de Extensão: São localizações específicas dentro de um caso de uso onde o comportamento adicional pode ser inserido através de uma relação de extensão.
Diferenças entre Include e Extend:
- Include: Sempre executado, essencial para o funcionamento do caso de uso base.
- Extend: Opcionalmente executado, baseado em condições específicas.
Direção dos Relacionamentos:
- Include: A flecha sai do caso de uso “pai” para o caso de uso incluído.
- Extend: A flecha sai do caso opcional para o caso de uso “pai”.
Exemplo Prático
O exemplo apresentado na aula demonstra um sistema de gestão médica, destacando diversos elementos:
- Atores: Usuário (como generalização), Operador, Administrador e Paciente
- Casos de Uso: Incluir, Consultar, Alterar, Excluir, Procedimento, Medicamento, Efetuar Pagamento, Recibo
- Relacionamentos:
- Include entre Consultar e Procedimento
- Extend entre Procedimento e Alterar
- Include entre Efetuar Pagamento e Medicamento
- Business Use Case: Recibo (processo manual de entrega)
Nota de Estudo: Os diagramas de caso de uso são excelentes para a fase inicial de levantamento de requisitos e comunicação com stakeholders. No entanto, para representar detalhes comportamentais, sequências de ações e lógica interna, é recomendável complementá-los com diagramas de sequência, atividade ou estado.
A Segunda parte da aula foi focada em Diagramas Sequênciais. Para isto, realizei uma anotação específica para esta matéria, tendo em vista que, na hora, estava trabalhando em outras questões referentes ao diagrama de caso de uso. Ver: Diagrama de Sequência - Preparação para aula