IVY on the Web, IVY Properties editor Nuno Miguel Milhases da Silva Departamento de Informática Universidade do Minho - Braga pg13879@alunos.uminho.pt Sumário Palavras-chave 1. Introdução Os modelos de estado finitos permitem a análise automática das suas propriedades (através de ferramentas de model checking). Embora estes modelos sejam bastante poderosos, é necessário expressar as propriedades a verificar numa lógica adequada, algo a que muitos utilizadores (engenheiros de software, desenhadores de sistemas entre outros) não estão acostumados. Isto faz com que adopção deste tipo de modelos para verificação seja difícil. Uma técnica conhecida para encapsular conhecimento numa forma mais simples de utilizar é a definição de padrões. Neste contexto um padrão é uma solução conhecida para um problema comum. Assim um padrão de propriedade faz a ponte entre as linguagens formais necessárias para descrever propriedades para verificação e o utilizador que pretende utilizar a ferramenta ou técnica de verificação. Os padrões de propriedade conseguem fazer essa ponte, uma vez que associam a cada tipo de propriedade que se queira verificar, descrita em linguagem natural, as fórmulas lógicas que devem ser utilizadas. O IVY Workbench é uma ferramenta que permite a análise de modelos de sistemas interactivos. É constituído por quatro plug-ins: um editor de modelos, um editor de propriedades, um tradutor e um visualizador/analisador de rastros para o verificador de modelos. O objectivo deste projecto consiste em portar o plug-in da edição de propriedades para a Web. Ao passar este plug-in para a Web pretendeu-se atingir vários objectivos: 1. Disponibilizar o editor, para todos os utilizadores, de uma forma global, através de acesso Web.
2. Tornar o editor independente da plataforma e browser usados. 3. Evitar fazer downloads e instalação de software, e assim eliminar problemas inerentes da instalação e utilização do software, nas diversas plataformas. 4. Eliminar as complicações referentes à gestão e distribuição de novas versões do software. 5. Facilitar a disponibilização de novos padrões. Este artigo encontra-se estruturado da seguinte forma: A secção 2 descreve o que são padrões de propriedade; A secção 3 descreve o editor de propriedades do IVY Workbench; A secção 4 analisa qual a tecnologia que melhor poderá portar o plug-in editor de propriedades para a Web; A secção 5 descreve como é que a tecnologia escolhida foi utilizada para implementar o editor; Finalmente na secção 6 apresentam-se conclusões e discute-se trabalho futuro. 2. Padrões de Propriedade Os padrões de propriedade são usados para descrever propriedades típicas dos comportamentos de modelos de estados finitos, fornecendo uma estrutura simples para descrever esses comportamentos e fornecendo expressões formais para os mesmos. As informações contidas nos padrões podem ser organizadas de diversas maneiras (Dwyer e-t al. [1998]), uma dessa maneira é a classificação através do seu comportamento (ver ilustração 1), que é a usada pelo IVY, conforme se poderá ver mais à frente na secção 5 (Implementação). Exemplo de padrão Absence [Dwyer e-t al.] Intent - To describe a portion of a system's execution that is free of certain events or states. Also known as Never. Description - P is false. Logic CTL
Scope Global - AG(!P) Before R - A[(!P AG(!R)) W R] After Q - AG(Q -> AG(!P)) Between Q and R - AG(Q &!R -> A[(!P AG(!R)) W R]) After Q until R - AG(Q &!R -> A[!P W R]) Logic LTL Scope Global - G(!P) Before R - F R -> (!P U R) After Q - G(Q -> G(!P)) Between Q and R - G((Q &!R & F R) -> (!P U R)) After Q until R - G(Q &!R -> (!P W R)) Example - The most common example is mutual exclusion. In a state-based model, the scope would be global and P would be a state formula that is true if more than one process is in its critical section. For an event-based model, the scope would be a segment of the execution in which some process is in its critical section (i.e., between an enter section event and a leave section event), and P would be the event that some other process enters its critical section. Um padrão descreve a estrutura acerca do comportamento de um sistema e fornece expressões desse comportamento para vários formalismos. Através do padrão exemplo, apresentado anteriormente, verifica-se que o padrão é constituído por um conjunto de secções. Descrevem-se de seguida o propósito de cada uma das secções: Intent Descreve qual a intenção do padrão, qual é o comportamento do sistema que vai descrever; Description Apresenta uma descrição em linguagem natural da propriedade que o padrão captura (neste caso a ideia que algum condição P é falsa em todos os possíveis comportamentos do modelo); Example Fornece um ou mais exemplos onde o padrão tem sido utilizado; Os padrões na sua generalidade são criados através da observação prática. Quando inúmeros utilizadores usam o mesmo tipo de
propriedades nas análises que faz, é criado um padrão, uma vez que é de interesse comum que esse padrão exista. Logic A propriedade associada a um padrão pode ser formulado usando diferentes lógicas, neste caso, são usadas duas lógicas, CTL (Computational Tree Logic) e LTL (Linear Temporal Logic). Em LTL o tempo é visto de forma linear, ou seja, uma fórmula LTL caracteriza um comportamento desejável e todos os comportamentos possíveis do sistema têm de obedecer à fórmula LTL para ser verdadeira. Em CTL o tempo é visto como numa estrutura tipo árvore, ou seja, uma fórmula CTL caracteriza propriedades dobre o comportamento do sistema, onde alguma propriedade pode-se aplicar a todos os comportamentos do sistema, ou apenas a alguns, algo que não é possível fazer em LTL. Scope Cada lógica têm um espaço de acção, que é uma extensão sobre o comportamento que se quer analisado. Para o exemplo são descritos 5 raios de acção: o Global Execução completa do modelo; o Before Execução do programa até um dado estado ou evento; o After Execução do programa depois de um dado estado ou evento; o Between Execução do programa entre dois estados/eventos; o After-Until Execução é feita da mesma maneira que em Between com a diferença que o programa continua a executar, mesmo que o segundo estado/evento não tenha ocorrido. Os padrões estão organizados hierarquicamente pelo tipo de comportamento que descrevem. Ilustração 1 - Diagrama de padrões através do comportamento [Dwyer e-t al.]
Através da análise do diagrama na ilustração 1, pode-se observar que os padrões (sugeridos por Dwyer e-t al.) estão divididos em dois grupos: Ocurrence e Order. Em Ocurrence os padrões são divididos pelo comportamento do sistema que adquirem durante a execução do sistema, enquanto em Order os padrões são divididos em relação à ordem que múltiplos comportamentos adquirem durante a execução do sistema. Para o IVY os padrões foram codificados usando XML, sendo que a descrição dos padrões em ficheiros externos permitem incluir no sistema diferentes colecções. Neste momento estão definidas três colecções: DWYER, SCAPS e IVY. 3. Editor de Propriedades No contexto do projecto IVY (POSC/EIA/56676/2004) foi desenvolvida uma ferramenta que permite a criação semi-automática de propriedades a partir de padrões. A versão existente foi desenvolvida em Java. (ver Ilustração 2). Usa ficheiros XML com a informação dos padrões. Estes ficheiros podem também ser carregados a partir de outras localizações, como pens USB (ver Ilustração 2 Item 1). Após carregar o conteúdo dos ficheiros XML, a informação é disposta no programa da seguinte maneira: Uma árvore contendo o nome de todos os padrões carregados para memória (ver Ilustração 2 Item 2); Área em que se pode seleccionar a lógica (Logic) e a área de execução do padrão (Scope) correspondente ao padrão seleccionado (ver Ilustração 2 Item 3); Informação acerca do padrão, exemplo, entre outros, usados no padrão (ver Ilustração 2 Item 4); Manipulação de certos parâmetros associados à fórmula de cada padrão (ver Ilustração 2 Item 5). O valor de cada parâmetro pode ser editado de forma manual ou automática (ver Ilustração 2 Item 3). Os parâmetros podem ser carregados a partir de ficheiros e gravados para ficheiro (ver Ilustração 2 Item 6); Podem ser enumerados os valores possíveis de uma variável a utilizar nas fórmulas, bastando para isso adicionar o valor INST ao parâmetro ou parâmetros que iram ficar com esses valores (ver Ilustração 2 Item 8).
Depois de inserido todos os valores nos respectivos parâmetros, o editor cria a fórmula lógica com os valores escolhidos pelo utilizador, para ser usada mais tarde (ver Ilustração 2 Item 7). Ilustração 2 - IVY Properties Editor - JAVA 4. Tecnologias Pretende-se com este projecto disponibilizar a ferramenta anteriormente descrita para a Web. Outro aspecto que se queria obter ao passar a ferramenta para a Web era de ser independente do browser usado. Como tal foi necessário estudar várias tecnologias Web que garantissem todos os propósitos descritos. No fim a escolha recaiu entre duas tecnologias: Google Web Toolkit e Microsoft Silverlight, que passarei a descrever um pouco sobre elas. Google Web Toolkit O Google Web Toolkit (GWT) é uma framework open source que permite usar a linguagem Java para desenvolver aplicações Web em AJAX, compilando o código Java para Javascript e HTML. O GWT é multi-plataforma e multi-browser e permite que código criado para um projecto possa ser reutilizado para outros projectos. Permite ver mudanças que se façam no código sem necessidade de o recompilar, utilizar o botão de Back do browser, ver os links contidos no
histórico do browser, facilmente passar de uma língua como o português para outra como por exemplo o inglês. Existem múltiplos ambientes de desenvolvimento que podem ser usados com o GWT, tal como o Eclipse, IntelliJ IDEA, entre outros. Silverlight O Silverlight é um plug-in multi-plataforma, multi-browser e multidispositivo da Microsoft baseado em.net para a distribuição de aplicações interactivas e multimédia na Web. Embora não seja totalmente open-source como o Google Web Toolkit, existe um esforço da Microsoft para o tornar mais aberto e flexível. Para os sistemas operativos baseados em Linux o plug-in usado não é o Silverlight mas o Moonlight e não usa o.net mas sim a framework MONO. O MONO surge com uma parceria entre a Microsoft e a Novell para permitir que as aplicações criadas em Silverlight corram em ambiente Linux. O Silverlight é multi-linguagem, suportando C#, Visual Basic, ASP.NET, ASP AJAX, XML, XAML, Javascript, LINQ (Language Integrated Query), entre outras linguagens. O Visual Studio 2008 e o Expression 2 são as ferramentas usadas para desenvolver aplicações Silverlight. Embora ambas as aplicações sejam pagas, existem versões Express que podem ser descarregadas da Microsoft, sem custos associados e sem perda de funcionalidades em relação às versões pagas. Para o Linux e Mac existe um plug-in open-source para o Eclipse. Com o Silverlight podem-se usar ferramentas que estão disponíveis na Windows Presentation Foundation (WPF), embora só uma pequena parte do WPF esteja disponível para o Silverlight, ela será alargada em futuras actualizações. Análise Como se pode constatar, ambas as tecnologias permitem desenvolver a aplicação Web com os propósitos anteriormente descritos. Mas apesar disso, a escolha recaiu sobre o Silverlight. A escolha ficou a dever-se ao facto que: O Silverlight permite que se criem aplicações Web com um aspecto gráfico muito bom, muito mais facilmente que o GWT. Está muito bem documentado, existindo uma grande comunidade que podem contribuir com ideias e soluções, inclusive existem pequenos vídeos que mostram como se fazem determinadas operações. Pode usar múltiplas linguagens no mesmo projecto, não estando desta maneira restrito a especificações de uma só linguagem. Com o LINQ, que é uma extensão do.net, é muito fácil manipular e tratar informação em ficheiros XML e não só.
Web. Havia um grande interesse em explorar as tecnologias.net para a 5. Implementação Após a escolha da tecnologia, o Silverlight, analisou-se a aplicação desenvolvida em Java para se proceder à sua transição para a Web. Para este projecto a linguagem principal escolhida foi o C#. Da aplicação desenvolvida em Java manteve-se muito da sua estrutura, Layout e modo de funcionamento. A nível de Layout, apesar de a aplicação Web ser muito parecida com a aplicação desenvolvida em Java (ver Ilustrações 2 e 3) existem algumas diferenças. Ilustração 3-IVY Properties Editor - Silverlight A disposição dos parâmetros na aplicação Silverlight (ver Ilustração 3 Item 4) é feita usando uma grelha com dois campos, sendo um campo o nome do parâmetro e o outro campo o valor que está associado a esse parâmetro, sendo que esse valor pode ser manipulado pelo utilizador (ver Ilustração 4 Item 4). A enumeração dos valores para um dado parâmetro é feito mais uma vez com recurso a uma grelha (ver Ilustração 3 Item 5), que neste caso só tem um único campo, o utilizador insere os valores que desejar usando o Datagrid Replay, o que permite que o utilizador ter n fórmulas com n valores.
Depois de se ter todos os valores inseridos, escolhe-se o(s) parâmetro(s) que iria(m) usar esses valor, para tal insere-se o valor chave value (sem as aspas, é case-sensitive) no lugar do campo Value (ver Ilustração 3 Item 4 e Ilustração 4 Item 4). Foi retirado da aplicação a Web a possibilidade de se fazer uma edição automática dos parâmetros (ver Ilustração 3 Item 2 e Ilustração 2 Item 3) sendo que a manipulação do valor dos parâmetros é feita de forma manual, uma vez que não se tem acesso ao modelo que vai ser verificado, mas sim aos padrões. Ao contrário da aplicação desenvolvida em Java o utilizador não pode carregar ficheiros XML contendo padrões, estes já se encontram disponíveis aquando do carregamento da aplicação. Não se pode carregar ficheiros contendo valores de parâmetros, (ver Ilustração 4 Item 6), mas pode fazer copy & paste aos resultados obtidos. Ilustração 4 - IVY Totalmente Preenchido O modo de funcionamento é em tudo idêntico à aplicação desenvolvida em Java, ou seja, usa um conjunto de ficheiros XML contendo os padrões e cria uma árvore com o nome dos padrões (ver Ilustração 3 Item 1 e Ilustração 4 Item 1). Ao seleccionar um dos muitos padrões da árvore, a informação é disposta pela aplicação Web (Ilustração 4 Itens 1, 2, 3 e 4).
Ilustração 5 - IVY Help Foi adicionado à aplicação Web uma secção de ajuda (ver Ilustração 3 Item 7) para ajudar o utilizador na utilização da ferramenta. Permite ficar a saber para que serve a ferramenta quais os padrões que usa entre outras informações que lhe puderam ser úteis (ver Ilustração 5). Ilustração 6 - IVY-About Também foi adicionado à aplicação Web informação acerca de quem desenvolveu a aplicação, qual a sua versão e em que data foi actualizado pela última vez (ver Ilustração 3 Item 7 e Ilustração 6).
6. Conclusões A World Wide Web (WWW) tem assumido cada vez mais um papel mais importante não só na troca de informação, mas também na criação de ferramentas que tradicionalmente apenas existiam nos desktops. Graças a tecnologias como o Silverlight, hoje é possível quebrar as barreiras que separam os diversos sistemas operativos e browsers usados e desta maneira fazer com que as ferramentas estejam disponíveis para um grupo mais alargado de utilizadores. Com o Silverlight, o editor de propriedades passou a ter essas vantagens. Pretende-se que em futuras revisões do editor, adicionar mais funcionalidades e ser cada vez mais fácil e simples de usar.