Nos diagramas de casos de uso da UML, o relacionamento "estender" mostra como um caso de uso pode adicionar funcionalidade a outro caso de uso *sob condições específicas *. Não se trata * de simples inclusão ou herança. Em vez disso, indica uma extensão opcional do comportamento do caso de uso base.
Aqui está um colapso:
*
Caso de uso base: Este é o principal caso de uso que está sendo estendido. Funciona independentemente, mesmo sem o caso de uso estendendo.
*
estendendo o caso de uso: Este caso de uso adiciona etapas ou funcionalidade extras ao caso de uso base. Somente * é executado se uma condição específica (ou ponto de extensão) dentro do caso de uso base for atendida. * Não * substitui ou abrange totalmente o caso de uso base.
Diferenças principais de "incluir": *
Incluir: Representa um caso de uso que está sempre * incluído em outro caso de uso. É uma forma de decomposição, considerando a funcionalidade comum. O caso de uso incluído é executado sempre que o caso de uso base for executado.
*
estender: Representa um caso de uso * condicionalmente * incluído em outro caso de uso. Isso só acontece quando critérios específicos são atendidos no caso de uso base.
Exemplo: Digamos que você tenha um caso de uso básico "Ordem do processo". Isso geralmente envolve adicionar itens a um carrinho, calcular o total e concluir o pagamento.
Você pode ter um caso de uso prolongado chamado "Aplicar desconto". Isso * somente * acontece se um cliente usar um código de cupom válido durante o caso de uso "Ordem do processo". O caso de uso "Aplicar desconto" estende o caso de uso "Ordem do processo", mas nem sempre é executado. Se nenhum cupom for usado, as etapas "Aplicar desconto" serão simplesmente ignoradas.
Em um diagrama, o relacionamento "estender" é retratado como uma seta tracejada com uma ponta de seta aberta apontando do caso * de uso * de uso para o caso de uso * base *. Freqüentemente, a condição específica para a extensão é observada perto da seta.
Em suma, "estender" em diagramas de casos de uso modelos opcionais, adições condicionais ao comportamento de outro caso de uso. Trata-se de adicionar funcionalidade extra em circunstâncias específicas, não sobre funcionalidade sempre incluída como "incluir".