Вы находитесь на странице: 1из 14

UML Diagramas de Sequncia

Ol pessoal, neste ms estamos trazendo mais alguns conceitos de UML, desta vez
iremos transmitir alguns conceitos do diagrama de sequncia. No artigo anterior,
abordamos uma introduo de conceitos sobre a UML e tambm falamos sobre o diagrama
de casos de uso, demonstramos tambm, com um exemplo corriqueiro, a importncia de se
ter um software bem documentado. No fim ainda tivemos um exemplo prtico utilizando a
ferramenta Star UML.

Conceito bsico

O diagrama de sequncia outra ferramenta muito importante da UML. Seu
principal objetivo demonstrar em linhas de tempo quais so as interaes entre os objetos
de um determinado cenrio representado pelo diagrama. Geralmente um diagrama de
sequncia criado a partir de um diagrama de casos de uso, com a finalidade de descrever
como sero as interaes/mensagens entre cada objeto/elemento do diagrama. Este
diagrama possui dois eixos: o eixo vertical que indica a sequncia das mensagens e o tempo
de vida dos objetos e o eixo horizontal, este ltimo indica quais so os objetos que
participam do diagrama.

Elementos do Diagrama

O diagrama de sequncia compe-se basicamente de dois elementos, so eles
objetos e mensagens. Em alguns casos pode-se ter um elemento com a representao
semelhante ao elemento Ator do diagrama de casos de uso, contudo este elemento
interpretado como um objeto comum neste diagrama.

Objetos

Os objetos podem representar atores ou mesmo instncias de classes do sistema,
desde que tenham alguma interao no cenrio do diagrama. Ou seja, geralmente, um
objeto vem predefinido de um diagrama de classes.
A representao grfica de um objeto um retngulo, e a sua distribuio no diagrama se
d pela horizontal. Ou seja, cada objeto do diagrama deve estar alinhado horizontalmente
no cenrio. A ordem dos objetos no interfere no objetivo do diagrama, porm,
aconselhvel distribuir os objetos de forma a facilitar a leitura do diagrama. Veja na figura 1
a representao do objeto.


Figura 1 Representao do objeto no diagrama de sequncia

A nomenclatura do objeto deve seguir a seguinte sintaxe: NomeObjeto:
NomeClasse. Por exemplo, um determinado cliente dever ser representado num diagrama
de sequncia, a nomenclatura deste objeto poderia assumir uma das seguintes opes:
umCliente: Clientes
pedro: Clientes
: Clientes
Joo

O nome do objeto pode ser representado por um nome de pessoa ou algum
nome genrico e ainda pode tambm ser omitido, como visto no terceiro exemplo. Um
objeto pode estar criado sem a sua classe, ou seja, apenas com o nome do objeto, como
mostra o quarto exemplo, porm, aconselhvel estar implcito o nome da classe no objeto.
Abaixo do objeto segue na vertical uma linha tracejada, que indica o tempo de
vida de objeto, ou seja, sua criao e sua destruio do mesmo. por meio de sua linha de
vida, que os objetos tero as suas interaes com os demais objetos do cenrio ou com sigo
mesmo.
A linha de vida demonstra tambm quando o objeto est com o foco, isto feito
atravs de barras de ativao. As barras de ativaes so vinculadas a cada
mensagem/interao. Pode-se ter tambm barras de ativaes empilhadas, ou seja, isso
indica que o objeto enviou uma auto mensagem (auto delegao).
Os objetos podem ser de vrios tipos, na UML so chamados de esteretipos, os
mais comuns so:
Boundary (Fronteira): So classes de interface de usurio;
Control (Controle): So classes que controlam o comportamento de
um caso de uso;
Entity (Entidade): So classes que armazenam informaes que sero
manipuladas pelo sistema.

Veja na figura 2 as representaes dos esteretipos de objetos citados acima.


Figura 2 Representaes grficas dos tipos de objetos

Mensagens

As interaes entre os objetos so representadas por mensagens, que podem
tambm ser denominadas estmulos. As mensagens podem partir de um objeto para outro,
ou em alguns casos um objeto pode enviar uma auto mensagem, neste caso a mensagem
parte da linha de vida do tal objeto e tem como destino o mesmo, portanto sua seta faz
uma volta apontando ao mesmo objeto.
No geral, as mensagens so representadas graficamente por uma linha simples,
tracejada ou no, com uma seta apontando para o objeto destino da mensagem. Uma
mensagem representa a chamada de algum mtodo ou funo do objeto destino, portanto,
especificado tambm acima da linha da mensagem qual o mtodo que aquela mensagem
est chamando. A sintaxe da mensagem a seguinte:

retorno := mensagem(parmetro: tipoParmetro): tipoRertorno

Uma barra de ativao delimita a execuo do mtodo chamado pela mensagem.
Para o diagrama de sequncia existem alguns tipos de mensagens especficos, veja logo
mais alguns deles:
Call: este o tipo mais comum, pois representa a chamada de um
mtodo de algum objeto. Um objeto pode fazer a chamada de seus prprios
mtodos, isso seria a auto mensagem. Esta uma mensagem sncrona, o que indica
que o fluxo do diagrama no continuar at que este mtodo seja finalizado (ver
figuras 3 e 4);
Send: este tipo de mensagem tambm chama um mtodo, a
diferena que esta uma mensagem assncrona, ou seja, a sua execuo decorre
em paralelo aos demais processos (ver figura 5).
Return: este tipo de mensagem representa o retorno de um valor
para o objeto de chamou a execuo do mtodo. O retorno no obrigatrio ser
representado no diagrama, porm, no errado utiliz-lo (ver figura 6);
Create: indica a criao de um objeto (ver figura 7);
Destroy: indica a eliminao de um objeto (ver figura 8).
Veja nas seguintes figuras as representaes grficas de cada tipo de mensagem.


Figura 3 Representao da mensagem do tipo Call


Figura 4 Representao da mensagem do tipo Call de auto delegao


Figura 5 Representao da mensagem do tipo Send


Figura 6 Representao da mensagem do tipo Return


Figura 7 Representao da mensagem do tipo Create


Figura 8 Representao da mensagem do tipo Destroy


Exemplo Fazer Login

Com estes dois elementos que foram apresentados, Objetos e Mensagens, pode-
se resolver diversos cenrios de casos de uso, descrevendo a sequncia dos mtodos e a
interao entre os objetos do cenrio. Vamos dar um exemplo de um caso de uso Fazer
Login (ver figura 9).


Figura 9 Diagrama de sequncia Fazer Login

Neste exemplo, temos um usurio que chama o mtodo informaDados do objeto
telaLogin, fornecendo os dados de login e senha. Logo em sequncia o objeto telaLogin
envia uma mensagem com o objetivo de consultar os dados do usurio, logicamente
passando as informaes de login e senha, onde o retorno desta mensagem ser
armazenado em usuarioOk. Na sequncia, se usuarioOk for igual a True, a telaLogin envia
uma mensagem do tipo Create para o objeto telaPrincipal. Por fim o objeto telaLogin envia
uma auto mensagem do tipo Destroy. Percebe-se que no foi enviada nenhuma mensagem
de retorno ao usurio, aviando se houve algum a efetuar o login. Porm, o intuito deste
exemplo mostrar a utilizao dos elementos do diagrama de sequncia, como a
distribuio dos objetos e a utilizao de alguns tipos de mensagens.


Frames

Alm de Objetos e Mensagens podemos ter ainda no diagrama de sequncia o
elemento Frame. Este elemento serve para tratar alguns conceitos mais avanados, como
estruturas de repetio e de deciso.
Os frames so quadros ou molduras que determinam que um grupo de mensagem seja
tratado de forma diferente no fluxo do diagrama. Alguns dos tipos mais comuns de frames
so: Loop, Alt e Opt.

Loop

Como o prprio nome j indica este tipo de frame indica que as mensagens que
estiverem dentro do escopo deste frame faro parte de uma estrutura de repetio
considerando alguma condio, que tambm deve estar descrita no frame. Alm de sua
condio o frame pode conter tambm uma breve descrio, indicando qual o seu
propsito, mas isso no obrigatrio e em alguns casos nem necessrio, pois a prpria
condio pode se descrever bem. Veja na figura 10 a representao do frame de tipo Loop.


Figura 10 Representao grfica do frame de tipo Loop


Opt

Este tipo de frame funciona como um If na programao, portanto logicamente,
deve-se especificar uma condio para executar as mensagens dentro do frame, ou seja, o
fluxo apenas ir executar as mensagens dentro deste frame caso a condio especificada
seja atendida. Lembrando pode-se que tambm adicionar uma descrio opcional para este
frame tambm. Veja na figura 11 a representao deste tipo de frame.


Figura 11 Representao grfica do frame de tipo Opt


Alt

Este tipo de frame funciona de forma semelhante ao Opt, a diferena que este
tipo d a opo de utilizar o um Else, ou seja, caso a condio no seja atendida, pode-se
executar outras mensagens. Para isso o frame dividido na horizontal por uma linha
tracejada, na parte de cima onde ficar a condio do Alt e as mensagens a serem
executadas caso a condio seja verdadeira, e na parte inferior do frame, ficaro as
mensagens que sero executadas cosa a condio no seja atendida. Veja na figura 12 a
representao grfica para este tipo de frame.


Figura 12 Representao grfica do frame de tipo Alt

Apenas a critrio de curiosidade saiba que existem ainda outros tipos de frames,
estes citados aqui so apenas os mais comuns.
Veja na figura 13 a adaptao feita no diagrama de exemplo Fazer Login utilizando
alguns frames. Utilizando um Loop para validar o usurio e um Alt para exibir se o login deu
certo ou no.


Figura 13 Adaptao do exemplo Fazer Login utilizando frames
Exemplo prtico com StarUML

Para quem no conhece, o StarUML uma das vrias ferramentas disponveis para
a criao e manipulao de diagramas da UML. O StarUML um software gratuito e prtico
de usar. Para fazer o download do StarUML basta acessar a pgina principal do projeto,
atravs do seguinte endereo (http://staruml.softonic.com.br). A instalao deste software
segue o padro (next/ next / finish).

Criando o diagrama de sequncia

Aps a instalao do StarUML, abra-o com um clique duplo em seu cone na rea
de trabalho do Windows. Na primeira janela que apresentada escolha a opo Default
Approach (abordagem padro em portugus). Para criar um novo diagrama de sequncia v
com o ponteiro do mouse at o painel Model Explorer, situado na lateral direita da tela,
clique com o direito do mouse sobre o n <<useCaseModel>> Use case Model do painel
Model Explorer, e escolha as seguintes opes (Add Diagram/ Sequence Diagram) (ver
figura 14).


Figura 14 Criando um diagrama de sequncia no StarUML

Situado na lateral esquerda da tela do StarUML temos o painel Toolbox, nele
onde ficam as respectivas ferramentas a serem utilizadas no diagrama de sequncia, tais
como Objetos, Mensagens e Frames. As mensagens so chamadas pela ferramenta de
Stimulus, que tambm uma denominao aceitvel para as mensagens. Veja na figura 15
os elementos disponibilizados pela ferramenta para o desenho do diagrama de sequncia
no painel Toolbox.


Figura 15 Painel Toolbox


Criando os objetos

O diagrama que iremos desenhar o mesmo do exemplo dado na figura 13. Ou
seja, neste trecho do artigo apenas explicaremos como configurar as propriedades dos
elementos do diagrama de sequncia, pois a disposio dos elementos no mesmo ser
seguida conforme a figura 13.
Podemos perceber que no tem nenhum elemento com a figura de um ator. Para
adicionarmos um ator ao diagrama de sequncia precisamos cria-lo no painel Model
Explorer, este um processo parecido com o processo de criar o diagrama de sequncia,
clique com o direito do mouse sobre a opo <<useCaseModel>> Use Case Model e
escolhas as seguintes opes (Add/ Actor), logo em seguida adicione um nome para o ator,
no exemplo utilizamos a nomenclatura Usuario. Note que foi criado um novo item no
menu TreeView, com o smbolo do ator e o nome Usuario. Para adicionar o ator ao desenho,
basta arrastar seu item para a rea de desenho do diagrama, a rea em branco no centro da
tela.
Como foi dito anteriormente, o objeto uma instncia de alguma classe, e pode
tambm ser criado sem nenhuma classe, porm recomenda-se que crie o elemento objeto
atravs de uma classe j criada no diagrama. Para criar o objeto basta clicar no elemento
Object no painel Toolbox e clicar posteriormente na rea de desenho do diagrama. Desta
forma teremos um objeto sem nenhuma classe definida, porm, abaixo do painel Model
Explorer na lateral direita da tela, temos o painel Properties, este painel mostra todas as
propriedades passveis de alteraes do elemento que estiver com o foco, isto vale para
qualquer elemento do StarUML, por exemplo, at o diagrama de sequncia que foi criado
tem propriedades que podem ser alteradas pelo painel Properties.
Crie um objeto no diagrama ao lado direito do objeto Usuario criado
anteriormente, e mantenha o foco neste. No painel Properties altere o seu nome para
telaLogin, este objeto ser o objeto que representar a interface de login do sistema. Na
propriedade Stereotype (esteretipo em portugus), voc pode escrever diretamente o tipo
do objeto ou pesquisar atravs do boto ... exibido aps a propriedade receber o foco.
Ser aberta uma janela para informar qual o esteretipo do objeto, como a telaLogin uma
interface de usurio, o esteretipo da mesma ser o boundary. Escolha boundary e
clique em Ok para confirmar (ver figura 16).


Figura 16 Selecionando um esteretipo para um objeto

Ainda com o foco no objeto telaLogin, e explorando as suas propriedades, temos a
seguir a propriedade Visibility, esta propriedade indica a visibilidade deste objeto para com
os demais objetos do sistema, esta propriedade comum em outros elementos do
diagrama. O valor para a propriedade Visibility pode variar entre PUBLIC, PROTECTED,
PRIVATE e PACKAGE. Mantenha a visibilidade do objeto como PUBLIC.
Logo na sequncia temos a propriedade Classifier, nesta propriedade onde
indicamos qual a classe deste objeto, como dissemos anteriormente, no obrigatrio
identificar a classe, porm, neste exemplo vamos indicar a classe telaLogin. Porm esta
classe ainda no existe no escopo do projeto de diagramas do StarUML, teremos que cria-la,
faa como fora feito para criar o ator, clique com o direito do mouse em
<<useCaseModel>> Use Case Model e escolha as seguintes opes (Add/ Class). Defina
no painel Properties o nome da classe como telaLogin e o esteretipo da mesma como
boundary.
Aps ter criado a classe telaLogin selecione novamente o objeto telaLogin no diagrama de
sequncia. No painel Properties, selecione a propriedade Classifier e clique no boto ...
para selecionar qual a classe para o objeto. Ir abrir uma janela de busca, com uma estrutura
semelhante a do painel Model Explorer. Clique duas vezes no item <<useCaseModel>>
Use Case Model para abrir suas opes. Sero apresentadas duas opes, o ator Usuario e
a classe telaLogin que criamos. A classe telaLogin estar indicando o seu esteretipo com o
prefixo <<boundary>> antes de seu nome. Selecione o item da telaLogin e clique em Ok
para confirmar. Note que a representao do objeto telaLogin mudou, agora est
representado com o seu esteretipo, seu nome e sua classe separada do nome pelo sinal de
dois pontos :.
Para completar nosso exemplo ainda falta adicionar dois objetos ao nosso
diagrama, so eles: usurios que a entidade que armazena as informaes dos usurios do
sistema e a interface principal do sistema, que ser chama caso o login efetuado pelo
Usurio esteja correto.
Portanto crie a classe usurios com o esteretipo entity e a classe
telaPrincipal com o esteretipo boundary. Para criarmos os objetos destas classes no
diagrama basta arrastarmos o item criado no painel Model Explorer com os nomes de suas
respectivas classes (ver figura 17), desta forma o objeto ser criado no diagrama com suas
propriedades j configuradas seguindo o esteretipo de sua classe.


Figura 17 Painel Model Explorer com as classes criadas


Criando as mensagens

Para criar mensagens entre os objetos do diagrama, necessrio saber quem est
iniciando a mensagem, ou seja, de qual elemento a origem da mensagem, e logicamente
devemos ter em mente qual o destino desta mensagem, que o objeto que ir executar
algum mtodo ou receber algum valor retorno.
Vamos criar a primeira mensagem do diagrama, que a interao entre o ator
Usuario e o objeto telaLogin. Selecione no painel Toolbox o elemento Stimulus, e na rea de
desenho, clique na linha de vida do objeto Usuario (ator) e sem soltar o boto do mouse,
arraste at a linha de vida do objeto telaLogin. Ser criada uma interao entre estes dois
objetos, logo aps soltar o boto do mouse j possvel escrever o nome da mensagem, ou
seja, o possvel nome de algum mtodo ou funo da classe do tal objeto.
Na tabela 1, esto especificadas as informaes e as sequncias das mensagens do
diagrama de exemplo. Portanto nesta primeira mensagem iremos definir como nome,
informaDados, no preciso informar seus parmetros nesta etapa, pois iremos utilizar o
painel Properties para isso, porm possvel faz-lo.
Mantenha o foco na mensagem que acabamos de criar, clicando-a com o ponteiro
do mouse, e caso ainda no tenha preenchido o nome da mensagem aps cria-la pode
faz-lo atravs da propriedade Name. Mantenha a sua propriedade ActionKind como Call,
pois esta mensagem representa a chamada de um mtodo na classe telaLogin. Mantenha a
propriedade Visibility como PUBLIC. No grupo de propriedades Detail, defina na
propriedade Arguments os parmetros passados na mensagem, neste caso (login,
senha). Esta mensagem j est configurada. Porm, interessante conhecer a utilizao
das demais propriedades do grupo Detail do elemento Stimulus.
A propriedade Return possibilita indicar um atributo que ir receber o valor de
retorno da mensagem, por exemplo, usuarioOk na mensagem 2. Na propriedade Iteration
pode-se informar quantas vezes esta mensagem deve repetir, por exemplo, se digitar o
nmero 5, ser representado da seguinte forma na mensagem: *[5]. Na propriedade Branch
pode-se informar uma condio verificar se a mensagem ser ou no chamada, por
exemplo, usurio == True escrito nesta propriedade, ser representado da seguinte forma:
[usuarioOk == True].
Utilize a tabela 1 para criar as demais mensagens na tela, prestando ateno de
onde parte a mensagem e para onde vai, e claro definindo corretamente o seu tipo de ao
e parmetros. Uma ltima observao sobre as mensagens, que quando a origem e o
destino da mensagem forem o mesmo objeto do diagrama, por exemplo, as mensagens 4, 5
e 7 da tabela 1, utilize o elemento SelfStimulus, ou caso ainda queira utilizar o mesmo
elemento Stimulus basta clicar e arrastar o ponteiro do mouse pela prpria linha de vida do
objeto, que ser criada uma auto mensagem.
Caso em seu diagrama ainda no tenha aparecido na representao das
mensagens os parmetros das mesmas, isto pode ser configurado nas propriedades do
diagrama de sequncia como tambm a exibio ou no dos nmeros da sequncia das
mensagens. Clique numa rea em branco do desenho para focar o diagrama, em seguida
poder ver trs propriedades no grupo Detail do painel Properties, so elas:
ShowSequenceNumber, MessageSingatur e ShowActivation. Elas servem respectivamente
para Exibir ou no os nmeros que representam a sequncia das mensagens, controla o que
ser exibido junto com o nome da mensagem em sua representao, por padro vem
definido NONE, altere para NAMEANDTYPE, caso queira de seja exibido os parmetros na
representao da mensagem e por ltimo controla a exibio ou no das barras de ativao
das mensagens.


Tabela 1 Lista de mensagens utilizadas no exemplo


Criando os frames

Para criar frames temos trs tipos de elementos, so eles:
Frame: Este apenas um quadro comum, que indica um tipo de
agrupamento de mensagens, porm, apenas o frame no possvel estipular uma
condio, como um frame de tipo Opt, ou outro que utilize uma condio.
Interation Operand: Este um quadro invisvel no desenho do
diagrama. Ele associado ao frame, nele pode ser adicionada uma condio para a
interao das mensagens. Porm, ele no pode ser adicionado sozinho ao diagrama,
necessariamente deve ser vinculado a um elemento Combined Fragment.
Combined Fragment: Como o prprio nome sugere, este um
elemento combinado, ele a juno do Frame com o elemento Interation Operand,
ou seja, este o elemento que teremos que utilizar caso queiramos adicionar uma
condio para que as mensagens agrupadas por nossos frames entrem no fluxo do
diagrama. Neste elemento podem ter mais de um Interation Operand, como o
caso do tipo de frame Alt, que executa mensagens caso a condio seja atendida e
tambm executa mensagens caso no seja atendida a mesma.
Como em nosso exemplo na figura 13 temos dois frames com condies. Iremos
utilizar o elemento Combined Fragment. Portanto adicione o primeiro elemento ao desenho,
este ser um frame de tipo Loop. Como sabemos que o mesmo se compe de dois
elementos, Frame e Combined Operand, o ttulo o Frame e o centro do quadro o
elemento Interation Operand acoplado ao Frame. Para alterarmos as propriedades do
Frame, teremos que acessar sua propriedade Interaction Operator no painel Properties e
alter-la para o tipo Loop. A propriedade Name indica uma descrio para o Frame, no
exemplo, esta mesma fora preenchida com a seguinte descrio: Validar Usurio. Para
incluirmos uma condio a este frame, clique no centro do mesmo, e no painel Properties
acesse a propriedade Guard para incluir a condio usuarioOk == False, ou seja, enquanto
esta condio for verdadeira o loop ser realizado. Caso ainda no tenha posicionado este
frame no desenho, faa-o como est no exemplo.
O prximo frame do tipo Alt, ou seja, simula uma estrutura de deciso If e Else.
Adicione mais um elemento Combined Fragment ao desenho. Clique no ttulo do quadro
para alterarmos sua propriedade Interaction Operator para Alt. Apague o texto que tiver na
propriedade Name. Selecione o centro do quadro para adicionarmos uma condio na
propriedade Guard no painel Properties. Adicione a condio usuarioOk == True.
Notamos que ainda temos apenas um quadro neste Frame tipo Alt, precisamos de mais um
quadro para englobar as mensagens que sero executadas caso a condio no primeiro
quadro no seja atendida. Para isso clique no elemento Interation Operand e clique em
seguida no frame do tipo Alt. Isso ir criar uma diviso no mesmo, uma linha tracejada ir
determinar onde termina o fluxo Caso Verdade e comea o fluxo Caso Falso. Percebe-se
que so elementos distintos, porm, unidos dentro do frame. O segundo fluxo criado, pode
tambm ter uma condio na propriedade Guard, porm, no necessrio, tendo em vista
que j se trata de uma estrutura de deciso. No exemplo da figura 13 foi inserido um texto
na propriedade Guard deste segundo quadro, Caso Contrrio.

Concluso

Neste artigo apresentamos alguns conceitos de mais uma ferramenta da UML, o
diagrama de sequncia. Este um diagrama muito til para identificar em ordem
cronolgica, as mensagens que so passadas entre um objeto e outro no escopo de uma
determinada situao, quase sempre um caso de uso. Demonstramos seus elementos e as
caractersticas de cada um. Demonstramos tambm um exemplo de utilizao e na parte
prtica do artigo ensinamos como montar o exemplo na ferramenta case StarUML.
Espero que tenham gostado do artigo e que tenha sido til. Um abrao a todos e
at mais.


Fonte: http://www.theclub.com.br/restrito/revistas/201308/umld1308.aspx

Вам также может понравиться