Diagrama de Estado


  • Diagrama de transição de estados (DTE) é uma representação do estado ou situação em que um objeto pode se encontrar no decorrer da execução de processos de um sistema. Um estado representa uma situação estável de um objeto que se prolonga durante um intervalo de tempo, durante o qual um objeto não sofre estímulos nem os atributos sofrem alteração de valor. Com isso, o objeto pode passar de um estado inicial para um estado final através de uma transição. O diagrama de estado é tipicamente um complemento para a descrição das classes.


  • Este diagrama mostra todos os estados possíveis que objetos de uma certa classe podem se encontrar e mostra também quais são os eventos (mensagens recebidas, timer, erros, e condições sendo satisfeitas) do sistemas que provocam tais mudanças. Eles não são escritos para todas as classes de um sistema, mas apenas para aquelas que possuem um número definido de estados conhecidos e onde o comportamento das classes é afetado e modificado pelos diferentes estados.


  • Diagramas de estado possuem um ponto de início e vários pontos de finalização:
    • Um ponto de início (estado inicial) é mostrado como um círculo todo preenchido
    • Um ponto de finalização (estado final) é mostrado como um círculo em volta de um outro círculo menor preenchido
    • Um estado é mostrado como um retângulo com cantos arredondados
  • Entre os estados estão as transições, mostrados como uma linha com uma seta no final de um dos estados
  • A transição pode ser nomeada com o seu evento causador
  • Quando o evento acontece, a transição de um estado para outro é executada ou disparada.


  • Exemplos:




Notações do Diagrama


O DTE mostra a sequência em que os eventos podem ocorrer e o efeito de eventos como uma função do estado do sistema. As principais componentes desta ferramenta são estados e vetores que representam alterações de estado. Existem várias notações alternativas para representar um DTE, contudo, a mais comum corresponde à apresentada abaixo.

Projetos


  • DCC - Disc Cell Car



Quando usar?


  • Os diagramas de estado não são escritos para todas as classes de um sistema, mas apenas para aquelas que possuem um número definido de estados conhecidos e

onde o comportamento das classes é afetado e modificado pelos diferentes estados.

Exemplos



Diagrama de Sequência

Para ter uma melhor compreensão sobre Diagramas de Seqüência, é necessário entender primeiro o conceito de iteração.

Conceito


  • Consiste em uma ferramenta UML, que mostra como as mensagens entre os objetos são trocadas no decorrer do tempo para a realização de uma operação.
  • Apresenta os objetos que participam da iteração e a seqüência de mensagens trocadas
  • Um diagrama de sequência descreve a maneira como os grupos de objetos colaboram em algum comportamento ao longo do tempo
  • Registra o comportamento de um único caso de uso e exibe os objetos e as mensagens passadas entre esses objetos no caso de uso.


Função ?

Estabelecer os objetos que interagem e seus relacionamentos dentro de um contexto.

  • Pode ser utilizado para mostrar a evolução de uma dada situação em determinado momento do software
  • Mostrar a colaboração entre duas ou mais classes e a tradução de um Caso de Uso desde sua interação com o usuário até a finalização de um processo.
  • Pode mostrar erros não detectados no diagrama de classes. Ele melhora o diagrama de classes,permitindo que acrescentemos ou retiremos métodos e/ou atributos desnecessários de um conjunto de classes.
  • A partir do diagrama de seqüência percebe-se a seqüência de mensagens enviadas entre objetos.A intenção é dar uma demonstração visual de como o software atuará frente ao usuário.
  • Mostra objetos participando em interações de acordo com suas linhas de vida e as mensagens que trocam


Elementos Básicos

  • Objetos - Apresentados na dimensão horizontal do diagrama.
  • Linhas de Vida - Apresentada na dimensão vertical do diagrama, apresentam o tempo de vida do objeto, ativação ou desativação, criação ou destruição.
  • Mensagens - É uma comunicação entre objetos, um emissor que veicula a informação na expectativa de provocar uma resposta. Se dividem em mensagens síncromas e assíncromas.
    • Comunicação Síncrona - Quando um envio é feito, o processo remetente é bloqueado até que a recepção correspondente seja realizada, ou seja, o transmissor/receptor não consegue encaminhar um nova mensagem enquanto a resposta não chega.
    • Comunicação Assíncrona - Em uma comunicação assíncrona, cada bloco de dados inclui um bloco de informação de controle (chamado flag), para que se saiba exatamente onde começa e acaba o bloco de dados e qual a sua posição na seqüência de informação transmitida. Nesse tipo de comunicação o receptor/transmissor pode encaminhar quantas mensagens ele quiser, desde que a mensagem anterior seja entregue. Ele não necessita de uma resposta e sim da conclusão do envio da mensagem.
  • Linhas verticais representam o tempo de vida de um objeto. Estas linhas verticais são preenchidas por barras verticais que indicam exatamente quando um objeto passou a existir. Quando um objeto desaparece, existe um "X" na parte inferior da barra;
  • Linhas horizontais ou diagonais representando mensagens trocadas entre objetos. Estas linhas são acompanhadas de um rótulo que contém o nome da mensagem e, opcionalmente, os parâmetros da mesma. Observe que também podem existir mensagens enviadas para o mesmo objeto, representando uma iteração;
  • Uma condição é representada por uma mensagem cujo rótulo é envolvido por colchetes;
  • Mensagens de retorno são representadas por linhas horizontais tracejadas. Este tipo de mensagem não é freqüentemente representada nos diagramas, muitas vezes porque sua utilização leva a um grande número de setas no diagrama, atrapalhando o entendimento do mesmo. Este tipo de mensagem só deve ser mostrada quando for fundamental para a clareza do diagrama.


Tipos de ação que uma mensagem pode representar:

Call

  • Invoca uma operação sobre um objeto.

Return

  • Representa o retorno de um valor para o objeto que chamou a Operação

Create

  • Criação de um objeto

Destroy

  • Eliminação de um objeto


Modelo padrão de um diagrama de sequências


Como construir um diagrama de seqüência?

  • Escolher um caso de uso (Nada mais do que a representação de uma função do sistema.Trata-se exclusivamente de uma representação de uma ação pretendida, ou uma função executada pelo sistema, como imprimir boleto, executar ação, salvar. Posto que uma função pode ser estruturada em subfunções, um caso de uso pode ser estruturado. Se houver limites no sistema do diagrama, o caso de uso estará dentro dos limites.)
  • Identificar os objetos que fazem parte da iteração.
  • Identificar o objeto que começa a iteração.
  • Identificar mensagens trocadas entre objetos.
  • Identificar a seqüência em que estas mensagens são trocadas.


Exemplos