Modelação dinâmica Análise do sistema do ponto de vista da sua evolução temporal, descrevendo o fluxo de controlo, as interacções e a sequenciação de operações num sistema de objectos activos concorrentes. modelo dinâmico, por oposição ao modelo estático de objectos que mostra os respectivos relacionamentos num dado instante controlo descreve as sequências de operações que ocorrem em resposta a estímulos externos, sem atender ao que as operações fazem, sobre que operam ou como são implementadas estado de um objecto: os valores dos atributos e as ligações em que participa evento é algo que acontece num instante • [Voo 123 parte de Lisboa ou Jogador avança a pedra] • os eventos não têm duração (no modelo; na realidade têm, só que são rápidos face à granularidade da escala temporal base da abstracção • eventos concorrentes - não há relação de causalidade entre eles; não se afectam - contraexemplo: a partida tem que ser antes da chegada Modelação OO 0 Eventos Evento - transmissão unidireccional de informação de um objecto a outro • uma chamada de subrotina pode devolver um valor; resposta a um evento é um outro evento separado debaixo do controlo do 2º objecto • um evento tem ocorrência única o tempo respectivo é um atributo implícito classe de eventos agrupa eventos com a mesma estrutura e comportamento [Voo 123 parte de Lisboa e voo 789 parte de Paris são instâncias da classe de eventos Voo parte] atributos servem para passar valores como parâmetros do evento [atributos de Voo parte : linha aérea, nr. voo, cidades] • sinais: eventos sem atributos botão do rato carregado( botão, localização) telefone levantado algarismo discado(dígito) time-out papel mal alimentado Modelação OO 1 Guiões Guião - é uma sequência de eventos que ocorrem durante uma execução do sistema. âmbito de um guião • registo histórico ou simulação • todos os eventos ou só os relevantes para uma dada classse. Guião Linha Telefónica chamador levanta telefone telefone chamado toca inicia sinal de marcar sinal de tocar no chamador chamador disca dígito (5) parceiro responde sinal de marcar termina telefone chamado deixa de tocar chamador disca dígito (5) chamador disca dígito (5) sinal de chamar desaparece do telefone chamador chamador disca dígito (1) telefones ligados chamador disca dígito (2) parceiro chamado desliga chamador disca dígito (3) telefones desligados chamador disca dígito (4) chamador desliga Modelação OO 2 Traço de eventos Chamador Linha telefónica Chamado levanta telefone inicia sinal de marcar disca dígito (5) cada evento transmite informação de um objecto para outro • • • sinal de marcar termina disca dígito (5) traço de eventos - guião enriquecido com os emissores e receptores dos eventos (indicados por setas) disca dígito (5) uma linha vertical por cada objecto envolvido disca dígito (4) tempo evolui de cima para baixo. disca dígito (1) disca dígito (2) disca dígito (3) sinal de tocar toca responde sinal de chamar desaparece deixa de tocar telefones ligados telefones ligados desliga telefones desligados telefones desligados desliga Modelação OO 3 Estados estado - abstracção dos valores de atributo e ligações de um objecto • agrupam-se num mesmo estado conjuntos de valores que provoquem uma resposta a um evento qualitativamente semelhante (quantitativamente pode ter variações) • resposta a eventos: acções e mudanças de estado [no estado de ouvir o sinal de marcar, discar um dígito provoca a interrupção do sinal e a passagem para um estado de marcação em curso] eventos pontos no tempo (separam estados) estados intervalos (separam eventos) • o estado de um objecto depende da sequência de eventos recebidos • alguns eventos podem ser esquecidos por alguns estados [o telefone, ao chegar ao estado de inactivo, esquece toda a sequência de eventos anteriores] Modelação OO 4 Escolha dos estados estado • tem duração, associa-se a actividades contínuas ou que são demoradas • pode ser definido por uma condição [água estar no estado líquido é equivalente a temperatura entre 0ºC e 100ºC] declarativa • ignorar os atributos irrelevantes para o comportamento do objecto • agrupar num único estado todas as combinações de valores e ligações que apresentam a mesma resposta a eventos • associa-se estado só a objectos e não a ligações (embora fosse possível); os valores das ligações ficam nos objectos respectivos Modelação OO 5 Caracterização de estados Estado: Alarme a tocar Descrição: alarme do relógio está a tocar para indicar o limite do tempo Sequência de eventos que produz o estado: activa alarme( hora limite) qualquer sequência que não inclua apagar alarme hora corrente = hora limite Condição que caracteriza o estado: alarme=activo, hora limite < hora corrente < hora limite + 20 seg, e nenhum botão accionado depois da hora limite Eventos aceites no estado: evento acção estado seguinte hora corrente= hora limite + 20 desactiva alarme normal botão accionado normal desactiva alarme Modelação OO 6 Diagramas de estados transição estado seguinte = f( evento, estado corrente ) Diagrama de estados - grafo cujos nós são estados e cujos arcos dirigidos são transições etiquetadas por nomes de eventos. todas as transições a sair de um estado devem corresponder a eventos diferentes o diagrama especifica uma sequência de estados (um caminho no grafo) causada por uma sequência de eventos se ocorrer um evento que não corresponde a nenhum arco, nenhuma transição é disparada e o evento é ignorado os estados não definem totalmente todos os valores do objecto [estado discando corresponde a muitos números possíveis, todos com o mesmo comportamento] um diagrama descreve o comportamento de uma única classe de objectos; todas as suas instâncias partilham esse diagrama; como cada uma tem o seu próprio estado, tem também a sua evolução autónoma Modelação OO 7 A linha telefónica no descanso no descanso Inactivo levantado tempo máximo Sinal de marcar dígito(n) Tempo máximo tempo máximo dígito(n) Discando Sinal de ocupado número inválido Mensagem número válido número ocupado gravada Ligando Sinal de interrompido ramal ocupado encaminhada Tocando resposta Ligado desliga mensagem dada Desligado Modelação OO 8 Objectos finitos xeque-mate Vez das brancas Início jogadas negras Pretas ganham paralisado jogadas brancas Empate paralisado Vez das pretas Brancas ganham xeque-mate o diagrama da linha telefónica é um ciclo contínuo o do xadrez tem início e fim; a criação do objecto arranca no estado inicial; há vários estados finais; chegar lá implica destruição do objecto modelo dinâmico - é uma colecção de diagramas de estado, um para cada classe, que interagem através de eventos partilhados e representa a estrutura de controlo de um sistema um guião está para o modelo dinâmico, como um diagrama de instâncias para o modelo de objectos Modelação OO 9 Condições Condição - função Booleana de valores dos objectos, válida num intervalo de tempo; corresponde a um estado. não é um evento, que não tem duração guarda - uma transição guardada dispara se, quando o seu evento ocorre, a condição associada é verdadeira [Quando se trava bruscamente (evento), se estiver a chover (condição), o carro entra em derrapagem (estado seguinte)] notação: condição de guarda numa transição representada por uma condição Booleana entre parênteses rectos, a seguir ao nome do evento Semáforo Norte/Sul pode seguir em frente time-out Este/Oeste pode virar à esquerda time-out [carros na pista esquerda N/S] time-out [sem carros na pista esquerda N/S] time-out [sem carros na pista esquerda E/O] time-out [carros na pista esquerda E/O] Norte/Sul pode virar à esquerda time-out Este/Oeste pode seguir em frente Modelação OO 10 Operações Actividade - operação que demora algum tempo a completar-se; associada a estado. operações executadas em resposta aos respectivos estados ou eventos actividades contínuas [telefone a tocar] sequenciais [controlo de um transporte robotizado, com fim] notação - do: A dentro de uma caixa de estado a actividade A começa na entrada para o estado e termina na saída causada por • um evento, nas contínuas • completação (normal), nas sequenciais • um evento (interrupção prematura), nas sequenciais Modelação OO 11 Operações (cont.) Acção - operação instantânea; associada a evento. instantânea - duração insignificante comparada com a granuralidadedo tempo no diagrama de estados não interessa a estrutura interna, para efeitos de controlo • estrutura interna interessa modelar a operação como actividade, com eventos de início, fim ou intermédios acções servem também para representar operações internas de controlo da computação [atribuição de valores; geração de outros eventos] notação - a seguir ao evento causador pôr "/" e o nome da acção Inactivo botão direito em baixo /mostra menu popup botão direito em cima /apaga menu popup Menu visível cursor deslocado / realça item do menu Modelação OO 12 Linha telefónica no descanso no descanso Inactivo levantado Sinal de marcar tempo máximo do: toca sinal dígito(n) dígito(n) Discando Sinal de ocupado número ocupado do: sinal ocupado lento Sinal de interrompido do: sinal ocupado rápido Tempo máximo do: toca apito tempo máximo Mensagem gravada número inválido do: passa mensagem número válido Ligando do: busca ligação ramal ocupado encaminhada Tocando do: toca campaínha resposta/ liga linha no descanso/ desliga linha Ligado mensagem dada chamado desliga/desliga linha Desligado Modelação OO 13 Diagramas não estruturados ~A~B~C C ~C A ~A ~A~B C ~A A~B C A A B B ~B ~A A A~B~C ~B A B~C ~B C ~C ~B ~A B~C ~C ~C B B B C ~A ABC ~B ~A • três atributos Booleanos independentes afectam o controlo ~B C ~A B C A B C ~C C ~C • isolando-se os três componentes do estado em máquinas separadas Modelação OO 14 Diagramas estruturados a ideia é permitir descrições do modelo a níveis de abstracção diferentes; o que num nível é considerado atómico pode ser expandido para se analisar a sua estrutura interna, num nível inferior, usando um subdiagrama encaixado com estado inicial e final mais notação: um evento dentro de um estado significa que a transição resulta no mesmo estado; uma transição sem evento dispara logo que a actividade no estado se completa Inactivo moedas( montante ) / põe balanço [item vazio] Recolhe dinheiro moedas (montante) / adiciona ao balanço escolhe(item) [troco<0] do: testa item e calcula troco [troco=0] do: entrega item [troco>0] do: faz troco Máquina de venda Modelação OO 15 Diagramas encaixados Detalhe da actividade entrega (item) do: move o braço para a fila correcta do: move o braço para a coluna correcta braço pronto • do: tira item da prateleira braço pronto tirado estes estados e eventos são invisíveis no diagrama de alto nível inicial os eventos também podem ser expandidos em diagramas subordinados: escolhe(item) corresponde a vários eventos de nível inferior dígito(n) dígito(n) do: inicializa item limpa escolhe(item) do: acrescenta dígito aceita Modelação OO 16 Generalização de estados Generalização de estados (associação ou) - um objecto num estado do diagrama de alto nível tem que estar em exactamente um estado do diagrama encaixado (subestado). os subestados herdam as transições e acções dos seus superestados, a menos que as revoguem [exemplo da linha telefónica, criar o superestado Activo contendo todos os estados excepto Inactivo; definir em Activo a transição no-descanso para passar de qualquer dos estados para Inactivo simplificação que evita a explosão combinatorial de transições] Transmissão carrega N Ponto morto carrega F Frente paragem Marcha carrega R atrás carrega N redução Primeira redução Segunda subida Terceira subida Modelação OO 17 Observações Transmissão automática • superestado indicado por um contorno contendo todos os seus subestados • dentro do estado Frente o estado inicial por omissão é o Primeira transição sem evento da bolinha) • a transição no evento paragem do contorno Frente para o estado Primeira representa uma transição herdada por todos os subestados: em qualquer velocidade para a frente, uma paragem faz passar para Primeira • Frente é um estado abstracto; o controlo tem que estar num estado real Hierarquia de eventos • suporta a herança de atributos dos eventos [tempo é atributo de todos os eventos] • um evento dispara transições em todos os seus ascendentes • a hierarquia permite trabalhar com diferentes níveis de abstracção em diferentes pontos do modelo Modelação OO 18 Generalização de eventos evento tempo entrada do utilizador dispositivo botão do rato localização botão do rato em baixo botão do rato em cima teclado caracter controlo espaço gráfico alfanumérico pontuação Modelação OO 19 Concorrência na agregação modelo dinâmico - descreve um conjunto de objectos concorrentes, cada um com seu estado e seu diagrama de estados, a evoluir independentemente diagrama de estados de uma montagem - colecção dos diagramas de estados dos componentes agregação concorrência • associação e: estado da agregação composto de um estado do primeiro diagrama e um do segundo e um de cada um dos outros os componentes interagem através das guardas, com preservação da modularidade Ignição Carro [Transmissão em Neutro] Transmissão Ignição Transmissão Travão Acelerador Acelerador Travão Modelação OO 20 Concorrência num objecto partição em subconjuntos de atributos e ligações, cada qual com o seu subdiagrama (estado do objecto tem um estado de cada subdiagrama) delimitado por linha a tracejado; nome geral separado do diagrama por uma linha Preparação do despertador Selecção do programa comuta(banda) sintoniza(frequência) Banda banda escolhida Activa alarme Programa pronto Alarme ligado marca(hora) pronto Hora Modelação OO 21 Acções de entrada e saída acções - em vez de as associar só às transições, associar com a entrada ou a saída num estado: indicar dentro do estado, com a palavra reservada entry/ ou exit/ Porta porta aberta / • põe em evidência as partes comuns a A abrir acciona / motor desligado todas as transições de entrada ou saída motor para cima • Fechado porta fechada / motor desligado Aberto acciona / motor para cima A fechar acciona / motor para baixo sequência: 1 acções na transição de chegada 2 acções na entrada (entry) 3 actividade (do) 4 acções na saída (exit) 5 especialmente útil em estados com subdiagramas acções na transição de partida só a actividade é interrompível; as acções são sempre executadas A abrir entry / motor para cima porta aberta acciona Fechado entry / motor desligado acciona porta fechada Aberto entry / motor desligado acciona A fechar entry / motor para baixo Modelação OO 22 Mais extensões acção interna - causada por um evento que não provoque mudança de estado • notação: indicar <evento>/<acção>, dentro do estado • diferente de auto-transição porque não executa as acções de entrada e saída transição automática - transição sem evento • dispara mal a actividade interna (do) termine • se não houver actividade, dispara imediatamente após a entrada (as acções de entrada e saída são executadas) • pode ter guarda [máquina de venda]; se a guarda for falsa, o estado permanece activo até ocorrer a mudança da condição (evento implícito) Modelação OO 23 Resumo da notação Estado 1 do: actividade1 entry / acção2 Estado 2 evento1 (atributos1) [condição1] / acção1 ••• exit / acção3 evento3 / acção4 evento2 (atributos2) Classe de objectos Modelação OO 24 Interacção Um sistema de objectos interage por troca de eventos. uma acção send E(atributos) envia o evento E ao objecto ou objectos que o recebem um evento pode ser dirigido a um conjunto de objectos ou a um objecto simples; todos os objectos com transições no evento podem aceitá-lo concorrentemente a notação com seta a ponteado, de uma transição para um objecto, significa que o evento é enviado ao objecto quando a transição dispara competição - situação em que um estado pode aceitar eventos de mais do que um objecto • o resultado pode depender da ordem de forma pouco clara [ exemplo da porta : accionar o botão único de comando no momento em que a porta está a atingir a abertura máxima dá indefinição sobre se a porta fica aberta ou vai fechar] a situação de competição não é sempre um erro de projecto, mas há muitos casos em que é um problema • exigir simultaneidade no recebimento de eventos não tem significado no mundo real Modelação OO 25 Sincronizaçã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 dos subdiagramas fusão - quando as actividades concorrentes têm que terminar antes de passar ao estado seguinte • outros subdiagramas que não estejam na fusão são automaticamente terminados Emissão (Multibanco) do: liberta cartão recolhe cartão pronto Preparação Concluído do: liberta dinheiro recolhe dinheiro Modelação OO 26 Relação com o modelo de objectos modelo dinâmico - especifica a sequência de alterações aos objectos do modelo objecto estrutura do modelo dinâmico condicionada pela do modelo de objectos • um subestado refina os valores e as ligações que um objecto pode ter • um subestado pode ser visto como uma generalização de restrição (sítio melhor para representar isto é o modelo dinâmico, quando as linguagens não suportam directamente o conceito) • um objecto pode estar em estados diferentes ao longo do tempo, mas não pode mudar de classe: diferenças inerentes entre objectos classes diferentes; diferenças temporárias estados diferentes modelo dinâmico de uma classe herdado pelas subclasses; estas podem estender o diagrama com um subdiagrama que envolva os atributos específicos da subclasse (extensão), mas não altere o diagrama da superclasse Modelação OO 27 Rádio-despertador minutos horas desligar alarme tempo off radio alarme dormir sintonia vol 18:35 89.5 FM obter o diagrama dinâmico • o botão dormir faz tocar durante uma hora (desligar cala-o logo) • ao chegar ao instante do alarme, começa a tocar durante 1 hora (desligar só desliga durante 10 minutos) Modelação OO 28 Modelação do rádio-despertador radio Rádio-despertador Interruptor Desligado Funcionar do: radio activo off Botão de sintonia sintoniza(freq) Ruído Estação dessintoniza Display Hora actual do: mostra hora actual botão alarme carregado botão alarme livre Hora despertar do: altera hora despertar alarme Despertador radio Botão de volume ajusta(nível)/alterar nível Activo Cortado ajusta(nível)/ [nível=0] alterar nível Altifalante [em Estação e Activo e (Funcionar ou Despertar ou Adormecer)] Desligado Tocar [em (Ruído ou Cortado) ou (Desligado ou Armado ou Latente)] Modelação OO 29 Subdiagrama Hora despertar Hora despertar Põe minutos do: incrementa botão minutos minutos despertar livre mod 60 botão horas livre Mostra do: mostra hora despertar botão horas carregado botão minutos carregado Põe horas do: incrementa horas despertar mod 24 Modelação OO 30 Subdiagrama Hora actual Hora actual Mostra do: mostra hora actual botão tempo botão tempo carregado livre Acerta horas do: incrementa horas mod 24 botão horas livre botão horas carregado Altera hora do: mostra hora actual botão minutos Acerta minutos carregado do: incrementa botão minutos minutos mod 60 livre Modelação OO 31 Subdiagrama Despertador Despertador Armado desligar /desliga minuto [hora_actual = hora_despertar] Despertar do: rádio activo desligar/desliga 10 minutos Latente do: incrementa minutos mod 60 minuto [hora actual - hora despertar>60] 60 minutos / desliga Adormecer dormir do: radio activo Modelação OO 32 Encontro de ténis Modelar um encontro de ténis do ponto de vista de evolução da pontuação ao longo do tempo. N 1,2 Encontro Atleta S 1,2 Sg[pS<30]/inc pS Bola de jogo N Ng Partida Vence N Ng[pN=30]/inc pN Sg[pS=30]/inc pS Ng[pN<30]/inc pN Sg[pS>30] Ng[pN>30] Início Vantagem nula Sg[pS>30] Ng[Np>30] Ng[pN=30]/inc pN Sg[pS<30]/inc pS Sg[pS=30]/inc pS Bola de Sg jogo S Ng[pN<30]/inc pN Vence S Jogo pN pS pN - pontos do N pS - pontos do S Ng - N ganha Sg - S ganha inc - incrementa Modelação OO 33