Modelação Aula T15 Modelação Conceptual de Sistemas Revisão do Comportamento OCL – Object Constraint Language José Borbinha Programa T01-T03 – Módulo 1 – Introdução à Modelação de Sistemas T04-T07 – Módulo 2 – Modelação Conceptual de Sistemas T08-T11 – Módulo 3 – Ontologias T12 – 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 Modelação 2 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) Modelação 3 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 Modelação 4 Casos de Usos • Um caso se uso representa um conjunto de acções que um ou mais actores realizam num sistema para obter um resultado concreto. Máquina de Bebidas Comprar bebida Cliente • 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 Repor bebidas Fornecedor «include» «include» Abrir a máquina «include» Retirar dinheiro Dono «include» Modelação Fechar a máquina 5 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. Modelação 6 Actividades e Objectos Exemplo para uma sequência de actividades evidenciando os objectos afectados nas entradas e saídas de algumas actividades Modelação 7 Actividades e Objectos Exemplos de actividades evidenciando os objectos passados de uma para outra (“data flow”) Exemplos retirados do “help” do Enterprise Architect… Modelação 8 Diagramas de Sequência e de Comunicação Diagramas de sequência Diagramas de comunicação mostram a sequência explicita das mensagens entre objectos adequados para visualizar um fluxo global ao longo do tempo • 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...) Modelação 9 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). Modelação 10 Diagramas de Estado: Eventos, Acções e Condições com Guarda Evento de disparo de transição (trigger) Transição automática, sem acção ou condição Acção (executada na entrada do estado) Sintaxe completa de uma transição: evento [condição com guarda] / acção 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 Modelação 11 OCL Object Constraint Language Modelação 12 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!!! Modelação 13 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 Modelação 14 Exemplo com uma classe context Transaction inv: points >= 0 Modelação 15 Exemplos de expressões e constragimentos Conta id : Integer saldo: Real = 0 deposito(valor : Real) levantamento(valor : Real) daSaldo() : Real Tipos de valores usuais: Integer, Real, String, Boolean context Conta::levantamento (valor : Real) pre: valor <= saldo Operações usuais: post: saldo = saldo@pre – valor context Conta::daSaldo() : Real post: result = saldo Modelação = < > <> <= >= + - * / mod() div() max() min() round() abs() and or xor not implies if_then_else_endif … 16 “Navigation” em associações qualificadas Conta id : Integer saldo: Real = 0 dono 1 conta * Cliente deposito(valor : Real) levantamento(valor : Real) daSaldo() : Real Expressão incorrecta Expressão correcta cliente.conta.saldo = 0 cliente.conta->select(id=1234).saldo = 0 Modelação 17 “Navigation” em associações qualificadas Conta id : Integer saldo: Real = 0 conta * deposito(valor : Real) levantamento(valor : Real) daSaldo() : Real dono id Cliente 1 cliente.conta[4321] Ou cliente.conta[id = 4321] Ou … Modelação 18 OCL em diagramas de estados Exemplo retirado do “help” do Enterprise Architect… Modelação 19 OCL em diagramas de estados stm Diagrama de Estado - Seleccionar Bebida Init ial Inac tiv o garrafa retira da [total = 0] A fornecer água garrafa retira da [total > 0] moeda i nserida /total = nova moeda botão A [total i nserido >= 0.50] /entregar água total = total - 0.50 A rec eber moe das botã o B /devolve total moeda i nserida /total = total + nova moeda Máquina total: Real = 0 recebeMoeda(valor : Real) forneceAgua() devolveTotal() Modelação 20 Modelação 21 Modelação 22