Vous êtes sur la page 1sur 85

CENTRO UNIVERSITRIO VILA VELHA

CURSO DE CINCIA DA COMPUTAO

LUCIANA ROCHA DOS SANTOS

PROTTIPO DE UM SISTEMA ESPECIALISTA


EDUCATIVO PARA DIAGNSTICO MDICO

VILA VELHA
2010

LUCIANA ROCHA DOS SANTOS

PROTTIPO DE UM SISTEMA ESPECIALISTA


EDUCATIVO PARA DIAGNSTICO MDICO
Trabalho de Concluso de Curso apresentado ao Centro Univertrio Vila Velha como
requisito parcial para a obteno do grau
de Bacharel em Cincia da Computao.
Orientador: Erlon Pinheiro

VILA VELHA
2010

LUCIANA ROCHA DOS SANTOS

PROTTIPO DE UM SISTEMA ESPECIALISTA


EDUCATIVO PARA DIAGNSTICO MDICO
BANCA EXAMINADORA

Prof. Msc. Erlon Pinheiro


Centro Universitrio Vila Velha
Orientador

Prof. Msc. Vinicius Rosalen da


Silva
Centro Universitrio Vila Velha

Prof. Msc. Hudson Ramos


Centro Universitrio Vila Velha

Trabalho de Concluso de Curso


aprovado em 25/11/2010.

Eu, Luciana Rocha dos Santos,


autorizo que a UVV, sem nus, promova a
publicao de minha monografia em pgina
prpria na Internet ou em outro meio
de divulgao de trabalho cientfico.
Data: 25/11/2010

Aos meus pais e seu incondicional apoio...

AGRADECIMENTOS
A Deus, pelas sempre presentes segundas chances. Por nunca ter me apresentado uma situao mais difcil do que a capacidade de superao alcanada atravs
delas e pelo apoio das pessoas que coloca em minha vida para ajudar-me a enfrentlas. Obrigada, meu Senhor e meu Deus. V Teu fruto. Tua vitria. Graas.
beno de amor e carinho que a minha famlia. Ao meu porto seguro e lar.
queles dos braos abertos e sorrisos sem reserva. Das risadas e ombros para lgrimas. Quem me faz ser quem sou e lutar por meus objetivos. Meu muito obrigada.
A minha me e amiga Sandra, sempre to zelosa, paciente, incentivadora, inabalvel em sua f em minha vitria. Sem seu apoio essa graduao certamente no seria
possvel. Obrigada pelas oraes, pelas noites mal dormidas, pelos beijos de bom
dia, pelas horas de estrada, pelas filas enfrentadas, pela ajuda de fim de ms, pelas
ligaes carregadas de saudade, pelo esforo de ltima hora, pelas batalhas perdidas,
pela mo que reergue-me, pelo insistente otimismo, pelo zelo, pelo caracterstico bom
humor, por ser o incondicional e mais bonito exemplar de amor que conheo. Por ser a
Rocha constante em minha vida. Todo o meu imensurvel amor, devoo, admirao
e eterno agradecimento.
Ao meu pai Aldo, por todo seu rduo trabalho e esforo. Pelas noites viradas e
preocupao com nosso bem estar. Pelo incentivo e valorizao. Pelo amor e apoio
incondicionais. Meu amor e meu muito obrigada.
Ao orientador, professor e amigo Erlon Pinheiro, pela sua pacincia e calma durante os momentos difceis e incertos da jornada. Pela sua experincia e clareza de
pensamento no auxlio construo de idias. Pelo carinho e ateno com que conduz sua orientao. Muito obrigada.
s tias-mes Lilian, Cida e Arilana, por todas as incontveis oraes, todo o amor
e devoo.
Ao meu irmo Filipe, to decisivo durante as inseguranas de fim de jornada. Obrigada pelo apoio.

Aos professores e incentivadores Leo Muniz, Vinicius Rosalen e Coordenador Cristiano Biancardi. Pelos incontveis momentos de auxlio no decorrer do curso. Pela
ateno irreservada. Pelo incentivo excelncia acadmica. Pelo bom humor.
Aos amigos e colegas de curso, pois sei que sem o auxlio indireto dessas pessoas,
a caminhada teria sido muito mais tortuosa. Meu muito obrigada.
Aos amigos Fabio, Thiago, Driely, Felipe e Edgar pela caminhada conjunta. Pelo
auxlio mtuo e pelo apoio. Pela amizade iniciada e propagada durante o curso. Meu
muito obrigada.
Aos amigos Halysson, Juviani e Rodrigo, com quem dividi momentos que levo para
o resto da vida. Pela fora e determinao contagiantes, pelo carinho sem igual, pela
pacincia e compreenso dignas de famlia.
Aos amigos eternos Lariane, Hugo, Luciana e Maria Luza por sua onipresena
mesmo distncia. Pelo incondicional amor, apoio e irrevogvel crena em minha
vitria. Pelas palavras que impulsionam e acalmam, incentivam e consolam, fazem rir
e chorar. Todo o meu amor e meu muito obrigada.
Aos amigos Lucas e Gabriella pelo companheirismo e incondicional apoio. Pelos
momentos de luta pesada nos quais se recusam a abandonar a fronte de batalha.
Pelos momentos de descontrao to necessrio para minha sade mental e perseverana. Pelo incentivo minha escolha de carreira. Pela amizade incondicional e
irrestrita. Muito obrigada.

Sweet are the uses of adversity,


Which, like the toad, ugly and venomous,
Wears yet a precious jewel in his head;
And this our life, exempt from public haunt,
Finds tongues in trees, books in the running brooks,
Sermons in stones, and good in every thing.
William Shakespeare

LISTA DE TABELAS
1

Regras de negcio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

Descrio de caso de uso - Criar Usurio. . . . . . . . . . . . . . . . . .

50

Descrio de caso de uso - Criar Paciente Virtual. . . . . . . . . . . . .

51

Descrio de caso de uso - Interagir com Paciente Virtual. . . . . . . .

52

LISTA DE FIGURAS
1

Arquitetura genrica de um Sistema Especialista. . . . . . . . . . . . . .

24

NeuroCase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

Tela de entrada de dados do SEDACaP. . . . . . . . . . . . . . . . . . .

29

Relatrio probabilstico de diagnstico gerado pelo SEDACaP. . . . . .

30

Viso geral do Motor de Inferncia Drools. . . . . . . . . . . . . . . . . .

32

Exemplo de criao de uma base de conhecimento lgica em Drools. .

34

Exemplo de regra Drools em um arquivo .drl. . . . . . . . . . . . . . . .

34

Exemplo de sesso Stateful. . . . . . . . . . . . . . . . . . . . . . . . .

35

Exemplo de sesso Stateless. . . . . . . . . . . . . . . . . . . . . . . .

36

10

Exemplo do uso de query. . . . . . . . . . . . . . . . . . . . . . . . . . .

36

11

Exemplo de fluxo de regra Drools. . . . . . . . . . . . . . . . . . . . . .

37

12

Site oficial da Oracle.

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

13

Site oficial do Eclipse. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

14

Pacote de instalao do Plugin Drools. . . . . . . . . . . . . . . . . . . .

39

15

Um projeto inicial Drools. . . . . . . . . . . . . . . . . . . . . . . . . . .

40

16

Um projeto inicial Drools. . . . . . . . . . . . . . . . . . . . . . . . . . .

41

17

Representao da atribuio de pesos durante clculo da validao de


diagnstico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

18

Casos de Uso do prottipo. . . . . . . . . . . . . . . . . . . . . . . . . .

48

19

Esquematizao da implementao multi-paradigma. . . . . . . . . . .

54

20

Esquematizao do conhecimento armazenado. . . . . . . . . . . . . .

54

21

Representao de pacotes do prottipo. . . . . . . . . . . . . . . . . . .

56

22

Diagrama de classes da camada de apresentao. . . . . . . . . . . . .

57

23

Diagrama de classes da camada de aplicao. Controle. . . . . . . . .

59

24

Diagrama de classes da camada de aplicao. Modelo. . . . . . . . . .

60

25

Diagrama de sequncia da criao de usurios. . . . . . . . . . . . . .

62

26

Diagrama de sequncia da criao de pacientes virtuais. . . . . . . . .

63

27

Diagrama de sequncia da interao do usurio com pacientes virtuais.

64

28

Diagrama de sequncia da validao de diagnstico. . . . . . . . . . . .

65

29

Tela do ambiente do Estudante. . . . . . . . . . . . . . . . . . . . . . . .

66

30

Tela do ambiente do Administrador.

. . . . . . . . . . . . . . . . . . . .

67

31

Linguagem Java 1.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

32

Plataforma Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

33

Janela tpica desenvolvida com Java Swing. . . . . . . . . . . . . . . . .

70

34

Arquitetura geral do prottipo. . . . . . . . . . . . . . . . . . . . . . . . .

72

35

Navegabilidade de interface. . . . . . . . . . . . . . . . . . . . . . . . .

73

36

Regra Drools para diagnstico de Amigdalite. Arquivo: amigdalite.drl . .

79

37

Regra Drools para diagnstico de Asma. Arquivo: asma.drl . . . . . . .

79

38

Regra Drools para diagnstico de Catapora. Arquivo: catapora.drl . . .

80

39

Regra Drools para diagnstico de Rubola. Arquivo: rubeola.drl . . . . .

80

40

Regra Drools para diagnstico de Sarampo. Arquivo: sarampo.drl . . . .

80

41

Classe KnowledgeManager. Arquivo: KnowledgeManager.java . . . . .

81

42

Classe KnowledgeManager. Arquivo: KnowledgeManager.java . . . . .

82

43

Classe KnowledgeManager. Arquivo: KnowledgeManager.java . . . . .

83

LISTA DE SIGLAS
API

Application Program Interface (Interface de Aplicao).

BC

Base de Conhecimento.

BRMS

Business Rules Management System (Sistema de Gerncia de Regras


de Negcio).

EC

Engenheiro do Conhecimento.

GPEB

Grupo de Pesquisas em Engenharia Biomdica.

IA

Inteligncia Artificial.

IDE

Integrated Development Environment (Ambiente de Desenvolvimento


Integrado).

J2EE

Plataforma Java Verso 2.

MVC

Model-View-Controller (Modelo-Viso-Controle).

OO

Orientao a Objetos.

RBC

Raciocnio Baseado em Casos.

SE

Sistema Especialista.

SUMRIO

RESUMO
1 INTRODUO

17

1.1 JUSTIFICATIVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

1.2 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

1.2.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

1.2.2 Objetivos Especficos . . . . . . . . . . . . . . . . . . . . . . . .

19

1.3 MTODO DE PESQUISA . . . . . . . . . . . . . . . . . . . . . . . . . .

19

1.4 DESCRIO DOS CAPTULOS . . . . . . . . . . . . . . . . . . . . . .

20

2 LEVANTAMENTO BIBLIOGRFICO

21

2.1 HISTRICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

2.2 SISTEMAS ESPECIALISTAS . . . . . . . . . . . . . . . . . . . . . . . .

22

2.2.1 Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

2.3 SISTEMAS ESPECIALISTAS MDICOS . . . . . . . . . . . . . . . . . .

27

2.3.1 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

2.4 PROTTIPO DESENVOLVIDO . . . . . . . . . . . . . . . . . . . . . . .

30

3 DROOLS RULE ENGINE

31

3.1 VISO GERAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

3.1.1 Processo de Inferncia . . . . . . . . . . . . . . . . . . . . . . .

31

3.1.2 Vantagens da sua utilizao . . . . . . . . . . . . . . . . . . . . .

33

3.2 REPRESENTAO DE CONHECIMENTO . . . . . . . . . . . . . . . .

33

3.2.1 Criao de uma Base de Conhecimento . . . . . . . . . . . . . .

33

3.2.2 Regras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

3.2.3 Sesses Stateless . . . . . . . . . . . . . . . . . . . . . . . . . .

35

3.2.4 Sesses Stateful . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

3.2.5 Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

3.2.6 Fluxo de Regras . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

3.3 INSTALAO DO AMBIENTE

. . . . . . . . . . . . . . . . . . . . . . .

37

3.3.1 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

3.3.2 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

3.3.3 Plugin Drools para Eclipse . . . . . . . . . . . . . . . . . . . . .

39

3.3.4 Configurando o runtime Drools para depurao . . . . . . . . . .

40

4 LEVANTAMENTO DE REQUISITOS

42

4.1 DESCRIO DO PROBLEMA . . . . . . . . . . . . . . . . . . . . . . .

42

4.1.1 Estudantes fazem diagnstico de pacientes virtuais . . . . . . .

42

4.1.2 Administradores mantm usurios . . . . . . . . . . . . . . . . .

46

4.1.3 Componentes Presentes . . . . . . . . . . . . . . . . . . . . . .

47

4.1.4 Mtodo de Aquisio de Conhecimento . . . . . . . . . . . . . .

47

4.2 DIAGRAMA DE CASOS DE USO . . . . . . . . . . . . . . . . . . . . . .

48

4.3 AMBIENTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

4.3.1 Ambiente do Estudante . . . . . . . . . . . . . . . . . . . . . . .

48

4.3.2 Ambiente Administrativo . . . . . . . . . . . . . . . . . . . . . . .

49

4.4 REGRAS DE NEGCIO . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

4.5 DESCRIO DE CASOS DE USO . . . . . . . . . . . . . . . . . . . . .

50

4.5.1 Manter Usurio . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

4.5.2 Criar Paciente Virtual . . . . . . . . . . . . . . . . . . . . . . . .

51

4.5.3 Interagir com Paciente Virtual . . . . . . . . . . . . . . . . . . . .

52

5 ESPECIFICAO DE ANLISE

53

5.1 DEFINIO DA DIVISO ENTRE PARADIGMAS . . . . . . . . . . . . .

53

5.2 BASE DE CONHECIMENTO . . . . . . . . . . . . . . . . . . . . . . . .

54

5.3 MODELO DE CLASSES . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

5.3.1 Diagrama de Pacotes . . . . . . . . . . . . . . . . . . . . . . . .

55

5.3.2 Diagrama da Camada de Apresentao . . . . . . . . . . . . . .

56

5.3.3 Diagrama da Camada de Aplicao . . . . . . . . . . . . . . . .

57

5.4 DIAGRAMAS DE SEQUNCIA . . . . . . . . . . . . . . . . . . . . . . .

61

5.4.1 Manter Usurios . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

5.4.2 Criar Pacientes Virtuais . . . . . . . . . . . . . . . . . . . . . . .

61

5.4.3 Interagir com Pacientes Virtuais . . . . . . . . . . . . . . . . . .

61

5.4.4 Validar Diagnstico . . . . . . . . . . . . . . . . . . . . . . . . . .

61

5.5 TELAS DO PROTTIPO . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

5.5.1 Tela do Estudante . . . . . . . . . . . . . . . . . . . . . . . . . .

66

5.5.2 Tela do Administrador . . . . . . . . . . . . . . . . . . . . . . . .

67

6 ESPECIFICAO DE PROJETO

68

6.1 ESCOLHA DA TECNOLOGIA . . . . . . . . . . . . . . . . . . . . . . . .


6.1.1 Paradigma Orientado a Objetos

68

. . . . . . . . . . . . . . . . . .

68

. . . . . . . . . . . . . . . . . . .

70

6.1.3 Persistncia de Dados . . . . . . . . . . . . . . . . . . . . . . . .

71

6.2 ARQUITETURA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

72

6.3 DIVISO EM CAMADAS

. . . . . . . . . . . . . . . . . . . . . . . . . .

72

6.3.1 Camada de Apresentao . . . . . . . . . . . . . . . . . . . . . .

72

6.3.2 Camada de Aplicao . . . . . . . . . . . . . . . . . . . . . . . .

74

6.3.3 Camada de Integrao e Lgica . . . . . . . . . . . . . . . . . .

74

6.1.2 Paradigma Declarativo Lgico

7 CONCLUSO
7.1 CONHECIMENTO ADQUIRIDO

76
. . . . . . . . . . . . . . . . . . . . . .

76

7.2 CONCLUSO DOS OBJETIVOS . . . . . . . . . . . . . . . . . . . . . .

76

7.3 DIFICULDADES ENCONTRADAS . . . . . . . . . . . . . . . . . . . . .

77

7.4 TRABALHOS FUTUROS . . . . . . . . . . . . . . . . . . . . . . . . . .

77

8 ANEXO

79

REFERNCIAS

84

RESUMO
O projeto apresenta o desenvolvimento de um prottipo de Sistema Especialista voltado ao auxlio do profissional de Educao na capacitao de estudantes de Medicina
em tcnicas de diagnstico. Trata-se de um software responsvel por gerar pacientes
virtuais por meio de inferncias em uma Base de Conhecimento lgica, composta por
fatos e regras que modelam o conhecimento de um especialista. De forma direta e
prtica, utiliza-se da metodologia investigativa de ensino para promover uma soluo
computacional que valide os conhecimentos adquiridos em sala de aula. O prottipo
possui integrao de dois diferentes paradigmas de programao para alcanar seus
objetivos: o Lgico e o Orientado a Objetos. Para tanto, fez-se uso do Sistema de
Gerncia de Regras de Negcio Drools utilizado durante a criao e manuteno de
doenas e sintomas associados.
Palavras-chave: Sistema Especialista, Inteligncia Artificial, Sistemas Computacionais, Sistemas Mdicos, Drools Rule Engine.

17

INTRODUO

Sistemas Especialistas (SE) foram criados para resolver problemas em um determinado domnio onde o conhecimento muito especfico e fortemente limitado aos
especialistas da rea. Tais sistemas podem ser definidos como programas que simulam o raciocnio de seres humanos na soluo de problemas complexos do mundo
real. Um SE Mdico prope-se a trazer tal perspectiva de solues de problemas
para o mbito clnico, comprometendo-se a ser fiel percia humana e aproximar-se
ao mximo das concluses que um perito na rea alcanaria na soluo dos mesmos problemas. Nesse projeto, apresenta-se o prottipo de um Sistema Especialista
Educacional voltado para o Diagnstico Mdico. Trata-se de um software responsvel
por validar diagnsticos de doenas baseado em uma Base de Conhecimento lgica.
A Base de Conhecimento do sistema ser construda de acordo com as informaes
obtidas na literatura sobre as doenas, como tambm no conhecimento de especialistas da rea. O sistema proposto tem como objetivo principal auxiliar os profissionais
de educao na capacitao de estudantes da rea mdica, ampliando seus conhecimentos e otimizando o tempo em sala de aula.
Sistemas Especialistas tm sido usados como auxlio ao processo de tomada de
deciso desde seu surgimento nos anos 70 [8]. Nascidos da necessidade sempre
crescente de emular o conhecimento humano e sua forma de raciocnio lgico, os
SEs primitivos surgiram com a esperana de que, num futuro prximo, o Especialista utpico se mostrasse invariavelmente exato, alm de constante e autonomamente
evolutivo. A associao desses conceitos tendncia da Inteligncia Artificial (IA) foi
naturalmente transposta para a rea educacional com o MYCIN em 1976 [8]. Na Era
da Onipresena Informacional, a inteno de replicar, e at mesmo aperfeioar o tutor
educacional, apresenta-se como fator chave para a evangelizao do conhecimento
especfico. Com o apelo do vislumbre de uma experincia educacional livre de restries temporais ou geogrficas e sem a necessidade presencial do detentor humano
do conhecimento, os Sistemas Especialistas Educativos apresentam-se como o futuro

18

da Educao, ao passo que promovem a reestruturao e modernizao das convenes sociais de ensino e a busca imperativa por novas formar de ensinar. Na rea
mdica, os Sistemas Especialistas mostraram-se ainda mais fortes, com esforos que
impulsionaram a prpria rea de Inteligncia Artificial ao redor do globo. Em territrio
nacional, imprecedentes foram os avanos do Grupo de Pesquisas em Engenharia
Biomdica (GPEB) da Universidade Federal de Santa Catarina, que desenvolveu Sistemas Especialistas nas mais especficas reas mdicas promovendo a capacitao
de profissionais da rea, alm da propagao de Engenheiros do Conhecimento especializados em Inteligncia Artificial Mdica [1].

1.1 JUSTIFICATIVA
O processo de aprendizado na rea Mdica envolto principalmente em tcnicas de repetio de prticas, tentativa e erro e pesquisa cientfica. Durante a execuo dessas tarefas estudantes, ainda no experientes, deparam-se com situaes
delicadas onde apenas a prtica recursiva leva ao aprimoramento do conhecimento
pesquisado. A rea Mdica , no entanto, uma rea que possui alta sensibilidade a
erros. Um diagnstico faltoso pode significar a perda da vida de um paciente. Dentro
desse contexto, alternativas para a prtica de diagnstico, como a presente prtica
virtual, trazem aos estudantes a segurana do aprendizado em um ambiente onde
seus erros no causam fatalidades e sim a oportunidade de acertar em uma prxima
tentativa. O presente projeto objetiva desenvolver o prottipo de uma soluo computacional capaz de emular a criao de pacientes virtuais. Estudantes de Medicina
podem interagir com esses pacientes, que possuem uma dentre uma coleo limitada
de doenas armazenadas em uma base de conhecimento. A meta do estudante ,
atravs de uma conversa com o paciente, apontar qual doena ele possui. Para alcanar essa meta, toma-se como hiptese de pesquisa a implementao multi-paradigma,
integrando uma aplicao Orientada a Objetos a uma Base de Conhecimentos lgica.

19

1.2 OBJETIVOS
1.2.1 Objetivo Geral
O objetivo da presente pesquisa desenvolver uma ferramenta educativa que
combine os dois diferentes paradigmas de programao, Lgico e Orientado a Objetos. Essa ferramenta ir auxiliar estudantes de Medicina a colocar em prova suas
capacidades no processo de diagnstico. Como exemplo, ser desenvolvido um prottipo do sistema especialista Hippocrates que testa o diagnstico de diversas doenas.

1.2.2 Objetivos Especficos


Pesquisar a integrao de diferentes paradigmas dentro de uma mesma aplicao computacional, analisando e regulando a linha de diviso entre o lgico e o
OO.
Pesquisar o desenvolvimento de um Sistema Especialista que descreva o conhecimento mdico.
Pesquisar as diferentes formas de aquisio de conhecimento por um Sistema
Especialista.

1.3 MTODO DE PESQUISA


Para alcanar os objetivos propostos, o presente trabalho ser desenvolvido de
acordo com a seguinte metodologia geral de pesquisa:
Realizao de pesquisa bibliogrfica que compreenda o mbito dos Sistemas
Especialistas em geral e Sistemas Especialistas Mdicos, documentando suas
caractersticas definidoras, particularidades de implementao e contexto atual.
Realizao de pesquisa investigativa em busca de solues conciliadoras entre
diferentes paradigmas. A soluo escolhida deveria permitir clareza de cdigo e
de projeto em sua utilizao.
Anlise da soluo integradora encontrada e de suas limitaes inerentes, desenvolvendo uma estratgia de implementao.

20

Anlise do problema, definindo a qual camada de implementao caberia a modelagem dos aspectos do prottipo.
Desenvolver um prottipo baseado nas pesquisas realizadas.

1.4 DESCRIO DOS CAPTULOS


Composto por oito captulos, este trabalho apresenta em sua introduo o contexto
do problema em questo, seus objetivos gerais e especficos, bem como a inteno
do desenvolvimento de um prottipo que confirme as teorias levantadas.
O Captulo 2 descreve em torno do estudo bibliogrfico dos Sistemas Especialistas, seu histrico, principais caractersticas e exemplos na rea de aplicao em
questo.
No Captulo 3, apresentada uma introduo ao mundo da Drools Rule Engine,
abordando suas principais caractersticas e funcionalidades, alm de tutorias de instalao.
Em sequncia so apresentados os requisitos que definiram o escopo do prottipo desenvolvido, abordando o mini-mundo relacionado, bem como casos de uso e
ambientes de interao presentes (Captulo 4).
J o Captulo 5 aborda os detalhes de anlise dos requisitos existentes, explanando a implementao utilizada para executar os requisitos.
No Captulo 6, uma explanao comenta as tecnologias usadas durante o desenvolvimento, especificando as diferentes ferramentas que auxiliaram a integrao dos
paradigmas de programao.
Uma concluso dos objetivos pode ser encontrada no Captulo 7, abordando as
dificuldades encontradas durante o desenvolvimento e o conhecimento adquirido ao
longo do projeto.
J o Captulo 8 traz os anexos relacionados, mostrando cdigos de implementao
em Java e em sintaxe Drools. Por fim, no ltimo captulo (Captulo 9), apresentam-se
as referncias bibliogrficas utilizadas.

21

LEVANTAMENTO
BIBLIOGRFICO

No intuito de fazer jus ao histrico e progresso tecnolgico da rea, foi realizada


uma pesquisa em torno do desenrolar progressivo dos Sistemas Especialistas na rea
de Inteligncia Artificial. A presente seo oferece um breve histrico do desenvolvimento de diferentes ferramentas ao longo dos anos, bem como exemplos de algumas
solues relevantes para a rea de Sistemas Mdicos.

2.1 HISTRICO
No incio dos anos 50, os fundamentos da Inteligncia Artificial comearam a possibilitar a representao do conhecimento lgico utilizando-se da Lgica Matemtica e
da Teoria das Funes Recursivas. Essa base terica para implementaes de estruturas declarativas, como listas e fatos, passaram a possibilitar o desenvolvimento de
expresses simblicas recursivas [2].
J nos anos 60, foram iniciadas as tentativas de simulao do processo de pensamento, quando os pesquisadores de IA tentavam emular a forma com que o ser
humano chegava a decises atravs da manipulao do seu conhecimento. Porm,
com recursos limitados e progressos isolados, as dificuldades ainda mostravam-se
maiores e mais significativas que os avanos alcanados na rea. [9].
Na rea de IA aplicada, aps uma dcada de trabalho, emergiram trs subreas
principais: Sistemas Especialistas, Linguagem Natural e Robtica - incluindo viso,
fala e locomoo [3]. A partir da, no incio da dcada de 80, os Sistemas Especialistas comearam a surgir no mbito comercial, embora ainda, de forma no muito
significativa. A primeira companhia formada exclusivamente para produzir sistemas
especialistas foi a Intelli Genetics, no campo de engenharia gentica e com tcnicos
oriundos do Projeto de Programao Heurstica da Universidade de Stanford.

22

Assim, aps os Sistemas Especialistas terem se desenvolvido por quinze anos


como mera curiosidade de IA aplicada em laboratrios de pesquisa, eles atualmente
tornaram-se alvo de significativos esforos de desenvolvimento, tanto acadmicos
como comerciais. As sees seguintes apresentam exemplos de Sistemas Especialistas Mdicos da atualidade, apresentando seus pontos mais importantes.

2.2 SISTEMAS ESPECIALISTAS


Desenvolvidos a partir de uma especializao derivada da Inteligncia Artificial,
os Sistemas Especialistas foram criados para emular um conhecimento especfico,
visando reproduzir a tomada de deciso, julgamentos e evoluo nessa cincia, que
seriam protagonizados por um especialista da rea, enquanto comprometem-se a buscar a mxima fidelidade em tal reproduo. Um comparativo interessante seria citar
que, enquanto os sistemas tradicionais focam-se no processamento e anlise de valores numricos, um Sistema Especialista, enquanto predominantemente declarativo e
"orientado ao conhecimento", trabalha com a anlise de valores no-numricos como
regras, fatos e inferncias lgicas.
Para [3], um Sistema Especialista " uma forma de sistema baseado no conhecimento especialmente projetado para emular a especializao humana de algum domnio especfico", fazendo com que sejam timas ferramentas para o apoio de deciso,
treino, instruo e educao [5].
As caractersticas mais marcantes desses sistemas residem na existncia de um
componente responsvel pela representao e centralizao de todo o conhecimento
especialista e na capacidade autnoma, em teoria, da progresso, evoluo e adaptao do conhecimento residente. Denominada Base de Conhecimento, esse componente armazena os fatos e regras que moldam o saber especfico, alm das heursticas, estratgias e padres para a manipulao e ampliao desse saber. inteno
dos Sistemas Especialistas a busca pela auto-suficincia enquanto entidades hbeis
a aprendizado, mostrando dessa forma as suas fortes razes da IA.
Para mritos acadmicos, tomaremos mo, no seguinte relato de projeto, de alguns termos identificadores dos diferentes papis envolvidos na construo de um
Sistema Especialista. So eles:

23

Engenheiro do Conhecimento
Profissional da rea computacional responsvel pela construo do Sistema Especialista e da coleta de conhecimento especfico.

Especialista (ou Perito)


Profissional da rea de interesse, responsvel por prover o conhecimento que ser
emulado.

Sistema (ou Mquina)


Produto final da interao entre o Engenheiro do Conhecimento e Especialista. Ferramenta computacional que, ao final do processo de construo, ser capaz de emular
parte do conhecimento de um Especialista.

Usurio
Interador final. Papel que far uso do produto desenvolvido.

2.2.1 Componentes
A Figura 1 representa a arquitetura padro utilizada em Sistemas Especialistas e
seus componentes. Essa arquitetura, no entanto, passvel de adaptaes particulares a cada escopo.
Base de Conhecimento
Responsvel pelo crescente armazenamento de fatos e regras e recurso nico
do processo de inferncias. Nesse processo, todo o conhecimento da base utilizado, logo um fato ou regra adquirido pode modificar todo o processo de concluso
de problemas. Uma Base de Conhecimento bem estruturada vital para o bom funcionamento de um Sistema Especialista.
Aquisio de Conhecimento
considerada a parte mais complexa da construo de um Sistema Especialista,
tendo em vista que o processo indutivo responsvel por decidir o que ou no relevante base feito por um Engenheiro do Conhecimento, e no por um especialista

24

Figura 1: Arquitetura genrica de um Sistema Especialista.


da rea. Durante a fase de aquisio de conhecimento, executa-se uma seqncia de
aes visando coleta das informaes necessrias de um perito e da traduo de
tais informaes para a linguagem da mquina.
Diferentes mtodos podem ser utilizados no intuito de adicionar conhecimento a
um Sistema Especialista. Para [5], tais mtodos podem ser divididos em quatro diferentes classificaes, segundo o grau de responsabilidades oriundas ao Engenheiro
de Conhecimento versus as que so atribudas a componentes computacionais: intermedirio, semi-intermedirio, semidireto e direto supervisionado.

Mtodo Intermedirio
Mtodo que toma posse integralmente do trabalho de um Engenheiro do Conhecimento para que a Base de Conhecimento seja alimentada. Todo conhecimento
adquirido atravs da interseo do profissional que realiza entrevistas e pesquisas
com peritos da rea para compreender a rea de estudo. Ao empregar tal mtodo, o
Engenheiro pode fazer uso das seguintes tcnicas:
Observao:
Define-se pelo acompanhamento in loco do trabalho do especialista da rea.
Essa observao gera a coleta de informaes que posteriormente sero adicionadas base. Essa tcnica, apesar de demandar menos envolvimento do

25

perito durante o desenvolvimento do Sistema, mostra-se demorada e por vezes


ineficiente. A dissociao integral do perito pode causar inconsistncia de dados
coletados, alm do fato de que a observao pode fazer com que o Engenheiro
registre os modismos e hbitos pessoais do perito durante a execuo de sua
tarefa, o que por vezes no cabalmente fiel s tcnicas oficialmente difundidas.
Estudo:
Consiste na investigao da rea de interesse por parte do Engenheiro do Conhecimento. D-se principalmente atravs da anlise de referncias bibliogrficas - livros, artigos, sites e materiais didticos em geral, na busca de uma
compreenso mais profunda do alvo do sistema.
Entrevista:
Caracterizado pelo dilogo direto entre o Especialista e o Engenheiro do Conhecimento, onde informaes so coletadas verbalmente. Do Especialista
requerido no apenas domnio da rea, mas tambm capacidade de transcrever tal domnio para leigos. J o Engenheiro deve ser capaz de, atravs de uma
compreenso extensiva das informaes coletadas, vislumbrar sua reconstruo
na linguagem entendida pela Mquina.
Anlise de Protocolo:
Nesse mtodo o Engenheiro desenvolve casos especficos, no intuito de que
o Especialista informe verbalmente como lidaria com tal situao, evidenciando
seu raciocnio em diferentes situaes.

Mtodo Semi-intermedirio
Nesse mtodo, o Engenheiro do Conhecimento faz uso de ferramentas computacionais auxiliadoras no processo de construo do conhecimento.

Mtodo Semidireto
No mtodo semidireto, parte da coleta do conhecimento especfico dada atravs
do contato direto do perito com ferramentas computacionais desenvolvidas para tal
coleta. Tal processo exige treinamento prvio do perito.

Mtodo Direto supervisionado


No mtodo direto supervisionado, os dados adquiridos pelo sistema so integral-

26

mente recebidos por meio de ferramentas computacionais heursticas, que fazem uso
de tcnicas de implementao de redes neurais para processar as informaes provindas da interao com o especialista. Toda a codificao de regras e fatos, nesse
momento, j no necessria atravs do Engenheiro. No entanto, preciso que o
profissional do conhecimento valide os dados adquiridos, atravs de testes de consistncia da base.
Mquina de Inferncia
Trata-se do interpretador e escalonador de regras. Profundamente associado
Base de Conhecimento, trabalham juntos no processo de desenvolvimento do pensamento lgico (buscar, analisar e concluir) visando a encontrar solues e a gerar
novos conhecimentos a partir do existente.
Sistema de Consulta
Segundo [5], o Sistema de Consulta uma camada de acesso ao usurio final
atravs de uma interface amigvel. A maioria dos sistemas utiliza-se de perguntas
pr-formatadas e respostas de mltipla escolha selecionadas pelo usurio. Podese utilizar uma linguagem sinttica simples e limitada, prpria para a utilizao do
sistema.
Sistema de Justificao
Obrigatrio nos Sistemas Especialistas, define-se por justificativas compreensveis ao usurio que explicitam as regras e fatos responsveis por validar a concluso
alcanada.
Quadro Negro
rea de trabalho do Sistema Especialista, responsvel pelo armazenamento temporrio de concluses, hipteses, probabilidades calculadas e possveis solues.
Embora todos os Sistemas Especialistas se utilizem de um Quadro Negro, nem todos o tm como componente explcito.

27

2.3 SISTEMAS ESPECIALISTAS MDICOS


O primeiro Sistema Especialista Mdico foi o sistema MYCIN [8]. Seu objetivo
prover conselho a respeito de diagnstico e terapia de doenas infecciosas. Este tipo
de aconselhamento pode ser muito til, pois nem sempre o mdico responsvel um
especialista em infeces, principalmente no ambiente hospitalar.
Uma seo do sistema inicia-se com um questionrio, que deve ser respondido
pelo usurio, a respeito do paciente. Informaes como nome, idade, sexo, tempo de
manifestao dos sintomas e resultados de exames so solicitadas. A partir dessas
informaes o sistema capaz de estabelecer um diagnstico e propor uma terapia
adequada.
A Base de Conhecimento do sistema contm centenas de regras, que lhe permite
diagnosticar e prescrever tratamentos para bacteremia (infeco no sangue), meningite e cistite infecciosa.

2.3.1 Exemplos
Prottipo de Software para o auxlio no aprendizado em Medicina
Trata-se de um prottipo de um sistema especialista para o auxlio no aprendizado
aplicado a um caso na medicina - o hipertireoidismo. O objetivo do prottipo foi o desenvolvimento de uma ferramenta didtica multimdia para a rea mdica com idioma
nacional, com o intuito de proporcionar um maior dinamismo ao ensino-diagnstico.
Este prottipo foi desenvolvido sob um modelo contendo os seguintes componentes: Base de Conhecimento, mquina de inferncia e a interface explanatria [7].
As semelhanas vlidas de contexto comum seriam a ambientao Mdica do
Sistema em questo, alm da tcnica de regras de produo como forma de representao do conhecimento.
Representao e indexao de casos em Sistemas de Raciocnio baseado em
casos para domnio da Neurologia
Tem por objetivo desenvolver um mecanismo de representao e indexao de casos que possa ser utilizado, de forma efetiva, em um sistema de ajuda ao diagnstico

28

no domnio da Neurologia.
Na primeira etapa so apresentados os mdulos que compem o prottipo. A
Figura 2 mostra a tela principal, onde possvel visualizar trs opes: Casos, Tabelas
e Relatrios.
O mdulo Casos representa toda a lgica de aplicao do sistema e apresenta
trs divises: Novo Caso, Altera Caso e Funcionalidades. No mdulo Tabelas vale
destacar a presena dos Vocabulrios, onde se encontra todo o histrico do paciente,
inclusive seus exames anteriores, tanto neurolgicos quanto complementares. O M-

Figura 2: NeuroCase.
dulo Relatrios responsvel pela impresso do relatrio dos casos. Cada caso
composto por duas pginas constando a confirmao e descrio da soluo do problema. Ao final, apresenta-se o diagnstico preciso do paciente.
Alm de utilizar o conceito de Sistemas Especialistas (SE), o trabalho utiliza a estratgia de raciocnio sobre essa Base de Conhecimento. O Raciocnio Baseado em
Casos (RBC), em suma, visa a adaptar solues que foram utilizadas para resoluo de problemas anteriores, para serem utilizadas na soluo de um novo problema.
Dessa forma, faz-se o sistema "relembrar"de casos relevantes e reutiliz-los em uma
nova soluo. Essa estratgia abrange a representao e indexao de casos, organizao desses casos, as funes de medidas de similaridades, bem como os algoritmos para a recuperao dos casos fontes.
Este trabalho especfico para rea neurolgica, com objetivo de modelar o raciocnio do especialista em Neurologia frente s tarefas de diagnstico e prescrio
mdica [6].

29

Sistema especialista on-line de auxlio ao diagnstico de cncer de prstata


O Sistema Especialista SEDACaP, ambientado na web, visa ao diagnstico de
cncer de prstata utilizando o inventrio de todos os dados clnicos dos pacientes. O
sistema foi desenvolvido para auxiliar a tomada de deciso do profissional da sade
em momento de consulta. Atravs de uma extensa e meticulosa pesquisa de caso, o
sistema suporta at as mais detalhadas particularidades do caso alvo, provendo uma
alta preciso probabilstica do diagnstico.
Sua implementao tomou mo da utilizao de um banco de dados de consulta e
de uma base de conhecimento no-declarativa, desenvolvida em Java, possibilitando
assim a customizao de usurios e permisses especficas, alto desempenho e alcanabilidade web, alm da usabilidade simultnea por diferentes usurios. O sistema
possui, ainda, uma implementao de reconhecimento de padres dos casos armazenados, utilizando essa anlise para possibilitar a caracterstica evolutiva, enquanto
entidade hbil a aprendizado.

Figura 3: Tela de entrada de dados do SEDACaP.


Como mostrado na Figura 3, o sistema possibilita a indexao de uma ampla gama
de exames, histrico, laudos, bipsias e outros artefatos utilizados na moldagem do
caso alvo. Atravs desses artefatos, probabilidades especficas so geradas para
cada aspecto particular influente no diagnstico da doena. Como mostrado na Figura 4, essas probabilidades especficas so condensadas em tempo de clculo da
porcentagem explicitada no diagnstico.
O contexto comum entre o sistema em questo e o escopo do prottipo reside
no mbito mdico de ambos, em seus objetivos principais no diagnstico e auxlio
tomada de deciso, alm da moldagem do caso alvo atravs de investigao do
paciente.

30

Figura 4: Relatrio probabilstico de diagnstico gerado pelo SEDACaP.

2.4 PROTTIPO DESENVOLVIDO


Um prottipo denominado Hippocrates foi desenvolvido para fornecer uma interface de interao com o estudante, uma aplicao orientada a objetos e uma base de
conhecimento lgica rodando sobre a API Drools de gerao de regras de negcio. A
descrio de seu desenvolvimento ser explanada nos Captulos 4, 5 e 6.

31

DROOLS RULE ENGINE

Drools Rule Engine um Sistema de Gerncia de Regras de Negcio desenvolvido


e mantido pela JBoss Inc. Atravs dela possvel criar e manter uma representao
declarativa de conhecimento imersa em um ambiente Java de desenvolvimento de
aplicaes.

3.1 VISO GERAL


Por tratar-se de um Sistema de Produo de Regras, a Drools Turing completa,
apresentando condicionais diretas seguidas do encaminhamento para uma instruo
correspondente. Foca-se principalmente na representao do conhecimento de forma
concisa, no-ambgua e declarativa [12]. Em posse de alta escalabilidade, a engine
capaz de lidar com um alto nmero de fatos e regras atravs de seu Motor de Inferncia, que compara fatos e dados com as regras armazenadas para inferir concluses.

3.1.1 Processo de Inferncia


A processo de comparao de fatos com regras pr-estabelecidas, denominado
na Cincia da Computao como Casamento de Padres, e consiste na verificao
da presena de elementos chaves dentro de um conjunto de dados. Vrios algoritmos
podem ser usados para cumprir tal tarefa. A Drools implementa e herda do algoritmo
Rete, que em sua API chamado ReteOO, o que significa que a engine possui um
algoritmo otimizado e melhorado para a execuo Rete em sistemas orientados a
objeto [12].
As regras so armazenadas em uma Memria de Produo (Production Memory )
e os fatos aos quais elas sero comparadas so mantidos na Memria de Trabalho
(Working Memory ), onde podem ser manipulados.

32

Uma base de conhecimento com muitas regras, no entanto, pode significar que
uma mesma assertiva de um fato seja dada como verdadeira para mltiplas regras.
Esse caso denominado na engine como um conflito. Para priorizar a execuo
de regras e ordenar suas chamadas durante o processo de inferncia, a Drools usa
Agendas como uma estratgia de resoluo de conflitos. Em uma Agenda, possvel
atribuir um grau de prioridade a regras. Regras com maior grau de prioridade so
chamadas primeiro durante a execuo.
Existem dois principais mtodos de execuo para sistemas de regras: o Encadeamento Para Frente ou Para Trs.
O Encadeamento Para Trs inicia sua execuo a partir de uma concluso, que
o motor de inferncia procura satisfazer. Se no puder, o motor procura concluses
que possa satisfazer, denominadas sub-objetivos, e vai inferindo de forma reversa at
alcanar a concluso inicial, que pode possuir ou no mais sub-objetivos. O Prolog
um exemplo de engine que utiliza o Encadeamento Para Trs.
J a Drools faz uso do Encadeamento Para Frente, um mtodo reacionrio, ou
seja, suas concluses so tomadas a partir da conseqncia de fatos sendo analisados e resultando em regras sendo simultaneamente verdadeiras ou no. Essas regras
so programadas na Agenda e, por fim, executadas. A engine inicia com um fato, ele
se propaga e gera uma concluso.
A Figura 5 mostra uma viso geral do Motor de Inferncia Drools.

Figura 5: Viso geral do Motor de Inferncia Drools.

33

3.1.2 Vantagens da sua utilizao


Alguns aspectos significativos da escolha da utilizao de engines de Regras, so:
Separao entre lgica de negcio e dados:
Os dados compreendem seus objetos de domnio, a forma como uma aplicao
manipula uma lgica associada. J tal lgica so as regras. Em um contexto de
aplicao onde a lgica muda constantemente, a estratgia de implementao
utilizando uma engine de regras pode significar uma flexibilidade que garante
ganhos significativos em produtividade.
Centralizao de conhecimento:
Existncia de um repositrio executvel e integrado do conhecimento em questo.
Eficincia em unificao de concluses e escalabilidade:
Utilizando um componente centralizador de regras, a unificao de diferentes
elementos que geram uma concluso torna-se consideravelmente mais eficiente
do que codificar condicionais equivalentes em OO. A adio de uma regra significa que todo o ncleo de conhecimento se integrar de forma automtica a
essas novas determinaes, sem que revises de consistncia extensas sejam
necessrias.
Integrao de ferramentas:
possvel utilizar ferramentas como Eclipse para gerenciar, depurar e validar
regras.
Justificativa atravs de logs:
Sistemas de regra possuem a capacidade de criar logs explicativos com os passos levados pelo processo de inferncia para chegar a qualquer concluso durante sua execuo.

3.2 REPRESENTAO DE CONHECIMENTO


3.2.1 Criao de uma Base de Conhecimento
A base de conhecimento criada como um objeto passvel de instncia, manipulao de mtodos, referncia e destruio. A Figura 6 mostra a criao de uma base de

34

conhecimento em Java utilizando as bibliotecas Drools. Vale notar que essa criao
dada com a instanciao clssica de um objeto KnowledgeBuilder, descrito na API.

Figura 6: Exemplo de criao de uma base de conhecimento lgica em Drools.


A partir da, a aplicao possui um componente capaz de receber regras e fatos
lgicos e tratar consultas relacionadas ao conhecimento nele armazenado.

3.2.2 Regras
Regras, no entanto, so implementadas em um arquivo prprio .drl, onde sua lgica de interpretao declarada. Abaixo, um exemplo de regra para a doena gripe
e seu sintoma associado.

Figura 7: Exemplo de regra Drools em um arquivo .drl.


No exemplo da Figura 7, Patient recebido pela regra e seu atributo Symptom
analisado enquanto equivalncia a um sintoma. O diagnstico de gripe , dessa
forma, atribudo ou no pessoa. Internamente, toda regra Drools na verdade um
arquivo XML interpretado para uma sintaxe de desenvolvimento Java amigvel.

35

3.2.3 Sesses Stateless


Execues realizadas sobre o contedo da base so realizadas atravs de sesses de estado (Stateful). Nessas sesses, possvel inserir um objeto na base de
conhecimento ativa, rodar todas as regras e capturar o objeto modificado.
Em nosso contexto, um exemplo do uso dessas sesses a requisio de diagnstico do paciente. Um objeto Patient possui uma estrutura com seus sintomas
associados e um diagnstico a princpio no atribudo. Com essa estrutura de sintomas preenchida, possvel enviar o objeto Patient base de conhecimento ativa para
que a prpria atribua um diagnstico ao objeto de acordo com suas regras internas.
Na Figura 8 pode-se observar esse caso.

Figura 8: Exemplo de sesso Stateful.

3.2.4 Sesses Stateful


A populao da base feita atravs da declarao de fatos sem-estado (Stateless) e regras persistentes, executadas em sesses. Essas instrues sem-estado
so denominadas tais por serem diretivas no-recorrentes durante a execuo. Aps
processamento do sistema, elas nunca voltaro a ser chamadas. So correspondentes, no Prolog, a declaraes de fatos. A partir do momento em que sua base de
conhecimento sabe que um abajur azul, no necessrio voltar a essa declarao
de regra posteriormente. A diretiva recebida, processada e armazenada persistentemente num contexto, porm a instruo que gerou tais aes no revisitada. Como
exemplificado abaixo:
A assertiva criada, informando que Luciana possui 23 anos de idade, dada como
vlida e executada pela base de conhecimento.

36

Figura 9: Exemplo de sesso Stateless.

3.2.5 Query
As consultas so dadas atravs de queries (Consultas. Singular: query.) criadas
dentro de arquivos .drl. Queries podem, posteriormente, ser chamadas pelo cdigo
Java, que armazena seu resultado num objeto QueryResults. Queries so utilizadas
para extrair conjunto de fatos definidos na base de conhecimento de forma direta [12].
Similares a consultas a banco de dados, queries oferecem a flexibilidade e rapidez em
recuperao de informaes durante o desenvolvimento desses sistemas. Na Figura
10 um exemplo de query utilizada no prottipo.

Figura 10: Exemplo do uso de query.

37

3.2.6 Fluxo de Regras


Uma caracterstica interessante da criao de regras no Drools que pode ser
feita atravs de um fluxo visual interpretado pela API, como abaixo:

Figura 11: Exemplo de fluxo de regra Drools.


A API Drools possui, alm das citadas, uma ampla gama de funcionalidades que
visam a facilitar a incorporao de regras de negcio lgicas no desenvolvimento Java.
Por citao, variveis globais, event listeners (sinalizadores de eventos) atribudos a
fatos internos base, suporte execuo em batch, agrupamento de regras, memria
de trabalho dinmica, modelo de eventos para a base, dentre outras. Para informaes
mais detalhadas, consulte a documentao da engine.

3.3 INSTALAO DO AMBIENTE


A presente seo compreende os passos necessrios para a instalao do ambiente de desenvolvimento Drools.

3.3.1 Java
Primeiramente, necessrio instalar a mquina virtual Java e seu kit de desenvolvimento. No site oficial da Oracle possvel fazer o download da verso mais atual
disponvel (http://www.oracle.com/technetwork/java/javase/downloads/index.html).
Instale o kit.

38

Figura 12: Site oficial da Oracle.

3.3.2 Eclipse
Agora preciso instalar o Eclipse, uma interface de desenvolvimento para criao de projetos Java. Durante o presente projeto, foi utilizado o Eclipe Helios Release 1, porm pode-se instalar a variao que mais agrada o desenvolvedor. As verses mais atuais da interface podem ser adquiridas atravs do site oficial do Eclipse
(http://www.eclipse.org/downloads/).

Figura 13: Site oficial do Eclipse.


Escolha um diretrio e instale o Eclipse. Note que necessrio ter em mos a
localizao da instalao para a os passos posteriores.
A primeira vez que a IDE for executada, ela requisitar a criao de um Workbench.
Trata-se da pasta de trabalho associada aos projetos que forem criados. Escolha a que
mais convir.

39

3.3.3 Plugin Drools para Eclipse


Agora tempo de instalar as bibliotecas da API Drools no ambiente do Eclipse.
Para isso, necessrio possuir os arquivos .jar da engine. Eles podem ser encontrados no site oficial da JBoss Drools (http://www.jboss.org/drools/downloads.html). Para
o presente projeto, foi utilizada a verso 5.1, mas pode-se utilizar a que mais agrada
o desenvolvedor. Recomenda-se a mais recente.
Faa o download dos pacotes Drools Eclipse Workbench e do arquivo de binrios
Drools Binaries.
Abra o pacote do Workbench e note que h duas pastas internas: plugins e features, como mostrado na Figura 14.

Figura 14: Pacote de instalao do Plugin Drools.


Navegue para a pasta de instalao do Eclipse. Note que tambm existem pastas
com os mesmos nomes.
Copie o contedo da pasta plugins do pacote adquirido, para a pasta correspondente de instalao do Eclipse.
Faa o mesmo procedimento para a pasta features.
Agora reinicie o Eclipse e selecione seu Workbench de preferncia.
No menu File, acesse New > Project e selecione dentro da pasta Drools a opo
Drools Project, como na Figura 15.
Nomeie seu projeto e clique em Next.
O programa perguntar se deseja adicionar exemplos iniciais ao projeto. Escolha
o que melhor convir e aperte Next.
O programa requisitar uma runtime para execuo do projeto. No feche a caixa
de dilogo ou avance por enquanto. Mantenha-a aberta enquanto segue os passos
seguintes para a configurao da runtime.

40

Figura 15: Um projeto inicial Drools.

3.3.4 Configurando o runtime Drools para depurao


Extraia todos os arquivos do pacote de binrios para uma localizao conhecida.
recomendado deix-los dentro da pasta de instalao do Eclipse, como por exemplo
C:/Program Files/eclipse/Drools Runtime.
Agora mova todos os arquivos da pasta Drools Runtime/lib/*.* para o diretrio
superior Drools Runtime/*.*.
Voltando ao Eclipse, agora sabe-se um caminho conhecido com os arquivos necessrios para criar o runtime. Clique em Configure Workspace Settings... e uma nova
janela de dilogo ser aberta. Clique em Add. Nomeie sua nova runtime para algo
como Drools 5.1 Runtime. No caminho requisitado aponte para a pasta para onde foram movidos os arquivos binrios. Nesse exemplo, a C:/Program Files/eclipse/Drools
Runtime.
Confirme todas as janelas abertas.

41

Finalize a criao do projeto. Ele deve parecer com a estruturao da Figura 16.

Figura 16: Um projeto inicial Drools.


E isso tudo. Ambiente configurado e pronto para uso!

42

LEVANTAMENTO DE
REQUISITOS

A aplicao tem como meta promover a aquisio e teste de conhecimentos de


diagnstico ao usurio, atravs da gerao de pacientes virtuais que possuam uma
enfermidade aleatria. Possibilita que, atravs de um processo investigativo, o usurio possua indicativos suficientes para apontar uma doena causadora dos sintomas
apresentados.

4.1 DESCRIO DO PROBLEMA


O sistema apresenta duas principais funcionalidades: (1) estudantes fazem diagnstico de pacientes virtuais; (2) administradores mantm usurios.

4.1.1 Estudantes fazem diagnstico de pacientes virtuais


A aplicao tem como objetivo principal proporcionar o contato de estudantes em
treinamento com pacientes virtuais que possuiro uma das enfermidades armazenadas na base de conhecimento e, conseqentemente, relataro sintomas correspondentes a tal enfermidade. Um processo similar aos diagnsticos feitos em consultas
mdicas.
O sistema (1) gera o paciente virtual; (2) inicia a troca de informaes com o
usurio de forma direta e pontual, indicando a presena e ausncia de determinados indicadores e sintomas da enfermidade; (3) apura o diagnstico final fornecido
pelo usurio, julgando se est ou no correto e (4) indica ao estudante os indicativos
principais que resultaram no seu erro ou acerto.

43

Gerao de pacientes virtuais


Os principais requisitos relacionados criao de pacientes, so:
A aplicao gera pacientes virtuais passveis de interao com o usurio.
Esse paciente apresenta uma coleo de sintomas caractersticos de uma dentre
as doenas ofertadas pelo sistema.
O paciente virtual capaz de informar verbalmente caractersticas dos sintomas
que ele possui.
O paciente virtual confirma ou veta perguntas sobre sua condio atual feitas
pelo estudante.
Descrio das doenas presentes
Um conjunto inicial e limitado de doenas foi escolhido para a base de conhecimento do prottipo. Cada doena possui sintomas associados, um identificador interno e frases faladas pelo paciente durante a execuo do prottipo, para expressar
se possui ou no tais sintomas.

Amigdalite

Dor de garganta.
Dores pelo corpo.
Febre.
Cansao.
Falta de apetite.
Dificuldade respiratria.
Dor de cabea.

44

Asma

Tosse.
Catarro.
Dificuldade respiratria.
Ardncia e/ou dor peitoral.
Chiado peitoral.

Catapora

Febre.
Erupes cutneas.

Rubola

Febre.
Aumento dos gnglios linfticos.
Erupes cutneas.

Sarampo

Febre.
Tosse rouca.
Coriza.
Conjuntivite.
Fotofobia.

45

Interao com paciente virtual


A interao com o paciente se dar de acordo com os seguintes requisitos:
O estudante capaz de criar um novo paciente virtual a qualquer momento.
O estudante requisita que o visitante informe caractersticas de sintomas que
possui.
O estudante pergunta questes relacionadas a cada um dos sintomas presentes
do sistema, a qualquer momento, as quais o paciente responde se as possui ou
no.
O estudante capaz de atribuir um diagnstico ao paciente, quando achar conveniente.
Validao de diagnstico
A validao do diagnstico dado ao paciente segue os seguintes requisitos:
O estudante capaz de compreender o motivo de uma validao aceita ou rejeitada pelo sistema.
Diagnsticos incorretos demonstram os motivos que invalidam a deciso do estudante.
Diagnsticos corretos mostram percentualmente a probabilidade da doena em
questo ser a correta, alm das doenas adicionais que possam causar os sintomas relatados.
O estudante capaz de prosseguir com o processo investigativo caso d um
diagnstico incorreto.

46

A validao e clculo probabilstico so dados atravs de pesos para cada um


dos sintomas associados, como mostrado na Figura 17.

Figura 17: Representao da atribuio de pesos durante clculo da validao de


diagnstico.

Espao de armazenamento das informaes dadas


O sistema possui uma rea de interface que auxilia o estudante durante o processo
investigativo. Essa rea oferece as seguintes facilidades:
Registro de informaes dadas pelo paciente.
Fcil visualizao das informaes anteriores.
Apoio deciso informada atravs da consulta aos registros feitos.

4.1.2 Administradores mantm usurios


A aplicao possibilita a criao dos usurios de acesso ao prottipo.

47

Criao de novos usurios do tipo Estudante.


Criao de novos usurios do tipo Administrador.
Excluso de usurios existentes.
Persistncia dos dados de usurio para que sejam recuperados em execues
posteriores.

4.1.3 Componentes Presentes


Baseando-se na arquitetura tradicional de um SE, apresentada na Figura 1 (Captulo 2), a camada especialista do sistema possui os seguintes componentes:
Base de conhecimento:
O sistema possui um componente centralizador do conhecimento especialista.
Tal componente contm fatos e regras que sero manipulados durante a execuo do prottipo.
Motor de inferncia:
capaz de inferir logicamente sobre o conhecimento armazenado na Base.
Quadro negro:
Possui uma memria de trabalho utilizada durante o processo de inferncia.
Sistema de consulta:
passvel a consultas e manuteno de conhecimento.
Sistema de justificao:
capaz de justificar suas concluses inferidas.

4.1.4 Mtodo de Aquisio de Conhecimento


Para mritos de prototipagem a aquisio do SE dada atravs do Mtodo Intermedirio, onde todo o conhecimento especfico adicionado Base se d por intermdio do trabalho do Engenheiro do Conhecimento. Tcnicas de Estudo (Pgina 25)
foram utilizadas para determinar sintomas e doenas.

48

4.2 DIAGRAMA DE CASOS DE USO


A Figura 18 mostra os casos de uso presentes no prottipo e seus atores associados.

Figura 18: Casos de Uso do prottipo.

4.3 AMBIENTES
O esforo do prottipo foi concentrado principalmente na interao com o estudante de Medicina, porm, foi prototipado um sistema inicial de segurana por login
atravs de nome de usurio e senha. Dessa forma, fez-se necessria a criao de um
ambiente administrativo que gerenciasse as contas de usurio.

4.3.1 Ambiente do Estudante


Responsvel pela criao, interao e diagnstico de pacientes virtuais, esse ambiente foi idealizado tendo em mente as seguintes caractersticas principais:
Apresentar pacientes virtuais com doenas aleatoriamente escolhidas dentre as

49

disponveis na base de conhecimento.


Promover o dilogo entre o usurio e o paciente virtual.
Primar pela organizao prtica das informaes fornecidas e facilitar o processo
investigativo do estudante.
Ao final da interao, julgar a veracidade do diagnstico do usurio, informando
as caractersticas que levaram ao seu sucesso ou fracasso durante o processo.
Promover a aquisio de conhecimento por parte do aluno.

4.3.2 Ambiente Administrativo


Responsvel pela gerncia de usurios, sua criao, deleo e manuteno. O
usurio administrador nico e no pode ser deletado.

4.4 REGRAS DE NEGCIO

Nome
Descrio
Nome
Descrio

Tabela 1: Regras de negcio.


Identificao de acesso (RN01)
Para acessar o sistema, todos os usurios devem ser cadastrados
e possuir um nome de usurio nico e senha de identificao.
Tipos de usurio (RN02)
O sistema pode ser utilizado por estudantes e tutores.
Cada usurio possui um ambiente associado que garante
usabilidade especfica do sistema.

50

4.5 DESCRIO DE CASOS DE USO


4.5.1 Manter Usurio
A Tabela 2 expe os detalhes de criao de usurios no prottipo.
Tabela 2: Descrio de caso de uso - Criar Usurio.
Projeto
CSU01
Data
Verso
Sumrio
Ator Principal
Pr-Condies
Risco
Prioridade
Fluxo Bsico

Fluxos Alternativos

Regras de negcio

Sistema Especialista Educativo para


Diagnstico Mdico
Manter Usurio
2010
0.1
Ator realiza a manuteno (cadastramento
e/ou alterao) de usurios
Administrador
O administrador deve estar logado no
sistema.
Alto
Alta
1. Inicia quando o administrador clica
no boto de criao de um novo usurio
2. O ator deve especificar um nome de usurio.
3. O ator confirma a operao. (#A1)
4. Uma mensagem indica sucesso.
5. Este caso de uso se encerra.
Usurio j existe
1. O ator deve escolher um novo nome de usurio.
2. O ator confirma a operao. (#A1)
3. Uma mensagem indica sucesso.
4. Este caso de uso se encerra.
RN01

51

4.5.2 Criar Paciente Virtual


A Tabela 3 mostra como se d a criao de pacientes virtuais.
Tabela 3: Descrio de caso de uso - Criar Paciente Virtual.
Projeto
CSU02
Data
Verso
Sumrio
Ator Principal
Pr-Condies
Risco
Prioridade
Fluxo Bsico

Fluxos Alternativos

Regras de negcio

Sistema Especialista Educativo para


Diagnstico Mdico
Criar Paciente Virtual
2010
0.1
Ator requisita gerao de um novo paciente para
iniciar interao
Estudante
O estudante deve estar logado no sistema.
Baixo
Alta
1. Inicia quando o estudante clica no boto de
criao de um novo paciente virtual. (#A1)
2. O paciente apresentado na interface.
3. Este caso de uso se encerra.
Outra interao j est em andamento
1. O usurio deve confirmar ou negar a criao
do novo paciente requisitado.
2. Este caso de uso se encerra.
x

52

4.5.3 Interagir com Paciente Virtual


A Tabela 4 detalha a execuo da interao do usurio com o paciente do sistema.

Tabela 4: Descrio de caso de uso - Interagir com Paciente Virtual.


Projeto
Sistema Especialista Educativo para
Diagnstico Mdico
CSU03
Interagir com Paciente Virtual
Data
2010
Verso
0.1
Sumrio
Ator interage com paciente virtual
Ator Principal
Estudante
Pr-Condies
O estudante deve estar logado no sistema.
Risco
Baixo
Prioridade
Alta
Fluxo Bsico
1. O ator ouve uma informao sobre a doena do
paciente atual. (#A1)
2. Repete-se o item 1 por vontade do ator.
3. O ator seleciona uma doena causadora.
4. O ator confirma.
5. O sistema indica a preciso probabilstica do
julgamento.
6. Este caso de uso se encerra.
Fluxos Alternativos Ator pergunta ao paciente
1. O ator seleciona em uma combo box uma pergunta
pertinente ao paciente. (#A1)
2. Repete-se o item 1 por vontade do ator.
3. Este caso de uso se encerra.
Novo paciente
1. qualquer momento o ator pode criar um novo
paciente virtual.
2. Este caso de uso se encerra.
Regras de negcio RN02

53

ESPECIFICAO DE ANLISE

Para [10] o processo de anlise consiste em quebrar um sistema em diversos


componentes e estudar suas interaes, objetivando entender seu funcionamento.
Esse processo realizado atravs da construo de modelos, responsveis por definir
as estratgias de desenvolvimento utilizadas. Nessa fase, as limitaes tecnolgicas
so desconsideradas, focando o processo apenas na escolha da melhor estratgia
disponvel. Dessa forma, esse captulo aborda os artefatos gerados a partir do estudo
detalhado dos casos de uso e requisitos levantados. Foram criados modelos de relacionamento intra-classes para as diferentes camadas arquiteturais do prottipo, abordados na seo "Modelos de Classes". Em seguida, uma seo explana os diagramas
de sequncia que representam a execuo dos casos de uso e as classes e mtodos
utilizados durante tal execuo. Por fim, a seo "Base de Conhecimento"descreve os
grupos de conhecimento implementados na base Drools.

5.1 DEFINIO DA DIVISO ENTRE PARADIGMAS


Ao trabalhar com o conceito multi-paradigma de desenvolvimento, surgiu a preocupao em delimitar quais componentes necessrios durante a implementao seriam
definidos de forma lgica e quais se dariam no mundo OO.
Por tratar-se de um Sistema Especialista, optou-se por implementar o mximo do
conhecimento especfico possvel de forma lgica. Dessa forma, todas as doenas e
sintomas compreendidos no prottipo tm sua definio em mbito lgico. No entanto,
foi necessrio que essa insero e declarao de fatos e regras fosse realizada atravs
de codificao Java, devido natureza OO de criao da base.
J os pacientes virtuais, por serem entidades geradas e manipuladas fortemente
na camada Java do prottipo, foram modelados puramente como objetos, porm fazem
uso de informaes recuperadas da base lgica para que sejam criados.

54

Dessa forma, o prottipo apresenta a representao de modelagem multi-paradigma


explicitada na Figura 19.

Figura 19: Esquematizao da implementao multi-paradigma.

5.2 BASE DE CONHECIMENTO


Implementada sobre a sintaxe Drools de regras de negcio, a Base de Conhecimento do prottipo pode ser subdividida de acordo com a natureza do conhecimento
armazenado, como na Figura 20. Consideram-se fatos as certezas imutveis contidas

Figura 20: Esquematizao do conhecimento armazenado.


pela base durante a execuo da aplicao. Seu sintomas so, portanto, diretivas que

55

no perdem ou mudam seu sentido.


J as regras so tidas como um conjunto de condicionais formadoras de contexto,
que processam fatos por meio de inferncias, visando a alcanar afirmaes e negaes lgicas.
A classe KnowledgeManager responsvel por tratar da comunicao entre a camada lgica e a de aplicao, cabendo a ela todo o tratamento de criao, manuteno
e destruio da Base de Conhecimento.
Tambm presentes na base de conhecimento esto as consultas realizadas durante a execuo. Um exemplo de query (consulta) seria requisitar todos os sintomas
presentes da Base de Conhecimento, tratando a informao resultante na aplicao
Orientada a Objetos.

5.3 MODELO DE CLASSES


A presente seo contempla os diagramas derivados do processo de anlise dos
casos de uso. Para [10], tais diagramas so produzidos com o intuito de formar a
viso estrutural interna dos casos de uso do sistema e, dessa forma, viabilizar seu
desenvolvimento. Vale ressaltar que o diagrama de classes de um sistema possui um
processo evolutivo oriundo das iteraes de seu desenvolvimento. Ao passo que o
sistema vai sendo implementado, mais detalhes so incorporados ao mesmo.

5.3.1 Diagrama de Pacotes


A Figura 21 mostra o intra-relacionamento entre os pacotes de implementao do
prottipo.

56

Figura 21: Representao de pacotes do prottipo.


Foi utilizada uma abordagem Model-View-Controller (MVC) de desenvolvimento.
Dessa forma, foi possvel dividir a implementao em camadas, isolando as funcionalidades de apresentao, regra de negcio e acesso a dados em pacotes prprios. A
diviso por camadas prima pela legibilidade, organizao e reusabilidade de componentes, ao passo que tambm prov um entendimento mais profundo das responsabilidades de cada pacote [11].

Modelo (Model)
Estruturao lgica dos dados.

Viso (View )
Coleo de classes que do suporte interface com o usurio.

Controle (Controller )
Realiza a comunicao entre o modelo e a visualizao.

5.3.2 Diagrama da Camada de Apresentao


A Figura 22 mostra as classes da camada e seu relacionamento interno. Vale
ressaltar a ligao da camada com o pacote de Controle atravs do seu gerente responsvel, o ScreenManager, detalhado na seo seguinte.

57

Figura 22: Diagrama de classes da camada de apresentao.

5.3.3 Diagrama da Camada de Aplicao


A Figura 23 mostra as classes de Controle da camada e seus relacionamentos
inerentes. Foi deciso de projeto a criao de diversos gerentes responsveis por
papis especficos dentro do sistema.
Dentre eles, vale citar:
ModuleManager
Responsvel pela gerncia geral e coordenao dos casos de uso, o ModuleManager
o grande centralizador de operaes do sistema. Todos os demais gerentes
possuem uma referncia para ele, garantindo comunicao e integrao de dados.
AccessManager
Responsvel pela gerncia de usurios e acesso do sistema, cabe ao AcessManager a criao de novos usurios, persistncia dos dados de identificao e
controle de login.

58

KnowledgeManager
Responsvel por toda a comunicao com a base lgica, o KnowledgeManager
o grande centralizador de conhecimento do sistema. Cabe a ele a criao da
base de conhecimento e sua manuteno, tratando entrada de regras e fatos,
consultas e modificaes durante execuo.
PatientManager
Gerente responsvel pela gerncia de pacientes virtuais do prottipo. Cabe ao
PatientManager a criao de pacientes virtuais, bem como todo o processo de
interao do mesmo com o usurio.
ScreenManager
Gerente responsvel pela integrao das camadas de controle e apresentao
do sistema. Esse componente responsvel pela transio de telas e propagao de aes provindas da interao com o usurio.
A figura 24 explana as classes de Modelo da camada e seus relacionamentos
internos.

59

Figura 23: Diagrama de classes da camada de aplicao. Controle.

60

Figura 24: Diagrama de classes da camada de aplicao. Modelo.

61

5.4 DIAGRAMAS DE SEQUNCIA


Para [10] os diagramas de sequncia so um dos tipos de Diagramas de Interao
desenvolvidos durante a fase de anlise. Tais diagramas so gerados para descrever a
execuo de um caso de uso, explicitando a troca de mensagens enviadas e recebidas
pelos objetos que participam do processo. O foco em um diagrama de sequncia
reside na ordem temporal da troca dessas mensagens. A seguir, so explanadas as
sequncias de execuo realizadas durante a (1) criao e manuteno de usurios,
(2) criao de pacientes virtuais, (3) interao com pacientes virtuais e (4) validao
de diagnstico.

5.4.1 Manter Usurios


A Figura 25 demostra a sequncia de aes executadas para a criao de usurios.

5.4.2 Criar Pacientes Virtuais


A Figura 26 demostra a sequncia de aes executadas para a criao de pacientes virtuais.

5.4.3 Interagir com Pacientes Virtuais


A Figura 27 demostra a sequncia de aes executadas durante a interao do
usurio com o paciente virtual.

5.4.4 Validar Diagnstico


A Figura 28 demostra a sequncia de aes executadas durante a interao do
usurio com o paciente virtual.

62

Figura 25: Diagrama de sequncia da criao de usurios.

63

Figura 26: Diagrama de sequncia da criao de pacientes virtuais.

64

Figura 27: Diagrama de sequncia da interao do usurio com pacientes virtuais.

65

Figura 28: Diagrama de sequncia da validao de diagnstico.

66

5.5 TELAS DO PROTTIPO


A presente seo mostra as telas desenvolvidas para os dois ambientes do prottipo.

5.5.1 Tela do Estudante

Figura 29: Tela do ambiente do Estudante.

67

5.5.2 Tela do Administrador

Figura 30: Tela do ambiente do Administrador.

68

ESPECIFICAO DE PROJETO

6.1 ESCOLHA DA TECNOLOGIA


De acordo com o objetivo especfico 1 (Pgina 19) determinou-se a escolha das
seguintes tecnologias para alcanar a integrao entre os paradigmas lgico e orientado a objetos.

6.1.1 Paradigma Orientado a Objetos


Tcnica de modelagem de sistemas focada na construo de objetos que interajam entre si para cumprir um propsito pr-determinado. Estruturado fortemente sobre
o conceito de Objetos e Mensagens, esse paradigma afirma que o desenvolvimento
de uma ferramenta computacional melhor realizado se pensarmos em seus componentes como entidades pertencentes a um mundo prprio, onde cada um possui seu
papel, comportamento, voz e hierarquia dentro de um sistema fechado.
Trata-se de um paradigma fortemente difundido no mundo do desenvolvimento de
sistemas, apreciado por sua clareza de implementao, flexibilidade e alta capacidade
produtiva.
Para o desenvolvimento do presente prottipo foi utilizada a linguagem Java de
implementao orientada a objetos.
Linguagem Java 1.6
Linguagem dinmica, de alto nvel, portvel, altamente difundida e segura para
desenvolvimento de solues orientadas a objetos. As ferramentas desenvolvidas so
interpretadas e rodam sob uma mquina virtual prpria, garantindo independncia de
plataforma ou configurao particular de hardware.

69

Figura 31: Linguagem Java 1.6.


Plataforma Java
Constituda por um conjunto de camadas de execuo, a plataforma Java altamente difundida por sua praticidade e alta portabilidade. Composta pela JVM (Java
Virtual Machine) e Java API, capaz de levar a aplicao para a maioria dos PCs.

Figura 32: Plataforma Java.

Java Swing
API Java para desenvolvimento de interfaces grficas, o Swing traz uma agilidade
bem vinda criao de sistemas. Ao contrrio da maioria das APIs grficas, o Swing
se encarrega da prpria renderizao dos componentes de interao, tirando essa
responsabilidade do sistema operacional, como comumente efetuado.
Possui a desvantagem de ser, por isso, menos performtico, porm em um prottipo inicial, a API Swing encaixa-se com perfeio necessidade em mos.

70

Figura 33: Janela tpica desenvolvida com Java Swing.


Eclipse Helios Release 1
Plataforma Open Source de desenvolvimento Java, o Eclipse promove uma IDE
(Integrated Development Environment) eficiente de implementao orientada a objetos. Oferece funcionalidades de criao, depurao e publicao de aplicaes Java
de forma gil e simples. O Eclipse tambm possui integrao com a API Drools de
criao de regras de negcio.

6.1.2 Paradigma Declarativo Lgico


Tcnica de programao que acredita que ferramentas computacionais podem ser
desenvolvidas atravs de declaraes matemticas e lgicas. caracterizada principalmente pelo seu alto desempenho de processamento, conciso e sua representao de conhecimento. Informaes representadas por mltiplas classes e troca de
informaes entre objetos no paradigma OO so comumente transcritas para a programao lgica com poucas linhas de cdigo.
No entanto, a modelagem lgica requer do desenvolvedor uma perspectiva de
implementao muito menos natural do que a OO, ao passo que o programador deve
pensar mais como a mquina o faria.

71

Possui imperativamente uma base detentora de todo o conhecimento do programa.


Essa base composta de regras e fatos, descritos de forma direta, que sero processados por meio de inferncias lgicas em busca de um resultado final que seja
coerente com toda a verdade da base de conhecimento.
API Drools de Regras de Negcio
Trata-se de um sistema de gerncia de regras de negcio e , por vezes, tambm
definido como um sistema especialista de criao de regras. Usado para, atravs de
uma perspectiva declarativa, modelar sistemas complexos de emulao de conhecimento.
A Drools trabalha a partir de conceitos de linguagens funcionais, utilizando-se de
componentes conhecidos nas mesmas - como a memria de trabalho, base de conhecimento, quadro negro, motor de inferncia, regras, fatos - para modelar tal sistema
especialista. Porm o faz enquanto totalmente imerso no mundo Orientado a Objetos,
tornando a implementao mais atual e relevante comercialmente.
Apesar de ser uma API criada sobre o Java, a Drools apresenta uma viso de programao que requisita do desenvolvedor a habilidade de pensar de forma declarativa,
demandando uma sintaxe e tcnicas de implementao prprias.
Plugin Drools para Eclipse
Ferramenta de auxlio ao desenvolvimento de projetos Drools. Esse plugin disponibiliza a integrao necessria do Eclipse com as particularidades do desenvolvimento
de um projeto na API. Garante depurao de cdigo nas regras em sintaxe Drools e
criao de regras tambm por fluxo visual.

6.1.3 Persistncia de Dados


Tendo em vista que, por requisito, as nicas informaes que necessitam ser persistidas so referentes a nome e senha de usurios cadastrados, no houve necessidade da criao de um banco de dados, sendo decidido ento, persistir os dados em
arquivo no disco, atravs de tcnicas de serializao de objetos.

72

6.2 ARQUITETURA
Dividido em camadas, o prottipo compartimentaliza as diferentes reas de implementao em trs reas especficas: Apresentao, Aplicao, Integrao e Lgica,
como mostrado abaixo:

Figura 34: Arquitetura geral do prottipo.

6.3 DIVISO EM CAMADAS


6.3.1 Camada de Apresentao
Implementada sobre Java Swing, a camada responsvel pela transposio dos
estmulos gerados pelo usurio para camadas inferiores que acionam diferentes casos
de uso. Em sua idealizao, as seguintes caractersticas foram consideradas:
direta e objetiva.

73

Possui apenas tratamento de eventos e redirecionamento dos mesmos. Nenhuma regra de negcio implementada na camada de apresentao.
Baseada em Java Swing, o prottipo apresenta uma interface composta por: (1) trs
telas principais que possibilitam a navegao entre os mdulos existentes e (2) telas
auxiliares de alerta e mensagens.
Navegabilidade

Figura 35: Navegabilidade de interface.

Mensagens e Alertas
Alerta ao Sair
Uma caixa de dilogo alerta o estudante de que, ao sair durante uma seo de
questionrio com o paciente virtual, seu progresso no ser salvo e aconselha-o a
finalizar a seo antes de abandonar o sistema.

Alerta ao Criar Novo Paciente


Uma caixa de dilogo alerta o estudante de que, ao criar um novo paciente virtual
durante uma seo de questionrio j existente, seu paciente virtual atual no ser
salvo, aconselhando-o a finalizar a seo antes de iniciar uma nova.

74

6.3.2 Camada de Aplicao


Camada responsvel pela execuo das regras de negcio do prottipo. Nela
encontram-se implementados os tratamentos de inputs do usurio, bem como a criao de pacientes virtuais e o controle de sua interao com o estudante. Em sua
idealizao, as seguintes caractersticas foram consideradas:
gerente e coordenadora.
Compreende todas as regras de negcio idealizadas e as operaes necessrias
para suas execues.
No contm nenhuma implementao do conhecimento especfico mdico, apenas chamadas para consultas e manipulao da base de conhecimento.
Algumas reas de implementao da camada:
Fbrica de Pacientes Virtuais
Possui capacidade de gerar pacientes virtuais com enfermidade aleatria dentre
um conjunto pr-implementado. Esse paciente possui sintomas, e banco de questes
associado, sendo capaz de informar ao estudante detalhes da sua condio clnica.
Integrao com Base de Conhecimento
Possui capacidade de interagir diretamente com o ncleo de conhecimento do
sistema de forma simples. Atravs do envio direto de mensagens, a camada capaz
de receber e interpretar o objeto resposta enviado pela Base de Conhecimento.

6.3.3 Camada de Integrao e Lgica


Camada responsvel pela modelagem do conhecimento especfico. Encontramse nela implementadas as regras e fatos que definem as doenas abrangidas pelo
prottipo. Em sua idealizao, as seguintes caractersticas foram consideradas:
essencialmente lgica e declarativa.
Possui capacidade de inferncia e insero de conhecimento.

75

Recebe uma consulta direta e retorna um objeto com os resultados correspondentes.


completamente indiferente s implementaes das camadas alheias.

76

CONCLUSO

7.1 CONHECIMENTO ADQUIRIDO


O projeto apresentou um estudo extenso na integrao dos dois diferentes paradigmas de programao, o Lgico e o Orientado a Objetos, levando a uma anlise
profunda das caractersticas de ambos. De forma prtica, apresentou a oportunidade
de aplicar os conhecimento adquiridos durante o curso de Cincia da Computao.
Houve principalmente um aprofundamento nas particularidades do desenvolvimento lgico. O componente da Base de Conhecimento mostrou-se menos nebuloso
aps ter sido representado como um objeto de outro paradigma.
Uma aquisio significativa de conhecimento partiu da pesquisa realizada em estgio de pr-projeto, onde a busca de uma integrao mais moderna trouxe um maior
entendimento sobre Sistemas Especialistas e sua participao no progresso da Inteligncia Artificial. De forma geral, inevitvel apontar o crescimento adquirido em desenvolvimento de sistemas, compartimentalizao de componentes, dividir para conquistar, anlise e planejamento tcnico, boas prticas de programao e escrita, entre
outros.
O projeto trouxe, dessa forma, uma maturidade acadmica mpar participante,
mostrando-se por vezes um desafio em sua concluso, porm merecedor do esforo
requerido.

7.2 CONCLUSO DOS OBJETIVOS


Foi realizado o estudo sobre o estado da arte dos Sistemas Especialistas, focandose em sua histria e importncia para os avanos em Inteligncia Artificial. Pode-se
concluir, a partir desse estudo, que o desenvolvimento de SEs na histria partiu a prin-

77

cpio e est fortemente ligado a origens acadmicas, onde a necessidade de emular


um especialista mostra-se h muito como um esforo que interessa a educadores. Na
atualidade, no entanto, o mercado vem pedindo o desenvolvimento de tais sistemas
com objetivos comerciais e, para tanto, as iniciativas de modernizar o produo de
SEs tm surgido em todo o globo.
Um estudo sobre as formas de integrao entre os paradigmas Lgico e Orientado
a Objetos tambm foi realizado. Atravs dele algumas APIs foram analisadas e, por
fim, a engine Drools de criao de regras de negcio foi escolhida para o projeto.
A engine mostrou-se excelente no que se prope, emulando regras e uma base de
conhecimento lgica de forma simples e, principalmente, produtiva.
Dessa forma, pode concluir-se que o desenvolvimento de um Sistema Especialista
que integre diferentes mdulos programacionais vlido e traz aos envolvidos um
importante conhecimento na rea de desenvolvimento de sistemas.

7.3 DIFICULDADES ENCONTRADAS


Um dos maiores desafios durante o projeto foi, sem dvida, manter o desenvolvimento do projeto com capital humano limitado. O projeto, no entanto, mostrou-se
merecedor de tal desafio.
Tambm desafiador foi desenvolver a integrao entre os mdulos de diferentes
paradigmas programacionais. Ao encontrar a API Drools de criao de regras de
negcio, o desafio foi delimitar a linha entre o Lgico e o Orientado a Objetos. Uma
diviso nebulosa, onde nem sempre o que deve ser implementado de maneira lgica
parece, a princpio, possuir essa necessidade.

7.4 TRABALHOS FUTUROS


Para projetos posteriores, indicada a continuao do prottipo at ento desenvolvido, estimulando o desenvolvimento de um mdulo tutor onde o usurio possa
inserir novas regras e doenas na base de conhecimento, bem como acompanhar o
rendimento dos estudantes que utilizam o sistema.
tambm recomendado o desenvolvimento de uma implementao detalhista do
paciente virtual mostrando, de forma mais real, sua condio clnica. Indica-se o de-

78

senvolvimento de um modelo 3D do paciente animado, onde as interaes do usurio


estimulem os diferentes estados de apresentao da modelagem.
Um dos esforos iniciais do projeto, que infelizmente mostrou-se invivel nesse
momento, foi voltar o sistema para a rea cirrgica da medicina, simulando operaes
e pequenos procedimentos cirrgicos, promovendo um primeiro contato de estudantes
com tais prticas. Recomenda-se essa implementao para projetos futuros, focando
principalmente no realismo de respostas do paciente e na aquisio de conhecimento
para o estudante oriunda da tentativa e erro em situaes como tal.

79

ANEXO

Em anexo as regras de diagnstico das doenas:

Figura 36: Regra Drools para diagnstico de Amigdalite. Arquivo: amigdalite.drl .

Figura 37: Regra Drools para diagnstico de Asma. Arquivo: asma.drl .

80

Figura 38: Regra Drools para diagnstico de Catapora. Arquivo: catapora.drl .

Figura 39: Regra Drools para diagnstico de Rubola. Arquivo: rubeola.drl .

Figura 40: Regra Drools para diagnstico de Sarampo. Arquivo: sarampo.drl .

81

Figura 41: Classe KnowledgeManager. Arquivo: KnowledgeManager.java .

82

Figura 42: Classe KnowledgeManager. Arquivo: KnowledgeManager.java .

83

Figura 43: Classe KnowledgeManager. Arquivo: KnowledgeManager.java .

84

REFERNCIAS
[1] Linares, K. S.. Sistema Especialista Nebuloso Para Diagnstico Mdico. 1997.
[2] Diverio, T. e Menezes ,P.. Teoria da Computao: mquinas universais e computabilidade - 2o Edio. 2000.
[3] Flores, C.D.. Sociedades Artificiais: a nova fronteira da inteligncia nas mquinas.
2003.
[4] Alexandre, A.B.. Prottipo de um Sistema Especialista utilizando a ferramenta Expert Sinta Shell para auxlio no setor de suporte de uma Software House.. 2000.
[5] Pereira, M.A.. Sistema Especialista On-line de Auxlio ao Diagnstico de Cncer
de Prstata.. 2004.
[6] Rosa, J.. Prottipo de Software para o auxlio no aprendizado em Medicina. 2000.
[7] Azevedo, D.J.. Representao e Indexao de casos em Sistemas de Raciocnio
baseado em casos para domnio da Neurologia.. 2002.
[8] Shortliffe, E.. Computer-Based Medical Consultations: mycin. 1976.
[9] Calejo, M.. Interprolog: a declarative Java-Prolog interface. 2001.
[10] Bezerra, E.. Princpios de Anlise e Projeto de Sistemas com UML. 2006.
[11] Santos, G.. Aplicao do Padro de Projeto MVC com JSF. 2008.
[12] JBoss. Drools Expert User Guide. 2010.