Modelação
Aula T15Modelação Conceptual de Sistemas
Revisão do ComportamentoOCL – Object Constraint Language
José Borbinha
ProgramaT01-T03 – Módulo 1
– Introdução à Modelação de SistemasT04-T07 – Módulo 2
– Modelação Conceptual de SistemasT08-T11 – Módulo 3
– OntologiasT12 – Correcção do Teste 1
T13-T15 – Módulo 4
–Modelação de Sistemas: Comportamento
T16-T18 – Módulo 5– Modelação de Sistemas: Arquitectura
T19-T25 – Módulo 6– Temas avançados
2Modelação
Modelação do Comportamento
-
Revisão… -
(Conceptual Modeling of Information Systems -capítulos 11, 12, 14 e 14) (UML, Metodologias e Ferramentas CASE - Capítulo 8)
3Modelação
Modelação da Dinâmica (ou Comportamento) em UML
• Esquema de comportamento: A especificação das acções válidas e das mudanças possíveis no estado do domínio do sistema.
• Um sistema executa acções (as quais podem provocar ou não alterações no estado do domínio)
• Em UML o comportamento de um sistema representa-se através de:
– Dinâmica geral do sistema• Diagrama de Casos de Utilização• Diagrama de Actividade
– Diagramas de Interacção• Dinâmica entre objectos
– Diagrama de Sequência– Diagrama de Comunicação– Diagrama Temporal
• Diagrama da Visão Geral da Interacção– Comportamento dos objectos...
• Diagrama de (Máquina de) Estados
4Modelação
Modelação 5
• Um caso se uso representa um conjunto de acções que um ou mais actores realizam num sistema para obter um resultado concreto.
• Um cenário é uma instância de um caso de uso. Representa assim uma sequência de acções concreta que ilustra um comportamento real do sistema. É normal que um caso de uso possa ser descrito por vários cenários
Casos de Usos
Máquina de Bebidas
Cliente
Fornecedor
Comprar bebida
Repor bebidas
Retirar dinheiroDono
Abrir a máquina
Fechar a máquina
«include»
«include»
«include»
«include»
Diagramas de Actividade
Descrição das actividades de um sistema (lógica do sistema e fluxos de dados), fornecendo uma visão do fluxo de controlo de um caso de uso.
6Modelação
Actividades e Objectos
Exemplo para uma sequência de actividades evidenciando os objectos afectados nas entradas e saídas de algumas actividades
7Modelação
Actividades e Objectos
Exemplos de actividades evidenciando os objectos passados de uma para outra (“data flow”)
8ModelaçãoExemplos retirados do “help” do Enterprise Architect…
Diagramas de Sequência e de Comunicação
Diagramas de sequência mostram a sequência explicita das
mensagens entre objectos adequados para visualizar um fluxo
global ao longo do tempo
Diagramas de comunicação• mostram relações entre os objectos,
adicionalmente às interacções• adequados para visualizar padrões de
colaboração entre objectos
Estes diagramas são semanticamente equivalentes, mas não apresentem explicitamente a mesma informação (ex: a linha de tempo não existe no diagrama de comunicação...)
9Modelação
Máquinas de Estado
• Num sistema, as entidades podem ser modeladas como máquinas de estado.
• Cada entidade de um sistema (objecto) terá num dado instante a sua própria máquina de estados, mas conceptualmente o mesmo diagrama de transição de estados pode ser usado para todas as instâncias do mesmo tipo de entidades (classes).
10Modelação
Diagramas de Estado: Eventos, Acções e Condições com Guarda
Uma transição de estado realiza-se se o evento ocorre e a guarda é verdadeira.Exemplos:•Aviso da UPS [Energia da bateria > 10 minutos] / Emite aviso sonoro•Aviso da UPS [Energia da bateria < 10 minutos] / Inicia shutdown
Sintaxe completa de uma transição: evento [condição com guarda] / acção
11Modelação
Evento de disparo de transição (trigger)
Acção (executada na entrada do estado)
Transição automática, sem acção ou condição
OCLObject Constraint Language
12Modelação
OCL
• Uma linguagem para expressar informação extra mas necessária sobe um modelo.
• É uma linguagem textual e declarativa (isto é, permite descrever o “quê” e não o “como”).
• OCL usa-se para especificar, em modelações com UML:– Expressões – indicação ou especificação de valores
– Constrangimentos – restrições a um ou mais valores
• Expressões em OCL podem ser usadas em qualquer diagrama!!!
13Modelação
OCL
• Tipos de expressões:– O valor inicial de um atributo ou associação
– Uma regra de derivação para um atributo ou associação
– Uma instância, uma condição ou um valor para um parâmetro num diagrama dinâmico
– Etc…
• Tipos de constrangimentos:– “Invariant” – uma restrição que se deve verificar sempre no sistema
– “Precondition” – uma restrição que deve ser verdadeira para que uma operação seja executada
– “Postcondition”- uma restrição que deve ser verdadeira no final da execução de uma operação
– “Guard”- uma restrição que deve ser verdadeira antes de uma transição de estado
14Modelação
Exemplo com uma classe
Modelação 15
context Transaction inv:points >= 0
Exemplos de expressões e constragimentos
16Modelação
Conta
id : Integersaldo: Real = 0
deposito(valor : Real)levantamento(valor : Real)daSaldo() : Real
context Conta::levantamento (valor : Real)pre: valor <= saldopost: saldo = saldo@pre – valor
context Conta::daSaldo() : Realpost: result = saldo
Tipos de valores usuais:Integer, Real, String, Boolean
Operações usuais:= < > <> <= >= + - * / mod() div() max() min() round() abs()and or xor not implies if_then_else_endif …
“Navigation” em associações qualificadas
17Modelação
Conta
id : Integersaldo: Real = 0
deposito(valor : Real)levantamento(valor : Real)daSaldo() : Real
Clienteconta*
dono1
cliente.conta.saldo = 0
cliente.conta->select(id=1234).saldo = 0
Expressão incorrecta
Expressão correcta
“Navigation” em associações qualificadas
18Modelação
Conta
id : Integersaldo: Real = 0
deposito(valor : Real)levantamento(valor : Real)daSaldo() : Real
Clienteconta*
dono
1
cliente.conta[4321]
Ou
cliente.conta[id = 4321]
Ou…
id
OCL em diagramas de estados
Modelação 19Exemplo retirado do “help” do Enterprise Architect…
OCL em diagramas de estados
20Modelação
stm Diagrama de Estado - Seleccionar Bebida
Inac tivo A fornecer água
A rec eber moe das
Init ial
moeda i nserida/total = total + nova moeda
botã o B/devolve total
botão A [total i nserido >= 0.50]/entregar águatotal = total - 0.50
garrafa retirada [total > 0]
garrafa retirada [total = 0]
moeda i nserida/total = nova moeda
Máquina
total: Real = 0
recebeMoeda(valor : Real)forneceAgua()devolveTotal()
Modelação 21
Modelação 22