inteligência, ela pode esquecer ou distorcer a realidade, cometendo assim um erro. Se o software comete uma falha, esta pode ser consertada, pois foi introduzida durante a concepção e assim a validação não é feita corretamente e o resultado não é apresentado;
Exige poucas pessoas para interagir com o sistema;
Flexibilidade;
Integração de ferramentas; e
Reduz custos com funcionários especializados, pois com as regras inseridas na ferramenta, as tarefas podem ser realizados por pessoas não especialistas na área.
Savaris (2002) define algumas desvantagens ou problemas da utilização dos SEs que podem ser vistos a seguir:
Fragilidade: como os sistemas possuem conhecimentos específicos, eles não possuem conhecimentos genéricos quando surge uma necessidade;
Falta de meta-conhecimento: a aquisição de conhecimento ainda é uma das maiores dificuldades da aplicação da tecnologia; e
Validação: a medição do desempenho de sistemas especialistas é muito difícil porque não se pode quantificar o uso de conhecimento.
CLIPS (C Language Integrated Production System): desenvolvido pela NASA (National Aeronautics and Space Administration) desde 1985 (RILEY, 2005);
JCLIPS (CLIPS for Java): Utiliza Java como suporte para o desenvolvimento juntamente com o CLIPS, desenvolvido por Maarten Menken (MENKEN, 2005); e
JEOPS (Java Embedded Object Production System).
2.7.1 CLIPS
Em 1985, a NASA decidiu integrar o desenvolvimento interno de sistemas especialistas.
Como resultado, o setor de tecnologia de software do Johnson Space Center criou o CLIPS (C Language Integrated Production System). CLIPS rapidamente conseguiu um grande número de usuários, principalmente no meio acadêmico. A sua semelhança com a sintaxe de outras linguagens usadas pela comunidade de Inteligência Artificial (especialmente LISP - List Processing) ajudou na proliferação de seus usuários (FIGUEIRA FILHO, 2000).
O CLIPS é uma ferramenta que permite o total desenvolvimento de sistemas especialistas baseados em regras, podendo ser embutido em código procedural, chamado como uma sub-rotina, e integrado com linguagens como C, Java e FORTRAN (Formula Translator). Ele é facilmente extensível através do uso de protocolos já fortemente definidos (RILEY, 2004).
O CLIPS foi escrito na linguagem C para uma maior portabilidade e velocidade, podendo ser instalado em vários sistemas operacionais, sem mudança de código, porém esses sistemas operacionais necessitam possuir compiladores C ou C++. O fato de ele ser desenvolvido em C não impede um possível encapsulamento em Java, pois ele pode ser compilado como uma biblioteca. O CLIPS vem com todo o código fonte, podendo ser modificado de acordo com as próprias necessidades (RILEY, 2004).
A integração de CLIPS com as linguagens hospedeiras, apesar de existir, está longe de ser completa. A sintaxe das regras está muito mais próxima à de LISP que a de C, dificultando o seu aprendizado por programadores desta linguagem (FIGUEIRA FILHO, 2000).
A ferramenta CLIPS é mantida como um software de domínio público, o que é uma vantagem, pois não possui custo de distribuição ou utilização. Além disso, ela possui uma boa e abrangente documentação para orientação de uso, orientando a utilização sobre vários aspectos,
desde a construção de sistemas especialistas até a expansão do CLIPS e seu encapsulamento em outras ferramentas (RILEY, 2004).
O CLIPS funciona permitindo a entrada de regras e fatos através de código armazenado em arquivos de texto com a extensão “clp” ou com código digitado no próprio console, que é fornecido juntamente com a biblioteca (OLDONI, 2006).
Apesar de ser habitual o uso do CLIPS em conjunto com linguagens de programação convencionais (como C, Ada ou C++), ele define uma linguagem de programação própria (COOL, ou CLIPS Object-Oriented Language) (FIGUEIRA FILHO, 2000).
2.7.2 JCLIPS
A ferramenta JCLIPS é um software livre, sob licença GNU, que permite programadores Java usarem o CLIPS em combinação com Java através da incorporação do motor CLIPS em uma classe Java. Assim sendo, torna-se possível controlar o motor CLIPS através do Java, podendo-se então carregar arquivos CLIPS, executar o motor, executar comandos arbitrários, e receber informações de volta do CLIPS em mensagens de texto (MENKEN, 2005).
Nas aplicações escritas em Java que necessitam a utilização do JCLIPS é necessária a inclusão de dois arquivos (DLL e JAR) para estabelecer uma conexão (ponte) entre o Java e o JCLIPS. O arquivo DLL possui toda a distribuição compilada para Windows, não sendo necessário obter o CLIPS separadamente. O arquivo JAR complementa a parte Java da ponte. Como o JCLIPS é escrito em Java ele pode rodar nas plataformas Windows e Linux (MENKEN, 2005).
O JCLIPS pode ser embutido em uma aplicação Java que seja entregue através de uma página Web via Applet (CRIGHTON, 2005 apud OLDONI, 2006).
Para fazer a integração do JCLIPS com qualquer outra aplicação Java é necessário adicionar os arquivos contendo a classe Java e a biblioteca CLIPS em um mesmo diretório do classpath Java, ou adicionar o diretório da aplicação e do arquivo na variável de ambiente classpath, utilizada pelo Java (MENKEN, 2005).
Esta classe contém os métodos para configuração e controle do ambiente CLIPS. O motor de inferência CLIPS pode enviar mensagens de retorno ao Java, o que é feito chamando uma função
definida pelo usuário no Java, que tem a mensagem de retorno como argumento de entrada.
(MENKEN, 2005 apud OLDONI, 2006).
2.7.3 JEOPS
A ferramenta JEOPS foi desenvolvida como um projeto na disciplina de Inteligência Artificial na Universidade Federal de Pernambuco. Durante a disciplina foi desenvolvido o que viria a ser o primeiro protótipo de JEOPS. Aproveitando o fato de que muito já havia sido desenvolvido em JEOPS, mas que o sistema ainda não estava pronto para ser usado em aplicações de grande porte, o autor do projeto decidiu continuar o trabalho mesmo após a conclusão do curso de graduação, realizando sua dissertação de mestrado baseado na criação do JEOPS (FIGUEIRA FILHO, 2000).
O JEOPS tem como finalidade principal a facilidade de uso e o respeito às características do paradigma orientado a objetos, o que seria conseguido com a maior integração possível entre as regras e a linguagem hospedeira (FIGUEIRA FILHO, 2000).
JEOPS faz parte da classe de sistemas EOOPS (Embedded Object-Oriented Production Systems). Essa abordagem representa os fatos na memória de trabalho sob a forma de objetos e traz vantagens, tanto ligadas a conceitos de qualidade apresentados pela Engenharia de Software (reusabilidade, modularidade, legibilidade, manutenibilidade), como relativas à engenharia de conhecimento (representação natural de relações ontológicas) (FURTADO, MARQUES &
PINHEIRO, 2004).
O JEOPS funciona como um pré-compilador, que traduz um arquivo de regras em uma classe Java que implementa o motor de inferência de acordo com o arquivo original. Como as regras utilizam objetos, suas classes já devem estar definidas no momento da definição das regras, e devem ser implementadas como classe Java para a execução das mesmas (FURTADO, MARQUES
& PINHEIRO, 2004).
Uma regra JEOPS é, essencialmente, composta por três seções: declarações, condições e ações. A seção de declarações especifica os objetos que serão utilizados nas condições e/ou ações.
As condições são quaisquer expressões Java que retorne um valor booleano. Na seção de ações podem ser inseridos quaisquer comandos Java, no entanto, estes serão executados somente se todas as condições forem verdadeiras (FURTADO, MARQUES & PINHEIRO, 2004).
2.7.4 JEOPS X JCLIPS
Para saber qual ferramenta será utilizada no desenvolvimento deste projeto foi necessária a realização de uma comparação entre as ferramentas escolhidas previamente. A Tabela 4 apresenta um comparativo entre as ferramentas JCLIPS, JEOPS e CLIPS. A ferramenta CLIPS foi adicionada no comparativo, pois a ferramenta JCLIPS utiliza o motor de inferência CLIPS e também surge como opção para a utilização.
Como base para comparação das ferramentas foi selecionado os seguintes critérios:
compatibilidade com java, já que o sistema será desenvolvido em java, linguagem utilizada, qualidade da documentação e tipo de licença de uso.
Tabela 4. JCLIPS x JEOPS.
Ferramenta Compatibilidade
com Java Linguagem Documentação Licença
CLIPS
Sim, mas requer esforço extra de programação para encapsulamento.
CLIPS Boa Livre
JCLIPS Sim CLIPS + Java Regular Livre
JEOPS Sim Java Boa Livre
O JEOPS foi a ferramenta escolhida no desenvolvimento do sistema especialista para o sistema proposto, porque possui uma curva de aprendizado menor por utilizar apenas a linguagem Java e também porque com o uso do JEOPS é possível fazer a depuração das regras de decisão que estão embutidas no código Java gerado, o que não é possível com as ferramentas JCLIPS e CLIPS.
3 DESENVOLVIMENTO
Neste capítulo será esclarecido o desenvolvimento do projeto do Ambiente Virtual para Simulação de Casos Clínicos em Estomatologia. Na primeira parte serão apresentados todos os requisitos funcionais e não funcionais do sistema. Logo após será apresentada toda a análise do sistema através da notação UML, descrevendo todos os casos de uso. Será descrito como será usado o Sistema Especialista dentro do sistema e também será falado sobre as tecnologias necessárias para todo o desenvolvimento. Por fim será descrito os testes e validações do sistema.