Diretriz: Relacionamento de Inclusão
O relacionamento de inclusão conecta um caso de uso base a um caso de uso de inclusão. Esta diretriz demonstra como utilizar esse relacionamento.
Relacionamentos
Descrição Principal

Explicação

O relacionamento de inclusão conecta um caso de uso base a um caso de uso de inclusão. O caso de uso de inclusão é sempre abstrato. Ele descreve um segmento de comportamento inserido em uma instância de casos de uso que esteja executando o caso de uso base. O caso de uso base controla o relacionamento com o caso de uso de inclusão e pode depender do resultado da execução da inclusão, mas nenhum deles pode acessar os atributos um do outro. Nesse sentido, a inclusão é encapsulada e representa um comportamento que pode ser reutilizado em diferentes casos de uso base.

O relacionamento de inclusão pode ser usado para:

  • Separar o comportamento do caso de uso base que não seja necessário para compreender a finalidade principal do caso de uso; apenas o resultado é importante.
  • Separar o comportamento que seja comum a dois ou mais casos de uso.

Exemplo:

Em um sistema de Caixa Eletrônico, os casos de uso Sacar Dinheiro, Depositar Dinheiro e Transferir Fundos precisam incluir a forma como o cliente é identificado para o sistema. Esse comportamento pode ser extraído para um novo caso de uso de inclusão chamado Identificar Cliente, incluído nos três casos de uso base. Como os casos de uso base independem do método usado para identificação, ele é encapsulado no caso de uso de inclusão. Para os casos de uso base, não importa se o método para identificação destina-se à leitura de um cartão de banco magnético ou à leitura de retina. Eles dependem apenas do resultado de Identificar Cliente, que é a identidade do cliente. E vice-versa, da perspectiva do caso de uso Identificar Cliente, não importa como os casos de uso base utilizam a identidade do cliente ou o que aconteceu neles antes da execução da inclusão - o método de identificação é exatamente o mesmo.

Diagrama descrito no texto associado.

No sistema de Caixa Eletrônico, os casos de uso Sacar Dinheiro, Depositar Dinheiro e Transferir Fundos incluem o caso de uso Identificar Cliente.

Um caso de uso base pode ter diversas inclusões. Um caso de uso de inclusão pode ser incluído em diversos casos de uso base. Isso não indica nenhum relacionamento entre os casos de uso base. Pode até haver diversos relacionamentos de inclusão entre o mesmo caso de uso de inclusão e o mesmo caso de uso base, desde que a inclusão seja feita em diferentes locais do caso de uso base. O relacionamento de inclusão define qual é o local. Todas as adições podem ser aninhadas, o que significa que um caso de uso de inclusão pode funcionar como caso de uso base para outra inclusão.

Como o caso de uso de inclusão é abstrato, não precisa ter um agente associado a ele. Uma associação de comunicação com um agente só será necessária se o comportamento na inclusão envolver de forma explícita a interação com um agente.

Executando a Inclusão

O comportamento da inclusão é inserido em um local no caso de uso base. Quando uma instância de casos de uso que siga a descrição de um caso de uso base chegar ao local no caso de uso base a partir do qual o relacionamento de inclusão é definido, ela passará a seguir a descrição do caso de uso de inclusão. Uma vez realizada a inclusão, a instância de casos de uso retomará as atividades do ponto em que parou no caso de uso base.

Diagrama descrito no texto associado.

Uma instância de casos de uso seguindo a descrição de um caso de uso base com a inclusão.

O relacionamento de inclusão não é condicional: se a instância de caso de uso alcançar o local no caso de uso base para o qual está definida, ela sempre será executada. Se desejar expressar uma condição, faça-o como parte do caso de uso base. Se a instância de casos de uso nunca chegar ao local para o qual o relacionamento de inclusão é definido, ela não será executada.

Diagrama descrito no texto associado.

A instância de casos de uso no 1 chega ao local no caso de uso base para o qual o relacionamento de inclusão é definido e a inclusão é realizada. A instância de caso de uso nº 2 não chega a esse local e, portanto, a inclusão não é desempenhada como parte dessa instância.

O caso de uso de inclusão é um segmento contínuo de comportamento, incluído completamente em um local no caso de uso base. Se houver segmentos separados de comportamento que precisam ser inseridos em locais diferentes, será necessário considerar o relacionamento de extensão (consulte Diretriz de Produto de Trabalho: Relação de Extensão) ou a generalização caso de uso (consulte Diretriz: Generalização Caso de Uso).

Descrevendo a Relação de Inclusão

No relacionamento de inclusão, é necessário definir o local na seqüência de comportamentos do caso de uso base na qual será realizada a inclusão. Para definir o local, faça referência a determinada etapa ou subfluxo dentro do fluxo de eventos do caso de uso base.

Exemplo:

No sistema de Caixa Eletrônico, o caso de uso Sacar Dinheiro inclui o caso de uso Identificar Cliente. O relacionamento de inclusão de Sacar Dinheiro em relação a Identificar Cliente pode ser descrito da seguinte forma:

Identificar Cliente está inserido entre as seções 1.1 Início de Caso de Uso e 1.2 Solicitar Valor no fluxo de eventos de Sacar Dinheiro.

Para maior clareza, mencione também a inclusão no texto que descreve o fluxo de eventos do caso de uso base.

Exemplo de Uso

Se houver um segmento de comportamento em um caso de uso em que seja possível ver que o caso de uso não depende da forma como os elementos são executados, mas sim do resultado da função, você poderá simplificar o caso de uso extraindo esse comportamento para um caso de uso de inclusão. É possível incluir o caso de uso de inclusão em diversos casos de uso base, ou seja, ele permite reutilizar o comportamento entre casos de uso no modelo. Considere os seguintes esquemas passo a passo para os casos de uso de um simples sistema de telefone:

Fazer Chamada

  1. O chamador tira o telefone do gancho.
  2. O sistema fornece um tom de discagem.
  3. O chamador disca um dígito.
  4. O sistema desativa o tom de discagem.
  5. O chamador insere o restante do número.
  6. O sistema analisa os números e verifica o endereço de rede do Receptor.
  7. O sistema verifica se é possível estabelecer um circuito virtual entre o Chamador e o Receptor.
  8. O sistema aloca todos os recursos do circuito virtual e estabelece a conexão.
  9. O sistema toca o telefone do Receptor.
  10. E assim por diante.

Iniciar o Sistema

  1. O operador ativa o sistema.
  2. O sistema realiza testes de diagnóstico em todos os componentes.
  3. O sistema testa as conexões em todos os sistemas adjacentes. Para cada sistema adjacente, o sistema determinar se um circuito virtual pode ser estabelecido entre si mesmo e o sistema adjacente. O Sistema aloca todos os recursos para o circuito virtual e estabelece a conexão.
  4. O sistema responde que está pronto para operar.
  5. E assim por diante.

O texto marcado em azul é bastante parecido; nos dois casos ocorre o mesmo comportamento, embora por motivos muito diferentes. É possível tirar proveito dessa semelhança, extraindo o comportamento comum para um novo caso de uso: Gerenciar Circuitos Virtuais.

Uma vez extraído o comportamento comum, os casos de uso passam a ser:

Fazer Chamada

  1. O chamador tira o fone do gancho.
  2. O sistema apresenta o tom de discagem.
  3. O chamador disca um dígito.
  4. O sistema desativa o tom de discagem.
  5. O chamador insere o restante do número.
  6. O sistema analisa os números e verifica o endereço de rede do Receptor.
  7. Inclua o caso de uso Gerenciar Circuito Virtual para estabelecer a conectividade na rede.
  8. O sistema toca o telefone do Receptor.
  9. E assim por diante.

Iniciar o Sistema

  1. O operador ativa o sistema.
  2. O sistema realiza testes de diagnóstico em todos os componentes.
  3. O sistema testa as conexões em todos os sistemas adjacentes. Para cada sistema adjacente (loop), inclua Gerenciar Circuito Virtual para estabelecer a conectividade na rede.
  4. O sistema responde que está pronto para operar.
  5. E assim por diante.

Em um diagrama de casos de uso, o relacionamento de inclusão criado será mostrado da seguinte forma:

Diagrama descrito no texto associado.

Os casos de uso Fazer Chamada e Iniciar Sistema incluem o comportamento do caso de uso abstrato Gerenciar Circuito Virtual.