You are on page 1of 80

Modelação Dinâmica

Diagramas UML para modelação de comportamentos:

• Diagramas de Interacção
– Diagrama de SEQUÊNCIA: interacção e comunicação entre objectos,
preocupação central é o tempo

– Diagrama de COLABORAÇÃO: interacção e comunicação entre


objectos, preocupação central é o espaço

• Diagrama de ESTADO: estados e eventos, ciclos de vida

• Diagrama de ACTIVIDADES: interacção e comunicação entre


objectos, preocupação central é o trabalho

Engenharia de Software - ISEP 1


Modelação Dinâmica
• Diagramas de Interacção

• Diagrama de Sequência
– Representam a forma como os objectos interagem uns com os outros
– Focalizam-se nas sequências de mensagens
– Dois eixos: vertical = TEMPO ; horizontal = CLASSES intervenientes
– Classes representadas por rectângulos com nome sublinhado
– A comunicação entre os objectos é representada por linhas de mensagem,
horizontais entre as linhas do ciclo de vida dos objectos intervenientes

• Diagrama de Colaboração
– Focam as interacções assim como as ligações entre um conjunto de classes
cooperantes
– Refere-se ao espaço, enquanto o diagrama de sequência se refere ao tempo
– As classes são representadas por rectângulos; as ligações por linhas
– A uma ligação pode ser associada uma mensagem

Engenharia de Software - ISEP 2


• Diagrama de Estados
– Modelam ciclo de vida de objectos
• Estados e Transições
• Eventos que os afectam ao longo do tempo
• Associados a todas as classes que apresentem estados bem definidos e
comportamentos complexos

Diagrama de Actividades
– Modelam processos de negócio e workflow
São uma variante dos diagramas de estado
• As transições entre estados de acção são automáticas assim que todas as
actividades no estado acção são concluídas (representadas por uma seta)
• Condições, cláusulas e expressões nas transições
• Pontos de decisão (representadps por um losango)
• Evento (eventual) único entre o ponto inicial e a primeira acção
• Acções concorrentes; “Divisórias” (swimlanes)

Engenharia de Software - ISEP 3


Tipos de mensagens
– mensagem simples: utilizada
quando a natureza da mensagem
não é relevante.
– mensagem síncrona: indica que o
objecto remetente espera que o
objecto receptor processe a
mensagem antes de recomeçar o
seu processamento.
– mensagem assíncrona: objecto
remetente não espera a resposta
para prosseguir com o seu
processamento.
– mensagem de retorno: indica o
término de uma operação.

Engenharia de Software - ISEP 4


Tipos de acção para as mensagens

Call Invoca uma operação de um objecto (pode ser enviada ao


próprio objecto).Utilizado em mensagens sincronas

Return Retorna um valor para o emissor para mensagens sincronas ou


um sinal para as assincronas
Send Envia um sinal a um objecto.Utilizado em mensagens
assincronas

Create Cria um objecto ob1:C1

Destroy Destrói um objecto


ob1:C1

Engenharia de Software - ISEP 5


Sintaxe UML para mensagens
expressão-seqüência recorrência: v := mensagem
• Onde o termo recorrência pode ser uma condição ou uma repetição:
‘[’ cláusula-condição ‘]’
‘*’ ‘[’ cláusula-iteração ‘]’
• *[para cada f em F] desenhar()
• *[enquanto x>0] transformar(x)
• [senha é válida] abrirJanelaPrincipal()
• 1: adicionarItem(item)
• 3 [a > b]: trocar(a, b)
• 2 *: desenhar()
• 2 *[i := 1..10]: desenhar(i)
• 1.2.1: x := seleccionar(e)
Engenharia de Software - ISEP 6
Mensagens condicionais,
iteradas e com retorno
• O valor de retorno de uma mensagem síncrona pode ser indicado na
chamada, com atribuição :=, ou na mensagem de retorno
– Exemplo: ret := msg(args)
– Nome “ret” será usado em mensagens e condições a seguir
– Também se escrever “ret” na mensagem de retorno
• Uma mensagem condicional é indicada por uma condição de guarda
entre parêntesis rectos [ ]
– Exemplo: [x<0] invert(x,color)
– A mensagem só é enviada se a condição se verificar
– Condições permitem mostrar várias sequências alternativas num
único diagrama
• Uma mensagem iterada é indicada com asterisco *, seguido ou não
de uma fórmula de iteração
– Exemplo: *[i:=1..n] update(i)
Engenharia de Software - ISEP 7
Diagrama de Sequência
• Um diagrama de sequência mostra uma interacção, isto é, uma
sequência de mensagens trocadas entre vários objectos num
determinado contexto (caso de utilização, operação, etc.)
• Enfatiza a comunicação e passagem de controlo entre objectos ao longo do
tempo
• Uma barra de activação mostra o período de tempo durante o qual um
objecto está a executar uma acção, quer directamente quer indirectamente
através de um procedimento chamado
– inclui situação em que está á espera de retorno de uma chamada
síncrona
– não inclui situação em que um processo está adormecido à espera de
receber uma mensagem assíncrona que o acorde
• A sua indicação é opcional
• Retorno de chamada é implícito no fim da barra de activação
• Chamadas recursivas provocam barras empilhadas

Engenharia de Software - ISEP 8


Diagrama de Sequência
Objecto1: Objecto2: objecto3: :nome_da
nome_da classe

Nome do actor: classe


classe do actor

1.evento

2.operação 3.Operação
(lista de
parametros)

4.Operação 5.Operação
(lista de (lista de
parametros) parametros)

Engenharia de Software - ISEP 9


Diagrama de seqüência

Engenharia de Software - ISEP 10


Diagrama de Sequência - exemplo
OBJECTOS

T
E
M
P
O

Fonte: Grady Booch


Engenharia de Software - ISEP 11
Diagrama de Sequência - exemplo
: Servidor de : Fila de
: Computador : Impressora
Impressora espera

impressão [impressora livre]


impressão
[impressora ocupada] Objecto
Mensagem
Guarda ficheiro
A
{wait} Activação

Condição

Comentário
Etiqueta

Retorno Linha do
Engenharia de Software - ISEP Ciclo de Vida 12
Diagrama de Sequência - exemplo
:Janela de
Selecção de :Linha de :Item de
Pedidos :Pedido Pedido Stock
Quantidade
pedida
tratar()
* tratar()
e:=existe?(q)

[e=“sim"]retirar(q) Para repor


Para cada stock
linha do b:=baixo?()
pedido

[b=“sim”] criar()
e2:Encomenda

[e=“nao”] criar()
e1:Encomenda

Para poder criação de


satisfazer objecto
pedido
Engenharia de Software - ISEP 13
Exemplo:
Executar transacção com subtransacções concorrentes

e executar

criar t: Transacção
criar s1: Subtransacção
criar s2: Subtransacção
Adormecida à
espera de sinal
de sub-transacção sucesso
restam
subtransacções?
sucesso
restam
subtransacções?

auto-destruição

Engenharia de Software - ISEP 14


Diagrama de Sequência

Engenharia de Software - ISEP 15


Exemplo "Empréstimo"
: SIB
: Sócio : Funcionário

Pede publicação emprestada


Identifica publicação

Mostra restantes dados da publicação

Pede cartão de sócio


Mostra cartão de sócio

Identifica sócio

Mostra restantes dados do sócio

Confirma dados

Imprime requisição

Ent rega requisição para assinar

Devolve requisição assinada

Empresta publicação

Informa prazo para devolução

Engenharia de Software - ISEP 16


Diagrama de colaboração
• Mostra os objectos relevantes para a realização de um caso de uso
(ou cenário deste).
• Estruturalmente, é bastante semelhante a um diagrama de objectos.
– A diferença é que são adicionados setas e rótulos de
mensagens nas ligações entre esses objectos.
• objectos (nomeados e anônimos) e classes podem aparecer.
• As ligações (linhas) entre objectos correspondem a
relacionamentos existentes entre os objectos
• Não há como saber a ordem de envio das mensagens a não ser
pelas expressões de seqüência.
• Direcção de envio de mensagem indicada por uma seta próxima ao
rótulo da mensagem.
• Os objectos estão distribuídos em duas dimensões
– normalmente permite construir desenhos mais legíveis
comparativamente aos diagramas de seqüência.

Engenharia de Software - ISEP 17


Diagramas de Colaboração

• Instanciação de objectos
– {new} quando são criados durante a colaboração
– {destroyed} quando são destruídos durante a colaboração
– {transient} quando são criados e destruídos durante a colaboração
({new}{destroyed})
NewCustomer() [free memory] 1: Create()
:MainWindow :Customer{new}

3: Show(Customer) 2: Create()

:CustomerWindow
{transient}
3.1: Update(data)

Engenharia de Software - ISEP 18


Diagrama de colaboração -Multiobjectos
• Um multiobjecto é uma colecção de objectos de uma mesma
classe.
• Uma mensagem pode ser enviada para a colecção como um todo,
em vez de ser enviada para um único objecto da colecção.
• Um multiobjecto é representado graficamente através de dois
rectângulos superpostos.

Engenharia de Software - ISEP 19


Diagrama de colaboração
• Multiobjectos são implementados através de
alguma estrutura de dados que manipule um
conjunto de objectos.
– Em C++: templates list e set. Em Smalltalk: classe
Collection. Em Java: classe Vector.
• Algumas mensagens típicas para um multiobjecto:
– irParaPrimeiro()
– próximo()
– anterior() encontrar(identificador-único)
– adicionar(umobjecto)
– remover(umobjecto)
– tamanho()
Engenharia de Software - ISEP 20
Diagrama de Colaboração

Fonte: Grady Booch


Engenharia de Software - ISEP 21
Diagrama de Colaboração

Engenharia de Software - ISEP 22


Comparação entre diagramas de
sequência e de colaboração
• Diagrama de seqüência:
– Exibe as mensagens ordenadas no tempo.
– A visualização fica dificultada conforme o número de
objetos cresce (disposição em uma dimensão).
• Diagrama de colaboração:
– Exibe mensagens enfatizando relacionamentos.
– Melhor utilização do espaço (disposição em duas
dimensões).
• O diagrama de seqüência é equivalente ao
diagrama de colaboração
• Ferramentas CASE: transformação automatica.

Engenharia de Software - ISEP 23


Diagrama de Sequência
: Computador : Servidor de : Impressora : Fila
Im pressão

Im primir (arquivo) [Impressora Livre]


Im primir (arquivo)

[Impressora Ocupada]
Imprimir (arquivo)

Engenharia de Software - ISEP 24


Diagrama de Colaboração
: Computador
: Fila
[Impressora Ocupada]
1.2: Armazenar (arq)

1: Imprimir (arq)

[Impressora Livre]
: Servidor de 1.1: Imprimir (arq) : Impressora
Impressão

Engenharia de Software - ISEP 25


Diagrama de Sequência
Es te é um pr ogram a
CGI ou ISAPI

Pr oce s s ador de Inte r face com


Br ow s e r Se rvidor We b
pe didos o banco
Es tudante

Subm ete r for m ulár io


de pe dido pr e enchido

Codificar dados
do for m ulár io

Enviar dados
codificados Pr oce s s ar dados

Exe cutar
Enviar dados
proce s s ados

Cadastr ar pe dido

Cadas tr o OK

Ge r ar página
de confir m ação

Enviar página
Enviar página
Exibir página

Engenharia de Software - ISEP 26


Diagrama de Colaboração
1: codificarDados(dadosForm) 3: processarDados()

submeter(dadosForm) 2: enviarDadosCodificados(dados)
Browser Servidor Web
9: enviarPagina(pagina)

Estudante 8: enviarPagina(pag)

5: enviarDadosProc(dados)
4: executar()

Interface com Processador de


o banco pedidos
6: cadastrapedido(consSQL)

7: gerarPagResposta()

Engenharia de Software - ISEP 27


Diagrama de Transições de
Estados
• Através da análise das transições entre
estados dos objetos de um sistema de
software, podem-se prever todas as
possíveis operações realizadas, em
função de eventos que possam ocorrer.
• O diagrama da UML que é utilizado para
realizar esta análise é o diagrama de
transição de estado (DTE) ,ou
simplesmente Diagrama de Estados

Engenharia de Software - ISEP 28


Diagrama de Estados
(Statechart Diagram)

No R/C subir (andar) Subindo

Chegar ao R/C
andaro térreo Chegar ao andar subir (andar)

Ir para o
R/C
Descendo Chegar ao andar Parado
aandarandarandar

descer (andar)

tempo de espera Fonte: Grady Booch


Engenharia de Software - ISEP 29
Diagrama de Estados
• Um diagrama de estados especifica uma máquina de estados,
com estados (duradoiros e em número finito) e transições entre
estados (instantâneas) causadas por eventos (instantâneos)
• Pode também especificar as acções (instantâneas) e
actividades (duradoiras) realizadas em resposta a eventos ou
durante a permanência em estados, respectivamente
• Ciclo de vida de um objecto/sistema: as sequências de estados
por que pode passar durante a sua vida em resposta a eventos,
em conjunto com as respostas a esses eventos, ou seja:
– os estados possíveis (exemplo - estado civil: solteiro,
casado, ...)
– as transições de estado possíveis (exemplo: pode passar de
solteiro para casado, mas não o contrário)
– os eventos que causam essas transições (exemplo: o
casamento implica a passagem ao estado de casado)
– as acções do objecto em resposta a esses eventos (ex:
despedida de solteiro)
Engenharia de Software - ISEP 30
Estado
• Um estado é uma condição ou situação na vida de um objecto,
durante a qual o objecto satisfaz alguma condição, realiza alguma
actividade ou espera por algum evento
– Exemplo (relativamente ao estado civil de uma pessoa): solteira,
casada, ...
• Cada estado de um objecto é determinado pelos valores dos seus
atributos e (ou) pelas suas ligações com outros objectos.
• O estado inicial indica o estado de um objecto quando ele é criado.
Só pode haver um estado inicial .
• O estado final é representado como um círculo “eclipsado” e indica
o fim do ciclo de vida de um objecto. Este estado é opcional e pode
haver mais de um estado final.

Engenharia de Software - ISEP 31


Exemplo: Jogo de xadrez
Estado Transição

Vez das xeque-mate Vitória das pretas


brancas
paralisado
Empate
jog ada d as b rancas jogada das pretas

paralisado
Vez das Vitória das brancas
pretas xeque-mate

Estado inicial
(criação do objecto e início Estado final
da máquina de estados)
(fim da máquina de estados
e destruição do objecto)
Engenharia de Software - ISEP 32
Diagrama de Estados – Conceitos
• Uma actividade é uma computação não atómica que pode ser
interrompida por outros eventos.
• São elementos base dos Diagramas de actividades. Na
especificação de Estados são prefixadas pela palavra do.

• Uma acção é uma computação atómica (instantânea) não


interrompível.
• Podem consistir em:
– invocação de métodos (tipicamente do mesmo objecto)
– criação e destruição de outro objecto
– envio de sinal para outro objecto.
• Tipos de acções na especificação de um Estado:
– Entry – acções de entrada
– Exit – acções de saída
– Evento/acção- eventos desencadeados e tratados dentro do estado

Engenharia de Software - ISEP 33


Transições
• Uma transição é uma relação entre dois estados
indicando que um objecto no 1º estado realizará uma
certa acção (opcional) e passará ao 2º estado
quando um evento especificado ocorrer se uma
condição especificada (opcional) for satisfeita

Estado 1
do / actividade evento(parâmetros) [condição] / acção
entry / acção Estado 2
exit / acção
evento / acção transição

Engenharia de Software - ISEP 34


Eventos
Um evento é uma ocorrência significativa que tem uma localização no
tempo (instante de tempo do evento) e no espaço. No contexto de uma
máquina de estados, um evento pode ter como resposta uma transição
(mudança de estado) e/ou uma acção.

Tipos de eventos :
• Evento de chamada: recebimento de uma mensagem (sincrona) de
outro objecto.
• Evento de sinal: recebimento de um sinal (assincrono)
• Evento temporal: passagem de um intervalo de tempo predefinido.
É especificado com a cláusula after seguida de um parâmetro que especifica
um intervalo de tempo. Ex. after(30 segundos)
• Evento de mudança: uma condição que se torna verdadeira.
É especificado utilizando-se a cláusula when. Ex. when(saldo > 0)
Notação básica
Estado 1
do / actividade evento(parâmetros) [condição] / acção
entry / acção Estado 2
exit / acção
evento / acção transição

• Sequência de mudança de estado:


- Ocorre o evento associado à transição e a condição de guarda é verdadeira
- É interrompida a actividade associada ao estado de origem, se não tinha já terminado
- É executada a acção á saída do estado de origem
- É executada a acção associada à transição
- É executada a acção à entrada do estado de destino
- É iniciada a actividade associada ao estado de destino
Ponto de junção
• Pode ser que o próximo estado de um objecto varie de acordo com
uma condição.É como se a transição tivesse bifurcações, e cada
transição de saída da bifurcação tivesse uma condição de guarda.
• Essa situação pode ser representada em um DTE através de um
ponto de junção
• De uma forma geral, pode haver um número ilimitado de transições
saindo de um ponto de junção.
• Pode haver também uma transição de saída que esteja rotulada
com a cláusula else.Se as outras condições forem falsas, a
transição da clausula else é disparada.

Engenharia de Software - ISEP 37


Exemplo de Ponto de junção

Engenharia de Software - ISEP 38


Sincronização: separação e fusão
• Separação - quando um objecto passa a fazer várias actividades
concorrentemente (ordem irrelevante)
– transição para estado com subdiagramas concorrentes activa
cada um deles
• Fusão - quando as actividades concorrentes têm que terminar
antes de passar ao estado seguinte
– subdiagramas que não estejam na fusão são automaticamente
terminados

Emissão (Multibanco)

do/ liberta cartão


pronto recolhe cartão
Preparação Concluído

do/ liberta dinheiro


recolhe dinheiro
Cláusula do - exemplo

Engenharia de Software - ISEP 40


Eventos compostos
• Um evento composto corresponde a uma
sequência de eventos mais simples. Pode
ser definido através de um diagrama de
estados (máquina de estados) que
funciona como um “detector de eventos”

Engenharia de Software - ISEP 41


Exemplo: Máquina de vendas
(1)
Diagrama pincipal:

moeda ( montante ) / põe balanço Recolhe dinheiro


Inactivo moeda(montante) / adiciona ao balanço
cancelar / devolve moedas
[item vazio] escolhe(item) [troco<0]

do/ testa item e calcula troco

[troco=0] [troco>0]

do/ entrega(item) do/ faz troco


Exemplo: Máquina de vendas
(2)
Detalhe do evento composto “escolhe(item)”:
dígito(n)

dígito(n) escolhe(item)
do/ inicializa item do/ acrescenta dígito
limpa aceita

Detalhe da actividade “entrega(item)”:

do/ move o braço do/ move o braço para do/ tira item da
para a fila correcta braço a coluna correcta braço prateleira tirado
pronto pronto

Engenharia de Software - ISEP 43


Diagrama de Estados
(Statechart Diagram)

Fonte: Grady Booch


Engenharia de Software - ISEP 44
Exemplo (Despertador)

Engenharia de Software - ISEP 45


Exemplo: Semáforo
N N

O E O E
after( 30 seg )[ tem carros
Norte/Sul pode na pista esquerda N/S ] Norte/Sul pode
S S
seguir em frente virar à esquerda

after( 30 s eg )[ sem carros


na pist a es querda N/S ]
after( 1 5 se g ) after( 15 seg )
aft er( 30 seg )[ s em carros
na pista esquerda E/O ]

Este/Oeste pode Est e/Oeste pode


N virar à esquerda seguir em frente N
after( 30 seg )[ tem carros
na pista esquerda E/O ]
O E O E

S S

Engenharia de Software - ISEP 46


Exemplo: Menu popup

cursor deslocado / realça item do menu

botão direito em baixo / mostra menu popup


Inactivo Menu
visível

botão dirteito em cima / apaga menu popup e


lança acção associada ao item seleccionado
Exemplo: Porta com motor
A abrir

entry/ motor para cima


exit/ motor desligado

acciona porta aberta

Fechado Aberto
acciona

porta fechada acciona

A fechar

entry/ motor para baixo


exit/ motor desligado

Como seria este diagrama com as acções associadas às transições?


Exemplo: Telefone (fazer
chamadas) no descanso no descanso
Inactivo
levantado

Sinal de marcar tempo máximo Tempo máximo


do/toca sinal do/ toca apito
dígito(n) tempo máximo
dígito(n) Mensagem gravada
Discando número do/ passa mensagem
Sinal de ocupado número número válido inválido
ocupado
do/sinal ocupado lento Ligando
do/ busca ligação
Sinal de interrompido ramal
ocupado encaminhada
do/ sinal ocupado rápido Tocando
do/ toca campaínha
resposta/ liga linha
no descanso/ desliga linha mensagem dada
Ligado
chamado desliga/desliga linha

Desligado
Exemplo: Estado civil
subestados sequenciais
Nascime nto

Solteiro Viúvo Divorciado

estado composto
(ou super-estado
Falecimento ou contorno)
Casamento do cônjuge Divórcio

Equivale a várias
transições, com origem
Casado Separação judicial Separado
em cada um dos
judicialmente
subestados!

Evita explosão
combinatória de
Falecimen to
transições!

Engenharia de Software - ISEP 50


Exemplo: Biblioteca

Engenharia de Software - ISEP 51


Estados de uma Publicação

consulta / incrementa contador

aquisiç ão Disponível

mediante
devolução empréstimo requisição

Emprestada

Engenharia de Software - ISEP 52


Estados de um Sócio
evento ocorre quando a condição se
torna verdadeira

whe n(esg otad o prazo da i nscrição e não tem


exemplares emprestados) / avisa sócio

ins crição
Activo Inactivo

renovação desistência

Engenharia de Software - ISEP 53


Estados de uma Requisição
requisição[ publicação
requi si ção[ pu blicação d ispon ível ] /
indisponível ] / coloca em
empresta exemplar
lista de espera

Sig nifica que o correu a devolução ou


aquisição de u m exem plar ou que
Espera uma requisição à es pera de
disponibilidade le vantamento foi anul ada, na condição
publicação disponível / de não existi r outra requisição à
avisa requisitante espera de di spon ibi lidad e mais a ntiga
do que esta
Espera
levantamento

esgotado prazo
devolução / avisa
levantamento requ isi tante
desistência

Espera
esgotado prazo devolução
levantamento /
avisa requisitante devolução

Requisição Requisição
Anulada Prevê já vários exemplares por publicação e Encerrada
possibilidade de requisição ficar em lista de
espera!

Engenharia de Software - ISEP 54


Procedimento para construção do
Diagrama de Estados
1. Identifique os estados relevantes para a classe.
2. Identifique os eventos relevantes. Para cada evento, identifique
qual a transição que ele ocasiona.
3. Para cada estado: identifique as transições possíveis quando um
evento ocorre.
4. Para cada estado, identifique os eventos internos e acções
correspondentes.
5. Para cada transição, verifique se há factores que influenciam no
seu disparo. (definição de condições de guarda e acções).
6. Para cada condição de guarda e para cada acção, identifique os
atributos e ligações que estão envolvidos.
7. Defina o estado inicial e os eventuais estados finais.
8. Desenhe o DTE.
Engenharia de Software - ISEP 55
Diagrama de Actividades
• Descreve um fluxo de controlo de uma actividade de modo
idêntico a um fluxograma estendido com a especificação de
concorrência entre subactividades.
• Pode-se usar toda a notação dos diagramas de estados
• A actividade que está a ser descrita pode ser
– Um caso de utilização
– Uma operação de uma classe
– Um grupo de casos de utilização relacionados entre si
– Uma parte de uma actividade de mais alto nível

• É utilizado para descrição de fluxos de trabalho (workflow)

Engenharia de Software - ISEP 56


Elementos do Diagrama de Actividades
• Estado de espera: a saída é causada por eventos
Estado – Pode ter actividade e acções associadas
– Transições de saída têm eventos e possivelmente condições e acções
• Estado de acção: estado de execução de uma acção, cuja conclusão determina
acção a saída do estado
– Acção: operação atómica, instantânea, que não pode ser interrompida
– Transições de saída não têm eventos, mas podem ter condições e acções
• Estado de (sub)actividade: estado de execução de uma (sub)actividade, cuja
activ. conclusão determina a saída do estado
– (Sub)Actividade: operação não atómica, possivelmente detalhada noutro
diagrama (com ícone), potencialmente demorada, que pode ser interrompida
– Transições de saída não têm eventos, mas podem ter condições e acções
• Decisão: estado de passagem em que são testadas condições
– As condições aparecem nas transições de saída
– Não é um estado verdadeiro, mas uma ramificação numa transição
• Barras de sincronização
– Barra de separação (fork)
– Barra de Fusão (join).

Engenharia de Software - ISEP 57


Exemplo: Preparar bebida
[não há café] [não há cola]
Procurar Bebida
barra de sincronização [há café]
(separação) [há cola] decisão e
ramificação

Pôr Café no Filtro Pôr Água no Reservatório Pôr Chávenas

Pôr Filtro na Maquina Buscar latas de cola

barra de sincronização Ligar Máquina envio de sinal


(fusão)
/ligar cafeteira

estado de espera Esperar que aqueça


(cantos luz desliga-se
arredondados)
transição disparada por Deitar café
subactividade Beber
recepção de sinal
(lados arredondados)
Engenharia de Software - ISEP 58
Diagrama de Actividades
Cliente Vendas Estoque

H
Solicitar pr oduto

Proce s sar pe dido


Cole tar m ate r iais

Enviar pe dido

Re cebe r pe dido Cobrar do clie nte

Pagar conta
Ence r rar pe dido

Engenharia de Software - ISEP 59


Diagrama de atividade
EstadoAção1 EstadoAção2
Estado
inicial
Ponto de
[x > 0] ramificação

[x < 0] Estado
[x = 0]
ação

Bifurcação
EstadoAção3 EstadoAção4

Ponto de
EstadoAção6 EstadoAção7 união

EstadoAção5

Estado final
Junção
Engenharia de Software - ISEP 60
Diagrama de Actividades

Fonte: Grady Booch


Engenharia de Software - ISEP 61
Diagrama de Actividades

Engenharia de Software - ISEP 62


Diagramas de Actividade
Mensagem
[Disco cheio] “Disco cheio”

ImprimirFicheiro()
Mensagem
[Espaço em disco] “A imprimir ...”

Criar ficheiro
postscript

Enviar ficheiro
Apaga mensagem
para impressora

Engenharia de Software - ISEP 63


Pistas de responsabilidade
(swimlanes)
• Um diagrama de actividades pode ser dividido
em pistas de responsabilidade (swimlanes),
separadas por linhas contínuas
• Cada pista é encabeçada pelo nome da unidade
organizacional, entidade ou objecto responsável
pelas acções e actividades aí localizadas
• Cada acção ou actividade é localizada numa
única pista, mas uma transição pode atravessar
várias pistas
• Útil para modelar fluxos de trabalho relativos a
processos de negócio
Engenharia de Software - ISEP 64
Exemplo: Processo de
encomenda
Cliente Vendas Armazém

e: Encomenda
Faz encomenda Regista encomenda [pendente]

Despacha encomenda

e: Encomenda
Emite factura [despachada]

Paga factura f: Factura


Estado de objecto
[pendente]

f: Factura
[paga]

Engenharia de Software - ISEP 65


Exemplo: sinistro

Engenharia de Software - ISEP 66


Exemplo: Biblioteca

Engenharia de Software - ISEP 67


Diagrama de actividades relativo ao caso
de utilização de negócio "Requisitar
publicação"
requisitan te : Leitor a biblioteca : Biblioteca

Vem requisitar Verifica


disponibilidade

[ indisponível ] [ disponível ]

[ espera ] Coloca em lis ta de : requisição


[ desiste ] espera [espera disponibilidade]

Aguarda
disponibilidade

disponível

Avisa o : requisição
Vem levantar requisitante [espera levantamento]

Empresta a
publicação
Recebe a
publicação : requisição
[espera devolução]
Consulta a
publicação

Devolve a
publicação
Recolhe a : requisição
public ação
[finalizada]

Engenharia de Software - ISEP 68


Diagramas de Arquitectura
(ou Implementação)
Descrevem aspectos das fases de implementação e instalação de um
sistema de software.

• Diagrama de Componentes
Modelar a arquitectura do sistema de software na perspectiva dos
seus componentes lógicos ( ficheiros de código fonte, executáveis,
bases de dados , documentos de gestão do projecto). Desenvolvido
por arquitectos de software e implementadores.

• Diagrama de Instalação
Modelar a a arquitectura do sistema informático na perspectiva dos
componentes físicos (computadores, impressoras, routers, etc).
Desenvolvido por arquitectos, engenheiros de redes, e engenheiros
de sistemas

Engenharia de Software - ISEP 69


Diagrama de componentes
• Mostra os vários componentes de
software de um sistema, além das
dependências entre estes últimos.
• Os elementos gráficos desse diagrama:

Engenharia de Software - ISEP 70


Diagrama de componentes
• Exemplo de diagrama de componentes.

Engenharia de Software - ISEP 71


Diagrama de componentes
• Formas alternativas de representação de
interfaces de componentes.

Engenharia de Software - ISEP 72


Diagrama de Componentes

Fonte: Grady Booch

Engenharia de Software - ISEP 73


Diagrama de componentes
• A UML define diversos estereótipos para
componentes:
– <<executável>>: um componente que pode
ser executado.
– <<documento>>: um documento. Por
exemplo, um manual de instalação ou um
manual do usuário.
– <<tabela>>: uma tabela em um banco de
dados.
– <<arquivo>>: um arquivo de dados.
– <<biblioteca>>: uma biblioteca de objetos ou
de funções. Por exemplo, uma DLL..
Engenharia de Software - ISEP 74
Diagrama de implantação
• Representa a topologia física do sistema e
opcionalmente os componentes que são executados
nesta topologia.
– Apresenta um mapeamento entre os componentes de
software e o hardware utilizado.
• Elementos: nós e conexões.
• Um nó é uma unidade física que representa um recurso
computacional.
– Normalmente possui uma memória e alguma
capacidade de processamento.
– Exemplos: processadores, dispositivos, sensores,
roteadores ou qualquer equipamento de importância
para o sistema de software.

Engenharia de Software - ISEP 75


Diagrama de implantação
• Os nós são conectados uns aos outros através das
conexões.
– Conexões mostram mecanismos de comunicação
entre os nós.
– Meios físicos (cabo coaxial, fibra ótica, etc.) ou
protocolos de comunicação (TCP/IP, HTTP, etc.).
• Um nó é representado através de um cubo.
– Nome e tipo do nó definidos no interior do cubo.
– A sintaxe para o nome e o tipo do nó é similar à
utilizada para os diagramas de objetos.
– Tanto o nome quanto o tipo são opcionais.
• Uma conexão é representada graficamente por uma
linha (estereotipada) ligando dois nós.
Engenharia de Software - ISEP 76
Diagrama de implantação
• Exemplo de diagrama de implantação.

Engenharia de Software - ISEP 77


Diagrama de implantação
• Exemplo de diagrama de implantação
exibindo componentes.

Engenharia de Software - ISEP 78


Diagrama de Instalação
(Deployment Diagram)

Fonte: Grady Booch


Engenharia de Software - ISEP 79
Diagrama de Instalação
(Deployment Diagram)

ClienteA :
Pentium 200 <<TCP/IP>>
MMX
Servidor de Servidor de
Aplicação : SQL <<TCP/IP>> Banco de
HP/UX Dados :
ClienteB : ORACLE
Pentium 200 <<TCP/IP>>
MMX

Engenharia de Software - ISEP 80