• Nenhum resultado encontrado

Este cap´ıtulo apresenta estudos de caso realizados com o intuito de criar uma abor- dagem de especifica¸c˜ao e verifica¸c˜ao de protocolos s´ıncronos de barramento. Conforme o exposto no cap´ıtulo 2, o estudo ´e dividido em modelagem e verifica¸c˜ao, tanto de arquite- tura quanto de comportamento. O protocolo PCI ´e utilizado como exemplo para ambas as partes, e o protocolo AMBA AHB ´e utilizado na parte de comportamento. A utiliza¸c˜ao de apenas um dos protocolos para a modelagem de arquitetura deve-se `a similaridade de representa¸c˜ao dos diferentes barramentos numa arquitetura de sistema embarcado.

A modelagem de arquitetura, exposta no cap´ıtulo 7, ´e feita com AADL em dois n´ıveis distintos de abstra¸c˜ao: no n´ıvel aadlpci0, o barramento ´e inserido num sistema completo e suas caracter´ısticas s˜ao dadas pelas propriedades dispon´ıveis na linguagem, enquanto no n´ıvel aadlpci1, mais baixo, o componente AADL system ´e utilizado para representar cada elemento do barramento, e assim permitir uma representa¸c˜ao mais detalhada de sua arquitetura. Os modelos AADL criados s˜ao baseados nas especifica¸c˜oes de protocolos feitas pelo autor [22].

A utiliza¸c˜ao das propriedades AADL levou a uma contribui¸c˜ao adicional deste traba- lho: visto que suas propriedades nem sempre tˆem sua semˆantica completamente verificada, foram criadas especifica¸c˜oes em Event-B com o objetivo de modelar e verificar estas pro- priedades. A cria¸c˜ao de um framework completo para representa¸c˜ao da semˆantica AADL n˜ao faz parte do escopo deste trabalho, por esta raz˜ao foi criada uma especifica¸c˜ao simpli- ficada para descrever as partes essenciais da AADL para a representa¸c˜ao da semˆantica de suas propriedades. A especifica¸c˜ao ´e feita em quatro contextos Event-B, que descrevem quatro n´ıveis de detalhamento da linguagem. A no¸c˜ao de componentes e suas catego- rias ´e vista no n´ıvel aadl c0, subcomponentes e referˆencias s˜ao descritos no n´ıvel aadl c1, a semˆantica individual das propriedades ´e descrita no n´ıvel aadl c2 e a semˆantica de dependˆencia de propriedades que se desejava representar ´e especificada no n´ıvel aadl c3.

s´ıncrono simples para o protocolo PCI, com a finalidade de possuir uma especifica¸c˜ao de f´acil compreens˜ao e que ilustra com clareza os aspectos ligados `a concorrˆencia vista num protocolo de barramento.

O m´etodo Event-B ´e utilizado para a modelagem e verifica¸c˜ao parametrizada do pro- tocolo. Dada a orienta¸c˜ao a refinamentos vista em Event-B, a especifica¸c˜ao foi feita de modo incremental, a fim de permitir a cria¸c˜ao de uma plataforma de base para a es- pecifica¸c˜ao de protocolos s´ıncronos em Event-B. Esta plataforma de base ´e inspirada no conceito de patterns, bastante visto em projetos de softwares em geral e atualmente sendo investigado em Event-B . Patterns tˆem o objetivo de simplificar alguns aspectos da espe- cifica¸c˜ao do sistema, por meio de um conjunto de especifica¸c˜oes que executam uma fun¸c˜ao que pode estar presente em v´arios tipos de sistema. Alguns trabalhos ilustram exemplos interessantes de patterns: Ball e Butler [8] criaram patterns para especificar mecanismos de tolerˆancia a falhas em sistemas multiagente, Cansell et al [12] desenvolveram patterns para incluir aspectos temporais numa especifica¸c˜ao Event-B, e Lliasov [34] criou patterns para diversos tipos de sistemas e desenvolveu um plug-in que opera em conjunto com a ferramenta Rodin para automatizar a inclus˜ao de patterns numa especifica¸c˜ao.

Enquanto patterns em Event-B costumam ser especificados com eventos e invariantes que s˜ao inclu´ıdos nos sistemas atrav´es de refinamentos, o modelo aqui apresentado serve como uma especifica¸c˜ao abstrata para a especifica¸c˜ao dos protocolos, j´a que a especifica¸c˜ao de um protocolo ´e um refinamento desta base.

Nesta disserta¸c˜ao, utilizam-se quatro n´ıveis para representar um protocolo: o n´ıvel 0 ´e utilizado para a express˜ao do invariante de alto n´ıvel, e os outros trˆes s˜ao utilizados para descrever protocolos espec´ıficos com uma representa¸c˜ao abstrata (n´ıvel 1), um refinamento para a fase de arbitra¸c˜ao (n´ıvel 2) e um refinamento para a fase de transferˆencia (n´ıvel 3). O interesse desta modelagem ´e concentrado na verifica¸c˜ao de um invariante abstrato, assim, somente o protocolo PCI teve sua fase de transferˆencia detalhada, j´a que esta ´e muito mais complexa que a fase de arbitragem e n˜ao tem influˆencia no modelo de alto n´ıvel.

Visto que a especifica¸c˜ao do protocolo vai se tornando bastante intrincada at´e mesmo com o desenvolvimento incremental permitido pelo m´etodo Event-B, algumas simpli- fica¸c˜oes foram feitas durante a modelagem. A fase de arbitra¸c˜ao de ambos os protocolos foi especificada utilizando as seguintes hip´oteses:

• Uma requisi¸c˜ao de um controlador n˜ao pode ser cancelada.

• O ´arbitro n˜ao pode interromper uma transferˆencia em curso. Como ser´a visto nos eventos, o fim de uma transferˆencia ´e anunciado pelo mestre.

• N˜ao ser´a implementada uma pol´ıtica para escolha do mestre, pois especifica¸c˜oes de protocolos normalmente deixam esta parte `a escolha dos projetistas.

Al´em disso, a modelagem do protocolo PCI n˜ao inclui medidas concretas para os instantes em que nenhum controlador requer o controle do barramento – num protocolo PCI real, o ´arbitro possui um procedimento para controlar o barramento enquanto este est´a inativo. Esta simplifica¸c˜ao n˜ao foi necess´aria na modelagem do protocolo AMBA pois o ´arbitro deste atribui automaticamente o controle ao “mestre padr˜ao” em caso de inatividade.

A modelagem da fase de transferˆencia do protocolo PCI tamb´em foi simplificada com a considera¸c˜ao de que n˜ao ocorrem erros durante a transferˆencia, pois a especifica¸c˜ao do funcionamento do protocolo na presen¸ca de erros possui uma complexidade que foge ao escopo deste trabalho. Assume- se tamb´em que os dados transmitidos na linha de barramento s˜ao n´umeros naturais, a fim de simplificar a especifica¸c˜ao utilizando-se um tipo de dados j´a dispon´ıvel em Event-B.