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.
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.
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.
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.
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).
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.
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
-
O chamador tira o telefone do gancho.
-
O sistema fornece um tom de discagem.
-
O chamador disca um dígito.
-
O sistema desativa o tom de discagem.
-
O chamador insere o restante do número.
-
O sistema analisa os números e verifica o endereço de rede do Receptor.
-
O sistema verifica se é possível estabelecer um circuito virtual entre o Chamador e o
Receptor.
-
O sistema aloca todos os recursos do circuito virtual e estabelece a conexão.
-
O sistema toca o telefone do Receptor.
-
E assim por diante.
Iniciar o Sistema
-
O operador ativa o sistema.
-
O sistema realiza testes de diagnóstico em todos os componentes.
-
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.
-
O sistema responde que está pronto para operar.
-
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
-
O chamador tira o fone do gancho.
-
O sistema apresenta o tom de discagem.
-
O chamador disca um dígito.
-
O sistema desativa o tom de discagem.
-
O chamador insere o restante do número.
-
O sistema analisa os números e verifica o endereço de rede do Receptor.
-
Inclua o caso de uso Gerenciar Circuito Virtual para estabelecer a conectividade na rede.
-
O sistema toca o telefone do Receptor.
-
E assim por diante.
Iniciar o Sistema
-
O operador ativa o sistema.
-
O sistema realiza testes de diagnóstico em todos os componentes.
-
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.
-
O sistema responde que está pronto para operar.
-
E assim por diante.
Em um diagrama de casos de uso, o relacionamento de inclusão criado será mostrado da seguinte forma:
Os casos de uso Fazer Chamada e Iniciar Sistema incluem o comportamento do caso de uso abstrato Gerenciar Circuito
Virtual.
|