quarta-feira, 18 de janeiro de 2012

UML - Diagrama de Sequência

Pensaram que eu iria parar com a sequencia de artigos sobre UML não é campeões? Posso achar um saco UML mas eu vou terminar sim com esses artigos, hoje vamos falar do Diagrama de Sequência que particularmente é um dos melhores(ou menos piores) da UML! Apenas para refrescar sua memória, a UML é dividida basicamente em 2 tipos de diagramas os de estrutura (Diagrama de classe...etc..) e os de comportamento (diagrama de atividade...etc..) e onde vc acha que e o de sequencia esta acoplado? (R: Comportamento claro)





Antes de explicar técnicamente eu vou dar uma resumida; O diagrama de sequencia tem como objetivo exibir o comportamento dos métodos baseado em uma ação. Ta mas que ação? Vamos imaginar uma consulta de funcionário em um determinado sistema. Veja:

Explicando:  Vejo que nesse diagrama de sequencia temos um ATOR, uma Camada de Apresentação (View), Camada de Negócio (Uma camada para a regra de negócio, controller por exemplo) e uma camada de persistência no banco(ORM).
E divido assim em camada podemos mostrar a sequencia no comportamento delas quando existe a consulta de um funcionário.


IMPORTANTE: O diagrama de sequencia não existe um padrão de nomes, nesse caso utilizamos camada mas vc poderia nomear com as classes por exemplo "consulta.html , consultaNegocio , Banco" isso depende da sua necessidade.

 

Explicação formal

Este diagrama procura determinar a sequência de eventos que ocorrem em um determinado processo, ou seja, quais condições devem ser satisfeitas e quais métodos devem ser disparados entre os objetos envolvidos e em que ordem durante um processo específico. Assim, determinar a ordem em que os eventos ocorrem, e as mensagens que são enviadas, os métodos que são chamados e como os objetos interagem entre si dentro de um determinado processo é o objetivo principal deste diagrama. Pensando de uma forma mais clara seu objetivo é entender a sequencia em que os métodos se comportam baseado em uma ação. Mas quem define essa ação?

O Diagrama de Sequência baseia-se no Diagrama de Casos de Uso. No entanto deve-se ter em mente que o fato de haver normalmente um único Diagrama de Casos de Uso não significa em absoluto que deva haver um único Diagrama de Sequencia. Normalmente existem diversos Diagramas de Sequência em um projeto, um para cada processo específico do sistema ou seja, talvez exista um uma parte, módulo, componente do sistema que tem apenas um caso de uso principal, um diagrama de caso de uso e ‘n’ de sequencia pois a tendencia é realmente o de atividade e o de sequência possuierem um pouco mais diagramas. Mas claro que isso não é regra e cada caso é um caso mas se você sempre estiver fazendo um diagrama de sequencia de um componente grande eu recomendo que vc pare, pense e veja quais ações estão faltando.





Um Diagrama de Sequência na maioria das vezes se identifica com um Caso de Uso específico, porque um Caso de Uso, em geral, refere-se a um processo disparado por um usário. Assim um Diagrama de Sequência também também permite documentar um Caso de Uso. Na verdade, muitas ferramentas CASE permitem gerar um Diagrama de Sequencia diretamente a partir de um Caso de Uso.

Nem sempre um Caso de Uso gera um Diagrama de Sequência, como é, muitas vezes, o que ocorre com os Casos de Uso do tipo <<include>>, porque este têm que ser executados juntamente com outros Casos de Uso que os utilizam e, por isso muitas vezes suas etapas são descritas nos diagramas de Sequência relativos aos Casos de Uso que os Utilizam. Porém nada impede que se defina um Diagrama de Sequência exclusivo para um Caso de Uso utilizado por outros Casos de Uso através da associação <<include>>.
Obviamente, o Diagrama de Sequência depende também do Diagrama de Classes,

Os atores são os mesmos descritos no Diagrama de Casos de Uso, ou seja entidades externas que geram ações e disparam eventos.

Os atores não são obrigatórios no diagrama de sequencia mas são utilizados frequentemente

Objetos representam as instâncias das classes envolvidas no processo ilustrado pelo Diagrama de Sequencia. Os objetos são apresentados como retângulos contendo um texto que identifica primeiramente o nome do objeto, em minúsculo, e depois o nome da classe, com as letras iniciais maiúsculas, a qual o objeto pertence. Essas duas informações são separadas por um simbolo de (:) dois pontos. Veja um exemplo de objeto:

 
Veja como exemplo nessa figura um exemplo de objeto onde Paulo é o nome do objeto seguido de Pessoa que é a classe pessoa, ou seja, Paulo é uma instância da classe Pessoa.

Abaixo do retangulo existe uma linhda pontilhada e ela representa o tempo de vida o objeto, olhando dessa maneira não existe uma forma de medir um tempo de vida real nele isso só será possível quando o diagrama completo estiver pronto.

A e tem outra coisa, não existe diagrama que veja o tempo em horas/minutos/segundos de um objeto não ta? Quando digo linha do tempo me refiro a linha da vida, ao tempo que ele vai estar vivo durante um processo.


Um objeto pode existir desde o início do processo ou ser criado durante o decorrer da execução do mesmo.

Mensagens
As ,mensagens são utilizadas no Diagrama de Sequencia para demonstrar a ocorrência de eventos, que normalmente forçam a chamada de um método em algum dos objetos envolvidos no processo. Veja um exemplo:



A mensagem investimento entra no controller JAVoiceController e ele executa seu método vote().


Veja um exemplo completo de um diagrama de sequência para aluguel de carro:



Bem, por hoje é só. Espero ter ajudado e se não acharam que ficou claro me avisem.
Obrigado!

3 comentários:

  1. Legal cara sempre tive dificuldade com diagrama de sequencia!

    ResponderExcluir
  2. Otimo artigo ensinou mais que meu professor em 5 meses

    ResponderExcluir
  3. Paulo,
    Foi com esse seu artigo que eu consegui passar no concurso de Analista de Sistemas do meu estado. Obrigado por tudo, são pessoas como você que mudam o nosso mundo!

    Vc é o cara! Parabéns!

    ResponderExcluir