terça-feira, 5 de maio de 2020

Diagramas (parte 2)

Diagrama de sequência e diagrama de comunicação

Além do diagrama de caso de uso, o diagrama de sequência também é considerado um modelo de interação. Entretanto, eles apresentam informações diferentes. O diagrama de caso de uso apresenta a interação dos atores externos com o sistema, e o diagrama de sequência apresenta como ocorre o fluxo de mensagens entre os objetos ao longo do tempo sobre um determinado caso de uso.
Assim, diagrama de sequência é um diagrama que apresenta, numa ordem lógica, os fluxos de mensagens entre os objetos pertinentes ao respectivo caso de uso num determinado período de tempo. Isso significa que ele deve ser elaborado após o desenvolvimento do diagrama de caso de uso.
É necessário conhecer os símbolos utilizados para a elaboração de um diagrama de sequência. Ele é composto por objetos e fluxos de mensagens.

Os objetos são desenhados como um retângulo ao topo de uma linha vertical tracejada e projetada para baixo, que recebe o nome de linha de vida. Além deles, geralmente, uma instância de ator é desenhada como a primeira linha de vida do diagrama de sequência.
As mensagens são indicadas nessa linha. Ao indicar uma mensagem, uma base retangular vertical é criada sobre a linha de vida. Essa base é chamada de ativação e determina a execução de uma ação, num período de tempo da interação, entre os objetos.
Os fluxos de mensagens são identificados por um número, que indica a sequência delas. Eles podem ser do tipo de procedimento síncrono ou assíncrono.

O fluxo do tipo síncrono é desenhado com a seta do fluxo de forma sólida (preenchida) na cor preta e indica que o objeto remetente esperará um retorno da mensagem pelo objeto destinatário.
O fluxo do tipo assíncrono é desenhado com a seta do fluxo de forma não sólida e indica que as mensagens são enviadas, mas não se espera o retorno de forma imediata.

No diagrama de sequência também podem ser encontrados alguns casos especiais, como autodelegação e retorno automático de mensagem.
Autodelegação ou autochamada, de acordo com Furlan (1998), é uma técnica utilizada em algoritmos para mostrar que uma operação chama a si própria. Na prática, isso significa que a mensagem é enviada para o próprio objeto. A mensagem de autodelegação é sempre síncrona.

Uma outra forma de representar as mensagens é indicar o fluxo por uma linha tracejada, que significa um retorno automático da mensagem. Assim, a mensagem é enviada para um destinatário e, em seguida, obtém-se o retorno esperado.

Representação do diagrama de comunicação

O diagrama de comunicação (ou diagrama de colaboração, como era denominado até a versão UML 1.5), como o diagrama de sequência, apresenta um fluxo de mensagens, porém não em sequência. Além disso, a disposição dos objetos é estrutural. O diagrama de comunicação deve ser elaborado com o intuito de mostrar os relacionamentos entre os objetos. É um complemento do diagrama de sequência.
O processo de elaboração do diagrama de comunicação é realizado da mesma forma que o do diagrama de sequência. Assim, ele é elaborado com base nas ações lógicas descritas em determinados casos de uso especificados no diagrama de casos de uso.
Os símbolos utilizados no diagrama de comunicação são: objetos representados por retângulos e mensagens numeradas representadas por setas e linhas, para mostrar os relacionamentos entre os objetos. É importante ressaltar que essa linha representa uma mensagem ou várias entre os relacionamentos.

Os fluxos de mensagens utilizados são síncronos ou assíncronos, conforme já explicado. Entretanto, os assíncronos não são utilizados com muita frequência, já que o diagrama de comunicação não especifica as sequências deles.


Geralmente o diagrama de comunicação é elaborado para os casos de uso que apresentam muitos objetos, de forma a esclarecer melhor os relacionamentos entre eles.

Representação de um diagrama de estado

De acordo com Blaha e Rumbaugh (2006), o modelo de estados consiste em vários diagramas de estados, um para cada classe com comportamento temporal importante para uma aplicação. O diagrama de estados é um conceito padrão da ciência da computação, uma representação gráfica para máquinas de estado finito que relaciona eventos e estados. Os eventos representam os estímulos externos, e os estados, os valores dos objetos.
Um sistema responde com base em estímulos externos. Dependendo deles, ocorrem mudanças em seu comportamento. O diagrama de estado mostra como um objeto se comporta quando recebe eventos externos.
As máquinas de estado são muito utilizadas na computação em aplicações de inteligência artificial. Elas avaliam os aspectos dinâmicos de uma construção.

Um diagrama de estado é composto pelos seguintes elementos: estado, transição, estado inicial e estado final.

Estado

O símbolo de estado, denominado estado simples, é representado por um retângulo com bordas arredondadas contendo um nome de estado. Em outro símbolo, chamado de estado composto ou máquina de estado, o retângulo é maior, pois nele existirão outros estados.

Segundo Lima (2011), um estado simplesmente representa uma ação executada, uma condição satisfeita ou uma situação estática de espera em que um objeto se encontra durante sua existência ou durante o processo de execução de alguma atividade no sistema.

Os diagramas de estados são muito utilizados para a validação de modelagem de classes. Para cada classe, poderá haver um diagrama de estado, com o objetivo de analisar todos os estados possíveis de cada objeto.
Na segunda parte do símbolo de estado pode-se identificar uma atividade do. De acordo com Blaha e Rumbaugh (2006), uma atividade é o comportamento real que pode ser invocado por diversos efeitos. Efeito é uma referência a um comportamento executado em resposta a um evento. Assim, uma atividade do é uma atividade que continua ao longo de um período de tempo. Ela só pode ocorrer dentro de um estado e não pode estar conectada a uma transição.

Transição

A transição é representada por uma seta e indica o relacionamento entre estados. A transição indica a execução de uma ou mais ações específicas: quando estiver no primeiro estado e entrar no segundo ou quando um evento específico ocorrer e determinadas condições forem satisfeitas.
rótulo a ser descrito numa transição tem a seguinte sintaxe: Evento(Argumentos) [condição] / Ação, sendo que:
  • Evento: é uma ocorrência num período de tempo. Os eventos podem ser do tipo:
    • Evento de sinal: representado por <> e indicado acima de uma classe.
    • Evento de mudança: representado pela palavra-chave when e seguido por uma expressão booleana. Exemplo: when(valor_do_saque > saldo_na_conta_corrente).
    • Evento de tempo: representado pela palavra-chave after e seguida por uma expressão entre parênteses, indicando a duração de tempo. Exemplo: after(5 minutos). É utilizada juntamente com o evento de mudança.
  • Argumentos: parâmetros do evento (valores).
  • Condição: é uma expressão booleana representada entre colchetes. A transição somente se executará se a condição assumida pela expressão for verdadeira. A condição é denominada condição de guarda.
  • Ação: é uma ação executada durante a transição.
Assim como nos estados, é possível especificar atividades em transição. As atividades entry e exit indicam entrada e saída, respectivamente. Vale ressaltar que elas podem ser utilizadas em transições e também em estados.

Estado inicial e estado final

O estado inicial é representado por um círculo preenchido na cor preta (fechado) e indica que o objeto está inerte. O estado final é representado por um círculo aberto (branco) e, dentro deste, outro preenchido na cor preta (fechado). Ele indica o último estado de um objeto. Os estados inicial e final são considerados pseudoestados.

O diagrama de estados possui duas estruturas importantes que podem ser utilizadas na modelagem de estados: a primeira é chamada fork (bifurcação), que permite a subdivisão de um estado em dois ou mais, concorrentes. A segunda estrutura é chamada join (junção), que une dois ou mais estados num único.

Representação de um diagrama de atividades

O diagrama de atividades é um diagrama que mostra a sequência lógica de um sistema, como um algoritmo. Entretanto, nele, é possível manipular processos paralelos. O principal foco do diagrama de atividades são as operações.
Segundo o OMG (2014), um diagrama de atividades especifica a coordenação de execuções de comportamentos, usando um modelo de fluxo de controle e de dados. O fluxo de execução é modelado como nós de atividade conectados por extremidades. Um nó (nodo ou node) pode ser a execução de um comportamento subordinado, como um cálculo computacional, uma chamada para uma operação ou manipulação de conteúdos de objetos. Nós de atividade também incluem construções de fluxo de controle, como sincronização, decisão e controle de concorrência. Atividades podem invocar hierarquias de outras atividades, resolvidas em ações individuais.
De acordo com Furlan (1998), um diagrama de atividades é elaborado com os seguintes propósitos:
  • Capturar o funcionamento interno de um objeto.
  • Capturar o trabalho (ações) que será desempenhado quando uma operação for executada.
  • Mostrar como um processo de negócio funciona em termos de atores, fluxos de trabalho, organização e objetos.
  • Mostrar como uma instância de caso de uso pode ser realizada em termos de ações e mudanças de estado de objetos.
  • Mostrar como um conjunto de ações relacionadas pode ser executado e como afetará objetos ao redor.
Os símbolos utilizados em um diagrama de atividades são:
  • Atividade: representada por um retângulo com bordas arredondadas.
  • Transição: representada por um fluxo de uma atividade para outra.
  • Decisão/merge: representada por um losango, pode ter diversas saídas.
  • Bifurcação e junção (fork e join): representados por barras de sincronização.
  • Entrada: representada por um círculo preenchido na cor preta (fechado).
  • Saída: representada por um círculo aberto (branco) e, dentro deste, outro preenchido na cor preta (fechado).
  • Partições: são representadas por um grande retângulo, que pode ser vertical ou horizontal.
A utilização da bifurcação e da junção de atividades é muito importante no diagrama de atividades, pois mais de uma atividade podem ocorrer ao mesmo tempo nesses casos. Esse fato é o que o diferencia de um fluxograma.
A bifurcação (fork) é uma atividade subdividida em duas ou mais concorrentes, e a junção (join) são duas ou mais atividades que se juntam numa única.
O losango representa tanto uma decisão quanto um merge. Quanto há uma entrada e diversas saídas, ele representa uma decisão. Nesse caso, cada saída é representada por uma condição de guarda, entre colchetes. Quando há diversas entradas e uma única saída, ele representa um merge e é utilizado para agregar diversos fluxos de controle em um só.
O diagrama de atividades permite também o uso de partições (swimlanes). Elas indicam diferentes ações que podem ser executadas por objetos ou entidades diferentes e podem ser verticais ou horizontais. É uma forma lógica de organização das atividades. Por exemplo: a partição Cliente indica as atividades relacionadas ao cliente, e a partição Conta indica as relacionadas à conta. Entretanto, as atividades não são paralelas e distintas, mas integradas entre as partições, com o objetivo de demonstrar os relacionamentos entre elas.

Nenhum comentário:

Postar um comentário