Os casos de uso e os atores interagem por meio de sinais enviados entre si. Para indicar essas interações, utilizamos
uma associação de comunicação entre o caso de uso e o agente. Um caso de uso tem no máximo uma associação de
comunicação com um determinado agente e vice-versa, seja qual for o número de transmissões de sinais. A rede completa
dessas associações é uma imagem estática da comunicação entre o sistema e seu ambiente.
As associações de comunicação não recebem nomes. Como só pode haver uma associação de comunicação entre um caso de uso
e um agente, você só precisa especificar os pontos inicial e final para identificar uma determinada associação de
comunicação.
Uma linha ou uma seta entre um agente e um caso de uso indica que eles interagem enviando sinais entre si.
Cada extremidade de uma associação de comunicação é uma função que especifica a face que um caso de uso ou
agente desempenha na associação. Os papéis são usados para especificar multiplicidades e direções da associação
(veja abaixo).
Cada função de uma associação de comunicação indica a multiplicidade de seu tipo, ou seja, quantas instâncias
desse agente ou caso de uso podem ser associadas a uma instância do outro caso de uso ou agente. A multiplicidade é
indicada por uma expressão de texto no papel. A expressão é uma lista com intervalos de números inteiros separados por
vírgula. Um intervalo é indicado por um inteiro (o valor inferior), dois pontos e um inteiro (o valor superior); um
único inteiro é um intervalo válido e o símbolo '*' indica "muitos", ou seja, um número ilimitado de objetos. O símbolo
'*' equivale a '0..*', ou seja, qualquer número, incluindo zero. Esse é o valor padrão (default). Um papel escalar
opcional tem a multiplicidade 0..1.
A multiplicidade pode ser aumentada com uma restrição de unidade de tempo. Isso é feito para determinar quantas
instâncias podem estar associadas, provavelmente por instâncias diferentes, durante a unidade de tempo. Essa informação
é útil, pois indica se o caso de uso é executado com freqüência e também o quão freqüentemente é iniciado pela mesma
instância de agente.
Exemplo:
O caso de uso Realizar Transações é utilizado 400.000 vezes por dia pelos clientes. Cada cliente inicia o caso de uso
duas vezes ao mês.
Cada função de uma associação de comunicação possui uma propriedade de navegabilidade, indicando quem inicia a
comunicação na interação. A navegabilidade é mostrada por uma ponta de seta. Se a ponta de seta apontar
para um caso de uso, o agente na outra extremidade da associação iniciará a interação com o sistema. Se a ponta
de seta apontar para um agente, o sistema iniciará a interação com o agente. A navegabilidade bidirecional é
mostrada por uma linha sem pontas de seta (duas pontas de seta tornam os diagramas confusos).
A seta de comunicação define o agente que iniciou o caso de uso. Há uma mensagem de retorno para cada seta de
comunicação. Uma linha sem seta pressupõe uma comunicação bidirecional.
Não confunda navegabilidade com fluxo de dados; ela é
utilizada apenas
para mostrar a iniciação da comunicação. Por exemplo, um pedido de dados feito por um cliente é mostrado por uma
seta em direção ao caso de uso que representa o sistema, embora a maioria dos dados fluam do sistema para o
cliente.
Os atores se comunicam com o sistema enviando sinais. Para entender completamente a função do agente, você deve saber
em quais casos de uso o agente está envolvido. Isso é mostrado por associações de comunicação entre o agente e os casos
de uso.
A multiplicidade da associação mostra o número de instâncias de caso de uso com as quais uma instância de agente pode
se comunicar ao mesmo tempo.
Exemplo:
No Sistema de Máquina de Reciclagem, toda vez que uma instância do agente Cliente entrega um item de depósito, ele
envia um sinal à respectiva instância do caso de uso Reciclar Itens. Quando o agente terminar, o caso de uso imprimirá
um recibo. Um Cliente só pode se comunicar com uma instância de Reciclar Itens. Desse modo, a multiplicidade da
associação é 1. O recibo enviado pelo sistema é considerado como uma resposta da instância de caso de uso. Portanto, a
associação de comunicação não precisa de navegabilidade para a outra direção.
Um Cliente que queira devolver itens de depósito para uma máquina de reciclagem irá se comunicar com o caso de uso
Reciclar Itens.
Um agente se comunica com os casos de uso por vários motivos:
-
Para disparar um caso de uso. Uma instância de agente sempre dispara uma instância de caso de uso.
-
Para solicitar dados armazenados no sistema, que o caso de uso busca e apresenta ao agente.
-
Para alterar os dados armazenados no sistema por intermédio de um diálogo com o sistema.
-
Para relatar algo especial que tenha ocorrido no ambiente do sistema, em relação ao qual o sistema deva executar
alguma ação.
Quem inicia um caso de uso é um agente. Entretanto, depois de iniciado, o caso de uso pode se comunicar com vários
atores. Você pode usar associações de comunicação entre o caso de uso e os atores para mostrar com quais atores o caso
de uso se comunica. A multiplicidade da associação mostra o número de instâncias de um agente com as quais uma
instância de caso de uso pode se comunicar ao mesmo tempo.
Os casos de uso se comunicam com os atores por vários motivos:
-
Se algo especial ocorrer no sistema, pode ser que o agente precise saber.
-
Um caso de uso pode precisar da ajuda de um agente para tomar uma decisão caso haja várias opções disponíveis.
É comum, mas nem sempre verdadeiro, que o caso de uso aguarde uma resposta após enviar um sinal a um agente. Isso deve
ser descrito de forma explícita no caso de uso.
As convenções a seguir são comuns e opcionais. Seu objetivo é esclarecer qual agente inicia o caso de uso.
-
A ponta de seta do agente inicial para o caso de uso é sempre
mostrada, mesmo que, posteriormente, o caso de uso inicie a comunicação com o agente inicial. Essa também é a
única ponta de seta do agente para o caso de uso mostrada.
-
As pontas de seta do caso de uso para atores podem ser omitidas ou,
para clareza, podem ser incluídas.
|