Académique Documents
Professionnel Documents
Culture Documents
Captulo 1
Definio
A UML (Unified Modeling Language, ou, traduzindo, Linguagem de Modelagem
Unificada) uma linguagem que serve para especificar, construir, visualizar e documentar os
artefatos de um sistema.
Viso Histrica
Na primeira dcada de 1990, houve uma proliferao de mtodos e notaes para a
modelagem segundo a abordagem orientada a objetos. Foi quando se percebeu a necessidade
de existncia de uma linguagem que viesse a torna-se norma, sendo aceita e utilizada quer
pela indstria, quer pelos ambientes acadmicos.
Surgiram, dessa forma, alguns esforos no sentido de normalidade, sendo que a UML
apareceu, em 1996, mais bem posicionada como a linguagem unificadora de notaes,
diagramas, e formas de representao.
Resumo histrico
- 1994 Rumbaugh (OMT) se uniu ao Grady Booch inteno de integrar seus
mtodos
- Conferencia OOPSLA95 1 descrio de seu mtodo unificado
- Ivar Jacobson (OOSE) se uniu a eles
- 1996 Trs amigos 1 Verso da UML
- OMG padronizao do mtodo
- Varias propostas de outras organizaes Rational Software - verso 1.0 da UML
- Verso 1.1 da UML adotada como padro
- 1999 verso 1.3 torna-se publica
Modelagem: Objetivos
Guia para a construo do sistema modelos documentam as decises tomadas
Linguagem comum entre desenvolvedores
Uso de UML
CASE Aderir ao padro da ferramenta
Uso de diagrama para comunicao
Ferramentas Case
Apostila da disciplina de Anlise de Programa elaborada pela professora Juliana Frau
Rational Rose
TogetherSoft
ArgoUML
Poseidon
Jude
Orientao a Objetos
Orientao a objetos uma nova maneira de pensar os problemas de linguagens de
informao utilizando modelos organizados a partir do mundo rela. O artefato-base o
objeto, capaz de combinar estrutura e comportamento em uma nica entidade. A
orientao a objetos uma metodologia de programao, assim como a procedimental,
orientada a eventos e outros fenmenos. Tudo o que podemos ver no mundo real
considerado um objeto com atributos e procedimentos.
Classe
Representa um conjunto de objetos com caractersticas semelhantes. Uma classe
define o comportamento dos objetos por meio de mtodos, definindo, os estados que ele
capaz de manter mediante atributos. Por exemplo, a classe Pessoa poderia ter os objetos
(instncias) Carolina, Izilda, Lucas, Ricardo e Paulo.
Captulo 2
Diagrama de Caso de Uso
Um caso de uso descreve uma seqncia de aes que representam um cenrio
principal (perfeito) e cenrios alternativos, com o objetivo de demonstrar o comportamento
de um sistema (ou parte dele), atravs de interaes com atores.
Uma vez que o desenvolvedor levante os requisitos com o usurio, h a necessidade
de document-los, no s para entendimento e validao de ambas as partes, como para
servir de base. A documentao dos requisitos evita que informaes importantes no se
percam, sendo descobertas apenas ao apresentar o produto final ao usurio.
Utilizando a modelagem de casos de uso, o primeiro passo do desenvolvedor separar
as funcionalidades do sistema. Destas funcionalidades, devemos agrupar um conjunto de
aes que tenham um objetivo bem definido.
Suponhamos, num sistema de vendas de uma loja de roupa, que sejam tarefas
distintas e bem definidas: consultar informaes sobre o produto, efetuar reserva, emitir
comprovante de reserva, efetuar venda, emitir nota fiscal, realizar fechamento dirio do caixa,
etc. Cada uma destas tarefas possui um conjunto de aes que precisam ser executadas para
que o objetivo da tarefa seja alcanado. No caso de efetuar venda, preciso informar a
identificao da vendedora, a identificao do produto, quantidade vendida, etc. Ao
pensarmos nessas aes realizadas numa rotina sem problemas, estamos lidando com um
cenrio perfeito, que ser o nosso cenrio principal.
O cenrio principal descreve uma seqncia de aes que sero executadas
considerando que nada de errado ocorrer durante a execuo da seqncia.
Exemplo: Emitir saldo em um terminal caixa eletrnico
Cenrio Principal
1.
O sistema realiza a leitura do carto magntico do correntista.
2.
O sistema solicita a digitao da senha. O correntista digita a senha.
3.
O sistema valida a senha.
4.
O correntista seleciona a opo de saldo
5.
O sistema questiona o tipo de saldo: conta corrente, poupana e aplicaes.
6.
O sistema processa e mostra o saldo solicitado pelo cliente
No exemplo, temos um cenrio perfeito, no qual nada ocorre de errado. Todavia, o
mundo no perfeito, muito menos as transaes de um sistema. As excees so
representadas com cenrios alternativos. Por exemplo: considerando o cenrio principal da
emisso de saldo em um Caixa Eletrnico, poderamos modelar os cenrios alternativos.
Alternativa: Problemas na leitura do carto magntico
1a) Se o sistema no conseguir ler os dados do carto magntico, tentar nova leitura
por, no mximo, mais duas vezes.
Alternativa: Senha invalida
3a) Se a senha digitada pelo correntista no for igual a senha cadastrada no sistema,
informar ao mesmo e solicitar nova digitao. Esse processo pode ser repetido por no mximo
trs tentativas (incluindo a primeira). Aps a terceira tentativa, a conta dever ser bloqueada e
o caso de uso encerrado. Include Bloquear Conta.
Exemplos:
Exemplos:
Obs.: O nome do caso de usado pode ser colocado dentro ou abaixo dele.
Dicas:
Dar como nome aos casos de uso, frases verbais curtas no infinitivo (emprestar
material) ou gerndio (emprestando material). Pode ser utilizada qualquer uma dessas formas
de nomenclatura, porm, deve-se prezar pela padronizao, ou seja, se for escolhido uma das
formas, deve-se utilizar em toda a modelagem.
3 Associao de Extenso: um tipo de associao que pode ser utilizado em
diagramas de caso de uso. Neste relacionamento, a descrio de caso de uso pode ser
estendida para outros casos de uso, atravs de associao de extenso.
Representao:
Exemplos:
Associao
Representa a interao do ator com o caso de uso, ou seja, a comunicao entre
atores e casos de uso, por meio do envio e recebimento de mensagens.
Generalizao
Ocorre entre casos de uso e atores.
considerado quando temos dois elementos semelhantes, mas como um deles
realizando algo a mais.
Extenso (Extend)
Um relacionamento de extenso entre casos de uso indica que um deles ter seu
procedimento acrescido, em um ponto de extenso, de outro caso de uso, identificado como
base.
Os pontos de extenso so rtulos que aparecem nos cenrios do caso de uso base.
permitido colocar diversos pontos de extenso num mesmo caso de uso, inclusive repetir um
mesmo ponto de extenso.
Utilizada para expressar rotinas de exceo e pra descrever cenrios opcionais de um
Caso de Uso. Os Casos estendidos descrevem cenrios que somente ocorrero em uma
situao especfica, se uma determinada condio for satisfeita.
Incluso (Include)
Indica que um deles ter seu procedimento copiado num local especificado no outro
caso de uso. Esse tipo de relacionamento utilizado quando existirem cenrios cujas aes
servem a mais de um caso de uso.
Mais do que evitar a cpia de trechos idnticos, ganhamos tempo de modelagem e
tambm de implementao ao trabalhar com casos de uso de incluso.
Utilizada para expresso rotinas de fluxo alternativo.
Captulo 3
Diagrama de classe
Aps extrairmos dos requisitos os objetos da aplicao, precisaremos separar e
classificar suas caractersticas, modelando, por conseguinte, as classes do sistema. Entretanto
a essncia de um sistema no est apenas em suas classes, mas principalmente em seus
relacionamentos.
As classes so declaradas no diagrama de classes, mas so usadas em muitos outros
diagramas. Uma classe representada como um retngulo subdividido em trs
compartimentos, separados por linhas horizontais que nesta ordem armazenam:
O nome da classe e outras propriedades gerais da mesma, incluindo
esteretipos;
Lista de atributos;
Lista de operaes
Classes podem se relacionar com outras atravs de diversas maneiras: associao
(conectadas entre si), dependncia (uma classe depende ou usa outra classe), especializao
(uma classe uma especializao de outra classe), ou em pacotes (classes agrupadas por
caractersticas similares).
Todos estes relacionamentos so mostrados no diagrama de classes juntamente com
as suas estruturas internas, que so os atributos e operaes. O diagrama de classes
considerado esttico j que a estrutura descrita sempre vlida em qualquer ponto do ciclo de
vida do sistema. Um sistema normalmente possui alguns diagramas de classes, j que no so
todas as classes que esto inseridas em um nico diagrama e uma certa classe pode participar
de vrios diagramas de classes.
Visibilidade
A visibilidade identifica por quem uma propriedade (atributo ou operao) pode ser
utilizada.
# ou protected
- ou private
~ ou package
Atributos e Operaes
Depois de identificar os objetos (ou conceitos) interessantes, temos que definir as
propriedades deles que queremos representar. Estas propriedades podem ser dados
(atributos) ou operaes.
Um atributo representa uma propriedade que todos os objetos da classe tm (por
exemplo, todas as mesas tm uma altura, numero de pernas, posio da mesa na sala, etc.).
Mas cada objeto ter valores particulares para seus atributos (algumas mesas so baixas,
outras so altas, etc.). O valor de um atributo pode mudar com o tempo (posio da mesa na
sala), a lista de atributos geralmente no muda.
Dentro de uma classe todos os atributos devem ter nomes diferentes. Classes
diferentes podem possuir atributos com o mesmo nome (em duas classes diferentes) devem
identificar a mesma coisa. Por exemplo, um professor e uma sala ambos podem ter um
atributo numero porque ele significa a mesma coisa nas duas classes, mas a nota que um
aluno consegue numa disciplina e um atributo para gravas anotaes sobre uma sala (ex.: luz
no funciona nesta sala), no podem ambos ser chamados de nota porque as duas coisas so
diferentes.
O nome de um atributo um texto contendo letras, dgitos e algumas marcas de
pontuao. A UML sugere capitalizar todas as primeiras letras das palavras, exceto a primeira
palavra (ex.: nome; codigoPessoaFisica).
Conceitos
1 Classe
uma abstrao de informaes da realidade.
Exemplo:
2 Associao Simples
um relacionamento ou conexo entre duas classes
Apostila da disciplina de Anlise de Programa elaborada pela professora Juliana Frau
Exemplo:
3 Papel
o papel do relacionamento
Exemplo:
4 Multiplicidade
Exatamente uma 1
Vrios (zero ou mais) 0..*
Opcional (zero ou uma) 0..1
Especificada Numericamente n..m
5 Direcionamento de Leitura
Direita para esquerda
Esquerda para direita
Exemplo:
6 Agregao
um relacionamento de todo-parte, onde o todo no precisa das partes para existir.
Exemplo:
7 Composio
um relacionamento de todo-parte, onde o todo precisa das partes para existir.
Exemplo:
Apostila da disciplina de Anlise de Programa elaborada pela professora Juliana Frau
9 Restries
Representa restries relacionadas s classes.
Exemplo:
10 Nota
Trata-se de colocao de textos, informaes e descries importantes com relao s
classes.
Exemplo:
11 Classe de associao
Trata-se de uma associao modelada com uma classe.
A classe de associao s existe se existir o relacionamento entre duas classes que
geram informaes que no podem ser armazenadas nas mesmas.
Apostila da disciplina de Anlise de Programa elaborada pela professora Juliana Frau
Exemplo:
Captulo 4
Diagrama de Objetos
Um diagrama de objetos consiste numa instancia do diagrama de classes, no qual para
cada classe temos um objeto (sua instancia) em um determinado ponto do tempo e so muito
teis para facilitar a modelagem de estruturas complexas de dados.
O diagrama de objetos pode tambm auxiliar o desenvolvedor no momento de
identificar problemas na execuo de uma aplicao. Durante o debugging, pode-se parar a
execuo e paralelamente mapear, num diagrama de objetos, os objetos que esto sendo
manipulados, expandindo seus relacionamentos e alguns objetos vizinhos.
A representao grfica de um objeto similar de uma classe. Consiste num
retngulo com di compartimentos. O primeiro mostra o nome do objeto e o segundo mostra
os atributos, um em cada linha, com seus valores.
O nome do objeto deve ser sublinhado, na seguinte notao:
nome do objeto: nome da classe
Por exemplo:
coordenadaFigura1: Coordenada
possvel ainda omitir o nome do objeto (preservando os dois pontos), representando
um objeto annimo ou omitir o nome da classe (juntamente com os dois pontos). Em qualquer
um desses casos, mantm-se o sublinhado.
Por exemplo:
: Coordenada
coordenadaFigura1:
Atributos cujos valores no sejam relevantes para a modelagem pode ser omitidos.
Captulo 5
Diagramas de Interao
Interao corresponde a um conjunto de mensagens trocadas entre objetos, com o
objetivo de alcanar determinado propsito, respeitando-se o contexto do sistema.
Um diagrama de interao mostra as interaes por meio de uma viso dinmica do
sistema. Por representar um sistema, subsistema, operao, classe ou cenrio de caso de uso,
sendo essa ultima representao a mais freqente. Um diagrama de interao formado
basicamente, por objetos, relacionamentos e mensagens. Os diagramas de interao se
apresentam em duas formas:
Diagrama de seqncia
Diagrama de colaborao
Esses diagramas possuem cada qual alguns aspectos que os diferenciam. O diagrama
de seqncia enfatiza a seqncia de mensagens dentro de uma linha de tempo, enquanto
que o de colaborao enfatiza o relacionamento estrutural entre os objetos, sem se preocupar
com o tempo determinado para cada interao.
Diagrama de seqncias
Para melhor ilustrar a interao de um Diagrama de Seqncias, vamos imaginar um
processo X qualquer de uma empresa, na qual trabalham os funcionrios Antnio, Joo e
Carlos. Num dado instante, o Gerente da empresa solicita ao Antnio que prepare um relatrio
de comisses para um determinado ms. Entretanto, para que o Antnio consiga preparar
esse relatrio, ele precisa do total de cada vendedor, obtido no ms em foco, e essa
informao quem tem o Joo. Ento, Antnio passa um e-mail para o Joo pedindo essa
informao.
Joo quando recebe essa mensagem (eletrnica) inicia os procedimentos necessrios
para relacionar as vendas de cada vendedor. Todavia, ele s possui em mos a matrcula de
cada vendedor e seu total vendido. Mas ele pode conseguir o nome de cada vendedor com o
Carlos. Assim, Joo passa um e-mail para o Carlos, enviando no corpo da mensagem a lista de
matrculas que ele possui, solicitando que seu colega diga a quem pertence.
Carlos, ao receber a mensagem, procura em suas fichas os nomes dos vendedores. De
posse desses nomes, ele responde ao e-mail de Joo, acrescentando os nomes dos
vendedores. Joo, ao receber a resposta de Carlos, responde a mensagem original de Antnio,
acrescentando no corpo da mensagem a lista de vendedores (com matrcula e nome)
acompanhada dos totais de vendas de cada um.
Antnio, feliz da vida pois a equipe bem entrosada, abre a mensagem de resposta,
pega as informaes recebidas e coloca em seu relatrio. Nada como uma empresa que
funciona! Guardadas as devidas propores, se trocarmos os funcionrios Antnio, Joo e
Carlos pelas responsabilidades que eles possuem, temos a encenao da troca de mensagens
entre objetos em um diagrama de seqncias.
Antnio um captador e transmissor de informaes; ser nossa tela de Relatrio.
Joo responsvel por controlar as vendas do ms; ser nosso objeto Vendas. Carlos
responsvel por controlar o cadastro dos vendedores; ser nosso objeto vendedor.
A representao grfica de um diagrama de seqncias baseada em duas dimenses.
A primeira dimenso vertical e representa as mensagens trocadas no decorrer de um tempo
de vida (eixo Y). A segunda dimenso horizontal e representa os objetos participantes das
interaes (eixo X). As mensagens correspondem a chamadas de servios dos objetos, ou seja,
a chamadas de suas operaes.
outro lado, um objeto que continuar a existir, mesmo aps a finalizao da transao do
diagrama, tem sua linha de vida estendida para alm da ltima seta de mensagem.
A criao ou destruio de um objeto dentro do perodo de tempo total representado
pelo diagrama so mostradas desenhando-se o incio ou fim da linha de vida do objeto no
ponto determinado pela criao ou destruio. No caso da criao, a seta que representa essa
mensagem desenhada de forma a apontar sua cabea para o smbolo do objeto. No caso da
destruio, a seta que carrega essa mensagem direcionada a um grande "X" colocado no fim
da linha de vida. As mensagens de criao e destruio podem ser estereotipadas com
<<create>> e <<destroy>>, respectivamente.
Diagrama de colaborao
Os objetos so distribudos no diagrama de colaborao na ordem similar do
diagrama de seqncias, obedecendo seqncia de mensagens. A colaborao entre objetos
representada por uma ligao simples acompanhada de uma numerao seqencial e de
outras informaes como condies e iteraes.
Em virtude da forma como um diagrama de colaborao apresentado, identificamos
a seqncia temporal das mensagens por meio de seqncias numricas. A autochamada do
diagrama de seqncias identificado como autodelegao no diagrama de colaborao e
representado como um arco ligado ao objeto.
Na figura abaixo, a primeira mensagem a chamada do mtodo obterGrade() para o
objeto cursoX. O cdigo deste mtodo para ser concludo necessita de informaes das
disciplinas do referido curso e das turmas ativas. Ento, para cada disciplina chamado o
mtodo obterInfDisciplina() do objeto disc1. O objeto disc1, por sua vez, necessita de
informaes dos pr-requisitos das disciplinas. Ento, passa uma mensagem para si mesmo,
chamando o mtodo obterPreRequisito(). O objeto cursoX, depois que recebe a resposta de
sua mensagem n 2, chama o mtodo obterTurmasAtivas() que pertence ao objeto turma 1.
Repare que uma grande diferena entre o Diagrama de Colaborao e o de Seqncias
exatamente o que ocorre com o objeto cursoX. No fica explcito no diagrama as mensagens
de retorno e o momento em que isso ocorre.
Captulo 6
Diagrama de Estados
O diagrama de grfico de estados descreve o comportamento de objetos como reao
a eventos discretos (como por exemplo sinais e invocao de operaes), por meio de
seqncias de estados e aes que ocorrem durante a sua vida.
Um diagrama de grfico de estados tem por objetivo mostrar uma mquina de estado.
Uma mquina de estado consiste num comportamento que especifica a seqncia de estados
que um objeto atravessa durante sua vida, em resposta a eventos, junto com suas
responsabilidades e aes.
Estado
Um estado uma condio ou situao existente na vida de um objeto durante a qual
o estado satisfaz alguma condio, executa alguma atividade ou espera por algum evento.
Um estado representado graficamente como um retngulo com cantos arredondados. O nome do estado colocado no centro do mesmo, caso ele no esteja
subdividido em compartimentos. Veja na figura abaixo a representao de um estado:
Vou utilizar em seguida um exemplo do nosso mundo real para que vocs possam
abstrair mais facilmente o conceito de estados.
Vamos pensar na vida de uma pessoa do nascimento at a terceira idade. Veja, de
forma sucinta, como seria parte do nosso diagrama de estados.
Para assumirmos o primeiro estado de nossa existncia, precisamos do evento nascer.
J nascemos como beb e a primeira ao que temos reconhecer nossa me, pelo toque, voz
e/ou cheiro. Durante esse perodo inicial, o beb, alm de dormir e mamar, tambm
desenvolve suas habilidades - principalmente motoras: aprende a sentar, engatinhar, falar e
andar. S que ao final dessa fase, quando ele j tem uma personalidade bem formada, j
podemos considerar nosso beb como uma pequenina criana. Nesse perodo no "estado de
criana", recebemos muitos estmulos e executamos muitas aes. Mas pelo foco que quero
dar nesse primeiro exemplo, coloquei como atividade principal: brincar. At que chega a dita
puberdade, que transforma nossas crianas em adolescentes. Na sada do estado de criana,
algumas atitudes so tomadas: se criana do sexo feminino, abandonar as bonecas; se do sexo
masculino, abandonar os carrinhos (ou as bolinhas de gude).
J ao entrar na fase de adolescncia, a primeira ao de nossa "ps-criana" estabelecer seu territrio: o quarto deles, as coisas deles, os direitos deles, etc. No estado de
adolescente h vrias coisas que podem ser feitas, mas decidi colocar a operao namorar. Em
determinado momento da vida (que no sei precisar qual e no sei se algum consegue
determinar), o adolescente passa para o estado adulto. Ou, ento, por uma precipitao da
sua ao principal (namorar), casa-se sem se tornar adulto.
Transies
Uma transio um relacionamento entre dois estados indicando que houve uma
mudana de estado e determinadas aes sero executadas, quando um evento especfico
ocorrer, garantindo que condies foram satisfeitas. A transio disparada quando ocorre a
mudana de estado.
representada graficamente como uma linha slida na qual o estado de partida
identificado como estado de origem e o estado-alvo o estado de destino. A linha da transio
finaliza com uma seta. Pode ser identificada por uma string que possui o seguinte formato:
assinatura-do-evento [ condio-de-guarda ] / expresso-ao
A assinatura-do-evento descreve um evento com seus argumentos, no seguinte
formato:
nome-do-evento (lista de parmetros separada por vrgula )
Exemplo: ChecarEstoque(produto)
ocorre na transio para o estado Habilitando Segunda Chamada, que s ter incio se a
condio de guarda nota = "FT" for verdadeira, ou seja, se no tiver havido nota pois o aluno
faltou.
Estado composto
Um estado composto um estado que possui uma decomposio grfica em dois ou
mais subestados concorrentes (sobrepostos) ou sequenciais (disjuntos).Cada regio de um
estado pode possuir estados inicial e final.
Uma transio para um estado composto representa uma transio para o estado
inicial do referido estado composto. Uma transio para um estado final representa a
concluso da atividade na regio do estado composto. Vamos supor um sistema de avaliao
no qual o aluno responda as questes de sua prova on-line. Vamos pensar para esse sistema
em um objeto Prova (veja figura abaixo). Durante a vida deste objeto, no momento que o
aluno responde s questes, o objeto estar passando do estado Aguardando Escolha de
Questo para Aguardando Resposta de Questo e assim por diante. Todavia, em paralelo com
essas respostas, temos o estado Checando Trmino da Prova, que ocorre quando o tempo
decorrido de prova se iguala ao valor do atributo tempoProva. Neste caso, estamos diante de
subestados concorrentes, nos quais os estados ocorrem simultaneamente.
Captulo 7
Diagrama de Atividade
Um diagrama de atividades um caso especial do diagrama de estados no qual todos
(ou pelo menos a maioria) os estados so aes ou subatividades e no qual todas (ou pelo
menos a maioria) as transies so disparadas pela concluso de aes ou subatividades nos
estados de origem. Este diagrama tem por propsito focalizar um fluxo de atividades que
ocorrem internamente em um processamento, dentro de um perodo de tempo.
Atividade
Na figura abaixo se pode ver o smbolo de uma atividade, este smbolo o estado de
atividade, ou simplesmente atividade. Uma atividade um estado de estar fazendo algo:
tanto um processo de mundo real, tal como datilografar uma carta, ou a execuo de uma
rotina de software, tal como um mtodo em uma classe.
Incio do diagrama
O incio do diagrama de atividades marcado com um sinal de um crculo preenchido.
Este smbolo o mesmo para o diagrama de estados. Veja abaixo o smbolo grfico:
Fim do diagrama
Assim como para indicar o incio do diagrama de atividades h um smbolo para indicar
o fim deste diagrama e este smbolo utilizado tanto para o diagrama de atividades como para
o diagrama de estados. A representao um crculo preenchido com um circulo contornando
o mesmo. Veja abaixo o smbolo grfico:
Transies
Para ligar as atividades e indicar a seqncia utilizamos fechas que representam as
transies entre as atividades bem como a transio entre o incio e a primeira atividade, bem
como das atividades para o fim do diagrama. Veja abaixo a representao grfica juntamente
com outros itens do diagrama.
Desvios
Comportamento condicional delineado por desvios (branches) e intercalaes
(merges).
Um desvio (branch) uma transio de entrada nica e vrias transies de sada
guardadas. Somente uma transio de sada pode ser tomada, de modo que os guardas devem
ser mutuamente exclusivos. A utilizao de [else] como um guarda indica que a transio
"else" dever ser usada se todos os outros guardas do desvio forem falsos. Veja na figura
abaixo a representao grfica de um desvio (branch):
Uma intercalao (merge) tem mltiplas transies de entrada e uma nica sada. Um
merge marca o final de um comportamento condicional iniciado por um branch. Veja abaixo a
representao grfica:
Separao e Unio
Comportamento paralelo indicado por separao (Forks) e unies (Joins). Iremos
agora ver este tipo de elemento pertencente ao diagrama de atividades.
Uma separao (Fork) tem uma transio de entrada e vrias transies de sada.
Quando uma transio de entrada acionada (triggered), todas as transies de sada so
executadas em paralelo. Veja o diagrama abaixo:
oportunidades para fazer coisas em paralelo. Isso pode melhorar a eficincia e o retorno de
processos de negcio.
Os diagramas de atividades tambm so teis para programas concorrentes, uma vez
que voc pode projetar graficamente quais caminhos (threads) voc tem e quando eles
precisam ser sincronizados. Quando voc tem comportamento paralelo, precisa sincronizar.
No podemos liberar a edio do arquivo at que ele seja completamente carregado.
Mostramos isso com a unio (join) antes da atividade Liberar edio do arquivo.
Com a unio (join), a transio seguinte efetuada somente quando todos os estados
nas transies de entrada tenham completado suas atividades.
Separao e unio devem se completar. No caso mais simples, isso significa que toda
vez que voc tiver uma separao, deve ter uma unio que una os threads iniciadas por
aquelas separaes. (Esta regra vem do fato de que um diagrama de atividades , atualmente,
uma forma de diagrama de estados).
Entretanto, existem vrias extenses para esta regra.
Um thread que sai de uma separao pode abrir-se em uma nova separao, com os
novos threads juntando-se antes de alcanar a unio da primeira separao.
Se um thread saindo de uma separao vai direto para outra separao, voc pode
remover a segunda separao e somente ter os threads da segunda separao saindo da
primeira separao. De modo semelhante, se uma unio vai direto para outra unio, voc
pode eliminar a primeira unio e ter as threads indo direto para a segunda. Isso uma forma
de simplificar o diagrama; ela tem o mesmo significado semntico como se as separaes e
unies extras estivessem l.
Existe uma exceo para a regra de que todos os estados de entrada em uma unio
devem ter terminado suas atividades, antes que a unio possa ser efetuada. Voc pode
acrescentar uma condio para um thread saindo de uma separao. O resultado um thread
condicional. Durante a execuo, se a condio de um thread condicional for falsa, este thread
e considerado completado no que diz respeito a unio. Veja na figura abaixo um exemplo:
Raias (Swimlanes)
Os diagramas de atividades dizem o que acontece, mas no dizem quem faz o que. Em
programao, isso significa que o diagrama no representa qual classe responsvel para cada
atividade.
Em modelagem de domnio, isso significa que o diagrama no representa que pessoas
ou departamentos so responsveis por cada atividade. Uma soluo, aqui, rotular cada
atividade com a classe ou pessoa responsvel. Isso funciona, mas no oferece a mesma clareza
que os diagramas de interao (estudaremos mais tarde) para mostrar a comunicao entre
objetos.
Raias so uma soluo para isso. Para usar raias, voc deve organizar seus diagramas
de atividades em zonas verticais separadas por linhas. Cada zona representa as
responsabilidades de uma classe especifica ou, um departamento especfico.
As raias so teis porque elas combinam a descrio de lgica do diagrama de
atividades com a descrio de responsabilidade do diagrama de interao. Entretanto, elas
podem ser difceis de serem projetadas em um diagrama complexo. Veja abaixo a
representao das raias.
Voc pode definir uma ligao para um objeto rotulando uma atividade com um nome
de objeto ou usando raias que dividem um diagrama de atividades em base em
responsabilidades, mas isso no tem a clareza simples de diagramas de interao
(estudaremos estes diagramas mais adiante no curso). Por esta razo, algumas pessoas sentem
que diagramas de atividades no so orientados a objetos e, portanto, so maus.
A tcnica pode ser muito til nas seguintes situaes:
Analisando um caso de uso. Neste estgio, no estou interessado em alocar aes aos
objetos; eu preciso simplesmente compreender que aes precisam acontecer e quais
so as dependncias comportamentais.
Compreendendo o workflow. Mesmo antes de iniciar os casos de uso, acredito que os
diagramas de atividades so muito teis para compreenso de um processo de
negcio. Posso, facilmente, projetar estes diagramas junto com especialistas do
negcio para compreender como o negcio funciona e como ele pode mudar.
Descrevendo um algoritmo seqencial complicado. Neste caso, um diagrama de
atividades no nada mais do que um flowchart em notao UML. Os prs e contras
comuns de flowcharts se aplicam aqui.
Lidando com aplicaes de processamento paralelo. Este tipo de diagrama, como j
foi mostrado pode ser utilizado para demonstrar atividades que devem ou podem
acontecer em paralelo.
No use diagramas de atividades nas seguintes situaes: