Mestrado em Computação Móvel
Sistema Pericial para Dispositivos Móveis com Base em
Computação na Nuvem
Mário Miguel Rosa Baltazar
julho | 2014
Escola Superior
de Tecnologia e Gestão
Sistema Pericial para Dispositivos Móveis com Base em
Computação na Nuvem
Relatório de Projeto Aplicado submetido como requisite parcial para
obtenção do grau de Mestre em Computação Móvel
Orientador: Prof. Doutor Carlos Carreto
Mário Miguel Rosa Baltazar
Julho | 2014
Agradecimentos
Agradecimentos
O presente trabalho só teria sido possível graças à colaboração e apoio de algumas
pessoas, às quais gostaria de deixar o meu reconhecimento:
- Ao meu orientador Prof. Doutor Carlos Carreto pelo apoio prestado durante todo
o tempo de realização do trabalho.
- À empresa Wuso pelo tempo e apoio dispensados.
- À Rita, aos meus a pais, pela muita paciência durante este tempo.
- À Unidade de Investigação para o Desenvolvimento do Interior que apoiou o
trabalho no âmbito do projeto PEst-OE/EGE/UI4056/2014 UDI/IPG, financiado pela Fundação
para a Ciência e Tecnologia.
i
Resumo
Resumo
Este trabalho descreve a implementação de um Sistema Pericial para dispositivos móveis,
dirigido ao utilizador comum e com a capacidade de usar diferentes bases de conhecimento de
diferentes áreas, selecionáveis pelo utilizador.
O sistema é composto por duas aplicações, uma para o administrador, e outra para o
utilizador comum. A primeira tem como objetivo permitir ao administrador “alimentar” o
sistemas com novas Bases de conhecimento assim como de fazer alterações às já existentes e
ainda de notificar os utilizadores das novas alterações que foram feitas. Já a segunda aplicação
permite ao utilizador descarregar para o seu smartphone as bases de conhecimento disponíveis,
consultá-las, e receber as notificações das alterações disponíveis.
O sistema usa uma arquitetura com base em computação na nuvem para facilitar a criação
e distribuição de diferentes bases de conhecimento. A plataforma de computação na nuvem
utilizada foi a plataforma da Google – Google App Engine, que é uma plataforma do tipo
Plataforma como serviço.
O sistema usa dois tipos de bases de conhecimento: bases de conhecimento baseado em
regras e bases de conhecimento baseado em árvores de decisão binária. Estas estão organizadas
por áreas e, por cada área, poderão ser organizadas em categorias e subcategorias. O motor de
inferência implementado tem assim um comportamento diferente de acordo com o tipo de base
de conhecimento escolhido pelo utilizador.
Nos testes efetuados conclui-se que a arquitetura da aplicação foi bem escolhida pois a
comunicação entre aplicações de backend e aplicação cliente é bastante eficaz, tendo-se medido
tempos de atualização muito reduzidos. No que diz respeito à usabilidade a aplicação obteve
uma pontuação de 81, numa escala de 0 a 100, utilizando a escala SUS (System Usability Scale)
proposta por John Brooke.
Palavras-chave:
Sistema
Pericial,
Android;
Google
App
Engine,
Computação na Nuvem.
ii
Abstract
Abstract
This paper describes the implementation of an Expert System for mobile devices,
and directed to the common user with the ability to use different knowledge bases of different
areas, selectable by the user.
The system consists of two applications, one for the administrator and another for
the average user. The first objective is to allow the "feeder" systems administrator with new
knowledge bases as well as making changes to existing and yet to notify users of new changes
that were made. The second application allows the user to download to your smartphone
knowledge bases available, consult them, and receive notifications of updates available.
The system uses an architecture based on cloud computing to facilitate the creation
and distribution of different knowledge bases. The cloud computing platform used was the
platform of Google - Google App Engine, which is a platform-type platform as a service.
The system uses two types of knowledge bases: knowledge bases and rule-based
knowledge bases based on binary decision trees. These are organized into areas, and each area
can be organized into categories and subcategories. The inference engine is implemented so
different according to the type of knowledge base selected by the user behavior.
In the performed tests it is concluded that the application architecture is well
chosen because communication between the client application and back-end applications is
quite effective, and it was measured very low refresh times. With respect to the usability
application obtained a score of 81 on a scale of 0 to 100 scale using SUS (System Usability
Scale) proposed by John Brooke.
Keywords: Expert System, Android; mobile devices, Google App
Engine, Cloud Computing.
iii
Índice
Índice
Índice de Figuras ............................................................................................................. vi
Índice de Tabelas ........................................................................................................... viii
CAPÍTULO 1 - INTRODUÇÃO ...................................................................................... 9
1.1 Objetivos .......................................................................................................... 10
1.2 Estrutura do Relatório ...................................................................................... 10
CAPÍTULO 2 - TRABALHO RELACIONADO .......................................................... 12
2.1 Sistemas Periciais ............................................................................................ 12
2.2 Componentes de um Sistema Pericial .............................................................. 13
2.3 Representação do conhecimento ...................................................................... 15
2.4 Plataforma Android .......................................................................................... 16
2.5 Exemplos de Sistemas Periciais ....................................................................... 18
2.6 Plataformas de Computação na Nuvem ........................................................... 20
CAPÍTULO 3 - TRABALHO DESENVOLVIDO ........................................................ 23
3.1 Análise dos Requisitos ..................................................................................... 23
3.2 Ferramentas e Serviços .................................................................................... 24
3.3 Serviços da plataforma Google App Engine .................................................... 26
3.3.1
Google Cloud SQL ................................................................................... 28
3.3.2
Google Cloud Endpoints .......................................................................... 28
3.3.3
Google Cloud Messaging ......................................................................... 30
3.4 Casos de uso..................................................................................................... 30
3.5 Representação das Bases de Conhecimento .................................................... 32
3.6 Armazenamento na Base de Dados ................................................................. 35
3.6.1
Base de dados alojada no Google Cloud SQL .......................................... 35
3.6.2
Base de dados mobile ............................................................................... 41
3.7 Algoritmos do Motor de Inferência ................................................................. 42
3.8 Arquitetura do Sistema .................................................................................... 44
3.9 Aplicação MyExpert Manager ......................................................................... 45
3.9.1
Módulo User Interface .............................................................................. 46
3.9.2
Módulo Knowledge Acquisition .............................................................. 46
3.9.3
Módulo Update ......................................................................................... 47
3.9.4
Módulo Update Database ......................................................................... 47
3.9.5
Módulo Notification ................................................................................. 47
3.10
Aplicação MyExpert .................................................................................... 48
3.10.1 Módulo User interface .............................................................................. 49
3.10.2 Módulo Inference Engine ......................................................................... 49
3.10.3 Módulo Explanation Subsystem ............................................................... 49
3.10.4 Módulo Update ......................................................................................... 49
3.10.5 Módulo KnowledgeBase .......................................................................... 50
3.10.6 Módulo Registration ................................................................................. 50
3.10.7 Módulo GetUpdate ................................................................................... 51
3.11
Mecanismo de atualização ........................................................................... 51
3.12
Publicação da aplicação na loja de aplicações Google Play ........................ 53
Capítulo 4 - Testes e resultados ...................................................................................... 54
iv
Índice
Capítulo 5 - Conclusões.................................................................................................. 61
Referências bibliográficas .............................................................................................. 63
Anexos ............................................................................................................................ 65
Anexo A - Artigo publicado na conferência CISTI2014 ............................................ 65
Anexo B - Formulário para aplicação do questionário SUS ...................................... 73
Anexo C - Funcionamento da aplicação MyExpert.................................................... 75
Anexo D - Funcionamento da aplicação MyExpert Manager .................................... 80
v
Índice de Figuras
ÍNDICE DE FIGURAS
Figura 1 - Componentes de um Sistema Pericial ............................................................ 13
Figura 2 - Exemplo de uma Base de Conhecimento baseada em árvores de decisão [8] 16
Figura 3 - Arquitetura da plataforma Android [5] .......................................................... 17
Figura 4 - Número de downloads mensais de aplicações ............................................... 18
Figura 5 - Número de downloads mensais de aplicações ............................................... 18
Figura 6 - Adicionar Repositório do plugin da Google para o Eclipse .......................... 25
Figura 7 - Dashboard de um projeto Google App Engine .............................................. 27
Figura 8 - Funcionamento do Google Cloud Endpoints ................................................. 28
Figura 9 - Criação da classe Endpoint ............................................................................ 29
Figura 10 -Atores e respetivos casos de uso do sistema desenvolvido .......................... 31
Figura 11 - Exemplo de Base de conhecimento em Árvore de Decisão ........................ 34
Figura 12 – Diagrama ER da base de dados presente no serviço Google Cloud SQL ... 36
Figura 13 - ER da Base de dados Mobile ....................................................................... 41
Figura 14 - Arquitetura Geral do sistema ....................................................................... 45
Figura 15 - Arquitetura da Aplicação MyExpert Manager............................................. 46
Figura 16 - Arquitetura da aplicação MyExpert ............................................................. 48
Figura 17 - Funcionamento do Módulo Registration ..................................................... 50
Figura 18 - Funcionamento do módulo de atualizações ................................................. 52
Figura 19 – Página da Aplicação no Google Play .......................................................... 53
Figura 20 - Testes de velocidade de inserção base de conhecimento ............................. 56
Figura 21 - Média SUS dos resultados para cada questão .............................................. 59
Figura 22 - Análise das características de usabilidade da norma 9126 .......................... 60
Figura 23. Arquitetura do Sistema.................................................................................. 67
Figura 24. Atores do Sistema e respetivos casos de uso ................................................ 68
Figura 25. Módulos da aplicação MyExpert .................................................................. 68
Figura 26. Diagrama Entidade-Relacionamento das bases de conhecimento ................ 69
Figura 27. Ecrãs exemplificativos da interação com a máquina de inferência............... 70
Figura 28. Módulos da aplicação MyExpert Manager ................................................... 70
Figura 29. Ecrã exemplificativo da criação das regras de uma base de conhecimento .. 70
Figura 30 - Login na aplicação MyExper Manager ........................................................ 75
Figura 31 - Home da aplicação MyExpert Manager ...................................................... 75
Figura 32 - Escolha do tipo de Base de Conhecimento a adicionar ............................... 76
Figura 33 - Adicionar informação da Base de conhecimento ........................................ 77
Figura 34 - Criação de regras de uma Base de Conhecimentos ..................................... 77
Figura 35- Adicionar informação da nova Base de Conhecimento ................................ 77
Figura 36 -Descrição das variáveis das bases de conhecimento .................................... 78
Figura 37 - Criação dos nós que compõem uma base de conhecimentos....................... 79
Figura 38 - Ecrã inicial da aplicação .............................................................................. 80
Figura 39 – a) Lista de áreas de Bases de conhecimento b) Lista de Caterogias de Bases
de Conhecimento c) Download de uma Categoria ......................................................... 81
Figura 40 – a) Subcategorias de Bases de Conhecimento b) Bases de Conhecimento .. 81
vi
Índice de Figuras
Figura 41 – a) Exemplo de uma questão colocada ao utilizador b)Exemplo de uma
conclusão encontrada...................................................................................................... 82
vii
Índice de Tabelas
ÍNDICE DE TABELAS
Tabela 1 - Comparação entre plataformas de computação na nuvem [6] ...................... 22
Tabela 2 - Descrição da tabela Area ............................................................................... 36
Tabela 3 - Descrição da tabela Category ........................................................................ 36
Tabela 4 - Descrição da tabela SubCategory .................................................................. 37
Tabela 5 - Descrição da tabela KnowledgeBases ........................................................... 37
Tabela 6 - Descrição da tabela Rules.............................................................................. 38
Tabela 7 - Descrição da tabela ClausesRules ................................................................. 38
Tabela 8 - Descrição da tabela Clauses .......................................................................... 39
Tabela 9 - Descrição da tabela Variables ....................................................................... 39
Tabela 10 - Descrição da tabela Node ............................................................................ 39
Tabela 11 - Descrição da tabela Tip ............................................................................... 40
Tabela 12 - Descrição da tabela Devices ........................................................................ 40
Tabela 13 - Descrição da tabela UpdateMessage ........................................................... 41
Tabela 14 - Resultados do teste do motor de inferência ................................................. 55
Tabela 15 - Tempos de atualização da base de conhecimento com 10 nós .................... 57
Tabela 16 - Tempos de atualização da base de conhecimento com 20 nós .................... 57
Tabela 17 - Tempo desde que a ligação á internet é estabelecida até que o utilizador
recebe a notificação ........................................................................................................ 58
viii
Capítulo 1- Introdução
CAPÍTULO 1
INTRODUÇÃO
Este relatório descreve o trabalho realizado pelo autor no âmbito do projeto aplicado do
Mestrado em Computação Móvel da Escola Superior de Tecnologia e Gestão do Instituto
Politécnico da Guarda.
O projeto consistiu no desenvolvimento de um sistema pericial para dispositivos móveis
(smartphones e tablets) com o sistema operativo Android, desenvolvido com base em
computação na nuvem.
Os SP pretendem resolver problemas em um determinado domínio onde o conhecimento
é muito específico e fortemente limitado aos peritos da área. Estes sistemas pretendem simular o
raciocínio destes peritos na resolução de determinados problemas.
A proliferação e evolução de dispositivos móveis tipo smartphone e tablet, faz destes
dispositivos plataformas muito interessantes para a implementação de um SP, dando a
oportunidade de massificar a utilização destes sistemas por parte do utilizador comum que
passará a ter acesso a bases de conhecimento que poderá usar na resolução de problemas e
tomada de decisão em atividades do dia-a-dia.
O SP desenvolvido tem como principal objetivo ser um sistema dirigido ao utilizador
comum e com a capacidade de usar diferentes bases de conhecimento, selecionáveis pelo
utilizador. O sistema foi desenvolvido utilizando a plataforma de Computação na Nuvem da
Google – Google App Engine. Este facilitou o desenvolvimento de todo o sistema,
especialmente no que se refere à criação e distribuição de diferentes bases de conhecimento,
pois algumas aplicações do sistema ficam alojadas nos servidores da Google. Com a utilização
desta plataforma é possível utilizar os vários serviços disponibilizados por esta, como é o caso
9
Capítulo 1- Introdução
da gestão de base de dados, das aplicações de backend, da troca de informação entre a aplicação
móvel e as aplicações de backend e do envio de notificações.
O sistema desenvolvido foi designado de MyExpert. A razão da escolha deste nome
prende-se com o intuito de transmitir a ideia de que a aplicação dá a possibilidade de cada
utilizador possuir “na palma da mão” e ter sempre disponível para consulta, um perito das suas
áreas de interesse.
O sistema desenvolvido compreende 2 aplicações distintas. A primeira designada por
MyExpert Manager, desenvolvida apenas para o administrador do sistema, tem como objetivo
fazer a gestão do sistema, o que implica, inserção e atualização das bases de conhecimento que
compõem o sistema pericial. A segunda designada apenas por MyExpert,é a aplicação
desenvolvida para o utilizador final, que vai usar as bases de conhecimento disponíveis no
sistema.
1.1 Objetivos
Ao contrário de outros SP para dispositivos móveis que são desenvolvidos com o intuito
de usarem uma única base de conhecimento, o sistema proposto permite que seja o utilizador
final a escolher, dentro das bases de conhecimento disponíveis, as que pretende descarregar e
usar no SP instalado no seu dispositivo móvel.
1.2 Estrutura do Relatório
O presente documento encontra-se estruturado em 5 capítulos. No primeiro capítulo fazse uma apresentação do trabalho desenvolvido, assim como os objetivos que foram traçados
para o projeto, e motivação para o mesmo.
O segundo capítulo inicia-se com uma apresentação sobre o que são os sistemas periciais
e quais são os componentes que podem ser considerados de um sistema pericial assim como as
formas de representação do conhecimento e do funcionamento do motor de inferência de um
sistema pericial. De seguida é apresentada a plataforma de dispositivos móveis utilizada, a
plataforma Android, e a sua arquitetura.
Para terminar este capítulo são apresentados alguns SP conhecidos e as suas
características comparando com o sistema desenvolvido. No final do capítulo é feita uma
apresentação das plataformas de computação na nuvem.
10
Capítulo 1- Introdução
No terceiro capítulo é apresentado o sistema desenvolvido, é feita a análise dos requisitos
do sistema, descrito o ambiente de desenvolvimento, serviços utilizados e ferramentas, assim
como a arquitetura de cada aplicação desenvolvida.
O quarto capítulo apresenta os testes a que foi sujeito o sistema desenvolvido para
analisar a sua consistência, respostas por parte das solicitações dos utilizadores assim como da
usabilidade deste.
No quinto e último capítulo faz a conclusão do trabalho realizado assim como apresenta
trabalho futuro de melhoramento do sistema.
11
Capítulo 2 – Trabalho Relacionado
CAPÍTULO 2
TRABALHO RELACIONADO
No presente capítulo será descrito o que são sistemas periciais. São descritos os
componentes típicos de um SP, com destaque para motor de inferência. São referidas as
principais formas de representação do conhecimento e dados exemplos de cada uma delas.
A seguir o Capítulo apresentada uma visão geral da plataforma móvel Android e da sua
arquitetura.
O Capítulo continua com a descrição de alguns exemplos de SP semelhantes como
sistema desenvolvido.
Termina-se com uma descrição das principais plataformas de computação na nuvem
existentes no mercado.
2.1 Sistemas Periciais
Os Sistemas Periciais (SP) são programas que derivam de um ramo da ciência da
computação chamado Inteligência Artificial (IA). A IA tenta dotar as máquinas de inteligência,
tentando simular a inteligência humana através de programas de computador.
Um SP é um sistema computacional que procura simular processos de raciocínio e
decisão de um perito humano. Estes sistemas são utilizados nas mais diversas áreas, embora seja
na engenharia, na medicina e no mercado financeiro, onde a sua utilização é mais expressiva.
Um SP típico é constituído por uma interface com o utilizador, através da qual são
colocadas questões e obtidas respostas, uma base de conhecimento que contém a representação
do conhecimento sobre determinada área, e uma máquina de inferências, capaz de analisar a
12
Capítulo 2 – Trabalho Relacionado
base de conhecimento e juntamente com as questões e as respostas, obter conclusões [5]. A
secção seguinte descreve com detalhe os componentes de um SP.
2.2 Componentes de um Sistema Pericial
Um SP típico pode ser dividido em vários componentes, tendo cada um destes um papel
fundamental no sistema. No desenvolvimento de um SP deve-se assegurar que cada componente
deverá ser o mais independente do outro para garantir que uma alteração num módulo não
implique alteração em todo o sistema. Os componentes de um SP são apresentados no diagrama
da Figura 1.
Perito – Pessoa que detém o conhecimento de uma determinada área. É este que fornece
o conhecimento para criar a base de conhecimento do SP.
Figura 1 - Componentes de um Sistema Pericial
13
Capítulo 2 – Trabalho Relacionado
Interface de Aquisição – Este poderá ser considerado componente do SP mais completo.
A aquisição do conhecimento poderá ser feita através de uma interface de software onde o
conhecimento do perito é convertido numa base de conhecimento através de entrevistas feitas
por um engenheiro do conhecimento ao perito, ou por ferramentas informáticas que fazem a
aquisição dos dados de uma forma automática.
Bases de Conhecimento - Parte do sistema onde devem ser armazenados os novos
conhecimentos. Onde o conhecimento antigo pode ser alterado, e consequentemente a base de
conhecimentos atualizada. É aqui onde factos e regras ficam armazenadas. O conhecimento
contido na base de conhecimentos deve ser de fácil manutenção para futuras modificações. Este
deverá ser contruído independente da máquina de inferência para que esta seja capaz de o
interpretar independentemente da área a que pertencer.
Interface com o utilizador - Parte que oferece comunicação e interação com o utilizador
final. Esta irá exibir perguntas ao utilizador e permitir que este introduza respostas. É através
deste módulo que o sistema irá comunicar ao utilizador final as conclusões. Este é considerada a
“ponte” entre a máquina de inferência e o utilizador. Esta deve ser simples e intuitiva para que
um utilizador sem grande conhecimento na área em questão da base de conhecimento consiga
fazer uso do SP, e sem a ajuda de um perito conseguir obter uma resposta para a sua dúvida.
Motor de inferência – Parte do sistema que efetua consultas na base de conhecimento à
procura de respostas, decidindo a ordem em que as inferências serão consideradas. Esta
compara as informações fornecidas pelo utilizador, com os factos e regras da base de
conhecimentos, em busca de resposta para o problema em causa. Existem dois métodos de fazer
a análise das regras, o encadeamento para a frente, e encadeamento para trás. Na secção 2.3 são
descritos com mais detalhe cada processo de encadeamento.
Sistema de Explicação – Parte responsável por explicar ao utilizador final os factos que
levaram o sistema à conclusão alcançada.
Utilizador Final – Pessoa que vai responder às perguntas feitas pelo sistema e ao qual vai
ser apresentada a conclusão.
14
Capítulo 2 – Trabalho Relacionado
2.3 Representação do conhecimento
A representação do conhecimento pode ser feita através de diferentes métodos como por
exemplo: regras de sistemas de produção, redes semânticas ou árvores de decisão [6]. O método
usado deve ser suficiente para simular o processo de decisão do perito humano e estar
organizado de forma a facilitar a sua utilização para consulta e resolução de problemas por parte
de um utilizador não perito. A base de conhecimento é normalmente gerada a partir do módulo
de Aquisição de Conhecimento [7].
Para o sistema desenvolvido teve-se em consideração duas formas de representação:
Árvore de Decisão e Regras de Produção.
Numa base de conhecimento baseada em regras, a parte “SE” da regra é constituída por
cláusulas. Estas cláusulas são condições que juntas formarão uma decisão que leva a uma
conclusão. Cada cláusula pode ser formada por várias condições, condições estas que estão
ligadas por operadores booleanos. Cada condição é formada por uma variável, um operador
relacional e um valor. A parte “ENTÃO” da regra constitui a conclusão a que se chega se a
combinação das condições for verdadeira. De seguida é apresentada um exemplo de uma Base
de Conhecimentos baseada em regras.
10
20
30
40
SE
ENTÃO
SE
ENTÃO
SE
ENTÃO
SE
ENTÃO
TAXA DE JUROS = BAIXA
BOLSA DE VALORES = ALTA
TAXA DE JUROS = ALTA
BOLSA DE VAORES = BAIXA
COTAÇÃO DO DOLÁR
TAXA DE JUROS = ALTA
COTAÇÃO DO DOLAR = ALTA
TAXA DE JUROS = BAIXA
No caso do método de Árvore de Decisão esta tem este este nome pois ramifica-se
exatamente como uma árvore e no final de cada ramo existe uma conclusão. Com esta forma de
representação o problema a resolver fica mais claro de entender, pois é de fácil leitura.
A Figura 2 representa um exemplo de uma árvore de decisão para analisar se um
candidato se qualifica para uma posição dentro de uma determinada empresa e qual o cargo a
oferecer.
Uma Árvore de Decisão pode ser representada por um grafo, onde os nós representam
questões ou conclusões e os arcos dirigidos representam possíveis respostas às questões. Os
arcos determinam a direção do diagrama, sendo a direção também influenciada pela resposta
que o utilizador dá a cada nó. No caso do exemplo da Figura 2, os círculos que contêm as
perguntas são os nós de decisão, enquanto que os retângulos representam nós de conclusões.
15
Capítulo 2 – Trabalho Relacionado
Figura 2 - Exemplo de uma Base de Conhecimento baseada em árvores de decisão [8]
Existem formas de converter uma árvore de decisão em regras do tipo das representadas
no exemplo da Figura 1, mas estas não foram consideradas para o projeto pois com os testes
realizados que são apresentados no Capítulo 4 o número de perguntas a ser feito ao utilizador no
caso das árvores de decisão é menor para se alcançar a respostas pretendida. Assim optou-se por
utilizar as 2 formas de representação de bases de conhecimento. O sistema implementado
permite a representação dos dados em árvore de decisão e regras. Deste modo o motor de
inferência vai atuar de acordo com a forma como a informação está representada.
2.4 Plataforma Android
A plataforma Android caracteriza-se por ser uma plataforma aberta para dispositivos
móveis, baseada no núcleo do Linux,. Esta teve o seu lançamento em 12 de Novembro de 2007
[9], por uma associação de empresas liderada pela Google, com o nome Open Handset Alliance.
Antes de iniciar o desenvolvimento sob uma plataforma é importante ter o completo
conhecimento da arquitetura do sistema que se vai utilizar. A Figura 3 apresenta a arquitetura
da plataforma Android.
A camada mais baixa da plataforma, que faz a ligação com o hardware, como já foi
referido, é baseada no núcleo do Linux, fornecendo uma camada de abstração entre o software e
o hardware. Esta contém os drivers essenciais. Android utiliza assim esta camada para fazer as
tarefas essenciais de um sistema operativo como é o caso da gestão de memória, gestão de
processos, rede e gestão das definições de segurança.
16
Capítulo 2 – Trabalho Relacionado
Figura 3 - Arquitetura da plataforma Android [5]
A camada Bibliotecas (Libraries) nativas da plataforma. Estas fornecem funcionalidades
nativas da plataforma e são específicas para cada tipo de hardware que o dispositivo possua.
Algumas bibliotecas importantes são por exemplo a Surface Manager, que é a responsável por
fazer a gestão das janelas, SQLite, que é o motor de base de dados usado para fazer a gestão do
armazenamento dos dados, Webkit, que é o motor do browser para mostrar o conteúdo HTML,
e OpenGL que é responsável por fazer o renderização dos gráficos 2D e 3D no ecrã.
A camada seguinte é a camara Android Runtime, que permite que cada thread “corra” a
sua própria máquina virtual.
A camada Application Framework contém os “blocos” com o qual as aplicações nativas
interagem diretamente. Estes gerem as funcionalidades básicas dos dispositivos como é o caso
da gestão das chamadas, gestão de recursos, localização e gestão de notificações.
A camada Applications constitui a camada do topo da arquitetura. Aqui inserem-se as
aplicações que interagem diretamente com o utilizador do dispositivo.
17
Capítulo 2 – Trabalho Relacionado
Quanto a números a plataforma Android tem vindo a aumentar não só o número de
dispositivos com este sistema como também o número de downloads de aplicações das
respetivas lojas de aplicações. Como se pode ver na Figura 4 o número de downloads de
aplicações .
Figura 5 - Número de downloads mensais de aplicações
Figura 4 - Número de downloads mensais de aplicações
Quanto ao número de dispositivos, segundo o site da plataforma cada dia são ativados
mais de 1 milhão de dispositivos com esta plataforma em todo o mundo [10].
A juntar ao facto de a plataforma ser aberta, ao aumento de instalações, nos últimos
tempos, a justificação para a escolha desta plataforma também se prende com o facto de o
investimento inicial para começar a desenvolver e publicar na loja de aplicações ser
substancialmente menor para o caso do Android, quando comparado com outras plataformas.
2.5 Exemplos de Sistemas Periciais
Existem atualmente vários SP desenvolvidos para smartphones e para a Web. Descrevemse a seguir alguns exemplos de sistemas semelhantes ao sistema desenvolvido.
18
Capítulo 2 – Trabalho Relacionado
O Nutriton UCR [4] é um SP para monitorizar e gerir a dieta nutricional de um indivíduo.
Obtém as características físicas indicadas pelo utilizador e avalia o estado nutricional deste,
apresentando recomendações para este alcançar os requisitos nutricionais de uma dieta
equilibrada.
O sistema usa uma arquitetura baseada em serviços formada por uma aplicação cliente e
uma aplicação servidor. A aplicação cliente foi desenvolvida para a plataforma Android e é
através dela que o utilizador envia as suas características físicas para a aplicação servidor onde
se encontra o SP. Este foi implementado na linguagem Java com recurso à biblioteca JESS
(JAVA Shell Expert System) [5].
O sistema contém uma única base de conhecimento representada por um script em regras
JESS que é armazenada num ficheiro separado da aplicação para permitir a sua atualização
independente do código da aplicação. Esta base de conhecimento é constituída por 60 regras e
10 funções que fazem o diagnóstico nutricional da pessoa em causa com base na informação
fornecida pelo utilizador.
A aplicação Expert Advisor [6] é outra aplicação para a plataforma Android que
implementa um SP que permite usar bases de conhecimento (baseadas em árvores de decisão),
criadas com a aplicação XpertRule’s Knowledge Builder e localizadas no servidor da empresa
proprietária do sistema. Nesta aplicação a máquina de inferência está localizado na aplicação
cliente, e as bases de conhecimento podem ser descarregadas do servidor da empresa, ficando
localizadas na aplicação cliente.
O Expertide2Go [7] é um SP que inclui uma ferramenta de criação de bases de
conhecimento baseada em regras. A criação de bases de conhecimento para este sistema é feita
através de uma applet disponibilizada para o efeito. Neste sistema, apesar da máquina de
inferência estar localizada na aplicação móvel, é necessário uma ligação de dados, pois não é
possível guardar as bases de conhecimento na aplicação móvel. O sistema está implementado
numa aplicação para a plataforma Android, a qual permite selecionar uma base de conhecimento
que deve estar acessível através de um endereço web. Nesta aplicação as bases de conhecimento
são guardadas num ficheiro de texto na forma de regras.
O SESMED [8] é um SP para apoio a paramédico. O sistema foi desenvolvido sob a
plataforma J2ME, em uma arquitetura cliente-servidor que é usada para comunicar com uma
aplicação servidor onde está a máquina de inferência. O utilizador usa a aplicação cliente para
enviar os dados dos pacientes para o sistema especialista, o qual retorna o diagnóstico. Para
representar o conhecimento o sistema utiliza Frames e estas são guardadas numa base de dados
relacional Oracle. O algoritmo de inferência utilizado foi definido pelos autores da aplicação em
19
Capítulo 2 – Trabalho Relacionado
parceria com os especialistas da área (médicos. Tal como na aplicação Nutrition UCR neste
sistemas a aplicação cliente apenas tem como função fazer a comunicação com o servidor, onde
está localizada a máquina de inferência, que após receber as informações dos pacientes através
da aplicação móvel, retorna os possíveis diagnósticos.
O DxPlain é um sistema um pouco diferentes dos outros analisados até agora, este é um
sistema especialista desenvolvido para sugerir uma lista de doenças que estão associadas a um
conjunto de estados clínicos. Esta Ferramenta foi desenvolvida no Massachussetts General
Hospital com o objetivo de dar apoio à decisão. A base de conhecimentos deste sistema está
implementado baseado em regras. Este sistema apenas está disponível online, contando com um
uso de quase 20 anos.
Os SP descritos apresentam uma arquitetura baseada em serviços, em que uma aplicação
cliente comunica com uma aplicação servidor, em alguns casos para enviar dados e receber a
resposta do SP e em outros para aceder às bases de conhecimento. Esta arquitetura tem o grande
inconveniente de necessitar de uma ligação de dados permanente entre cliente e servidor.
O sistema proposto também usa uma arquitetura baseada em serviços, mas com a
diferença de não ser necessária uma ligação de dados permanente entre cliente e servidor pois o
SP está implementado na aplicação móvel e a ligação ao servidor é feita pontualmente apenas
para atualizar ou descarregar novas bases de conhecimento.
Outra característica importante do sistema proposto é que permite a seleção de bases de
conhecimento de diferentes áreas, enquanto que a maior parte dos sistemas analisados usam
uma única base de conhecimentos de uma área específica.
2.6 Plataformas de Computação na Nuvem
A Computação na Nuvem tem como base a partilha de recursos de computação. Em vez
de servidores locais pessoais para alojar as aplicações existem servidores partilhados que
partilham recursos e processamento.
Os serviços de Computação na Nuvem permitem criar, testar e implementar aplicações
em infraestruturas altamente escaláveis e confiáveis.
Nestes tipos de serviços é possível ter disponível a baixo custo máquinas virtuais de alto
desempenho assim como balanceamento de carga no caso de ser necessário grande resposta por
parte dos servidores.
Resumidamente podermos enumerar as seguintes grandes vantagens:
20
Capítulo 2 – Trabalho Relacionado
 Escalabilidade;
 Confiabilidade;
 Disponibilidade;
 Apenas é necessário pagar pelo tempo que se utiliza o serviço;
 Não é necessário investimento inicial em hardware, nem compra de licenças ou
pagar por atualizações necessários.
 Não é necessária preocupação de monitorização. Se o servidor deixar de
funcionar, essa tarefa fica a cargo do fornecedor do serviço.
 Não é necessário armazenamento extra para as cópias de segurança.
 Aplicações têm níveis de segurança implementados.
Devido às inúmeras vantagens destes tipos de serviços, tem se verificado um grande
aumento de adesão nos últimos tempos, sendo apontados como substitutos aos serviços
tradicionais de servidores dedicados mesmo em pequenas organizações.
Podemos distinguir 3 tipos de serviços de Computação na Nuvem: Software como serviço
(Software as a servisse, SaaS), Plataforma como serviço (Platform as a Service, PaaS),
Infraestrutura como serviço (Infrastructure as a Service, IaaS).
No primeiro (SaaS) trata-se de um modelo de distribuição de software em que este não é
instalado localmente, mas sim disponibilizado através de um acesso pela internet.
No IssS são disponibilizadas as infraestruturas computacionais como um serviço. Sempre
que é necessário maiores capacidades de armazenamento ou de computação, o serviço aumenta
as capacidades da máquina virtual em vez de se ter que adquirir novos equipamentos.
Um serviço do tipo PaaS proporciona uma plataforma e um conjunto de recursos que
facilitam significativamente o desenvolvimento do sistema, nomeadamente no que se refere à
implementação e manutenção do servidor, assim como ao processo de comunicação entre a
aplicação cliente e o servidor. PaaS permite que o desenvolvimento seja totalmente focado no
negócio, pois a plataforma já administra a arquitetura física de forma transparente.
Na Tabela 1 são apresentadas a comparação entre diferentes plataformas
21
Capítulo 2 – Trabalho Relacionado
Tabela 1 - Comparação entre plataformas de computação na nuvem [6]
Property
Focus
Service Type
User Access
interface
Value-added
service
providers
Virtualization
Microsoft
Azure
Platform
Platform
Infra-structure
Compute,
Storage
(Amazon S3)
Amazon EC2
command-line
tools
Web and
nonweb
application
Microsoft
windows
azure
portal
Yes
Web
Application
Computing
Web-based
administratio
n
scripts, Sun
Grid web portal
Work-bench,
web-based
portal
No
Yes
No
OS level
through fabric
controller
Application
container
Resource
manager and
scheduler
Yes
None
Yes
None
Job
management
system (Sun
Grid
Engine)
Yes
None
Microsoft.NET
Python, Go,
java, php
Yes
OS level
r
Web APIs
Dynamic
negotiation
of QoS
Programming
frameworks
Different Platforms
Google
Sun
App Engine
Network.com
(Sun Grid)
Amazon
Elastic
Compute
Cloud (EC2)
Infrastructure
unning on a
Xen
hypervisor
Yes
None
Amazon
Machine
Images
(AMI)
Solaris OS.
Java, C, C++,
FORTRAN
GRIDS Lab
Aneka
Enterprise
clouds
Computing
Yes
SLA-base
Resources
reservation
APIs
supporting
models in c#
.Net
Pela análise da tabela apresentada podemos concluir que as características apresentadas
pelas plataformas diferem em alguns detalhes que poderão ser determinantes no momento de
optar por um deles. Para o presente projeto foi escolhida a plataforma Google App Engine pela
fácil integração com a plataforma Android assim como pelos serviços oferecidos. Na secção 0
serão apresentados com mais detalhe os serviços da plataforma.
22
Capítulo 3 – Trabalho desenvolvido
CAPÍTULO 3
TRABALHO DESENVOLVIDO
No presente capítulo será descrito todo o trabalho desenvolvido para implementar o
sistema pretendido. Em primeiro lugar é feito um levantamento dos requisitos assim com as
ferramentas utilizadas durante o processo de desenvolvimento e os serviços utilizados da
plataforma de Computação na Nuvem Google App Engine.
A seguir é descrito como cada tipo de bases de conhecimento é guardada na base de
dados e quais os algoritmos do motor de inferências utilizados para cada tipo de bases de
conhecimento.
Por último são descritas as arquiteturas de cada aplicação e os seus modos de
funcionamento do ponto de vista do utilizador final.
Os diagramas das aplicações apresentados encontram-se em Inglês para que podessem ser
utilizador em futuras publicações.
3.1 Análise dos Requisitos
O sistema desenvolvido pretende ser um SP que possa ser utilizado por qualquer
utilizador sem conhecimento da área da base de conhecimento em questão. Este pretende ser de
fácil utilização, e intuitivo para o utilizador final.
Este terá disponíveis várias bases de conhecimento agrupadas por áreas, podendo o
utilizador fazer o download das bases de conhecimento do seu interesse. Todas as bases de
conhecimento descarregadas podem ser utilizadas sem necessidade de qualquer tipo de ligação
de dados, pois o motor de inferência está localizado no dispositivo móvel, e irá utilizar as bases
de conhecimento descarregadas.
23
Capítulo 3 – Trabalho desenvolvido
Para fazer o armazenamento das bases de conhecimento utilizou-se uma base de dados
relacional, que está alojada num servidor e que, através de uma aplicação de bakend, permite
que as aplicações móveis acedam aos dados armazenados.
A plataforma móvel escolhida para o desenvolvimento das aplicações foi a plataforma
Android, e a plataforma de Computação na Nuvem escolhida por razões de compatibilidade e de
funcionalidades disponibilizadas foi a plataforma Google App Engine. A utilização desta no
sistema foi para alojar a aplicação de backend de cada aplicação móvel desenvolvida,
alojamento da base de dados, e envio de notificações de atualizações de bases de conhecimento.
Foram desenvolvidas duas aplicações, tendo sido ambas desenvolvidas para a plataforma
Android. A aplicação MyExpert foi desenvolvida e otimizada para smartphone. Esta é a
aplicação que será disponibilizada para os utilizadores finais, para consultar as bases de
conhecimento.
A aplicação MyExpert Manager foi desenvolvida e otimizada para Tablet de 10”. Esta
tem a função de gerir as bases de conhecimento que ficam acessíveis aos utilizadores finais.
Para cada uma das aplicações existe uma aplicação de backend que permite fazer a
“ponte” entre a aplicação móvel e a base de dados.
3.2 Ferramentas e Serviços
Para o desenvolvimento do sistema descrito foram utilizadas várias ferramentas de
desenvolvimento, assim como vários serviços disponibilizados pela plataforma de Computação
na Nuvem Google App Engine. Esta secção descreve as principais ferramentas e serviços
utilizados no desenvolvimento do projeto.
Começamos por descrever a ferramenta base de desenvolvimento das aplicações móveis e
das aplicações de backend respetivas. A ferramenta utilizada foi o ambiente de desenvolvimento
Eclipse, com o plugin ADT (Android Developer Tools), e o Android SDK Tools. Para facilitar a
instalação destes plugins foi aceite a sugestão da página de developers da Google [11] e feito o
download do pacote de instalação que contem estas ferramentas todas já instaladas assim como
uma emulador de dispositivos móveis para poder testar a aplicação sem que para isso seja
necessária a utilização de um dispositivo físico.
A versão do Eclipse utilizada foi a 3.2.1, sendo esta a última versão no momento do início
do desenvolvimento do projeto.
Após o download destes pacotes de ferramentas, o próximo passo é deixar o eclipse com
a possibilidade de desenvolver aplicações para a plataforma de computação na nuvem da
Google. Para permitir isto é necessário a instalação do plugin da Google para o Eclipse. A
24
Capítulo 3 – Trabalho desenvolvido
escolha da versão do plugin depende da versão do Eclipse utilizada [12]. Para a instalação
começa-se por adicionar um novo repositório ao centro de repositórios de download do Eclipse:
Help -> Install New Software… -> Add
E preenchemos os campos como indicado na Figura 6.
Figura 6 - Adicionar Repositório do plugin da Google para o Eclipse
25
Capítulo 3 – Trabalho desenvolvido
Após o eclipse reconhecer o repositório apenas é necessário escolher todas as instalações
disponíveis e proceder á instalação.
Para criar um projeto Android com uma aplicação de backend alojada na Google App
Engine é necessário executar as seguintes ações e seguir os passos do assistente de criação de
projeto:
File->New -> Other -> Android -> App Engine Connected Android Project.
A versão do SDK para o Google App Engine foi a versão 1.8.7, sendo esta a versão mais
recente do SDK no início do projeto.
Para visualizar os logs gerados pelas aplicações de backend foi utlizado a aplicação web
da Google, Google App Engine Console.
Já para fazer a gestão da base de dados alojada na Google cloud sql foi utlizada a
ferramenta SQuirrel [7].
3.3 Serviços da plataforma Google App Engine
O Google App Engine permite executar aplicações numa plataforma PassS, ficando a
gestão desta acessível através de uma página web, como pode ser visto na Figura 7. Este permite
que qualquer programador possa executar as suas aplicações web nas infraestruturas da
plataforma Google, ficando a beneficiar da experiencia dos técnicos desta empresa. As
aplicações alojadas neste serviço são fáceis de criar, manter e escalonar à medida que o tráfego
e armazenamento de dados necessita de crescer.
26
Capítulo 3 – Trabalho desenvolvido
Figura 7 - Dashboard de um projeto Google App Engine
Além destas vantagens temos ainda disponíveis vários serviços que podemos integrar nas
aplicações.
Como já foi referido na secção 3, foram desenvolvidas duas aplicações distintas, sendo
que ambas comunicam com a mesma base de dados.
A motivação para o Mobile Backend do sistema ser formado por duas aplicações distintas
prende-se com aspetos de segurança. Para garantir a segurança nas aplicações de backend, é
apenas dado o acesso à aplicação correspondente, permissão esta que é definida na plataforma
de configuração da cloud da Goole, onde são especificadas as definições das aplicações
backend. Para isso é gerado um Cliend ID OAuth 2.0 [10], gerado a partir do nome do package
e do certificado de assinatura digital da aplicação cliente. Esse ID é usado na aplicação cliente
para que se possa autenticar na correspondente aplicação do Mobile Backend.
Outro mecanismo extra de segurança, utilizado apenas na aplicação do Mobile Backend
com a qual a aplicação MyExpert Manager comunica, foi a de associar a permissão de execução
de funções, a uma conta Google. Assim, o utilizador da aplicação MyExpert Manager terá que
fazer primeiro o login na conta para poder aceder à base de dados.
Nas secções seguintes são analisados com mais algum detalhe alguns destes serviços.
27
Capítulo 3 – Trabalho desenvolvido
3.3.1 Google Cloud SQL
O serviço Google Cloud Sql permite ter bases de dados relacionais MySQL na cloud da
Google, podendo fazer a gestão destes totalmente através de uma página web. A gestão da
replicação, criptografia e backups fica da responsabilidade da plataforma Google App Engine,
assim permite libertar o programador destas preocupações e manter o foco apenas no
desenvolvimento da aplicação.
Esta tem fortes mecanismos de seguranças implementados e tem integração total com
todos os serviços disponibilizados pela Google App Engine.
Uma das grandes vantagens deste serviço é que podemos escolher várias modalidades de
pagamento como por exemplo pagar apenas pelas horas em que a instância de base de dados é
utilizada ou escolher um pacote dependendo da RAM e espaço necessário para a base de dados.
Para o presente projeto a escolha foi de pagamento pelas horas de utilização.
3.3.2 Google Cloud Endpoints
Um elemento importante no uso da plataforma Google App Engine é o Google Cloud
Endpoints [11] que disponibiliza ferramentas, bibliotecas e recursos que permitem gerar APIs e
bibliotecas cliente, com o intuito de simplificar o acesso aos dados de outras aplicações. Na
Figura 8 é pode-se ver o esquema do funcionamento deste serviço. Para fazer a ligação entre de
um cliente Android, IOS ou de uma aplicação Chrome pode-se utilizar estas ferramentas e
bibliotecas.
O Google Cloud Endpoints permite que, do ponto de vista do programador, a ligação
cliente-servidor seja quase transparente, não sendo necessário fazer qualquer gestão da ligação,
apenas fazer chamadas de funções previamente programadas no backend web da plataforma.
Figura 8 - Funcionamento do Google Cloud Endpoints
28
Capítulo 3 – Trabalho desenvolvido
Além disso, proporciona ainda recursos para a implementação de infraestruturas críticas como é
o caso da autenticação, reduzindo assim o esforço de desenvolvimento.
Com este serviço, para cada classe que necessite de aceder à aplicação de backend, é
necessário gerar a classe Endpoint correspondente. Como se pode ver pela Figura 9 é fácil criar
uma classe Endpoint. Depois de criada a classe apenas é necessário criar os métodos a
disponibilizar para a aplicação cliente.
Figura 9 - Criação da classe Endpoint
Este serviço é utilizador por ambas as aplicações é através das bibliotecas geradas pelo
Google Cloud Endpoints que estas acedem às respetivas aplicações de backend.
29
Capítulo 3 – Trabalho desenvolvido
3.3.3 Google Cloud Messaging
O GCM (Google Cloud Messsaging) é um serviço que permite enviar dados de um
servidor para dispositivos Android, assim como para receber mensagem a partir de dispositivos
na mesma ligação. O serviço GCM lida com todos os aspetos de enfileiramento de mensagens e
encarrega-se de fazer a entrega da mensagem na respetiva aplicação no dispositivo de destino.
Este serviço é completamente livre, não importando o número de mensagens que é necessário
enviar e não tem quotas.
O funcionamento deste serviço na aplicação desenvolvida é explicado com mais detalhe
na secção 3.9.5.
3.4 Casos de uso
A Figura 10 apresenta os dois tipos de atores intervenientes no sistema e os respetivos
casos de uso. Os atores são o End User (Utilizador final) e o System Manager (Administrador
do sistema).
O End User é a pessoa que vai fazer o registo do seu equipamento no sistema, seleciona e
descarregar bases de conhecimento, verificar se existem atualizações de bases de conhecimento
já descarregadas e usar essas mesmas bases de conhecimento no SP da aplicação.
O System Manager é a pessoa responsável pela criação das bases de conhecimento,
atualizar as mesmas e publicá-las, deixando-as disponíveis para o utilizador final as poder
descarregar.
As ações do Utilizador Final foram implementadas na aplicação My Expert, enquanto que
as funções de gestão das bases de conhecimento foram implementadas na aplicação My Expert
Manager.
30
Capítulo 3 – Trabalho desenvolvido
Figura 10 -Atores e respetivos casos de uso do sistema desenvolvido
Casos de uso do Ator System Manager:

Login/logout: Para o administrador do sistema conseguir aceder ao menu para
fazer a gestão de todas as bases de conhecimento, este terá que fazer login na
aplicação, login este que é confirmado na aplicação de backend.

Create Knowledge Base: A aplicação MyExpert Manager permite criar novas
bases de conhecimento que são inseridas na base de dados através da aplicação de
backend.

Publish Knowledge Base: Após a criação da base de conhecimento esta não fica
automaticamente disponível para os utilizadores finais da aplicação, é necessário
publicá-la para que os utilizadores a consigam “ver” e fazer o download.

Update knowledge Base: Através da aplicação MyEspert Manager o
administrador pode fazer o download da base de conhecimento e proceder à
alteração desta, e no final fazer o upload para a base de dados, processo este que
no final desencadeia o envio de notificações para os clientes a informar da
atualização efetuada para que a possam efectuar nos seus dispositivos.
31
Capítulo 3 – Trabalho desenvolvido
Casos de uso do Ator End User:

Register Device in system: Para que o dispositivo receba notificações este terá
que efetuar o registo do dispositivo através do serviço Google Cloud Messaging.
Este processo é descrito com mais detalhe na secção 3.10.6.

Download new Knowledge Base: O utilizador final consegue ver todas as bases
de conhecimento disponibilizadas pelo administrador do sistema, mas apenas
descarrega para o seu dispositivo aquelas que forem do seu interesse para que as
possa consultar.

Update knowledge Bases: Quando o administrador do sistema efetua alterações
em uma base de conhecimento, o utilizador final recebe uma notificação, caso o
utilizador já tenha feito o download da Base de Conhecimento, este poderá fazer
a sua actualização.

Check for Diagnostics of knowledge Base: Esta é a função base de todo o
sistema, em que o utilizador consulta uma base de conhecimento já descarregada.
Aqui o sistema vai executar o motor de inferência para a base de conhecimento
selecionada pelo utilizador, faz perguntas ao utilizador com o objetivo de chegar
a um conclusão e apresenta-la ao utilizador.
3.5 Representação das Bases de Conhecimento
Com já foi referido na secção 2.3 as bases de conhecimentos no sistema podem ser
representadas com base em regras ou árvores de decisão.
Para o caso das bases de conhecimento baseadas em regras, vamos assumir como
exemplo a base de conhecimento representada a seguir, que serve para determinar se um
determinado candidato se qualifica para uma posição em uma determinada empresa e qual a
posição a oferecer.
Regra 10
Regra 20
Regra 30
Regra 40
SE
ENTÃO
SE
ENTÃO
SE
DIPLOMA = NÃO
POSIÇÃO = NÃO
DIPLOMA = SIM
QUALIFICA = SIM
DIPLOMA = SIM E
DESCOBERTA = SIM
ENTÃO POSIÇÃO = PESQUISA
SE
QUALIFICA = SIM E
32
Capítulo 3 – Trabalho desenvolvido
MÉDIA < 3,5 E
EXPERIÊNCIA >=2
ENTÃO POSIÇÃO = ENGENHEIRO DE
SERVIÇO
SE
QUALIFICA = SIM E
MÉDIA < 3,5 E
EXPERIÊNCIA < 2
ENTÃO POSIÇÃO = NÃO
SE
QUALIFICA = SIM E
MÉDIA >= 3,5
ENTÃO POSIÇÃO = ENGENHEIRO DE
PRODUTO
Regra 50
Regra 60
Analisando cada uma das regras, chegamos à conclusão que podemos representar uma
regra no seguinte formato:
SE Ci OpB Ci+1 OpB Ci+2 ….
ENTÃO Conclusão
Onde:
Ci = Condição i (do tipo Vi OpR Valor)
Vi = Variável i
OpR = Operador Relacional (<, ≤, =, ≠, >, ≥)
OpB = Operador Booleano (E e OU)
A parte SE da regra é constituída de cláusulas. Estas cláusulas são condições que juntas
formarão uma decisão que leva a uma conclusão. Cada cláusula pode ser formada por várias
condições, condições estas que estão ligadas por operadores booleanos. Cada condição é
formada por uma variável, um operador relacional e um valor.
A parte ENTÃO da regra constitui a conclusão a que se chega se a combinação das
condições for verdadeira.
Após esta análise tiramos as seguintes conclusões:

Para cada base de conhecimento necessitamos de guardar qual a variável
de conclusão, ou seja a resposta que pretendemos alcançar (no exemplo
referido seria a variável POSIÇÃO).

Cada knowledgeBase tem várias regras.

Cada Regra é composta por uma parte “IF” e por uma parte “THEN”

A parte “IF” pode ser composta por uma ou várias Clausulas (tabela
“Clauses”), ligadas por um operador Booleano.
33
Capítulo 3 – Trabalho desenvolvido

A parte “THEN” é composta por uma única cláusula, a cláusula de
conclusão.
Após esta análise chegou-se ao diagrama ER para guardar a Base de conhecimento que
será apresentação na secção seguinte.
No que diz respeito a bases de conhecimento com base em árvores de decisão vamos
assumir como exemplo a árvore de decisão da Figura 11, retirada de [13].
Figura 11 - Exemplo de Base de conhecimento em Árvore de Decisão
34
Capítulo 3 – Trabalho desenvolvido
Para uma base de conhecimentos baseadas em árvores de decisão, necessitamos de
guardar a informação relativa ao nó, e para cada um destes qual o nó que nos leva respondendo
“Sim” a esse nó e qual o nó respondendo “Não”. Para além desta informação necessitamos de
guardar se o nó é um nó raiz e se o nó é um no folha, ou seja se é o primeiro ser analisado ou se
depois deste não existe mais nós, ou seja encontrou-se a respostas. Como se pode ver no
exemplo da Figura 11, alguns nós além de uma conclusão têm associada informação
complementar (auto-ajuda ou tratamento) que necessita de ser guardada.
3.6 Armazenamento na Base de Dados
Para organizar as Bases de Conhecimento optou-se por separá-las em Áreas (Saúde,
informática, etc.), Categorias (área de Saúde: Crianças, Adultos, Idosos), e SubCategorias
(Categoria Crianças: Bebés com menos de um ano, crianças de todas as idades, Adolescentes).
Esta organização foi escolhida para que o utilizador possa selecionar apenas as bases de
conhecimento do seu interesse.
Para que o número de downloads das bases de conhecimento não fosse muito grande,
optou-se por permitir que o utilizador final fizesse o download ao nível das Categorias. Assim,
quando um utilizador faz um download de uma Categoria este descarrega todas as Bases de
Conhecimento que estão associadas a todas as subcategorias da Categoria escolhida.
A seguir são descritos o diagrama Entidade Relacionamento da Base de dados alojada no
servidor (Google Cloud SQL) e Base de Dados da aplicações cliente (aplicação MyExpert).
3.6.1 Base de dados alojada no Google Cloud SQL
No que se refere à base de dados alojada no serviço Google Cloud SQL, da análise
anterior, chegamos ao diagrama ER apresentado na Figura 12. Assim temos a tabela Area,
Category e SubCategory, que serve para fazer a organização das Bases de conhecimento, temos
a tabela KnowledgeBases que é a onde são guardadas as informações da base de conhecimento,
o tipo e se é pública. As tabelas Rules, ClausulesRules, Clauses e Variables são as tabelas para
guardar a informação das bases de conhecimento baseadas em regras, enquanto que as Tabelas
Node e Tip são as tabelas onde são guardas as informações das bases de conhecimento baseadas
em árvores de decisão.
Na tabela Devices são guardados todos os dispositivos que se registam para que possa ser
possível enviar notificações de atualizações ou novas bases de conhecimento disponíveis.
35
Capítulo 3 – Trabalho desenvolvido
Figura 12 – Diagrama ER da base de dados presente no serviço Google Cloud SQL
De seguida é apresentada a estrutura de cada Tabela.
Tabela 2 - Descrição da tabela Area
Campo
id
name
image
Descrição
Código de
identificação da área
Nome da área
Imagem descritiva da
área.
Tipo
Numérico
Chave
Primária
Texto
Imagem
Obrigatório
X
X
Tabela 3 - Descrição da tabela Category
Campo
id
name
image
area_id
Descrição
Código de
identificação da
categoria
Nome da categoria
Imagem descritiva da
categoria.
Código de
Tipo
Numérico
Texto
Imagem
Numérico
Chave
Primária
Obrigatório
X
X
Estrangeira X
36
Capítulo 3 – Trabalho desenvolvido
identificação da área
a que pertence a
categoria
Tabela 4 - Descrição da tabela SubCategory
Campo
id
Descrição
Código de
identificação da
subcategoria
Nome da
name
Subcategoria
Imagem descritiva
image
da subcategoria.
category_id Código de
identificação da
categoria a que
pertence a categoria
description Descrição da
subcategoria
Tipo
Numérico
Chave
Primária
Obrigatório
X
Texto
X
Imagem
Numérico
Estrangeira X
Texto
Tabela 5 - Descrição da tabela KnowledgeBases
Campo
Descrição
Código de
identificação da
Base de
Conhecimento
Nome da Base de
name
Conhecimento
Imagem descritiva
image
da Base de
Conhecimento.
conclusion_variable_id Código da variável
de conclusão da
base de
conhecimento
(apenas para bases
de conhecimento
baseada em regras)
Tipo de Base de
knowledgeBase_type
Conhecimento, caso
seja do tipo 1 indica
que é baseada em
regras, ou do tipo 2
do tipo baseada em
id
Tipo
Chave
Numérico
Primária
Texto
Obrigatóri
o
X
X
Imagem
Numérico
Numérico
Estrangeir
a
X
37
Capítulo 3 – Trabalho desenvolvido
Subcategory_id
árvore de decisão.
Código de
identificação da
subcategoria a que
pertence a Base de
Conhecimento
Numérico
Estrangeir
a
X
Tabela Rules
Tabela 6 - Descrição da tabela Rules
Campo
id
Descrição
Código de
identificação da
regra
Número da regra
number
Código de
knowledgeBase_id
identificação da
Base de
Conhecimento a
que pertence
conclusion_clause_id Código de
identificação da
cláusula de
conclusão
Tipo
Numérico
Chave
Primária
Obrigatório
X
Numérico
Numérico
X
Estrangeira X
Numérico
Estrangeira X
Tabela 7 - Descrição da tabela ClausesRules
Campo
id
binaryOperator
sequence
clause_id
rule_id
Descrição
Código de
identificação da
cláusula da regra
Operador
binário
Código de
identificação da
Base de
Conhecimento a
que pertence
Código de
identificação da
cláusula
Código de
identificação da
regra
Tipo
Numérico
Chave
Primária
Obrigatório
X
Numérico
X
Texto
X
Numérico
Estrangeira X
Numérico
Estrangeira X
38
Capítulo 3 – Trabalho desenvolvido
Tabela 8 - Descrição da tabela Clauses
Campo
id
relationalOperator
value
variable_id
explanation
Descrição
Código de
identificação da
cláusula
Operador
relacional
Valor a
comparar com o
operador
relacional
Código de
identificação da
variável
Explicação da
cláusula
Tipo
Numérico
Chave
Primária
Obrigatório
X
Numérico
X
Texto
X
Numérico
Estrangeira X
Texto
Tabela 9 - Descrição da tabela Variables
Campo
id
Descrição
Código de
identificação da
variável
Nome da variável
name
Imagem descritiva da
image
pergunta a fazer ao
utilizador
question Questão a colocar ao
utilizador
Tipo
Numérico
Chave
Primária
Obrigatório
X
Texto
Imagem
X
Texto
X
Tabela 10 - Descrição da tabela Node
Campo
id
knowledgeBase_id
number
id_yes_node
Descrição
Código de
identificação do
nó
Código de
identificação da
base de
conhecimento
que pertence o nó
Número do nó
Nó que está
ligado á resposta
“Sim” do
utilizador
Tipo
Numérico
Chave
Primária
Obrigatório
X
Numérico
Estrangeira X
Numérico
Numérico
Estrangeira
X
39
Capítulo 3 – Trabalho desenvolvido
id_no_node
question
description
image
isLeaf
isRoot
Nó que está
ligado á resposta
“Não” do
utilizador
Pergunta a
colocar ao
utilizador
Informação
complementar da
pergunta
Imagem
descritiva da
pergunta a fazer
ao utilizador
Indicação se o nó
é um nó folha
Indicação se o nó
é um nó raiz.
Numérico
Estrangeira
Texto
X
Texto
Imagem
Booleano
X
Booleano
X
Tabela 11 - Descrição da tabela Tip
Campo
id
Descrição
Código de
identificação da dica
Código de
nod_id
identificação do nó
texto_tip Informação extra a
apresentar ao
utilizador
imagem Imagem descritiva da
dica
Tipo
Numérico
Chave
Primária
Numérico
Estrangeira X
Texto
Obrigatório
X
X
Texto
Tabela 12 - Descrição da tabela Devices
Campo
id
Descrição
Código de
identificação
dispositivo
deciceRegistrationId Código de
registo no
servido GCM
Informação do
deviceInformation
dispositivo como
marca e modelo
Tipo
Numérico
Chave
Primária
Obrigatório
X
Texto
X
Texto
X
40
Capítulo 3 – Trabalho desenvolvido
3.6.2 Base de dados mobile
A base de dados que fica no dispositivo mobile tem a estrutura muito idêntica à do
servidor, com a diferença nos seguintes pontos:

Tipo de dados em todas as tabelas;

Na tabela “Category” uma campo que indique se foi feito o download do
servidor ou não.

Tabela “UpdateMessage” onde são guardas todas as notificações de
atualizações recebidas para processamento.
O ER da Bases de Dados Mobile é apresentado na Figura 13.
Figura 13 - ER da Base de dados Mobile
A estrutura da tabela UpdateMessage é a seguinte:
Tabela 13 - Descrição da tabela UpdateMessage
Campo
id
Descrição
Código de
identificação
Tipo
Numérico
Chave
Primária
Obrigatório
X
41
Capítulo 3 – Trabalho desenvolvido
message
dispositivo
Mensagem
recebida para
atualização
Texto
X
3.7 Algoritmos do Motor de Inferência
Como já foi referido o motor de inferência vai atuar de acordo com o tipo de base de
conhecimento escolhida pelo utilizador.
Para o caso de bases de conhecimento baseado em regras existem dois mecanismos
possíveis para implementar uma máquina de inferência, o encadeamento para frente e o
encadeamento para trás (sendo também possível combinar os dois).
Neste caso, foi implementado o mecanismo de encadeamento para trás que consiste em
começar por escolher hipoteticamente uma conclusão para o raciocínio e a partir daí solicitar
mais informações ao utilizador para verificar se as cláusulas que levam a essa conclusão se
verificam ou não, de modo a poder confirmar a conclusão. Se a hipótese não se confirmar, o
motor de inferência escolhe nova conclusão, recorrendo aos dados recolhidos até ao momento, e
repete o processo até que uma conclusão seja confirmada ou até não haver mais conclusões
possíveis
O algoritmo do processo de encadeamento para trás utilizado foi o descrito em[8] e será
apresentado de seguida.
Vamos tomar como exemplo a base de conhecimento apresentada na Erro! A origem da
referência não foi encontrada..
Para proceder ao encadeamento para trás, o algoritmo utilizado necessita de construir um
conjunto de estruturas de apoio ao processo de inferência, esta estrutura deriva diretamente da
base de conhecimento.
Após se ter construído estas estruturas podemos utilizador o seguinte algoritmo:
42
Capítulo 3 – Trabalho desenvolvido
Algoritmo 1 – Algoritmo utilizado para o encadeamento para trás
1. Identificar Conclusão
2. Procurar na lista de conclusões a 1ª ocorrência variável de
conclusão. Colocar o número da regra e 1 para representar o
número da cláusula.
3. Instanciar a cláusula SE.
Para cada variável da regra:
Se variável não for variável de conclusão e não tiver na
lista de conclusão
Pedir ao utilizador para inserir um valor
Se não, se for variável de conclusão
Colocar o número da regra da variável de conclusão no
topo da pilha, e voltar ao passo 3.
4. Se unidade no topo da pilha não poder ser instanciada
Remover a unidade do topo da pilha
Se existir outra ocorrência do nome da variável de
conclusão na lista de conclusões:
Voltar ao passo 3
Se não
Regra da conclusão anterior é falsa
Se não existir uma conclusão anterior
Notificar o utilizador que a resposta não pode
ser encontrada.
Se não
Voltar ao passo 4.
Se não Se regra poder ser instanciada
Removê-la da pilha
Se existir outra variável abaixo dela
Incrementar número da cláusula
Para as cláusulas restantes voltar ao passo 3
Se não
Respondemos à nossa pergunta, o utilizador chegou a
uma conclusão.
43
Capítulo 3 – Trabalho desenvolvido
Para o caso das bases de conhecimento baseadas em árvores o algoritmo aplicado pelo
motor de inferência para procurar respostas para o utilizador é o seguinte:
Algoritmo 2 – Algoritmo de procura dos nós:
GET Nó Root
Enquanto Novo Nó não for nó Leaf
Lê resposta Utilizador
Se resposta == SIM
Get Nó id = id_yes_node
Se não Se resposta == NÃO
Get Nó id = id_yes_node
Apresentar a resposta encontrada ao utilizar.
3.8 Arquitetura do Sistema
Com já foi referido o SP foi implementado para a plataforma Android através de uma
arquitetura baseado em serviços, utilizando a infraestrutura de computação na nuvem da Google
App Engine. A utilização desta permitiu a abstração em relação ao trabalho administrativo do
sistema, como é o caso do balanceamento de carga, escalonamento e manutenção do servidor,
pois a infraestrutura da cloud da Google já tem estes serviços implementados, sendo estas as
vantagens da utilização deste tipo de serviços.
A Figura 14 apresenta uma visão geral da arquitetura do sistema proposto.
44
Capítulo 3 – Trabalho desenvolvido
Figura 14 - Arquitetura Geral do sistema
A arquitetura pode ser dividida em três componentes principais: a aplicação MyExpert
Manager, MyExpert e Base de dados alojada no Google Cloud Sql.
A aplicação MyEspert Manager, que engloba a aplicação desenvolvida para a plataforma
Android, permite a criação e gestão de bases de conhecimento. Esta engloba também a
aplicação MyExpert Manager Backend, aplicação de backend alojada na plataforma de
Computação na Nuvem da Google, Google App Engine, que faz a “ponte” entre a aplicação
cliente e base de dados;
A aplicação MyExpert, igualmente desenvolvida para a plataforma Android, é a aplicação
para o utilizador final, sendo nesta onde está implementada a máquina de inferência do SP.
Neste considere-se de igual forma a respectiva aplicação de Backend – MyExpert Backend.
A Base de Dados é o que contem a coleção de bases de conhecimento do sistema e
respetiva estrutura, armazenadas na Google Cloud SQL.
Nos capítulos seguintes serão apresentados com mais algum detalhe estas aplicações.
3.9 Aplicação MyExpert Manager
A Figura 15 apresenta os módulos que formam a aplicação MyExpert Manager. Na figura
estão representados os módulos que compõem a aplicação desenvolvida para tablet assim como
os módulos da aplicação de backend e respetivas ligações. No anexo D é apresentado o
funcionamento desta aplicação.
45
Capítulo 3 – Trabalho desenvolvido
Figura 15 - Arquitetura da Aplicação MyExpert Manager
3.9.1 Módulo User Interface
O módulo User Interfac é responsável pela interação entre o utilizador e o módulo
Knowledge Acquisiton. Este representa todos os ecrãs da aplicação MyExpert Manager, que
permitem ao utilizador fazer toda a gestão das bases de conhecimento disponíveis para o
utilizador final.
3.9.2 Módulo Knowledge Acquisition
Este módulo é responsável pela criação e atualização das bases de conhecimento. Este
comunica com o módulo User Interface, onde vai recolher a informação introduzida sobre as
bases de conhecimento, constrói a base de conhecimento e envia para o módulo Update que faz
com que esta seja introduzida/atualizada na base de dados.
Para cada método de introdução, este módulo após o utilizador introduzir todas as
informações da base de conhecimento, constrói a base de conhecimento no formato
especificado, e passa a base de conhecimento para o módulo Update.
46
Capítulo 3 – Trabalho desenvolvido
3.9.3 Módulo Update
O módulo Update é o módulo responsável pela inserção e atualização das bases de
conhecimento na Google Cloud SQL.
Os detalhes deste módulo serão apresentados na secção 3.11, pois é difícil fazer a
separação entre o módulo Update da aplicação MyExpert Manager da aplicação MyExpert.
3.9.4 Módulo Update Database
O módulo Update Database é responsável pela inserção e atualização de bases de
conhecimento na base de dados MySql localizada na Google Cloud Sql assim como de enviar
para o módulo de notificações o tipo de atualização que foi feita no sistema.
3.9.5 Módulo Notification
Este módulo faz uso do serviço da Google - Google Cloud Messaging para enviar
notificações para os clientes registados com a informação de que existem atualizações
disponíveis no servidor.
Para permitir informar que tipo de atualização foi feita e o que foi atualizado ou foi criado
um protocolo simples de comunicação baseado em massagens de texto. O formato das
mensagens é explicado a seguir.
Cada mensagem é formada por um conjunto de caracteres e pode ser dividida em 4
partes. Esta terá o seguinte especto:
A#B#C#D
Onde:
A-> tipo de atualização
1 - Adiciona
2 - Elimina
3 - Update
B -> o que atualiza
1 - Área
2 - Categoria
3 - Subcategoria
4 – Base de Conhecimento
5 - Menu
C -> id do que atualiza
47
Capítulo 3 – Trabalho desenvolvido
D -> Mensagem
Com a definição deste protocolo não será necessário atualizar toda a informação da base
de dados apenas quando a atualização que se quer publicar é apenas um erro ortográfico por
exemplo.
3.10 Aplicação MyExpert
A Figura 16 apresenta a arquitetura da aplicação MyExpert. Esta compreende a aplicação
desenvolvida para smartphone, aplicação de Backend e respetivos serviços utilizados. Nas
secções seguintes irá ser apresentado com mais algum detalhe cada módulo da aplicação. No
anexo C é apresentado o funcionamento desta aplicação.
Figura 16 - Arquitetura da aplicação MyExpert
48
Capítulo 3 – Trabalho desenvolvido
3.10.1 Módulo User interface
O módulo User Interface é responsável pela interação entre o utilizador e a máquina de
inferência, com base em perguntas e respostas. O módulo também permite ao utilizador
interagir com a plataforma de computação na nuvem para atualizar e descarregar novas bases de
conhecimento. Permite ainda visualizar as explicações geradas pelo módulo de explicação.
3.10.2 Módulo Inference Engine
O módulo Inference Engine (máquina de inferência) é o responsável pelo processamento
da base de conhecimentos recorrendo a raciocínio e planeamento lógico.
Com já foi descrito, para cada tipo de base de conhecimento é desencadeado seu processo
de encadeamento correspondente. Estes processos foram descritos na Secção 3.7. Para o
utilizador final este processo é totalmente transparente.
3.10.3 Módulo Explanation Subsystem
O módulo Explanation gera a linha de raciocínio seguida pela máquina de inferência para
chegar à conclusão. Caso o utilizador o solicite, a linha de raciocínio é apresentada na interface.
Para o caso da base de conhecimento baseado em regras a explicação para a solução
encontrada é a parte SE na regra que foi utilizada para chegar à conclusão, enquanto para o caso
da Base de Conhecimento baseada em árvores de decisão a explicação consiste no caminho que
leva do nó Root ao nó Leaf.
3.10.4 Módulo Update
O módulo Update é responsável pelo processo de atualizações das bases de
conhecimento. Este módulo recebe notificações por parte da aplicação de backend com a
informação das bases de conhecimento que têm atualizações disponíveis e, caso a aplicação
MyExpert possua essa base de conhecimento armazenada, notifica o utilizador através da
interface que pode proceder à atualização. É também através deste módulo que podem ser
selecionadas e descarregadas novas bases de conhecimento entretanto criadas e armazenadas na
plataforma Cloud do sistema.
Na secção 3.11 é mostrado com mais detalhe como funciona todo o processo de
atualização do sistema.
49
Capítulo 3 – Trabalho desenvolvido
3.10.5 Módulo KnowledgeBase
O módulo Knowledge Base representa as bases de conhecimento descarregadas do
servidor e armazenadas na aplicação. As bases de conhecimento são armazenadas numa base de
dados SQLite. Estas bases de conhecimento são transferidas do Google Could SQL onde estão
armazenadas numa base de dados MySQL. As bases de dados têm a mesma estrutura no que se
refere ao armazenamento das bases de conhecimento pelo que a transferência destas é realizada
de forma transparente recorrendo ao cloud endpoints.
3.10.6 Módulo Registration
Este módulo é responsável por fazer o registo do dispositivo móvel na base de dados do
sistema, para que quando existir uma atualização do sistema este possa ser notificado da
existência da atualização. A Figura 17 representa o funcionamento do módulo.
Figura 17 - Funcionamento do Módulo Registration
No arranque da aplicação é verificado se esta já se tem um “registration_id”, ou seja se já
foi efetuado o registo da aplicação no servidor, caso este registo ainda não tenha sito efetuado é
desencadeado o seguinte processo:
50
Capítulo 3 – Trabalho desenvolvido
1- Aplicação MyExpert comunica com o serviço Google Coud Messing para fazer
o registo da aplicação neste serviço. Deste modo quando a aplicação de
backend pedir a este serviço, para enviar uma mensagem para o cliente este
sabe qual o dispositivo a enviar.
Este devolve o Registration-Id deste cliente.
2- A aplicação comunica com a aplicação MyExpert Manager, através do Google
Cloud Endpoints e passa-lhe o “Registration-Id” devolvido pela Google Cloud
Messagins.
3- A aplicação MyExpert Backend vai procurar na base de dados se o
“Registration-Id” existe na Base de dados, caso não exista insere-o na Tabela
“Devices”. Esta verificação torna-se importante para assegurar que um
dispositivo não irá receber várias notificações para a mesma atualização.
3.10.7Módulo GetUpdate
Este é o módulo responsável por devolver as atualizações solicitadas pela aplicação
MyExpert a pedido do utilizador ou automaticamente, caso o utilizador tenha atualizações
automáticas.
Do lado do servidor não é guardada qualquer informação que bases de conhecimento cada
utilizador fez download, assim quando existe uma atualização de uma determinada base de
conhecimento é enviada uma notificação para todos os dispositivos registados, ficando a
responsabilidade do lado da aplicação cliente de descartar a notificação, e não a apresentar ao
utilizador caso não se aplique.
3.11 Mecanismo de atualização
A Figura 18 representa o módulo de atualizações do sistema. De seguida é apresentado o
processo de atualização.
51
Capítulo 3 – Trabalho desenvolvido
Figura 18 - Funcionamento do módulo de atualizações
1- Aplicação MyExpert faz uma atualização/inserção de uma base de
conhecimentos no servidor.
2- Aplicação de backend envia uma mensagem através do serviço de envio
de dados da Google – Google Cloud Messaging – para todos os
dispositivos.
3- Quando existir uma ligação de dados com o dispositivo, é enviada a
mensagem para todos os dispositivos registados. O utilizador recebe
uma notificação de que existe uma atualização de uma base de
conhecimento que já fez dowload ou que está disponível uma nova base
de conhecimento para download.
No caso de o utilizador ter a opção de atualização automática, o dispositivo efetua uma
ligação com a aplicação de backend para transferir essa atualização, caso contrário a atualização
é efetuada a pedido do utilizador.
52
Capítulo 3 – Trabalho desenvolvido
3.12 Publicação da aplicação na loja de aplicações Google
Play
Para a distribuição da aplicação optou-se pela colocação da aplicação na loja de
aplicações da Google – Google Play.
A Figura 19 mostra a aplicação publicada e disponível para download.
Figura 19 – Página da Aplicação no Google Play
No que diz respeito aos modelo de negócio da aplicação, as opções mais comuns são a
publicação da aplicação por um valor nas lojas de aplicações, ou a colocação de banners com
publicidade, em que é pago por cliques nos respectivos banners. A primeiro forma é
aconselhada quando a aplicação é muito específica nas suas funções e/ou o seu público-alvo se
considera muito restrito, enquanto que a segunda é aconselhada quando o destinatário é o
público em geral, ou seja é tentado lucra o investimento na aplicação pela quantidade de
utilização que os utilizadores lhe irão dar. Outra alternativa é combinar estas duas formas, ter
uma aplicação paga, e ter outra com recursos limitados com publicidade.
A aplicação desenvolvia é considerada de uso geral, logo o método escolhido foi a
colocação de banners de publicidade, através do serviço de publicidade Google AddMob. Com
esta opção os ganhos com aplicação ficam a dever-se aos cliques nos banners publicitários que
irão aparecer na aplicação.
53
Capítulo 4 – Testes e Resultados
CAPÍTULO 4
TESTES E RESULTADOS
Para testar todo o sistema desenvolvido fizeram-se alguns testes com a aplicação de modo
a poder retirar algumas conclusões em relação a todo o trabalho desenvolvido. Foram efetuados
alguns testes, nomeadamente no que se refere á capacidade/velocidade com que a aplicação de
backend responde a um pedido de inserção de uma base de conhecimento, ao tempo desde que o
administrador clicou para publicar uma base de conhecimento e o tempo em que os utilizadores
recebiam a notificação da nova base de conhecimento, testes ao funcionamento da máquina de
inferência, assim como testes em relação à usabilidade do sistema.
O primeiro teste a ser realizado foi o teste ao funcionamento do motor de inferência. Para
este teste foi utilizada uma base de conhecimento na área da saúde, mais precisamente sobre
diagnóstico de doenças em bebés. A base de conhecimento baseada em regras foi criada a partir
de 5 quadros de diagnóstico apresentados em [13]. Como no momento em que foram efetuados
estes testes o sistema não permitia a representação de bases de conhecimento baseado em
árvores de decisão foi utilizador o algoritmo descrito em [8] para fazer a passagem de árvores de
decisão para regras.
O teste realizado consistiu em simular 10 situações de mal-estar para um bebé e comparar
os diagnósticos obtidos utilizando os quadros de diagnóstico originais e utilizando o SP
desenvolvido. A comparação dos diagnósticos foi realizada tendo em conta dois fatores: se o
diagnóstico obtido é o correto, e a quantidade de questões realizadas para obter o diagnóstico.
A Tabela 14 apresenta os resultados obtidos.
54
Capítulo 4 – Testes e Resultados
Tabela 14 - Resultados do teste do motor de inferência
1
2
3
4
5
6
7
8
9
10
Especialista
(Q. de Diagnóstico)
Conclusão Questões
✓
2
✓
6
✓
4
✓
7
✓
7
✓
3
✓
5
✓
7
✓
5
✓
4
MyExpert
Conclusão
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
Questões
2
7
4
8
8
4
6
8
12
12
Após analisar os resultados podemos concluir que o SP encontra sempre o diagnóstico
esperado, apesar de ter que colocar mais questões (em 6 dos 10 casos), do que no caso do uso
direto dos quadros de diagnóstico. Esta diferença deve-se a que o mecanismo de encadeamento
para trás, usado pelo motor de inferência, utiliza a ordem pela qual as regras se encontram na
base de conhecimento para escolher a próxima regra a analisar.
Uma possível solução pode ser implementar um método de escolha mais eficiente,
sensível ao contexto, que dê preferência às regras que envolvam dados obtidos mais
recentemente.
O próximo teste a ser realizado foi o teste dos tempos de resposta da aplicação de
backend a pedidos de inserção de bases de conhecimento na base de dados. Para esse teste
foram inseridas 2 base de conhecimentos do tipo árvores de decisão com dimensões de 10 e 20
nós, sendo repetida a inserção de cada uma delas 5 vezes, em diferentes intervalos de tempo e
foi feito uma média dos tempos de resposta para retirar a hipótese de que a utilização da rede
poderia influencia o resultado. Para isso foi feito o depuramento mandando escrever nas
diferentes aplicações o momento no tempo em que as ações foram executadas. A Figura 20
representa o teste efetuado. Os momentos onde foram marcados os tempos são:

t1: momento em que o administrador do sistema pede para adicionar a base
de conhecimento no servidor.

t2: momento em que a aplicação de backend recebe o pedido para
adicionar a base de conhecimento na base de dados.
55
Capítulo 4 – Testes e Resultados

t3: momento em que a nova base de conhecimentos é completamente
adicionada na base de dados.

t4: momento em que todas as notificações são enviadas.

t5: momento em que a aplicação MyExpert Manager recebe a confirmação
de todo o processo de atualização.

t6: momento em que os dispositivos recebem a notificações de que existe
uma nova base de conhecimentos para fazer donwload. Como a hora dos
dispositivos não está sincronizada, estes tempos não foram considerados,
pois não era possível compará-lo. Mas pela observação efetuada podemos
concluir que o tempo que a receção da notificação era quase instantânea.
Figura 20 - Testes de velocidade de inserção base de conhecimento
56
Capítulo 4 – Testes e Resultados
A Tabela 15 e a Tabela 16 mostram os tempos medidos durante o teste efetuado. Como o
teste foi efetuado com diferentes dispositivos e os relógios destes não estavam totalmente
sincronizados não foi possível comparar todos os tempos. Assim para o tempo total da
atualização foram comparados os tempos t1 com o tempo t5, da aplicação MyExpert Manager,
enquanto que, para o tempo da atualização no servidor, foram comparados os tempos t2 e t4. Da
análise dos tempos podemos concluir que a plataforma Google App Engine tem um opima
resposta aos pedidos das aplicações clientes, podemos ainda concluir que o tempo da
atualização é quase que da inteira responsabilidade da ligação que tem que ser estabelecida da
aplicação MyExpert Manager com a respetiva aplicação de backend. Como se pode ver pelos
resultados obtidos, a diferença do número de nós na base de conhecimento não tem impacto no
tempo de atualização ou este é insignificante.
Tabela 15 - Tempos de atualização da base de conhecimento com 10 nós
Tempo
Tempo total de
atualização
Média
Tempo atualização no Tempo
servidor
Média
Exp1
24s
Exp1
9s
Exp3
10s
Exp4
10s
Exp5
10s
9s
7s
12s
0s
3s
1s
0s
Tabela 16 - Tempos de atualização da base de conhecimento com 20 nós
Tempo
Média
Tempo atualização no Tempo
servidor
Média
Tempo total de
atualização
Exp1
21s
Exp1
16s
1s
1s
Exp3
3s
12s
1s
1s
Exp4
10s
Exp5
8s
1s
2s
De seguida foi testado o tempo de espera entre o momento em que o administrador do
sistema publicava uma base de conhecimento já criada e o momento em que os dispositivos
recebiam a notificação. Para este teste foram utilizados 3 smartphones diferentes e foram
efetuadas medições com 5 notificações. Mais uma vez, neste teste como a hora dos dispositivos
não estava sincronizada, não foi feito o depuramento com a hora da atualização. Foi feita a
tentativa de medir o tempo com um cronómetro, mas por este intervalo de tempo ser tão curto o
intervalo de tempo que foi possível medir em um dos testes foi de apenas 3 segundos. Ou seja
57
Capítulo 4 – Testes e Resultados
nos testes efetuados, no máximo, o último smartphone a receber a notificação passado 3
segundos.
No que diz respeito a tempos foi ainda testado o envio de uma notificação estando os
smartphones sem qualquer ligação de dados, ou seja, estes estavam impedidos de receber as
notificações, e foi medido o tempo desde que a ligação à Internet foi estabelecida até que o
utilizador recebe a notificação. Com o uso do serviço GCM não é necessário estar a verificar
periodicamente por atualizações no servidor, com este serviço assim que existir uma ligação é
feito a troca das mensagens. Estes tempos estão representados na Tabela 17. Com os testes
efetuados concluímos que o serviço é muito eficiente, sendo quase instantâneo a troca de
mensagens assim que existe uma ligação.
Tabela 17 - Tempo desde que a ligação á internet é estabelecida até que o utilizador recebe a
notificação
disp 1
disp 2
Exp 1
Exp2
00:00:03:17 00:00:03:80
00:00:03:36 00:00:03:28
O último teste efetuado foi o teste da usabilidade da aplicação MyExpert, pois considerase que o sucesso da aplicação depende da aceitação da mesma por parte dos utilizadores finais
Para avaliar a usabilidade da aplicação foi usado o teste SUS (System Usability Scale)
baseado num questionário que os utilizadores devem responder. O teste foi desenvolvido por
John Brooke, no laboratório da Digital Equipmente Corporation no Reino Unido e permite
representar a usabilidade da aplicação numa escala de 0 a 100. O questionário é composto por
10 questões com 5 opções de resposta. Cada resposta ao questionário é assinalada numa escala
Likert, que varia entre “Discordo totalmente” e “Concordo totalmente”. Para disponibilizar o
questionário aos utilizadores foi usado o serviço Google Docs. O formulário utilizado está
presenta no Anexo B.
O resultado deste teste é obtido somando a contribuição de cada item. Para os itens
1,3,5,7 e 9 a contribuição é a posição respondida menos 1. Para os itens 2,4,6,8 e 10 a
contribuição é 5- posição respondida. Multiplicando a soma da pontuação por 2.5 obtém-se o
valor do SUS [14].
Para o presente teste foram efetuados 15 inquéritos do inquérito presente no anexo B. A
pontuação média da SUS dos testes realizados foi de 81. Tendo em conta que os valores de
referência indicados pelo autor da escala é de 68 considera-se que o sistema apresenta um bom
índice de usabilidade.
58
Capítulo 4 – Testes e Resultados
O gráfico da Figura 21 apresenta a média dos resultados para cada pergunta depois de
feita a análise das respostas. Como podemos verificar pelo gráfico a questão que obteve menor
pontuação foi a pergunta “Senti-me muito confiante com o sistema” o que pode ser explicado
pelas bases de conhecimento não transmitirem muita confiança ao utilizador.
Resultados por questão do teste SUS
10 -Necessitei de aprender muitas coisas antes de…
9 -Senti-me muito confiante com o sistema
8 - Achei o sistema muito complicado de utilizar
7 - Muitas pessoas poderiam utilizar rapidamente
6 - Existem muitas inconsistências no sistema
5 - As diversas funções deste sistema foram bem…
4 - Preciso e ajuda para utilizar o sistema
3 - O sistema é fácil de usar
2 - O sistema é desnecessariamente complexo
1 - Eu gostaria de utilizar este sistema com…
0
10
20
30
40
50
60
70
80
90 100
Figura 21 - Média SUS dos resultados para cada questão
Segundo referido no artigo [15] através do modelo SUS é possível avaliar os seguintes
aspetos nas perguntas do questionário:

Facilidade de Aprendizagem: questões 3, 4, 7 e 10;

Eficiência: 5, 6 e 8;

Facilidade de memorização: 2;

Minimização dos erros: 6;

Satisfação: 1, 4, 9.
Aplicando este cálculo para os resultados obtidos obtemos o seguinte gráfico.
59
Capítulo 4 – Testes e Resultados
Análise da Usabilidade do Sistema
Satisfação
Minimização dos erros
Facilidade de memorização
Eficiência
Facilidade de Aprendizagem
0
10
20
30
40
50
60
70
80
90
100
Figura 22 - Análise das características de usabilidade da norma 9126
Pela análise do gráfico anterior podemos concluir que o sistema apresenta boas
características de usabilidade, existindo alguns pontos como é a questão da satisfação que
poderá ser melhorada.
60
Capítulo 5 – Conclusão
CAPÍTULO 5
CONCLUSÕES
Neste trabalho foi feito o desenvolvimento de um sistema pericial para dispositivos
móveis com base em Computação na Nuvem Google App Engine, o que permite colocar ao
alcance de um utilizador comum diferentes bases de conhecimento de diferentes áreas. O
sistema foi implementado com base em Computação na Nuvem para facilitar o desenvolvimento
do sistema e a criação e distribuição de diferentes bases de conhecimento.
Os objetivos propostos foram alcançados e o sistema encontra-se em funcionamento
estando acessível ao público em geral através da aplicação MyExpert disponível na loja de
aplicações da plataforma Android.
O trabalho desenvolvido foi apresentado recentemente na conferência CISTI 2014 - 9ª
Conferência Ibérica de Sistemas e Tecnologias de Informação que teve lugar em Barcelona,
Espanha. O artigo apresentado na conferência encontra-se no Anexo A.
Pelos resultados dos testes efetuados, a arquitetura desenvolvida para o sistema revelouse bastante eficiente. Os tempos medidos no processo de atualização de uma base de
conhecimentos consideram-se bastante satisfatórios.
A nível de usabilidade da aplicação MyExpert, nos testes efetuados podemos considerar
que a aplicação tem um bom nível de usabilidade, no entanto existem alguns pontos que
poderão ser melhorados como o resultado das respostas à questão 1 do teste SUS, “Eu gostaria
de utilizar este sistema com frequência”. Para melhorar o resultado obtido a esta questão será
necessário disponibilizar mais bases de conhecimento de mais áreas para deste modo aumentar
o interesse pela aplicação. Outra questão cujo resultado poderia ser melhorado é a questão 9
“Senti-me muito confiante com o sistema”, melhorando a qualidade das bases de conhecimento.
61
Capítulo 5 – Conclusão
Como trabalho futuro aponta-se a criação de mais bases de conhecimento de diferentes
áreas, o que poderá implicar a necessidade de alterar o modelo de negócio para uma versão
paga, com acesso a mais bases de conhecimento. A disponibilização de bases de conhecimento
em diferentes línguas também pode ser uma funcionalidade interessante a implementar.
Outro trabalho futuro que se aponta, que poderá aumentar a adesão á utilização do
sistema, é a disponibilização para o utilizador final de uma ferramenta para criação de bases de
conhecimento e permitir que estes contribuam para o crescimento do número de bases de
conhecimento disponíveis.
62
Referências bibliográficas
REFERÊNCIAS
BIBLIOGRÁFICAS
[1] S. Russell e P. Norvig, Artificial Intelligence: A Modern Approach, 3rd edition,
Prentice Hall, 2009.
[2] F. Hayes-Roth, D. Waterman e D. B. Lenat, Building Expert Systems, AddisonWesley, 1983.
[3] R. I. Levine, D. E. Drang e B. Edelson, Inteligência Artificial e Sistemas
Especialistas, São Paulo: McGraw-Hill, 1988.
[4] R. I. Levine, D. E. Drang e B. Edelson, Inteligência Artificial e Sistemas
Especialistas.
[5] Android, “Android Security Overview,” [Online]. Available:
https://source.android.com/devices/tech/security/. [Acedido em 16 Julho 2014].
[6] N. Khan, A. Noraziah e E. I. Ismail, “Cloud Computing: Analysis of Various
Platforms”.
[7] Google Developers, “Google Cloud SQL - Admin and Reporting Tools,” [Online].
Available: https://developers.google.com/cloud-sql/docs/admin-tools. [Acedido em
16 Julho 2014].
[8] Associação Paulista de Medicina, Guia Médico da Família, Nova Cultura.
[9] J. Brooke, “SUS - A quick and dirty usability scale,” 1986.
[10] R. M. Boucinha e L. M. Tarouco, “Avaliação de Ambiente Virtual de
Aprendizagem com o uso do”.
[11] R. Kurzweil, The Age of Intelligent Machines, The MIT Press, 1990.
[12] R. J. Schalkoff, Artificial Intelligence: An Engineering Approach, New York:
McGraw-Hill, 1990.
[13] G. F. Luger , Artificial Intelligence : Structures and Strategies for Complex
Problem Solving, Addison-Wesley, 2008.
[14] A. Barr e E. A. Feigenbaum, The Handbook of Artificial Intelligence, Heuristech
Press, 1981.
[15] Open Handset Alliance, “Open Handset Alliance - Alliance Announcements,”
[Online]. Available: http://www.openhandsetalliance.com/press_releases.html.
[Acedido em 15 Julho 2014].
[16] Android, “Android Devoper,” [Online]. Available:
https://developer.android.com/about/index.html. [Acedido em 15 Julho 2014].
[17] Android, “Android SDK - Download,” [Online]. Available:
63
Referências bibliográficas
http://developer.android.com/sdk/index.html. [Acedido em 15 Julho 2014].
[18] Google Developers, “Google Plugin for Eclipse,” [Online]. Available:
https://developers.google.com/eclipse/docs/download. [Acedido em 16 Julho
2014].
64
Anexos
ANEXOS
Anexo A - Artigo publicado na conferência CISTI2014
Um Sistema Pericial para Dispositivos
Móveis com Base em Computação na
Nuvem
An Expert System for mobile devices based
on cloud computing
Carlos Carreto, Mário Baltazar
Unidade de Investigação para o Desenvolvimento do Interior
Instituto Politécnico da Guarda
Guarda, Portugal
[email protected], [email protected]
Resumo — Este trabalho descreve a implementação
de um Sistema Pericial para dispositivos móveis
Android, dirigido ao utilizador comum e com a
capacidade de usar diferentes bases de
conhecimento, selecionáveis pelo utilizador. O
sistema usa uma arquitetura com base em
computação na nuvem para facilitar a criação e
distribuição de diferentes bases de conhecimento.
Palavras chave - Sistema Percicial; Android;
Computação na Nuvem
Abstract — This paper describes the implementation
of an Expert System for Android mobile devices,
directed to the common user and the ability to use
different knowledge bases, selectable by the user.
The system uses a cloud computing-based
architecture to facilitate the creation and
distribution of different knowledge bases.
Keywords-Expert System; Android; Cloud
computing;
I.
INTRODUÇÃO
Um Sistemas Pericial (SP) é um sistema
computacional que procura simular processos de
raciocínio e decisão de um perito humano. Estes
sistemas são utilizados nas mais diversas áreas,
embora seja na engenharia, na medicina e no
mercado financeiro, onde se encontram mais
exemplos.
Um SP típico é constituído por uma interface
com o utilizador, através da qual são colocadas
questões e obtidas respostas; uma base de
conhecimento que contém a representação do
conhecimento sobre determinada área; e uma
máquina de inferências, capaz de analisar a base
de conhecimento e juntamente com as questões e
as respostas, obter conclusões. [1]
A representação do conhecimento pode ser
realizada através de diferentes métodos, como
por exemplo, regras de sistemas de produção,
redes semânticas ou árvores de decisão [2]. O
conhecimento deve ser suficiente para simular o
65
Anexos
processo de decisão do perito humano e estar
organizado de forma a facilitar a sua utilização
para consulta e resolução de problemas por parte
de um utilizador não perito. A base de
conhecimento é normalmente gerada a partir de
um módulo de aquisição de conhecimento [3].
A máquina de inferência é implementada
com base no método escolhido para representar
o conhecimento, permitindo que a mesma
máquina de inferência possa processar diferentes
bases de conhecimento desde que usem o
mesmo método de representação.
A proliferação e evolução de dispositivos
móveis tipo smartphone e tablet, faz destes
dispositivos plataformas muito interessantes para
a implementação de um SP, dando a
oportunidade de massificar a utilização destes
sistemas por parte do utilizador comum que
passará a ter acesso a bases de conhecimento que
poderá usar na resolução de problemas e tomada
de decisão em atividades do dia-a-dia. Este
trabalho é motivado por essa oportunidade e
descreve a implementação de um SP para a
plataforma Android, dirigido ao utilizador
comum e com a capacidade de usar diferentes
bases de conhecimento, selecionáveis pelo
utilizador. O sistema é implementado com base
em computação na nuvem, para facilitar o
desenvolvimento do sistema, especialmente no
que se refere à criação e distribuição de
diferentes bases de conhecimento.
Ao contrário de outros SP para dispositivos
móveis que são desenvolvidos com o intuito de
usarem uma única base de conhecimento, o
sistema proposto permite que seja o utilizador
final a escolher, dentro das bases de
conhecimento disponíveis, as que pretende
descarregar e usar no SP instalado no seu
dispositivo móvel.
O resto do artigo está organizado como se
descreve a seguir. Na secção II são descritos
alguns SP conhecidos para dispositivos móveis e
as suas principais diferenças em relação ao
sistema desenvolvido. Na secção III é
apresentada
a
arquitetura
do
sistema
desenvolvido com enfase na plataforma de
computação na nuvem que foi utilizada. A
secção IV descreve os principais componentes
do SP implementado. A secção V apresenta
alguns testes e resultados e a secção VI termina
o artigo com as conclusões.
II.
TRABALHO RELACIONADO
Existem atualmente vários SP desenvolvidos
para smartphones. Descrevem-se a seguir alguns
deles semelhantes ao sistema proposto.
O Nutriton UCR [4] é um SP para
monitorizar e gerir a dieta nutricional de um
indivíduo. Obtém as características físicas
indicadas pelo utilizador e avalia o estado
nutricional deste, apresentando recomendações
para este alcançar os requisitos nutricionais de
uma dieta equilibrada.
O sistema usa uma arquitetura baseada em
serviços formada por uma aplicação cliente e
uma aplicação servidor. A aplicação cliente foi
desenvolvida para a plataforma Android e é
através dela que o utilizador envia as suas
características físicas para a aplicação servidor
onde se encontra o SP. Este foi implementado na
linguagem Java com recurso à biblioteca JESS
(JAVA Shell Expert System) [5].
O sistema contém uma única base de
conhecimento representada por um script em
regras JESS que é armazenada num ficheiro
separado da aplicação para permitir a sua
atualização independente do código da
aplicação.
A aplicação Expert Advisor [6] é outra
aplicação para a plataforma Android que
implementa um SP que permite usar bases de
conhecimento (baseadas em árvores de decisão),
criadas com a aplicação XpertRule’s Knowledge
Builder e localizadas no servidor da empresa
proprietária do sistema. Nesta aplicação a
máquina de inferência está localizada na
aplicação cliente e as bases de conhecimento
podem ser descarregadas do servidor da empresa
ficando armazenadas na aplicação cliente.
O Expertide2Go [7] é um SP que inclui uma
ferramenta de criação de bases de conhecimento
baseada em regras. A criação de bases de
conhecimento para este sistema é feita através de
uma applet disponibilizada para o efeito. Neste
sistema, apesar da máquina de inferência estar
localizada na aplicação móvel, é necessário uma
ligação de dados pois não é possível guardar as
bases de conhecimento na aplicação móvel. O
sistema está implementado numa aplicação para
a plataforma Android, a qual permite seleccionar
uma base de conhecimento que deve estar
acessível através de um endereço web. Nesta
aplicação as bases de conhecimento são
guardadas num ficheiro de texto na forma de
regras.
O SESMED [8] é um SP para apoio a
paramédico. O sistema foi desenvolvido com
base na plataforma J2ME numa arquitetura
cliente-servidor usada para a aplicação do
dispositivo móvel comunicar com um servidor
onde está a máquina de inferência. O utilizador
usa a aplicação cliente para enviar os dados dos
pacientes para o SP, o qual retorna o diagnóstico
66
Anexos
com base na base de conhecimento. Para
representar o conhecimento o sistema utiliza
linguagem Frame Logic e a base de
conhecimento está armazenada numa base de
dados relacional Oracle.
funções previamente programadas no backend
da plataforma. Para além disso, proporciona
recursos para a implementação de infraestruturas
críticas como é o caso da autenticação,
reduzindo assim o esforço de desenvolvimento.
Os SP descritos apresentam uma arquitetura
baseada em serviços, onde uma aplicação cliente
necessita de estar ligada a uma aplicação
servidor, em alguns casos para enviar dados e
receber a resposta do SP e noutros para aceder a
bases de conhecimento. Esta arquitetura tem o
grande inconveniente de ser necessário haver
uma ligação de dados permanente, entre o
cliente e o servidor para se poder usar o sistema.
A utilização da plataforma de computação na
nuvem diminui significativamente o trabalho
administrativo do sistema, como é o caso do
balanceamento de carga, escalonamento e
manutenção do servidor, pois todos esses
serviços e recursos já estão implementados na
plataforma Google App Engine.
A figura 1 apresenta uma visão geral da
arquitetura do sistema proposto.
O sistema proposto também usa uma
arquitetura baseada em serviços, mas com a
diferença de não ser necessária uma ligação de
dados permanente entre a aplicação cliente e a
aplicação servidor, pois o SP está implementado
na aplicação móvel e a ligação ao servidor é feita
pontualmente apenas para atualizar ou
descarregar novas bases de conhecimento.
Outra característica importante do sistema
proposto é que permite a seleção de bases de
conhecimento de diferentes áreas, enquanto que
a maioria dos sistemas analisados usam uma
única base de conhecimentos de uma área
específica.
III.
ARQUITECTURA DO SISTEMA
O SP proposto foi implementado para a
plataforma Android através de uma arquitetura
baseado em serviços, utilizando a infraestrutura
de computação na nuvem Google App Engine
[9]. Esta infraestrutura do tipo PaaS (Platform as
a Service) [10], proporciona uma plataforma e
um conjunto de recursos que facilitam
significativamente o desenvolvimento do
sistema, nomeadamente no que se refere à
implementação e manutenção do servidor, assim
como ao processo de comunicação entre a
aplicação cliente e o servidor. Para além disso,
proporcionam um modelo de negócio
potencialmente mais económico e escalável do
que outras soluções comuns como as baseadas
em Web Services, por exemplo.
Um elemento essencial no uso da plataforma
Google App Engine é o Google Cloud Endpoints
[11] que disponibiliza ferramentas, bibliotecas e
recursos que permitem gerar APIs e bibliotecas
cliente, com o intuito de simplificar o acesso aos
dados de outras aplicações.
O Google Cloud Endpoints permite que do
ponto de vista de desenvolvimento, a ligação
cliente-servidor seja quase transparente, não
sendo necessário fazer qualquer gestão da
ligação, bastando apenas fazer chamadas de
Figura 23. Arquitetura do Sistema
A arquitetura pode ser dividida em três
componentes principais: a aplicação MyExpert
Manager para a plataforma Android, a qual
permite a criação e gestão de bases de
conhecimento; a aplicação MyExpert, também
para a plataforma Android (aplicação para o
utilizador final onde está implementada a
máquina de inferência do SP); e a coleção de
bases de conhecimento do sistema, armazenadas
na Google Cloud SQL [12] que é a infraestrutura
de base de dados relacional usada na plataforma
Google App Engine.
O acesso à base de dados Google Cloud SQL
é realizado através do Mobile Backend do
sistema, formado por duas aplicações
desenvolvidas para o efeito e com as quais as
aplicações MyExpert e MyExpert comunicam
através de Cloud Endpoints.
A motivação para o Mobile Backend do
sistema ser formado por duas aplicações
67
Anexos
distintas prende-se com aspetos de segurança.
Para garantir a segurança nas aplicações de
backend, é apenas dado o acesso à aplicação
correspondente, permissão essa que é definida na
configuração da plataforma, onde são
especificadas as definições das aplicações
backend. Para isso é gerado um Client ID OAuth
2.0 [10], gerado a partir do nome do package e
do certificado de assinatura digital da aplicação
cliente. Esse ID é inserido na aplicação cliente
para que se possa autenticar na correspondente
aplicação do Mobile Backend. Outro mecanismo
extra de segurança, utilizado apenas na aplicação
do Mobile Backend com a qual a aplicação
MyExpert Manager comunica, foi a de associar a
permissão de execução de funções a uma conta
Google. Assim, o utilizador da aplicação
MyExpert Manager terá que fazer primeiro o
login na conta para poder aceder à base de dados
da plataforma.
A figura 2 apresenta os dois tipos de atores
intervenientes no sistema e os respetivos casos
de uso. Os atores são o utilizador final e o gestor
do sistema. O End User (utilizador final) é a
pessoa que vai selecionar e descarregar bases de
conhecimento, verificar se existem atualizações
de bases de conhecimento já descarregadas e
usar essas mesmas bases de conhecimento no SP
da aplicação. O System Manager (gestor do
sistema) é a pessoa responsável pela criação das
bases de conhecimento, atualizar as mesmas e
publicá-las, deixando-as disponíveis para o
utilizador final as poder descarregar.
implementa o
conhecimento.
módulo
de
aquisição
de
 A. Aplicação MyExpert
A aplicação MyExpert é constituída pelos
módulos mostrados na figura 3.
Figura 25. Módulos da aplicação MyExpert
Segue-se uma descrição de cada um dos
módulos.
O módulo Cloud Endpoints refere-se à parte
do sistema que comunica com a respetiva
aplicação no Mobile Backend. Este módulo faz a
gestão da ligação e consiste num conjunto de
bibliotecas de funções, com o intuito de
simplificar o acesso aos dados de outras
aplicações.
O módulo Knowledge Base representa as
bases de conhecimento descarregadas do
servidor e armazenadas na aplicação. As bases
de conhecimento são armazenadas numa base de
dados SQLite. Estas bases de conhecimento são
transferidas da Google Could SQL onde estão
armazenadas numa base de dados MySQL. As
bases de dados têm a mesma estrutura, pelo que
a transferência destas é realizada de forma
transparente recorrendo aos recursos de Cloud
Endpoints.
Uma base de conhecimentos é formada por
um conjunto de regras com o seguinte formato
Figura 24. Atores do Sistema e respetivos casos de uso
IV.
SISTEMA PERICIAL
O SP foi implementado com base na
aplicação MyExpert e na aplicação MyExpert
Manager, apresentadas na secção anterior.
Enquanto a primeira permite ao utilizador
selecionar a base de conhecimentos a usar e
implementa a máquina de inferência, assim
como o módulo de explicação do SP, a segunda
SE Ci OpB Ci+1 OpB Ci+2 …
ENTÃO Conclusão
Onde:
Ci = Condição i (do tipo Vi OpR Valor)
Vi = Variável i
OpR = Operador Relacional (<, ≤, =, ≠, >, ≥)
OpB = Operador Booleano (E e OU)
A parte “SE” da regra é constituída por
cláusulas. Estas cláusulas são condições que
juntas formarão uma decisão que leva a uma
68
Anexos
conclusão. Cada cláusula pode ser formada por
várias condições, condições estas que estão
ligadas por operadores booleanos. Cada
condição é formada por uma variável, um
operador relacional e um valor.
A parte “ENTÃO” da regra constitui a
conclusão a que se chega se a combinação das
condições for verdadeira.
A figura 4 mostra o diagrama de EntidadeRelacionamento
correspondente
ao
armazenamento das bases de conhecimento.
Figura 26. Diagrama Entidade-Relacionamento das bases de
conhecimento
recorrendo aos dados recolhidos até ao
momento, e repete o processo até que uma
conclusão seja confirmada ou até não haver mais
conclusões possíveis.
O módulo Explanation gera a linha de
raciocínio seguida pela máquina de inferência
para chegar à conclusão. Caso o utilizador o
solicite, a linha de raciocínio é apresentada na
interface.
O módulo User Interface é responsável pela
interação entre o utilizador e a máquina de
inferência, com base em perguntas e respostas. O
módulo também permite ao utilizador interagir
com a plataforma de computação na nuvem para
atualizar e descarregar novas bases de
conhecimento. Permite ainda visualizar as
explicações geradas pelo módulo de explicação.
A figura 5 apresenta dois ecrãs
exemplificativos da interação entre o utilizador e
a máquina de inferência. O ecrã da esquerda
corresponde a uma questão colocada ao
utilizador à qual deve responder com Sim ou
Não, para continuar o processo de inferência. O
ecrã da direita mostra a apresentação da
conclusão obtida pela máquina de inferência.
Algumas conclusões poderão ter associada
informação extra a que o utilizador pode aceder
clicando no botão correspondente.
Este diagrama é igualmente válido para a
base de dados da aplicação móvel. Como se
pode ver no diagrama, para cada base de
conhecimento é guardada, além de um nome e
de uma imagem, a variável de conclusão da base
de conhecimento. Cada regra (armazenada na
entidade Rules) tem várias cláusulas (entidade
ClausesRules) e cada cláusula tem uma variável.
Existem ainda as entidades Area e Category que
permitem separar as bases de conhecimento por
diferentes áreas e categorias, o que permite aos
utilizadores finais localizarem mais facilmente
as bases de conhecimento do seu interesse.
O módulo Inference Engine é responsável
pelo processamento da base de conhecimentos
recorrendo a raciocínio e planeamento lógico.
Existem dois mecanismos possíveis para
implementar uma máquina de inferência, o
encadeamento para frente e o encadeamento para
trás (sendo também possível combinar os dois).
Neste caso foi implementado o mecanismo de
encadeamento para trás com base no algoritmo
básico descrito em [3]. O mecanismo consiste
em começar por escolher hipoteticamente uma
conclusão para o raciocínio e a partir daí solicitar
mais informações ao utilizador para verificar se
as cláusulas que levam a essa conclusão se
verificam ou não, de modo a poder confirmar a
conclusão. Se a hipótese não se confirmar, a
máquina de inferência escolhe nova conclusão,
69
Anexos
O módulo Update é o módulo responsável pelo
armazenamento das bases de conhecimento na
Google Cloud SQL. Tal como no caso a
aplicação MyExpert, também aqui se usam os
recursos Cloud Endpoints para a comunicação
com a respetiva aplicação no backend do
sistema.
Figura 28. Módulos da aplicação MyExpert Manager
A aplicação foi também desenvolvida para a
plataforma Android, mas foi otimizada para
ecrãs com dimensão de 10”.
Figura 27. Ecrãs exemplificativos da interação com a
máquina de inferência
O módulo Update é responsável pelo
processo de atualizações das bases de
conhecimento. Este módulo recebe notificações
por parte da aplicação de backend, com a
informação das bases de conhecimento que têm
actualizações disponíveis e, caso a aplicação
MyExpert possua essa base de conhecimento
armazenada, notifica o utilizador que pode
proceder à atualização. É também através deste
módulo que podem ser selecionadas e
descarregadas novas bases de conhecimento
entretanto criadas e armazenadas na plataforma
do sistema.
B. Aplicação MyExpert Manager
A figura 6 apresenta os 3 módulos que forma
a aplicação MyExpert Manager.
O módulo User Interface é responsável pela
interação entre o utilizador e o módulo
Knowledge Acquisiton que é responsável pela
criação e atualização das bases de conhecimento.
A figura 7 mostra um ecrã da aplicação que
ilustra o processo de criação das regras de uma
base de conhecimento. Do lado esquerdo
podem-se ver as regras já criadas e do lado
direito os dados inseridos para criar a próxima
regra.
Figura 29. Ecrã exemplificativo da criação das regras de
uma base de conhecimento
V.
TESTES E RESULTADOS
Os testes realizados até ao momento
testaram a comunicação e interoperabilidade
entre os diferentes componentes da arquitetura
implementada, tendo-se obtido resultados muito
satisfatórios. A comunicação entre as aplicações
cliente e o backend do sistema demostrou ser
rápida e estável, não tendo sido detetado
qualquer problema. No que diz respeito ao
serviço de notificações sobre as atualizações de
bases de conhecimento disponíveis, considera-se
70
Anexos
a performance do sistema excelente, tendo em
conta que nos testes realizados, a notificação é
no geral instantânea. Os testes foram realizados
através de uma rede académica Wi-Fi Eduroam
com acesso à Internet.
Foi também testado o funcionamento da
máquina de inferência. Para isso foi criada uma
base de conhecimento para reconhecer situações
de emergência médica em bebés. A base de
conhecimento baseada em regras foi criada a
partir de 5 quadros de diagnóstico, apresentados
no livro “Guia Médico da Família” [13]. A
transformação dos quadros de diagnóstico em
regras foi realizada com base no algoritmo
descrito em [3].
O teste realizado consistiu em simular 10
situações de emergência e comparar os
diagnósticos obtidos utilizando os quadros de
diagnóstico originais e utilizando o SP
desenvolvido. A comparação dos diagnósticos
foi realizada tendo em conta dois fatores: se o
diagnóstico obtido é o correto, e a quantidade de
questões que tiveram que ser respondidas para
obter o diagnóstico. A tabela 1 apresenta os
resultados obtidos.
TABELA 18. RESULTADOS OBTIDOS
Especialista
(Q. de Diagnóstico)
Conclusã
Questõe
o
s
1
2
3
4
5
6
7
8
9
10
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
2
6
4
7
7
3
5
7
5
4
MyExpert
Conclusão
Questõe
s
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
2
7
4
8
8
4
6
8
12
12
A máquina de inferência encontrou sempre o
diagnóstico esperado, apesar de ter que colocar
mais questões (em 8 das 10 situações), do que no
caso do uso direto dos quadros de diagnóstico.
Esta diferença deve-se a que os quadros de
diagnóstico têm uma estrutura em árvore binária
que os torna mais eficientes na escolha das
questões a colocar. Por sua vez, o algoritmo de
conversão dos quadros em regras, simplesmente
cria uma regra para cada nó folha e a máquina de
inferência escolhe as regras na ordem pela qual
se encontram na base de conhecimento, levando
a que possam ser colocadas questões de outras
conclusões que são testadas em primeiro lugar.
Um algoritmo de conversão mais eficiente com
base em conclusões intermédias poderá melhorar
a performance da máquina de inferência.
VI.
CONCLUSÃO
O sistema implementado permite colocar ao
alcance de um utilizador comum, um SP para a
plataforma Android, fácil de usar e com a
capacidade de selecionar diferentes bases de
conhecimento das áreas de interesse de cada
utilizador. O sistema foi implementado com base
em computação na nuvem para facilitar o
desenvolvimento do sistema e a criação e
distribuição
de
diferentes
bases
de
conhecimento.
A arquitetura do sistema baseada na
plataforma Google App Engine mostrou-se
adequada tanto a nível do processo de
desenvolvimento como ao nível de utilização e
administração do sistema. A plataforma é rica
em recursos, fácil de utilizar e tem uma
performance muito satisfatória.
Como trabalho futuro aponta-se a
possibilidade de melhor a máquina de inferência
e adicionar a possibilidade de criar bases de
conhecimento baseado em árvores de decisão,
pois muitas bases de conhecimento que poderão
ser úteis para o utilizador comum encontram-se
estruturadas nesta forma, como por exemplo,
quadros de diagnóstico médico, manuais de
reparação de avarias, quadros de classificação de
espécimes, entre outros.

AGRADECIMENTOS
Publicação apoiada pelo projeto PEstOE/EGE/UI4056/2014 UDI/IPG, financiado
pela Fundação para a Ciência e Tecnologia.

REFERÊNCIAS
[1]
S. Russel and P. Norvig, Artificial
Intelligence: A Modern Approach, 3th
edition. Prentice Hall, 2009.
[2]
F. Hayes-Roth and D. B. Lenat,
Building Expert Systems. AddisonWesley, 1983.
[3]
R. I. Levine, D. E. Drang, and B.
Edelson, Inteligência Artificial e
Sistemas Especialistas. São Paulo:
McGraw-Hill, 1988.
[4]
C. Quesada and M. Jenkins, “A
Prototype Mobile Expert System for
71
Anexos
Nutritional Diagnosis,” no. Academy
2012, pp. 118–123, 2013.
[5]
“Rule Engine for the Java Platform.”
[Online]. Available:
http://herzberg.ca.sandia.gov/.
[6]
“xpertrule.” [Online]. Available:
http://www.xpertrule.com/.
[7]
“expertise2go.” [Online]. Available:
http://expertise2go.com/.
[8]
S. J. Vidaletti and S. R. Silveira,
“SESMED ( Smart Emergency Medical
System ) - Sistema Especialista para
Apoio a Paramédicos.”
[9]
“Google App Engine.” [Online].
Available:
https://developers.google.com/appengin
e/docs/whatisgoogleappengine.
[10]
M. Armbrust, A. Fox, R. Griffith, A. D.
Joseph, R. Katz, A. Konwinski, G. Lee,
D. Patterson, A. Rabkin, I. Stoica, and
M. Zaharia, “A view of cloud
computing,” Communications of the
ACM, New York, pp. 50–58, 2010.
[11]
“Overview of Google Cloud
Endpoints,” 2013. [Online]. Available:
https://developers.google.com/appengin
e/docs/java/endpoints/.
[12]
“Google Cloud SQL: Relational
Databases in Google’s Cloud.”
[Online]. Available:
https://developers.google.com/cloudsql/.
[13]
Associação Paulista de Medicina, Guia
Médico Da Familia. São Paulo: Editora
Nova Cultura, 1994.
72
Anexos
Anexo B - Formulário para aplicação do questionário SUS
My Expert - System Usability Scale
Este formulário destina-se a avaliar a usabilidade da aplicação MyExpert, aplicação desenvolvida para
obtenção do grau de Mestre em Computação Móvel da Escola Superior de Tecnologia e Gestão, do
Instituto Politécnico da Guarda.
*Obrigatório
1 -Eu gostaria de utilizar este sistema com frequência *
1
2
3
4
5
Discordo Totalmente
Concordo Totalmente
2 -O sistema é desnecessariamente complexo *
1
2
3
4
5
Discordo Totalmente
Concordo Totalmente
3 - O sistema é fácil de utilizar *
1
2
3
4
5
Discordo Totalmente
Concordo Totalmente
4 - Preciso de ajuda para utilizar o sistema *
1
2
3
4
5
Discordo Totalmente
Concordo Totalmente
5- As diversas funções deste sistema foram bem integradas *
1
2
3
4
5
Discordo Totalmente
Concordo Totalmente
6 - Existem muitas inconsistências no sistema *
1
2
3
4
5
Discordo Totalmente
Concordo Totalmente
7- Muitas pessoas poderiam utilizar o sistema rapidamente *
1
2
3
4
Discordo Totalmente
5
Concordo Totalmente
8 - Achei o sistema muito complicado de utilizar *
73
Anexos
1
2
3
4
5
Discordo Totalmente
Concordo Totalmente
9 - Senti-me muito confiante com o sistema *
1
2
3
4
5
Discordo Totalmente
Concordo Totalmente
10 - Necessitei de aprender muitas coisas antes de poder utilizador o sistema *
1
Discordo Totalmente
2
3
4
5
Concordo Totalmente
Enviar
Nunca envie palavras-passe através dos Formulários do Google.
Tecnologia do Documentos do Google
74
Anexos
Anexo C - Funcionamento da aplicação MyExpert
Para aceder a este módulo é necessário login com uma conta de email do Gmail, tal como
pode ser visto na Figura 30 e apenas é permitido o acesso ás contas de email configuradas na
aplicação de backend, pois é nesta que o login é confirmado.
Figura 19
30 - Login na aplicação MyExper Manager
Após fazer login o administrador tem acesso a um ecrã onde poderá visualizar todas as
bases de conhecimento, como se pode ver na Figura 31.
Figura 31 - Home da aplicação MyExpert Manager
75
Anexos
Para o administrador adicionar uma nova Base de conhecimento este terá que clicar no
botão que está no canto inferior esquerdo, e de seguida indicar qual o tipo de Base de
Conhecimento que pretende adicionar (Figura 32).
Figura 32 - Escolha do tipo de Base de Conhecimento a adicionar
Para o caso de se escolher adicionar uma base de conhecimento baseada em regras a
primeira tarefa é indicar qual o nome da base de conhecimento e de seguida escolher qual a
subcategoria a que irá pertencer a nova base de conhecimento (Figura 33).
76
Anexos
Figura 33 - Adicionar informação da Base de conhecimento
O próximo passo será criar as regras que irão constituir a base de conhecimentos. Para
isso é necessário escrever as regras no lado esquerdo do ecrã e clicar em adicionar (Figura 34).
Figura 35- Adicionar informação da nova Base de Conhecimento
Figura 34 - Criação de regras de uma Base de Conhecimentos
77
Anexos
Cada da regra tem que ter o formato exemplificado na imagem, assim como a conclusão:
VARIAVEL = CONDIÇÃO AND/OR VARIAVEL = CONDIÇÃO …..
Após adicionar uma regra esta passa para o lado esquerdo do ecrã ficando no formato em
que foi introduzida.
No final de introduzidas todas as regras é necessário passar para o separador regras
(Figura 36), atualizar a lista das regras e para cada regra indicar qual a pergunta que será
necessário fazer ao utilizador para poder instanciar a variável e a imagem ilustrativa da
pergunta. Além disso será necessário indicar qual é a variável de conclusão.
Figura 36 -Descrição das variáveis das bases de conhecimento
No caso de o administrador querer adicionar uma base de conhecimento baseada em
árvores de decisão, o primeiro passo é igual ao anterior, ou seja é necessário indicar qual o
nome, imagem e subcategoria da base de conhecimento.
78
Anexos
No passo seguinte é onde vamos adicionar os nós que constituem a base de
conhecimento. Para cada nó é necessário indicar qual o número do nó, pergunta a fazer ao
utilizador, imagem, e indicar se o nó é um nó Raiz ou um nó folha, tal como pode ser visto na
Figura 37.
Figura 37 - Criação dos nós que compõem uma base de conhecimentos
No final de criada a base de conhecimento apenas é necessário clicar no botão que está no
cando superior direito e, através da aplicação de backend, a base de conhecimento será adiciona
na base de dados alojada na Google Cloud SQL.
79
Anexos
Anexo D - Funcionamento da aplicação MyExpert
Manager
A Figura 38 representa o primeiro ecrã da aplicação. A primeira opção é onde podemos
consultar as bases de conhecimento disponíveis e aquelas que já se fez download. Em definições
é onde podemos definir se queremos receber notificações de novas bases de conhecimento e se
as atualizações são feitas de forma automática ou manual. Na opção aviso é onde é alertado o
utilizador para a não responsabilização pelos resultados das conclusões das bases de
conhecimento.
Figura 38 - Ecrã inicial da aplicação
Clicando na opção “Bases de Conhecimento” o ecrã seguinte lista ao utilizador as
diferentes áreas que têm bases de conhecimento (Figura 39 a)). Escolhendo uma área é listado
as Categorias (Figura 39 b)). É aqui que é possível fazer o download das categorias que o
utilizador desejar utilizar, como é mostrado na Figura 39 c).
80
Anexos
Figura 39 - a) Lista de áreas de Bases de conhecimento b) Lista de Caterogias de Bases de
Conhecimento c) Download de uma Categoria
Para as Categorias que é feito o download é possível ver as Subcategorias (Figura 40 a)),
e escolhendo uma subcategoria é possível ver as Bases de conhecimento (Figura 40 b)).
Figura 40 - a) Subcategorias de Bases de Conhecimento b) Bases de Conhecimento
81
Anexos
Nas figuras seguintes são apresentados dois ecrãs exemplificativos da interação entre o
utilizador e a máquina de inferência. A Figura 41 a) corresponde a uma questão colocada ao
utilizador à qual deve responder com Sim ou Não, para continuar o processo de inferência. A
Figura 41 b) mostra a apresentação da conclusão obtida pela máquina de inferência. Algumas
conclusões poderão ter associada informação extra a que o utilizador pode aceder clicando no
botão correspondente.
Figura 41 – a) Exemplo de uma questão colocada ao utilizador b)Exemplo de uma conclusão
encontrada
82
Download

Ver/Abrir