Linguagem Unificada de Modelagem (UML)diagramas de casos de uso são ferramentas poderosas para modelar os requisitos funcionais de um sistema. Eles ilustram como os atores (usuários ou sistemas externos) interagem com o sistema por meio de casos de uso, que representam funcionalidades específicas. Duas relações-chave em diagramas de casos de uso—Include e Extend—ajudam a gerenciar a complexidade ao estruturar e modularizar o comportamento. Este tutorial oferece uma explicação detalhada dessas relações, seus propósitos, características e aplicações práticas, completo com exemplos para garantir clareza.
Em diagramas de casos de uso UML, Include e Extendrelações de Include e Extend permitem dividir casos de uso complexos em componentes menores, reutilizáveis ou opcionais. Essas relações aumentam a modularidade, reduzem a redundância e melhoram a clareza dos diagramas.

Relação Include (<<include>>): Representa um comportamento obrigatório que é sempre executado como parte de um caso de uso base. Ele extrai funcionalidades comuns compartilhadas por vários casos de uso em um componente reutilizável.
Relação Extend (<<extend>>): Representa um comportamento opcional ou condicional que estende um caso de uso base sob condições específicas, mantendo o caso de uso base focado em sua funcionalidade principal.
Ambas as relações usam setas tracejadas para conectar casos de uso, com rótulos indicando<<include>> ou <<extend>>. A direção da seta é crítica, pois reflete a dependência entre os casos de uso.
O IncluirO relacionamento é usado para extrair comportamentos comuns e obrigatórios de múltiplos casos de uso para um único caso de uso reutilizável. Isso promove a reutilização e simplifica os casos de uso base, evitando funcionalidades duplicadas.
Obrigatório: O caso de uso incluído é sempre executado quando o caso de uso base é realizado.
Reutilizável: O caso de uso incluído é uma função autônoma e coerente que pode ser utilizada por múltiplos casos de uso base.
Simplifica Diagramas: Ao extrair etapas comuns, o caso de uso base permanece conciso e focado.
Direção: A seta aponta do caso de uso base para o caso de uso incluído, indicando que o caso de uso base depende do incluído.
Uma seta tracejada rotulada<<incluir>> conecta o caso de uso base ao caso de uso incluído.
Considere um sistema de compras online onde um cliente podeColocar Pedido ou Cancelar Pedido. Ambos os casos de uso exigem que o clienteFaça Login no sistema.
Casos de Uso Base: Colocar Pedido, Cancelar Pedido
Caso de Uso Incluído: Entrar
Explicação: Entrar é uma etapa obrigatória tanto para fazer quanto para cancelar um pedido. Em vez de duplicar a funcionalidade de login em ambos os casos de uso, ela é extraída para um caso de uso separadoEntrar caso de uso, que é incluído por ambos.
Representação do Diagrama:
[Fazer Pedido] ----<<incluir>>----> [Entrar]
[Cancelar Pedido] ----<<incluir>>----> [Entrar]
Em um sistema de biblioteca, um usuário podePegar Livro ou Devolver Livro. Ambos os processos exigemVerificar Usuário.
Casos de Uso Básicos: Pegar Livro, Devolver Livro
Caso de Uso Incluído: Verificar Usuário
Explicação: Verificar a identidade do usuário (por exemplo, verificar seu cartão de biblioteca) é uma etapa obrigatória tanto ao pegar quanto ao devolver um livro. OVerificar Usuário o caso de uso é incluído para evitar redundância.
Representação do Diagrama:
[Pegar Livro] ----<<incluir>>----> [Verificar Usuário]
[Devolver Livro] ----<<incluir>>----> [Verificar Usuário]
Quando múltiplos casos de uso compartilham uma etapa comum e obrigatória.
Quando você deseja simplificar as descrições dos casos de uso ao extrair funcionalidades reutilizáveis.
Quando o caso de uso incluído é significativo por si só (por exemplo, Entrar ou Verificar Usuário pode ser entendido como funções independentes).
O ExtenderA relação de extensão é usada para modelar comportamentos opcionais ou condicionais que são executados apenas sob circunstâncias específicas. Permite que o caso de uso base permaneça focado em sua funcionalidade principal, ao mesmo tempo que adiciona comportamentos opcionais de forma modular.
Opcional/Condicional: O caso de uso de extensão é executado apenas se certas condições forem atendidas.
Dependente: O caso de uso de extensão não é significativo por si só e depende do caso de uso base.
Pontos de Extensão: O caso de uso base pode definir pontos específicos onde o comportamento de extensão pode ser inserido.
Direção: A seta aponta do caso de uso de extensão para o caso de uso base, indicando que o caso de uso de extensão adiciona comportamento ao base.
Uma seta tracejada rotulada <<extend>> conecta o caso de uso estendido ao caso de uso base, frequentemente com uma observação especificando a condição ou ponto de extensão.
Em um sistema de caixa eletrônico, o caso de uso base éSacar Dinheiro. Um comportamento opcional,Imprimir Comprovante, pode ocorrer se o usuário solicitar um comprovante.
Caso de Uso Base: Sacar Dinheiro
Caso de Uso Estendido: Imprimir Comprovante
Condição: O usuário escolhe imprimir um comprovante após sacar dinheiro.
Explicação: Imprimir um comprovante não é obrigatório e só ocorre se o usuário solicitá-lo explicitamente. OImprimir Comprovante caso de uso estendeSacar Dinheiro no ponto de extensão “Usuário solicita comprovante.”
Representação do Diagrama:
[Imprimir Comprovante] ----<<extend>>----> [Sacar Dinheiro]rn(Nota: Condição = Usuário solicita comprovante)
Em uma plataforma de curso online, um usuário podeResponder Questionário. Um comportamento opcional,Solicitar Dica, ocorre se o usuário tiver dificuldade com uma pergunta.
Caso de Uso Básico: Responder Questionário
Caso de Uso de Extensão: Solicitar Dica
Condição: O usuário solicita uma dica durante o questionário.
Explicação: Solicitar uma dica é opcional e depende da necessidade do usuário. O Solicitar Dica caso de uso estende Responder Questionário no ponto de extensão “Usuário precisa de ajuda.”
Representação do Diagrama:
[Solicitar Dica] ----<<extender>>----> [Responder Questionário]
(Nota: Condição = Usuário precisa de ajuda)
Quando o comportamento é opcional ou depende de condições específicas.
Quando você deseja manter o caso de uso básico focado em sua funcionalidade principal.
Quando o caso de uso de extensão não tem sentido sem o caso de uso básico (por exemplo, Imprimir Comprovante é irrelevante sem Sacar Dinheiro).
A tabela abaixo resume as diferenças entre Incluir e Estenderrelações para orientar seu uso:
|
Critérios |
Incluir (<<incluir>>) |
Estender (<<estender>>) |
|---|---|---|
|
O comportamento é obrigatório? |
Sim, sempre executado como parte do caso de uso base |
Não, executado apenas sob condições específicas |
|
O comportamento pode funcionar sozinho? |
Sim, é uma função coerente e reutilizável |
Não, depende do caso de uso base |
|
Ocorre em múltiplos casos de uso? |
Sim, compartilhado entre múltiplos casos de uso |
Normalmente específico a um único caso de uso |
|
Propósito |
Promover reutilização e simplificar o caso de uso base |
Adicionar comportamento opcional ou excepcional de forma modular |
|
Direção da seta |
Base → Caso de uso incluído |
Estendendo → Caso de uso base |
Vamos aplicar ambas as relações em um sistema de gestão de restaurante para ilustrar seu uso em um cenário do mundo real.
Um sistema de restaurante permite que os clientesPedir comida e Reservar Mesa. O sistema também gerencia comportamentos adicionais como Pagar Conta e Solicitar para Levar.
Pedir Comida: O cliente pede comida no menu.
Reservar Mesa: O cliente reserva uma mesa para jantar.
Autenticar Cliente: Verifica a identidade do cliente (por exemplo, por meio de uma conta de fidelidade).
Pagar Conta: O cliente paga pelo seu pedido (obrigatório para Pedir Comida).
Solicitar para Levar: Uma solicitação opcional para embalar o pedido para levar.
Incluir: Ambos Pedir Comida e Reservar Mesa exigem Autenticar Cliente para verificar a identidade do cliente. Pedir Comida também inclui Pagar Conta porque o pagamento é obrigatório após o pedido.
Estender: Pedir Comida pode ser estendido porSolicitar para Levar se o cliente optar por levar sua comida.
[Pedir Comida] ----<<incluir>>----> [Autenticar Cliente]
[Pedir Comida] ----<<incluir>>----> [Pagar Conta]
[Reservar Mesa] ----<<incluir>>----> [Autenticar Cliente]
[Solicitar para Levar] ----<<estender>>----> [Pedir Comida]
(Nota: Condição = Cliente solicita para levar)
Autenticar Cliente é incluído em ambosPedir Comida eReservar Mesa porque é uma etapa obrigatória para acessar o sistema.
Pagar Conta é incluído emPedir Comida porque o pagamento é necessário para concluir o pedido.
Solicitar para Levar estendePedir Comida porque é um comportamento opcional que ocorre apenas se o cliente solicitar para levar.
Use Incluir com Moderação: Apenas extraia comportamentos para um caso de uso incluído se ele for compartilhado por múltiplos casos de uso ou simplificar significativamente o caso de uso base. O uso excessivo de inclusões pode tornar os diagramas confusos.
Defina Pontos de Extensão Claros para Estender: Especifique as condições ou pontos no caso de uso base onde o comportamento de extensão se aplica para evitar ambiguidades.
Mantenha os Casos de Uso Focados: Certifique-se de que o caso de uso base permaneça simples e focado em seu objetivo principal, usando Incluir para etapas obrigatórias e Estender para os opcionais.
Valide a Reutilização para Incluir: O caso de uso incluído deve ser significativo e reutilizável em diferentes contextos.
Evite Complexificar Diagramas: Use Incluir e Estender apenas quando adicionarem clareza. Relações complexas podem confundir os interessados.
Confundir Incluir com Estender:
Armadilha: Usar Incluir para comportamento opcional ou Estender para comportamento obrigatório.
Solução: Verifique sempre se o comportamento é obrigatório (use Incluir) ou condicional (use Estender).
Sobreuso de Relacionamentos:
Armadilha: Criando muitos Incluir ou Estenderrelacionamentos, tornando o diagrama difícil de ler.
Solução: Use apenas esses relacionamentos quando eles reduzem a redundância ou melhoram a clareza.
Condições de Extensão Vagas:
Armadilha: Não especificar a condição para um Estenderrelacionamento, levando a confusão.
Solução: Sempre inclua uma nota ou descrição da condição ou ponto de extensão.
Incluindo Comportamento Não Reutilizável:
Armadilha: Criando um caso de uso incluído que é usado apenas por um caso de uso base.
Solução: Certifique-se de que o caso de uso incluído seja reutilizável ou simplifique significativamente o caso de uso base.
Os Incluir e Estenderrelacionamentos em diagramas de casos de uso UML são essenciais para gerenciar a complexidade e garantir a modularidade. O Incluir relação promove reutilização ao extrair comportamentos obrigatórios e compartilhados, enquanto a Extenderrelação mantém os casos de uso base focados ao modelar comportamentos opcionais ou condicionais. Ao compreender seus propósitos, características e melhores práticas, você pode criar diagramas de casos de uso claros, mantáveis e eficazes que comunicam a funcionalidade do sistema aos interessados.