• Nenhum resultado encontrado

Máquinas de estados finitos

No documento Redes de Petri Reactivas e Hierárquicas (páginas 51-54)

2. As Redes de Petri Reactivas

2.1 Formalismos para sistemas reactivos de tempo-real

2.1.1 Máquinas de estados finitos

As máquinas de estados finitos (ou autómatos finitos) constituem o formalismo de especificação de sistemas a eventos discretos de utilização mais divulgado. A teoria subjacente remonta à década de 50, com as propostas de Moore e de Mealy. Nas máquinas de Moore, as saídas são associadas aos estados, enquanto que nas máquinas de Mealy, as saídas são associadas às transições (e produzidas como uma função do estado actual e das entradas). A capacidade de descrição dos dois modelos é equivalente, sendo possível a sua tradução mútua.

Três métodos podem ser utilizados para a sua representação [Laplante, 93]: teoria de grafos (recorrendo à teoria de conjuntos), diagramas (modo gráfico) ou através de matrizes. Considerando a legibilidade associada, apenas a representação gráfica se considera de interesse (para efeitos de especificação de sistemas).

De entre as representações gráficas utilizadas comummente, duas são de referência especial: os diagramas de estado e os fluxogramas. Os primeiros são utilizados em imensas áreas de aplicação, enquanto os segundos são vocacionados para a descrição de algoritmos.

Os diagramas de estados são constituídos por círculos representando os estados e arcos representando as transições entre estados. O comportamento do autómato é especificado em termos da dependência das transições entre estados em função de um alfabeto de símbolos de entrada (eventos, do ponto de vista da descrição comportamental do sistema). A Figura 2-1(a) ilustra um exemplo elementar, sendo o estado S1 o estado inicial (indicado, neste caso, por um arco de entrada). Diversas são as propostas existentes para representar máquinas de estado; no exemplo utilizado utiliza-se, implicitamente, o conceito de receptividade a um evento, isto é, nos arcos de saída de um estado só se referem os eventos que provocam transição de estado (como exemplo, no estado S4 apenas existe um arco de saída, modelando uma dependência exclusiva do evento r para que se obtenha transição desse estado, pelo que os eventos a e b não são referidos em arcos de saída do estado S4).

Início S1 a 1 a * /b b * /a a * b a b r r r S1 S3 S2 S4 b 1 0 0 b 1 0 S4 S2 S3 a 1 0 b 1 0 r 1 0 r 1 0 r 1 0 (a) (b)

Figura 2-1 - Representação de máquinas de estados finitos: a) diagrama de estados; b) fluxograma.

No entanto, a especificação apresentada na Figura 2-1(a) não é executável, no sentido em que estão presentes situações de indeterminismo (potenciais conflitos na determinação do estado seguinte). Uma semântica utilizada comummente nos diagramas de estado, permitindo a sua utilização como especificações executáveis, considera a ocorrência mutuamente exclusiva dos eventos especificados; caso isso não seja razoável, torna-se necessário representar explicitamente as dependências existentes (como ilustrado no estado S1 da Figura 2-1(a)), podendo ter como consequência a atribuição de prioridades entre os vários arcos de saída de estado.

Os fluxogramas são, possivelmente, a ferramenta de modelação de software mais antiga e podem-se considerar de compreensão intuitiva. Recorrem a representações gráficas em que os estados são

representados por rectângulos e as transições entre estados são detalhadas em termos das dependências de eventos de entrada, representadas por losangos, responsáveis pela modelação de testes booleanos. Apresentam o suporte adequado para especificar sistemas a implementar em linguagens como Assembly ou Fortran (tal como definida décadas atrás), com o inconveniente óbvio de um reduzido suporte às técnicas estruturadas de programação. O estado inicial (e final, quando exista) é explicitamente modelado. A Figura 2-1(b) apresenta um exemplo, correspondente a uma versão executável do diagrama de estados da Figura 2-1(a).

De notar que, enquanto no diagrama de estados da Figura 2-1(a) é possível modelar situações de indeterminismo, no fluxograma da Figura 2-1(b), devido à utilização de testes binários em cascata, garante-se uma especificação determinística. Como exemplo de uma situação de indeterminismo presente na Figura 2-1(a), refira-se a situação de ocorrência simultânea dos eventos r e a no estado S3 ou da ocorrência dos eventos r e b no estado S2. No fluxograma associado, a precedência entre os eventos é explicitamente representada, impondo prioridades entre eventos, evitando a situação de indeterminismo.

Como exemplo de uma metodologia particularmente significativa aplicável na área de projecto de sistemas digitais de reduzida complexidade e que recorre à aplicação das técnicas referidas, são de referir os diagramas ASM17 [Clare, 73]. Em [Treseler, 92] podem encontrar-se técnicas adequadas à

implementação de máquinas de estado em circuitos integrados de lógica programável.

Ainda na área de desenvolvimento de sistemas digitais, refiram-se os “basic schemata”, desenvolvidos no M.I.T. (ver [Pimenta-Rodrigues & Araújo, 88]) e particularmente vocacionados para a especificação de arquitecturas microcontroladas. Podem ser caracterizados como uma especificação gráfica de algoritmos, não sendo, no entanto, os estados do sistema explicitamente representados.

De um modo geral, as máquinas de estados finitos apresentam limitações sérias à modelação de sistemas complexos, nomeadamente, incapacidade de modelação de actividades concorrentes, bem como de representações hierárquicas tendentes a compactar a representação. Para minimizar essas limitações, várias extensões têm vindo a ser propostas.

Uma extensão comum conduz à utilização de expressões e variáveis auxiliares, embebendo-as na especificação. Deste modo, quer as acções, quer as condições que determinam a transição entre estados, podem ser resultado da avaliação de expressões complexas.

As dificuldades de modelação de processos paralelos e de suportar uma decomposição hierárquica poderão ser consideradas como o calcanhar de Aquiles das máquinas de estados finitos. Várias extensões têm sido propostas para a sua resolução. Os statecharts, a apresentar na subsecção seguinte, constituem uma resposta adequada para a redução destas limitações.

No particular da modelação de concorrência, a máquina de estados equivalente a um conjunto de máquinas de estados com evolução paralela, corresponde a um espaço de estados resultante do produto cartesiano dos espaços de estados de cada uma das máquinas individuais, conduzindo ao fenómeno normalmente referido como de explosão do espaço de estados e a problemas na verificação associada ao modelo resultante. Várias têm sido as propostas apresentadas para a resolução do problema da especificação de máquinas paralelas. Refiram-se, entre outras, as propostas dos CSP (Communicating Sequential Processes) de Hoare e CCS (Calculus of Communicating Systems) de Milner, dos finais da década de 70, bem como as CFSM (Communication Finite State Machine) propostas por Orr e outros na década de 80, executadas através de modelos RdP equivalentes.

No documento Redes de Petri Reactivas e Hierárquicas (páginas 51-54)

Documentos relacionados