Escolar Documentos
Profissional Documentos
Cultura Documentos
i=1
p(x
i
) = 1
Esta funo denominada funo de probabilidade da varivel aleatria X.
Lei da probabilidade total. Sendo A e B dois eventos, sabe-se que a interseo de A com
o espao amostral S igual a A e que a interseo de B com seu complemento B
C
o
conjunto vazio, ou seja,
A = AS e BB
C
= S
substituindo a segunda equao na primeira e aplicando-se o Teorema de de Morgan,
encontra-se
A = A(BB
C
) = (AB) (AB
C
)
No entanto, os eventos AB e AB
C
so mutuamente exclusivos e isto pode ser
vericado atravs dos diagramas de Venn para dois conjuntos A e B. Desta forma, pode-se
utilizar o axioma A3 das probabilidades para encontrar
P(A) = P(AB) +P(AB
C
)
Esta equao alm de facilitar os clculos de probabilidade em muitas situaes
pode ainda ser utilizada para qualquer partio de eventos que sejam mutuamente exclu-
sivos. Neste caso, sendo dados n eventos mutuamente exclusivos, B
i
, i = 1, 2, , n de
um espao amostral S e um evento qualquer A, a equao generalizada dada por
P(A) =
n
i=1
P(AB
i
), n 1
que conhecida como a lei da probabilidade total. Esta equao normalmente apresen-
tada sob a forma de probabilidades condicionais, ou seja,
P(A) =
n
i=1
P(AB
i
) =
n
i=1
P(A | B
i
)P(B
i
)
36
Distribuio das probabilidades. Uma distribuio de probabilidades um modelo
matemtico que relaciona o valor da varivel aleatria com a probabilidade de ocorrn-
cia desse valor no espao amostral ou na populao. Estes pontos, na forma (x
i
, p(x
i
))
SR, podem ser plotados em um grco para se vericar a forma como eles se distribuem
ao londo do espao amostral S. Esta distribuio pode ser discreta ou contnua.
Distribuio discreta de probabilidades. Quando o parmetro que est sendo medido s
pode assumir certos valores, como por exemplo valores inteiros 0, 1, 2, . . . , a distribuio
de probabilidades chamada discreta. Por exemplo, o lanamento de um dado s pode
apresentar os resultados 1, 2, 3, 4, 5 e 6. Portanto a distribuio de suas probabilidades
discreta.
Exemplo. Seja encontrar a distribuio discreta das probabilidades da varivel aleatria
discreta que consiste no lanamento de trs moedas. Neste caso o espao amostral S =
{HHH, HHT, HTH, THH, HTT, THT, TTH, TTT} e X ={0, 1, 2, 3} (o nmero de caras).
Ou seja,
X = 0 {TTT}
X = 1 {HTT, THT, TTH}
X = 2 {HHT, HTH, THH}
X = 3 {HHH}
Desta forma, pode-se construir uma tabela como
x
i
0 1 2 3
p(x
i
)
1
8
3
8
3
8
1
8
e plotar os pontos (x
i
, p(x
i
)) em um grco para se ter a noo da forma como a dis-
tribuio se comporta. Isto pode ser visto na Figura 2.1.
0 1 2 3
1/8
3/8
p(x )
i
x
i
Figure 2.1.1. Grco de uma distribuio discreta de probabilidades.
Distribuio contnua de probabilidades. Quando a varivel que est sendo analisada
tem valores em intervalos reais, a distribuio das probabilidades destes valores con-
tnua. Uma funo matemtica cujos valores sejam as probabilidades em cada ponto do
intervalo real, chamada de funo densidade de probabilidade, normalmente denotada
por fdp. A rea sob a curva que expressa a fdp igual a 1 que o valor total das probabil-
idades. Esta forma pode ser vericada no grco da Figura 2.2.
A denio da funo que d a distribuio de probabilidades feita encontrando-
se a funo que passe pelos pontos (x
i
, p(x
i
). Esta tarefa nem sempre fcil de ser real-
izada. Felizmente existem alguns modelos de distribuio de probabilidades que podem
37
1
2
0
p
01
p
00
p
02
p
11
p
12
p
10
p
22
p
21
p
20
1
2
0
0,8
0,2
0,2
0,15
0,7
0,05
0,5 0,3
0,1
a) b)
0,8 0,15 0,05
0,7 0,2 0,1
0,5 0,3 0,2
[ ]
c)
P =
Figure 21.3. Diagrama de transies.
Uma cadeia de Markov dita homognea se para todos os estados i e j
P{X
n+1
= j | X
n
= i} = P{X
n+m+1
= j | X
n+1
= i}
para n = 0, 1, 2, e m 0. A probabilidade de ir para o estado j no passo n+1 e para o
estado k no passo n+2, dado que a cadeia est no estado i no passo n dada por
P{X
n+2
= k, X
n+1
= j | X
n
= i}
= P{X
n+2
= k, X
n+1
= j, X
n
= i}P{X
n+1
= j | X
n
= i}
= P{X
n+2
= k, X
n+1
= j}P{X
n+1
= j | X
n
= i}
= p
jk
(n+1)p
i j
(n)
onde foram usadas inicialmente as propriedades da probabilidade condicional e depois a
propriedade da cadeia de Markov. Uma sequncia de estados visitados por uma cadeia
chamada de caminho da amostra. Assim, p
jk
(n+1)p
i j
(n) a probabilidade do caminho
da amostra i, j, k que inicia no estado i no passo de tempo n.
Exemplo (uma cadeia de Markov no homognea). Seja a cadeia discreta de Markov
{X
n
, n = 1, 2, } com apenas os estados a e b. No passo n a probabilidade de que a
cadeia permanea em seu estado atual dada por p
aa
(n) = p
bb
(n) = 1/n, enquanto a
probabilidade de que ela mude de estado p
ab
(n) = p
ba
(n) = (n1)/n, conforme pode
ser visualizado na Figura 2.4.
(n-1)/n
(n-1)/n
1/n
1/n
a
b
Figure 21.4. Uma cadeia de Markov de dois estados.
A matriz de transies dada por
P(n) =
1/n (n1)/n
(n1)/n 1/n
1 0
0 1
, P(2) =
1/2 1/2
1/2 1/2
, P(3) =
1/3 2/3
2/3 1/3
, P(4) =
1/4 3/4
3/4 1/4
38
As cadeias de Markov so casos particulares de processos estocsticos Marko-
vianos, em que o nmero de estados possveis nito ou innito enumervel. Na real-
idade, elas so tipos mais simples de processos estocsticos que possuem propriedades
importantes quando o nmero de transies cresce.
As propriedades a seguir so vlidas para as cadeias de Markov.
1. P
i j
0 para quaisquer estados i e j.
2. P
i j
1 para quaisquer estados i e j.
3.
j=0
P
i j
= 1 para todo i = 0, 1, 2,
Matriz de transio. Para efeito deste estudo, as probabilidades de transies dos estados
X
n
= i para os estados X
n+1
= j so conhecidas como probabilidades de transies de
passo nico ou apenas probabilidades de transies das cadeias de Markov, ou seja,
p
i j
= P{X
n+1
= j | X
n
= i}, n
A matriz P formada pelos elementos p
i j
da linha i e da coluna j, para todos os i
e j, chamada de matriz de probabilidades de transies ou apenas matriz de transies.
Assim temos
P(n) =
p
00
(n) p
01
(n) p
02
(n) p
0 j
(n)
p
10
(n) p
11
(n) p
12
(n) p
1 j
(n)
p
20
(n) p
21
(n) p
22
(n) p
2 j
(n)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
p
i0
(n) p
i1
(n) p
i2
(n) p
i j
(n)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1/n (n1)/n
(n1)/n 1/n
1 0
0 1
, P(2) =
1/2 1/2
1/2 1/2
, P(3) =
1/3 2/3
2/3 1/3
, P(4) =
1/4 3/4
3/4 1/4
40
Como pode ser observado pelas matrizes de transies, as probabilidades de que a
cadeia mude de estado vai aumentando, enquanto as probabilidades de que ela permanea
nos estados anteriores vai diminuindo a medida que o tempo passa. Pode-se observar o
comportamento markoviano, onde cada matriz depende apenas do estado anterior e no
de outros estados. A probabilidade de que seja tomado o caminho que inicia no estado a e
permanea neste estado aps as duas primeiras transies e depois move-se para o estado
b l permanece aps o terceiro e quarto passos dada por
P{X
5
= b, X
4
= b, X
3
= a, X
2
= a | X
1
= a}
= p
aa
(1)p
aa
(2)p
ab
(3)p
bb
(4)
= 11/22/31/4 = 1/12
2.1.3.1. Tipos de cadeias de Markov
Cadeias de Markov podem ser classicadas quanto natureza do tempo de transio entre
os estados, ou seja, discreto (DTMC - Discrete-Time Markov Chain) ou contnuo (CTMC
- Continuous-Time Markov Chain). Nas cadeias de Markov de Tempo Discreto as tran-
sies podem ocorrer somente em intervalos de tempo conhecidos, isto , passo-a-passo.
Este o caso dos exemplos apresentados anteriormente. Sistemas que so bem represen-
tados por DTMCs incluem aqueles onde as transies ocorrem seguindo uma base diria,
como visto na Figura 2.3, e aqueles que seguem um relgio discreto como o escalonador
de tarefas num computador. Se as transies entre estados puderem ocorrer em instantes
de tempo arbitrrios (contnuos) a cadeia de Markov uma CTMC. A propriedade Marko-
viana de ausncia de memria mantida para ambos os tipos de cadeias [2]. No caso da
DTMC, as transies obedecem a uma distribuio geomrica, pois esta a nica dis-
tribuio de tempo discreto que apresenta tal propriedade. No caso da CTMC, o tempo
das transies segue uma distribuio exponencial.
A Figura 2.5 um exemplo simples de cadeia de Markov de tempo contnuo.
Neste caso, a matriz de transio chamada de matriz geradora innitesimal pois, neste
caso, as transies ocorrem com uma taxa, em vez de uma probabilidade, devido na-
tureza contnua desse tipo de modelo. Considerando o modelo da Figura 2.5, a matriz
geradora Q composta por elementos q
ii
e q
i j
, onde i = j e q
i j
=q
ii
, ou seja, em uma
CTMC os elementos da diagonal tm seus valores denidos de forma que a soma de cada
linha da matriz seja igual a 0. Considerando um espao de estados S ={0, 1, 2}, a matriz
Q ser:
Q =
q
00
q
01
q
02
q
10
q
11
q
12
q
20
q
21
q
22
0, 001 0, 001 0
0 2 2
0, 2 0 0, 2
iS
i
= 1 (2)
Explicaes detalhadas sobre como chegar a essas equaes podem ser encon-
tradas em [2].
Cadeias de Markov tambm podem ser classicadas de acordo com a frequncia
com que seus estados podem ser alcanados ao longo do tempo. Em uma cadeia irre-
dutvel, cada estado pode ser alcaado a partir de qualquer outro estado, de forma que
todos os estados so recorrentes
3
nesse tipo de modelo. Se, uma vez que o sistema deixa
um determinado estado, aquele estado no puder mais ser visitado, a cadeia de Markov
dita acclica. Se uma cadeia no for acclica nem irredutvel, classicada como phase-
type [18]. Ela ir, eventualmente, alcanar um estado absorvente
4
, mas enquanto isso
no acontece, a cadeia passa por um ou mais estados transientes
5
. A Figura 2.6 mostra
exemplos dos trs tipos de cadeias.
Figure 21.6. Tipos de cadeias de Markov de acordo com a frequncia de visitas
aos estados.
3
Um estado chamado recorrente se o sistema capaz de retornar a esse estado inmeras vezes [18].
4
Um estado chamado absorvente se uma vez que ele alcanado, a cadeia no for capaz de sair desse
estado.
5
Um estado chamado transiente se, durante um perodo de tempo nito, o sistema visitar esse estado
um nmero nito de vezes [18].
42
2.1.3.2. Modelos Markovianos com Recompensa
Os modelos Markovianos com recompensa (Markov reward models - MRM) [21] so
usados geralmente para obter mtricas compostas, provendo a anlise integrada de de-
sempenho e conabilidade, por exemplo. Para construir um MRM, uma taxa constante de
recompensa r
i
associada a cada estado i de uma cadeia de Markov. Tambm possvel
associar taxas de recompensa s transies da cadeia [24], e nesse caso elas so conheci-
das como recompensas de impulso (impulse rewards). Em geral, a recompensa associada
a um estado denota o nvel de desempenho
6
obtido pelo sistema enquanto encontra-se
naquele estado [18]. Usando novamente o modelo da Figura 2.5, se as taxas de recom-
pensas forem denidas como um vetor r = (r
1
, r
2
, r
3
) = (5, 0, 2), representando a receita
obtida em cada estado, a taxa de reward instantnea esperada para o tempo t :
E[X(t)] =
iS
r
i
i
(t) = 5
0
(t) +0
1
(t) +2
2
(t). (3)
E[X(t)] pode ser considerado como a receita mdia obtida pela operao do sis-
tema no tempo t. Outros tipos de recompensa podem ser usados, tais como poder com-
putacional, status de disponibilidade do sistema, nalizao de tarefas por unidade de
tempo. Independentemente da taxa de recompensa, r
i
que adotada, a recompensa esper-
ada em estado estacionrio pode ser computada na forma da Equao 4.
E[X] =
iS
r
i
i
(4)
Devido possibilidade de calcular mtricas como ganho mdio em estado esta-
cionrio e ganho total em um determinado intervalo de tempo, os modelos Markovianos
de recompensa tm sido vastamente adotados em estudos de performabilidade, que com-
binam aspectos de performance e dependabilidade como ferramentas unicadas [23].
2.1.3.3. Modelos de gerao automtica
DTMCs e CTMCs permitem a anlise de muitos tipos de sistemas, com acurcia e poder
de modelagem adequados. Outros formalismos de modelagem, tais como as redes de
las [7], redes de Petri estocsticas (SPNs) [15, 10], e redes de Petri determinsticas e
estocsticas (DSPNs) [11], podem ser consideradas tcnicas de especicao de alto nvel
para gerao de cadeias de Markov. Esses formalismos so teis em muitas ocasies,
devido possibilidade de exploso do espao de estados da cadeia de Markov, medida
que aumenta o nmero de componentes e a complexidade das interaes num sistema.
Uma cadeia de Markov de tempo contnuo (CTMC) pode ser associada a uma
rede de Petri temporizada e estocstica. Em redes de Petri (RdP) isso garantido devido
a ausncia de memria no atraso dos disparos das transies (distribuio exponencial)
[14]. Nesse sentido, uma rede de Petri estocstica [8] isomrca ao formalismo da
CTMC.
6
A palavra desempenho aqui usada num sentido amplo, signicando qualquer aspecto mensurvel
do comportamento do sistema.
43
(a) Exemplo de uma rede de Petri.
(1,0,0,0)
(0,1,0,0) (0,0,1,0)
(0,0,0,1)
t0 t1
t3 t2
t4
M0 =
M1 = M2 =
M3 =
M0
(b) rvore de alcanabilidade.
3
0
t0
1 2
t1
t4
t3
t2
(c) Cadeia de Markov.
Figure 21.7. Exemplo da equivalncia entre cadeia de Markov e rede de Petri.
Adicionalmente, para auxiliar na gerao da cadeia de Markov equivalente rede
de Petri estocstica, constri-se a rvore de alcanabilidade. A rvore de cobertura ou
alcanabilidade baseia-se na gerao de uma rvore que possibilite a representao de
todas as possveis marcaes de uma RdP. A Figura 2.7(a) representa um modelo em
RdP, sua representao atravs da rvore de alcanabilidade (Figura 2.7(b)) e a cadeia de
Markov equivalente (Figura 2.7(c)).
A partir da rvore de alcanabilidade, pode-se construir a cadeia de Markov equiv-
alente ao modelo. O espao de estados da cadeia de Markov correspondente rvore de
alcanabilidade de uma rede de Petri estocstica, sendo esta equivalente s marcaes
encontradas. Por conseguinte, na Figura 2.7(b), a rvore de alcanabilidade possui 4 mar-
caes que so equivalentes aos estados da Cadeia de Markov.
44
2.1.4. Modelos clssicos para avaliao de desempenho e disponibilidade
Quando busca-se avaliar aspectos de desempenho e disponibilidade de umsistema, podem
ser gerados diferentes modelos, a depender da habilidade e experincia de quem os cria,
ou do nvel de generalizao utilizado, entre outras questes. Esta seo visa apresentar
exemplos de modelos que servem como base para muitos estudos, dos mais simples aos
mais complexos, envolvendo os aspectos de desempenho e disponibilidade de um sistema.
2.1.4.1. Cadeias de nascimento-morte
Uma cadeia de Markov homognea, irredutvel, de parmetro contnuo denominada
processo de nascimento e morte se as nicas mudanas permitidas, a partir de um deter-
minado estado i do processo, so para seus vizinhos imediatos, ou seja, para os estados
i +1 (nascimento) ou para o estado i 1 (morte). Um nascimento se processa com a taxa
i
e uma morte com a taxa
i
, ou seja, dependem apenas do estado i. Este processo pode
ser visto gracamente na Figura 2.8.
0 1 2 3 4
...........
0
1
2
3
4
1
2
5
R1
e
L0
so as respectivas taxas de falha de R0, R1 e L0. De modo similar,
L0
,
R0
e
R1
so as taxas de reparo de cada componente do sistema. Uma vez que qualquer
componente (R0, R1, ou L0) tenha falhado, o sistema completo est num estado de falha
e consequentemente nenhuma falha adicional pode ocorrer at que o componente seja
47
reparado. Para esse modelo, o sistema est ativo e funcionando somente no estado UUU.
Todos os outros estados esto acinzentados na Figura 2.10, representando os estados de
falha do sistema.
Figure 12.10. Cadeia de Markov para a disponibilidade de uma rede sem redundncia
A Figura 2.11 mostra a cadeia de Markov para o sistema com redundncia em
nivel de enlace. A notao similar do modelo anteior. A condio ideal para esse
sistema denotada pelo estado UUUU, no qual todos os componentes esto ativos, em
condies normais.
A cadeia mostra que o sistema pode falhar devido quebra de um dos roteadores,
ou falhas em ambos os enlaces. Uma hiptese assumida nesse modelo que h uma
poltica de reparo, que prioriza o enlace L0 sobre o enlace L1, quando ambos falharem.
Figure 12.11. Cadeia de Markov para a disponibilidade de uma rede com re-
dundncia no enlace
Os MTTFs dos componentes usados nas duas arquiteturas so: 131.000 horas para
os roteadores e 11.988 horas para os enlaces. O tempo mdio para reparo (MTTR) igual
a 12 horas, para todos os compoentes. Note que todos os
i
nos modelos so iguais a
1/MTTF
i
e todos os
i
so iguais a 1/MTTR
i
. As taxas so exibidas em vez dos tempos
devido sua forma compacta, que facilita o entendimento dos modelos.
A anlise do modelo sem redundncia, em estado estacionrio, prov um valor de
0,9980 para a disponibilidade desse sistema. Calculando a mesma mtrica com o modelo
48
que possui redundncia de enlace obtm-se 0,9995. Esse aumento na disponibilidade se
traduz em uma reduo do downtime anual de 7,53 horas para 1,88 horas, congurando-se
num ganho importante para empresas e organizaes que precisam manter sua infraestru-
tura de comunicao funcionando de forma ininterrupta, sob pena de degradao da im-
agem corporativa e grandes prejuzos nanceiros por quebras de contrato e/ou perda de
possveis clientes. Alm de servir para comparar as mtricas estimadas para diferentes
arquiteturas candidatas, as cadeias de Markov aqui poderiam ser usadas para vericar at
que ponto aumentos na conabilidade de um determinado componente podem suprir os
requisitos do sistema sem a necessidade de comprar e instalar equipamentos para servir
de rplicas dos servidores e dados crticos presentes no sistema.
2.1.6.2. Avaliao de desempenho e conabilidade de composies de web services
Este estudo de caso aborda inicialmente a anlise de um processo de agente de viagem.
Tal sistema composto de mltiplos servios Web, exigindo passos especcos para com-
pletar a reserva de uma viagem. A Figura 2.12 mostra um diagrama de atividades UML
(Unied Modeling Language) para este processo, adaptado de [19].
Reserva - Hotel
Resp. ao cliente
Inicializao
Reserva - Area
Consulta - Area 2 Consulta - Area 1
Figure 12.12. Processo de agente de viagem.
No incio do processo, o sistema de reserva de viagem busca simultaneamente
por vagas em duas companhias areas. Quando elas respondem, uma escolhida com
base em algum critiro tal como preo ou calendrio. Se uma das linhas areas falhar
em responder, a outra selecionada, e no caso de ambas falharem, o sistema agente de
viagem desiste e aborta. Outros passos incluem a invocao efetiva para reserva do bilhete
da companhia area, a reserva do hotel e a noticao de sucesso para o cliente. Qualquer
um dos web services pode falhar em responder e, neste caso, o sistema tenta se recuperar
atravs de reinicializaes, exceto pela busca em companhias areas concorrentes.
Uma CTMC para esse sistema exibida na Figura 2.13. Esse modelo foi con-
strudo para calcular o desempenho e a conabilidade da composio de Web services e
49
Figure 2.1.13. CTMC para a composio de Web services.
assim planejar possveis mudanas no sistema.
A traduo das atividades do modelo UML para os estados da cadeia de Markov
quase direta, com exceo de poucos estados que foram adicionados. RIni, RAresv,
RHt, e RRep representam os estados de reinicializao do Web service aps uma falha.
Por exemplo, quando o servio de Inicializao falha, o sistema vai para o estado RIni,
de onde h 2 prximos estados possveis: a) Inicializao, se a falha que ocorreu for
coberta, ou seja, se pode ser resolvida com a reinicializao; e b) Falha, se a falha no foi
resolvida pela reinicializao, de forma que o sistema inteiro falha. Os outros estados de
reinicializao tem signicados similares.
Os parmetros mrsp
i
, mrsp
a1
, mrsp
a2
, mrsp
ai
, mrsp
ht
and mrsp
rep
correspondem
ao tempo de resposta mdio dos seguintes web services, respectivamente: inicializao,
consulta companhia rea 1, consulta companhia area 2, reserva da passagem erea
(invocao), reserva do hotel e resposta ao cliente. Os outros parmetros seguem uma
notao similar. Note que algumas taxas de transio so iguais ao inverso do tempo de
resposta mdio do Web service (mrsp
x
), ponderado pela probabilidade de que a transio
ocorra, isto , a conabilidade do respectivo Web service (r
x
).
Se qualquer web service x falhar, a taxa da transio ser igual a
1r
x
mrsp
x
. As taxas
de transio saindo dos estados de reinicializao so iguais ao inverso do tempo mdio
de reinicializao (mr
x
), ponderado pelo fator de cobertura das falhas para aquele Web
service (C
x
), no caso de uma reinicializao com sucesso. Se a reinicializao daquele
web service no obtiver sucesso, o sistema faz uma transio para o estado Falha, com
uma taxa
1C
x
mr
x
.
50
Table 12.1. Valores dos parmetros para o modelo do Agente de Viagem.
Componente Conf. (r) T resp. (mrsp) Cobertura (C) T reinic. (mr)
Inicializao (init) 1,0 1 s 1,0 0,15 s
Consulta - area 1 (a1) 0,9 2 s - -
Consulta - area 2 (a2) 0,9 2 s - -
Invocao - cia. area (ai) 0,9 1 s 1,0 0,15 s
Reserva hotel (ht) 0,9 2 s 0.0 0,15 s
Resp. ao cliente (rep) 1,0 1 s - 0,15 s
Os valores usados como base para a anlise da cadeia de Markov so mostrados
na Tabela 2.1.
Analisando o modelo da Figura 2.13, se obtm, entre outras mtricas, a proba-
bilidade do sistema encontrar-se no estado Completo no instante t (
Completo
(t)). O
valor de
Completo
(t) equivalente probabilidade do tempo de resposta do sistema ser
menor ou igual ao tempo t: P[Resp t]. Supondo que o projetista, ou desenvolvedor,
desse sistema esteja interessado num tempo de resposta de 8 segundos, calculamos ento
Completo
(8) = 0, 5173, ou seja, h 51,83% de probabilidade do sistema responder em 8
segundos ou menos. Calculando essa probabilidade para diferentes valores de tempo t,
obtm-se a curva apresentada na Figura 2.14. Atravs dela, percebe-se que h uma prob-
abilidade prxima a 100% de que o tempo de resposta seja no mximo 25 segundos. Esse
tipo de anlise pode ser utilizada como base para a denio de contratos de nvel de
servio (SLA - Service Level Agreement) entre o provedor da aplicao de Agente de Vi-
agem e seus clientes, fornecendo estimativas concretas sobre o desempenho da aplicao
em questo, j levando em considerao aspectos de conabilidade.
P
r
o
b
a
b
i
l
i
d
a
d
e
0
0,2
0,4
0,6
0,8
1
Tempo de resposta (s)
0 5 10 15 20 25 30
Figure 12.14. Curva de probabilidade de concluso de acordo com o tempo.
2.1.7. Consideraes nais e perspectivas
Este captulo tratou sobre a teoria que envolve as cadeias de Markov assim como sua utili-
dade no planejamento de capacidade de sistemas computacionais. Os exemplos de mode-
los e anlises aqui apresentados servem como uma introduo capaz de guiar a construo
51
e anlise de outros modelos mais sosticados, possibilitando a avaliao do desempenho
e dependabilidade de vrios tipos de sistemas. Espera-se que o leitor possa aproveitar o
mximo do texto, e aplic-lo em ambientes reais, na academia e na indstria, expandindo
o conhecimento e a utilizao deste formalismo e suas ferramentas associadas.
References
[1] BARROS, Mnica; Processos Estocsticos; Papel Virtual Editora; Rio de Janeiro;
2004.
[2] BOLCH, G., GREINER, S., de MEER, H., and TRIVEDI, K. S.; Queuing Networks
and Markov Chains: modeling and performance evaluation with computer science
applications; John Wiley and Sons; 2 ed.; 2001.
[3] BERTOLI, Marco and CASALE, Giuliano and SERAZZI, Giuseppe; JMT: perfor-
mance engineering tools for system modeling; SIGMETRICS Perform. Eval. Rev.
vol36; March, 2009.
[4] GUNTER, B.; GREINER, S.; de MEER, H. and TRIVEDI, K. S.; Queueing Net-
works and Markov Chains: Modeling and Performance Evaluation with Computer
Science Applications; 2nd edition; John Wiley & Sons, Inc.; 2006.
[5] HAVERKORT, B. and MEEUWISSEN, A.; Sensitivity and uncertainty analysis of
Markov-reward models. IEEE Transactions on Reliability, 44(1):147154; 1995.
[6] Isograph; Reliability Workbench 11 http://www.isograph-software.com/. ltimo
acesso em 09 de Outubro de 2011.
[7] KLEINROCK, L. Queueing Systems, volume 1. Wiley, New York; 1975.
[8] MACIEL, P. R. M.. LINS, R. D. and CUNHA, P. R. F.; Introduo s Redes de Petri
e Aplicaes; Sociedade Brasileira de Computao; Campinas, So Paulo. 1996.
[9] MACIEL, P. R. M.; TRIVEDI, K.; MATIAS JR R.; and KIM, D.; Performance
and Dependability in Service Computing: Concepts, Techniques and Research Di-
rections; Dependability Modeling. IGI Global, Hershey, Pennsylvania; 2011.
[10] AJMONE MARSAN, M., CONTE, G., and BALBO, G.; A class of generalized
stochastic petri nets for the performance evaluation of multiprocessor systems. ACM
Trans. Comput. Syst., 2:93122. 1984.
[11] MARSAN, M. A. and CHIOLA, G.; On petri nets with deterministic and expo-
nentially distributed ring times. In Advances in Petri Nets 1987, covers the 7th
European Workshop on Applications and Theory of Petri Nets, pages 132145, Lon-
don, UK. Springer-Verlag. 1987.
[12] MATOS JNIOR, R. de S., GUIMARES, A. P., CAMBOIM, K. M. A., MA-
CIEL, P. R. M., TRIVEDI, K .S.; Sensitivity Analysis of Availability of Redun-
dancy in Computer Networks. In Proceedings of the Third International Conference
on Communication Theory, Reliability, and Quality of Service, CTRQ 2010, pages
115121, Budapest. IARIA. 2011.
52
[13] MENASC, D. A.; ALMEIDA, V. A.; and DOWDY, L. W.; Performance by Design:
Computer Capacity Planning by Example. Prentice Hall PTR.; 2004.
[14] MOLLOY, Michael Karl; On the integration of delay and throughput measures in
distributed processing models; Phd Thesis; University of California, Los Angeles,
1981.
[15] MOLLOY, M. K.; Performance analysis using stochastic petri nets. IEEE Trans.
Comput., 31:913917. 1982.
[16] NORRIS, J. R.; Markov Chains; Cambridge Series in Statistical and Probabilistic
Mathematics; 2009.
[17] R Project Page The R Project for Statistical Computing; http://www.r-project.org/.
ltimo acesso em 10 de Outubro de 2011.
[18] SAHNER, R. A., TRIVEDI, K. S., and PULIAFITO, A. Performance and reliabil-
ity analysis of computer systems: an example-based approach using the SHARPE
software package. Kluwer Academic Publishers, Norwell, MA, USA; 1996.
[19] SATO, N. and TRIVEDI, K. S.; Stochastic modeling of composite web services for
closed-form analysis of their performance and reliability bottlenecks. In ICSOC,
pages 107118; 2007.
[20] SHAMBLIN, James E.; Pesquisa Operacional: uma abordagem bsica; Editora
Atlas, So Paulo, 1979.
[21] SMITH, M. R., TRIVEDI, S. K., and NICOLA, F. V.; The analysis of computer
systems using markov reward processes. Technical report, Durham, NC, USA; 1987.
[22] STEWART, William J.; Probability, Markov chains, queues and simulation: the
mathematical basis of performance modeling. 2009.
[23] TRIVEDI, K. S., MUPPALA, J. K., WOOLET, S. P., and HAVERKORT, B. R.;
Composite performance and dependability analysis. Performance Evaluation, 14(2-
3):197215; 1992.
[24] TRIVEDI, K. S., MALHOTRA, M., and FRICKS, R. M. Markov reward approach
to performability and reliability analysis. In Proceedings of the Second International
Workshop on Modeling, Analysis, and Simulation On Computer and Telecommu-
nication Systems, MASCOTS 94, pages 711, Washington, DC, USA. IEEE Com-
puter Society. 1994.
[25] TRIVEDI, K. S.; Probability and Statistics with Reliability, Queuing, and Computer
Science Applications. John Wiley and Sons, 2nd. edition; 2002.
[26] TRIVEDI, K. S. and SAHNER, R.; SHARPE at the age of twenty two; doi =
http://doi.acm.org/10.1145/1530873.1530884; SIGMETRICS Perform. Eval. Rev.;
vol 36; ACM; March, 2009.
53
Captulo
13
Computao Autonmica aplicada a Segurana de
Redes
Ariel Soares Teles, Francisco Jos da Silva e Silva, Zair Abdelouahab
Abstract
The constant increase in the number of computers networks attacks attempts has pushed
researchers community to devise better security strategies. However, the rapid growth
both in quantity and complexity of components and services offered in todays networks
has increased the difculty of administering these, making approaches based only on hu-
man interventions impracticable. In order to circumvent this problem, a modern appro-
ach called Autonomic Computing (AC) has gained attention from researchers related to
network security management. AC has the essence of self-management and the implemen-
tation of its concepts for network security systems introduces the ability of self-assurance.
This chapter aims to introduce the concepts of AC and shows their applicability to the
context of security in computer networks.
Resumo
O constante aumento no nmero de tentativas de ataques s redes de computadores leva a
uma busca por melhores estratgias de segurana. Porm, o grande crescimento tanto na
quantidade como na complexidade de componentes e servios oferecidos nas atuais redes
tem aumentado a diculdade de administrao destas, tornando cada vez mais invivel
abordagens baseadas apenas em intervenes humanas. Com o objetivo de contornar
esta problemtica, uma moderna abordagem denominada Computao Autonmica (CA)
tem ganho destaque nas pesquisas relativas ao gerenciamento da segurana de redes. CA
tem como essncia o autogerenciamento e a aplicao de seus conceitos segurana de
redes introduz no sistema a capacidade de autosegurana. Este captulo tem como obje-
tivo introduzir os conceitos de CA e mostrar sua aplicabilidade ao contexto de segurana
em redes de computadores.
54
31.1. Introduo
Segurana em redes de computadores compreende a rea responsvel pela proteo dos
dados que a transitam contra alteraes indevidas, acesso no autorizado e indisponibi-
lidade. Desde o surgimento da Internet, a busca por melhores estratgias de segurana
tem aumentado consideravelmente, tendo em vista a grande quantidade de tentativas de
ataques que vem sendo realizados. Esses ataques, quando bem sucedidos, tem causado
prejuzos nanceiros e de imagem para empresas, instituies e pessoas fsicas.
Existem vrios obstculos a serem enfrentados para se alcanar redes realmente
seguras, dentre eles pode-se destacar a existncia de dependncia dos sistemas de segu-
rana por gerenciamento com interveno humana, sendo este um processo que aumenta
continuamente o nvel de diculdade. O fato dos ataques sistemas computacionais esta-
rem se tornando cada vez mais sosticados e as vrias decincias encontradas nos atuais
sistemas de segurana tambm so outros exemplos de obstculos, como sero vistos
neste captulo.
Tudo isso eleva a complexidade do problema da gerncia de segurana e por isso
interessante a utilizao de recursos oferecidos pela Computao Autonmica (CA).
Sistemas de CA so capazes de gerenciarem a si prprios e se adaptarem dinamicamente
s mudanas a m de restabelecer seu equilbrio de acordo com as polticas e os objetivos
de negcio. Para isso, dispem de mecanismos efetivos que os permitem monitorar, con-
trolar e regular a si prprios, bem como recuperarem-se de problemas sem a necessidade
de intervenes externas.
A arquitetura e as propriedades de CA para a implementao de sistemas prope
uma abordagem com muitas vantagens para ser aplicada segurana de redes. Alm
de apresentar caractersticas intrsecas de autogerenciamento, um elemento autonmico
prov outras funcionalidades que podem ser utilizadas para resolver problemas particula-
res segurana de redes, com o uso de tcnicas de aprendizagem e cooperao entre as
aplicaes.
Neste captulo ser discutido os conceitos de CA e mostrado sua aplicabilidade
ao contexto de segurana em redes de computadores. A aplicao dos conceitos de CA
segurana de redes introduz no sistema a capacidade de autosegurana, atravs da qual
servios e funes de gerenciamento da segurana so executados sem a necessidade de
um gerente humano, a partir da denio de objetivos e parmetros iniciais fornecidos
por seus administradores.
O restante deste trabalho est organizado da seguinte forma. Todos os fundamen-
tos de CA so descritos na Seo 2, mostrando suas propriedades, arquitetura e detalhes
do ciclo autonmico. A Seo 3 ir descrever alguns conceitos de segurana em redes e
mostrar os problemas enfrentados por elas neste quesito. A necessidade que a segurana
em redes de computadores tem por mecanismos autonmicos e exemplos de trabalhos j
realizados em segurana autonmica de redes sero detalhados na Seo 4. Para nalizar
o captulo, na Seo 5 sero apresentadas as concluses.
55
31.2. Computao Autonmica
O termo Computao Autonmica surgiu em 2001, com um manifesto publicado por Paul
Horn, pesquisador da IBM, que lanou um desao sobre o problema da crescente com-
plexidade de gerenciamento do software [17]. O termo autonmico vem da biologia e
est relacionado s reaes siolgicas involuntrias do sistema nervoso [25]. No corpo
humano, o sistema nervoso autonmico cuida de reexos inconscientes, isto , de fun-
es corporais que no requerem nossa ateno como a contrao e expanso da pupila,
funes digestivas do estmago e intestino, a frequncia e profundidade da respirao, a
dilatao e constrio de vasos sanguneos, etc. Esse sistema reage s mudanas, ou per-
turbaes, causadas pelo ambiente atravs de uma srie de modicaes, a m de conter
as perturbaes causadas ao seu equilbrio interno.
Em analogia ao comportamento humano, diz-se que um sistema computacional
est em equilbrio quando o seu ambiente interno (formado pelos seus subsistemas e pelo
prprio sistema) est em proporo devida com o ambiente externo. Conforme obser-
varam Parashar e Hariri em [27] e detalhado em [28], se o ambiente interno ou externo
perturba a estabilidade do sistema, ele sempre atuar de modo a recuperar o equilbrio
original. Dessa forma, os sistemas de CA so sistemas capazes de se autogerenciarem
e se adaptarem dinamicamente s mudanas a m restabelecer seu equilbrio de acordo
com as polticas e os objetivos do negcio do sistema [17]. Para isso, devem dispor de me-
canismos efetivos que os permita monitorar, controlar e regular a si prprios, bem como
recuperarem-se de problemas sem a necessidade de intervenes externas.
31.2.1. Propriedades de Sistemas Autonmicos
A essncia da CA o autogerenciamento. Para implement-lo, o sistema deve ao mesmo
tempo estar atento a si prprio e ao seu ambiente. Desta forma, o sistema deve conhecer
com preciso a sua prpria situao e ter conscincia do ambiente operacional em que
atua. Do ponto de vista prtico, conforme Hariri [13], o termo computao autonmica
tem sido utilizado para denotar sistemas que possuem as seguintes propriedades:
Autoconscincia (self-awareness): O sistema conhece a si prprio: seus compo-
nentes e inter-relaes, seu estado e comportamento;
Conscincia do contexto (context-aware): O sistema deve ser ciente do contexto
de seu ambiente de execuo e ser capaz de reagir a mudanas em seu ambiente;
Autocongurao (self-conguring): O sistema deve ajustar dinamicamente seus
recursos baseado em seu estado e no estado do ambiente de execuo;
Auto-otimizao (self-optimizing): O sistema capaz de detectar degradaes de
desempenho e de realizar funes para auto-otimizao;
Autoproteo (self-protecting): O sistema capaz de detectar e proteger seus re-
cursos de atacantes internos e externos, mantendo sua segurana e integridade geral;
Autocura (self-healing): O sistema deve possuir a habilidade de identicar poten-
ciais problemas e de se recongurar de forma a continuar operando normalmente;
56
Aberto (open): O sistema deve ser portvel para diversas arquiteturas de hardware
e software e, consequentemente, deve ser construdo a partir de protocolos e inter-
faces abertos e padronizados;
Capacidade de Antecipao (anticipatory): O sistema deve ser capaz de anteci-
par, na medida do possvel, suas necessidades e comportamentos considerando seu
contexto e de se autogerenciar de forma pr-ativa.
As propriedades de autocongurao, auto-otimizao, autocura e autoproteo
so sucientes para realizar a viso original do termo [25]. Para a incorporao das pro-
priedades de auto-otimizao e autocura, mecanismos de autoconscincia, conscincia de
contexto e autocongurao devem ser requisitos do sistema.
13.2.2. Arquitetura de um Sistema Autonmico
Arquiteturas de sistemas autonmicos visam formalizar um quadro de referncia que
identica as funes comuns e estabelece os alicerces necessrios para alcanar a au-
tonomia. Em geral, essas arquiteturas apresentam solues para automatizar o ciclo de
gerenciamento de sistemas, conforme mostrado na Figura 3.1, o qual envolve as seguintes
atividades:
Figura 13.1. Ciclo de gerenciamento de sistemas [5].
Monitoramento ou Medio: Coleta, agrega, correlaciona e ltra dados sobre
recursos gerenciados;
Anlise e Planejamento: Analisa os dados coletados e determina se devem ser
realizadas mudanas nas estratgias utilizadas pelo recurso gerenciado;
Controle e Execuo: Escalona e executa as mudanas identicadas como neces-
srias pela funo de anlise e deciso.
13.2.2.1. MAPE-K
Em 2003 a IBM props uma verso automatizada do ciclo de gerenciamento de sistemas
chamado de MAPE-K (Monitor, Analyse, Plan, Execute, Knowledge) [17], representado
57
na Figura 3.2. Este modelo est sendo cada vez mais utilizado para inter-relacionar os
componentes arquiteturais dos sistemas autonmicos. De acordo com essa arquitetura,
um sistema autonmico formado por um conjunto de elementos autonmicos.
Um elemento autonmico contm um nico gerente autonmico que representa e
monitora um ou mais elementos gerenciados (componente de hardware ou de software)
[19]. Cada elemento autonmico atua como um gerente responsvel por promover a pro-
dutividade dos recursos e a qualidade dos servios providos pelo componente do sistema
no qual est instalado.
Figura 13.2. MAPE-K: Ciclo de gerenciamento autonmico [16].
No ciclo MAPE-K autonmico (Figura 3.2), o elemento gerenciado representa
qualquer recurso de software ou hardware o qual dado o comportamento autonmico
atravs do acoplamento de um gerenciador autonmico, podendo ser por exemplo um
servidor Web ou banco de dados, um componente de software especco em um aplicativo
(por exemplo, o otimizador de consulta em um banco de dados), o sistema operacional,
um conjunto de mquinas em um ambiente de rede, etc.
Os sensores (sensors) so responsveis por coletar informaes do elemento ge-
renciado. Estes dados podem ser os mais diversos possveis, por exemplo, o tempo de
resposta das requisies dos clientes, caso o elemento gerenciado seja um servidor Web.
As informaes coletadas pelos sensores so enviadas aos monitores (monitors) onde so
interpretadas, preprocessadas e colocadas em um nvel mais alto de abstrao, para ento
serem enviadas para a etapa seguinte no ciclo, a fase de anlise e planejamento (analyze
and planing). Nesta fase, tem-se como produto uma espcie de plano de trabalho, que
consiste de um conjunto de aes a serem executadas pelo executor (execute). O compo-
nente responsvel por fazer as alteraes no ambiente chamado de atuador (effectors).
Somente os sensores e atuadores possuem acesso direto ao elemento gerenciado. Durante
todo ciclo de gerenciamento autonmico, pode haver a necessidade de uma tomada de
deciso, dessa forma, faz-se necessrio tambm a presena de uma base de conhecimento
(knowledge), sendo que esta comumente mais explorada na fase de anlise e planeja-
mento [8].
Isso implementado utilizando dois ou mais ciclos de gerenciamento autonmico,
um ou mais ciclos de controle local e um global. Os ciclos de controle local tratam apenas
58
de estados conhecidos do ambiente local, sendo baseado no conhecimento encontrado no
prprio elemento gerenciado. Por esta razo, o ciclo local incapaz de controlar o com-
portamento global do sistema. O ciclo global, por sua vez, a partir de dados provenientes
dos gerenciadores locais ou atravs de um monitoramento a nvel global, podem tomar de-
cises e atuar globalmente no sistema. No entanto, a implementao das interaes entres
os diversos nveis existentes vai depender das necessidades e das limitaes da aplicao.
13.2.3. Monitoramento
O monitoramento corresponde a primeira fase do ciclo autonmico MAPE-K. Nesta
etapa, sensores so utilizados com a nalidade de obter dados que reitam mudanas
de comportamento do elemento gerenciado ou informaes do ambiente de execuo que
sejam relevantes ao processo de autogerenciamento. Os sensores so dispositivos de hard-
ware ou software que esto diretamente ligados ao componente que se deseja monitorar.
O tipo de informao coletada bem como o modelo do(s) monitor(es) empregados
so especcos para cada tipo de aplicao. Contudo, alguns requisitos so comuns entre
eles, tais como a ltragem, a escalabilidade, a dinamicidade e a tolerncia a falhas [23].
Um monitor deve prover ltragem, pois a quantidade de dados coletados pode crescer
muito rapidamente e consumir recursos de transmisso, processamento e armazenamento.
Grande parte desses dados podem ser de pouca relevncia e, portanto, descart-los no
implicaria em prejuzo. Considerando-se que um sistema pode crescer indenidamente,
contendo inmeros objetos sob monitoramento, a tarefa dos monitores no pode consumir
recursos e reduzir o desempenho do sistema. Em contrapartida, as mudanas no ambi-
ente ou no comportamento do sistema no podem afetar o servio de monitoramento [9].
Alm disso, falhas podem ocorrer e o monitor pode apresentar algum comportamento at-
pico ou mesmo parar de funcionar completamente. Dessa forma, devem ser levadas em
considerao provises como redundncia e mecanismos de recuperao de falhas dos
monitores.
13.2.3.1. Classicao de Sistemas de Monitoramento
Aplicaes autonmicas possuem requisitos de monitoramento diferentes, variando os
elementos que se deseja monitorar. De acordo com as caractersticas deste elementos
podem ser implementadas formas de monitoramento especcas. Em [16], Huebscher e
McCann identicaram dois tipos de monitoramento em sistemas autonmicos, classica-
dos de acordo com o tipo de sensor utilizado:
Monitoramento Passivo: No monitoramento passivo os dados obtidos de moni-
toramento so fornecidos pelo sistema sem necessidade de nenhuma alterao na
aplicao. Por exemplo, no Linux, informaes sobre uso de CPU e memria po-
dem ser coletados do diretrio /proc;
Monitoramento Ativo: No monitoramento ativo para que se possa fazer a captura
de dados necessrio alterar a implementao da aplicao ou sistema operacional.
So exemplo desse tipo de monitoramento, sensores que so inseridos na forma de
bytecodes em aplicaes Java.
59
Conforme observado nos trabalhos de [23] e [16], foi possvel constatar que o
monitor tambm pode ser classicado quanto estratgia utilizada:
Monitoramento orientado eventos: Eventos so aes que acontecem no sis-
tema e podem alterar o seu estado, por exemplo o processo ocioso, processo
em execuo, incio do processo, chegada de uma requisio, etc. Os eventos
acontecem instantaneamente e portanto nesse tipo de monitoramento cada evento
corresponde a um dado que transmitido para o monitor. Essa abordagem pode ser
aplicada nos casos em que a taxa de ocorrncia de eventos muito baixa. A des-
vantagem que o nmero de eventos gerados pode ser muito grande e informaes
redundantes e desnecessrias estariam sobrecarregando os recursos do sistema;
Monitoramento orientado ao tempo: Nessa estratgia, o monitor coleta os dados
de forma peridica, ou seja, um intervalo de tempo denido para que o monitor
consulte as informaes do ambiente em busca de eventos signicativos. A grande
diculdade encontrada nessa estratgia est em denir o melhor intervalo para a
realizao da coleta. A desvantagem nesse caso seria que informaes importantes
seriam perdidas durante esse intervalo;
Monitoramento autonmico: As duas estratgias acima podem ser intercaladas
conforme ocorrem as mudanas no ambiente. Por exemplo, se a taxa de ocorrncia
de eventos est elevada a melhor estratgia seria a orientada ao tempo. O tamanho
do intervalo de tempo na segunda estratgia tambm pode ser renado segundo uma
abordagem autonmica de acordo com as caractersticas do ambiente.
31.2.4. Anlise e Planejamento
A anlise vem aps o monitoramento no ciclo de gerenciamento MAPE-K, tendo como
fase seguinte o planejamento. Em geral estas duas fases so geralmente implementadas
em um nico componente. O processo de anlise e planejamento essencial para auto-
nomia do sistema, pois nele que so geradas as decises sobre quais modicaes sero
realizadas no sistema, que corresponde ao elemento gerenciado.
A fase de anlise e planejamento recebe como entrada os eventos e seus dados
gerados pelo sistema de monitoramento e gera como sada um conjunto de aes, tambm
chamado de plano de aes. Estas aes correspondem s operaes de recongurao
que, de acordo com o mecanismo de tomada de deciso, devem ser executadas no sistema
a m de manter o equilbrio do sistema considerando seus objetivos. Muitas tcnicas
podem ser empregadas na fase de anlise e planejamento, entre as quais se destacam
o uso de funes de utilidade, aprendizado por reforo e regras Evento-Condio-Ao
(ECA). Sendo esta ltima detalhada a seguir.
31.2.4.1. Anlise e Planejamento Baseados em Regras ECA
Regras do tipo evento-condio-ao (ECA Rules) determinam as aes a serem realiza-
das quando um evento ocorre desde que certas condies sejam satisfeitas. De acordo
com [5], ECA rules so especicaes declarativas de regras ou regulamentaes que
60
determinam o comportamento de componentes de aplicaes. Para cada evento so de-
nidos um conjunto de regras que podem gerar uma ou mais aes. Esses eventos tambm
podem satisfazer as condies de diferentes regras e algumas dessas regras podem gerar
aes que conitam entre si. Nem sempre esses conitos podem ser detectados durante a
escrita das regras, sendo muitas vezes descobertos em tempo de execuo.
Em ECA rules o evento especica quando as regras devero ser acionadas. A
condio a parte a ser vericada, podendo esta ser satisfeita ou no. E por m, a ao,
a qual representa a operao a ser realizada caso a condio seja satisfeita. So denidas
da seguinte forma:
on event if condition do action;
Figura 13.3. Denio de uma regra do tipo ECA.
31.2.5. Execuo de Aes de Recongurao
Na etapa de execuo do ciclo MAPE-K so realizadas reconguraes no sistema de
forma a restabelecer seu equilbrio. A nalidade da recongurao permitir que um sis-
tema evolua (ou simplesmente mude) incrementalmente de uma congurao para outra
em tempo de execuo, introduzindo pouco (ou, idealmente, nenhum) impacto sobre a
execuo do sistema. Desta forma, os sistemas (ou aplicaes) no necessitam ser nali-
zados, ou reiniciados, para que haja as mudanas.
A autocongurao (self-conguring) a caracterstica do sistema autnomo que
o permite ajustar-se automaticamente s novas circunstncias percebidas em virtude do
seu prprio funcionamento, de forma a atender a objetivos especicados pelos processos
de autocura, auto-otimizao ou autoproteo [5].
O processo de recongurao realizado pelos executores atravs dos atuadores.
Executores recebem como entrada um plano de aes gerado na etapa de anlise e pla-
nejamento e utiliza os atuadores pertinentes para implementar as aes de recongurao
descritas no plano. As reconguraes devem ser realizadas dinamicamente, sem impor
a necessidade de parar e/ou reiniciar o sistema.
Segundo [24], duas abordagens gerais tm sido utilizadas para atingir adaptao:
adaptao paramtrica e adaptao composicional. A adaptao paramtrica consiste na
alterao de variveis que determinam o comportamento do sistema. J a adaptao com-
posicional (ou estrutural) consiste na substituio de algoritmos ou partes estruturais de
um software, permitindo que este adote novas estratgias (algoritmos) para tratar situa-
es que no foram inicialmente previstas na sua construo.
31.2.5.1. Questes de Projeto de Mecanismos de Recongurao
O desenvolvimento de um mecanismo de recongurao dinmica no algo simples.
Diversos requisitos devem ser considerados a m de manter as caractersticas e funciona-
lidades do sistema [26], entre as quais destaca-se:
61
Separao de responsabilidades: No desenvolvimento de sistemas autonmicos,
a separao de responsabilidades permite que o cdigo funcional da aplicao (res-
ponsvel pelas regras de negcio) seja separado do cdigo responsvel pela adap-
tao. Isto simplica o desenvolvimento, a manuteno e o reuso do cdigo adap-
tativo;
Conabilidade: Um problema quando se modica um sistema em tempo de exe-
cuo a sincronizao entre reconguraes e execuo funcional do sistema.
A recongurao no deve prejudicar a funcionalidade do sistema. Lger et al.,
em [22], deniram um conjunto de propriedades a m de garantir a conabilidade
no contexto das reconguraes dinmicas em sistemas baseados em componen-
tes. Esse conjunto de propriedades foi baseado em transaes e denominado ACID
(Atomicidade, Consistncia, Isolamento e Durabilidade);
Preservao de consistncia: Quando a recongurao do sistema ocorre emtempo
de execuo, importante que a recongurao preserve a consistncia do sistema.
O estado do sistema interno deve ser mantido e as informaes trocadas entre os
componentes no devem ser perdidas;
Custo da recongurao: Em [11] o custo de recongurao denido como
uma medida dos efeitos negativos introduzidos pela recongurao. Esses efeitos
negativos incluem, por exemplo, a indisponibilidade temporria do servio, ou a
perturbao induzida em outros servios aps o possvel aumento do consumo de
recursos de rede durante a recongurao. A relao custo/benefcio deve ser ava-
liada.
31.3. Segurana em Redes de Computadores
O grande crescimento na quantidade de componentes e servios oferecidos nas atuais
redes de computadores tem aumentado o nvel de complexidade no trabalho de gerencia-
mento e administrao destas. Cada vez mais so integrados novos dispositivos s redes,
que requerem conectividade a qualquer momento e em qualquer lugar, alm de se carac-
terizarem por sua heterogeidade que diculta o processo de padronizao das aplicaes.
Ento se faz necessrio aplicar a ideia de CA s Redes de Computadores, atravs
da atribuio da capacidade para gerenciarem a si prprias, denominadas ento como
Redes Autonmicas [3]. Os servios e funes de gerenciamento da rede so executados
sem a necessidade de um gerente humano de maneira transparente para seus usurios,
havendo apenas a necessidade de objetivos e parmetros iniciais, os quais o sistema leva
em considerao. A rede deve ser capaz de aprender com as aes dos seus componentes
atravs da anlise dos resultados obtidos. A capacidade de adaptao e aprendizagem so
as caractersticas das redes autonmicas.
Neste cenrio, no se pode deixar de lado a segurana da informao, que re-
quisito fundamental para o bom funcionamento de qualquer sistema computacional, com-
preendendo o conjunto de medidas que visam preservar e proteger as informaes e os
sistemas de informao. Visto que essas redes esto conectadas quase sempre Internet,
as aplicaes residentes nelas podem sofrer com atividades maliciosas originadas a partir
de qualquer usurio conectado rede.
62
normal que o acesso rede mundial de computadores oferea a possibilidade de
descoberta e explorao de vulnerabilidades de forma bem rpida, quase sempre mais do
que a atualizao das ferramentas de segurana e da emisso de correes pelos fabrican-
tes de softwares. Ento o nmero de incidentes de segurana cresce muito rapidamente
juntamente com a quantidade de danos causados. No entanto, proporcionalmente tem
crescido tambm as pesquisas de novos mecanismos e tcnicas para aumentar o nvel de
segurana. Polticas de acesso, uso de rewalls, sistemas de deteco de intruso, sistemas
de preveno de intruso, honeypots, entre outros, tem sido essas contra medidas.
Em segurana da informao possvel identicar os seguintes propriedades b-
sicas, consideradas tambm os pilares para a segurana de redes [20]:
Condencialidade: Proteo dos dados contra divulgao no autorizada. A infor-
mao s deve estar disponvel para aqueles devidamente autorizados;
Integridade: Proteo dos dados contra modicao no autorizada. A informao
no deve ser destruda ou comprometida e os sistemas devem ter um desempenho
correto;
Disponibilidade: Proteo de acesso aos recursos da rede para que estejam dispo-
nveis quando requisitados pelas entidades autorizadas. Os servios e recursos do
sistema devem estar disponveis sempre que forem necessrios;
Autenticidade: Proteo dos recursos da rede contra acesso no autorizado.
necessrio a identicao dos elementos da transao;
No-repdio: Proteo contra negao falsa de aes que um usurio ou entidade
tenha feito. No possvel negar a existncia ou autoria de uma operao que criou,
modicou ou destruiu uma informao;
Auditoria: Implica no registro das aes realizadas no sistema, identicando os su-
jeitos e recursos envolvidos, as operaes realizadas, seus horrios, locais e outros
dados relevantes.
Essas propriedades guiam para a determinao de um foco no qual uma determi-
nada aplicao deve ser desenvolvida, a m de atender os requisitos de segurana especi-
cados pela prpria necessidade do ambiente em questo. No entanto, no apenas isto
que dita o escopo de uma aplicao para segurana de redes, sendo importante delimiar
a(s) fase(s) de proteo em que ela ir atuar.
31.3.1. Fases para Proteo de Redes
possvel destacar quatro fases para proteger a rede contra ataques [41]: Preveno (Pre-
vetion), Deteco (Detection), Defesa (Defense) e Forense (Forensics), como pode ser
visto na Figura 3.4. A preveno compreende todos os mtodos aplicados para evitar
ataques, a m de garantir a condencialidade e integridade dos dados, com a utilizao de
controles de acesso aos recursos da rede. Isso inclui tcnicas de autorizao e autentica-
o (servios de login), estabelecimento de conana, bem como criptograa e ltragem
63
de trfego (uso de rewall). importate ressaltar que preveno s possvel para ata-
ques conhecidos, mas h trabalhos sendo desenvolvidos no sentido de prever a ocorrncia
de ataques desconhecidos, como em [33] e [37].
Figura 13.4. Quatro fases de proteo [41].
Mecanismos de preveno so considerados sistemas de defesa em primeira linha,
ou seja, so responsveis pela primeira etapa na segurana de uma rede de computadores.
Normalmente essa defesa em primeira linha feita na fase de projeto da rede, a m de
desenvolv-la j de maneira segura e obter melhores resultados quando colocada em ope-
rao. Esses mecanismos so tipicamente implantados para controlar acesso a recursos e
informao que transita na rede.
Se a preveno falhar, deteco a prxima fase a lidar com um incidente. Detec-
o ento o processo de descoberta de um ataque ou da preparao para sua realizao,
ou quaisquer outras atividades maliciosas, desde um port scan at indcios de quebra de
senhas por tcnica de fora bruta. Isso normalmente feito pela anlise de dados cap-
turados por um sniffer, sendo este a interceptao e registro de dados que trafegam pela
rede.
Sistemas de deteco de intruso (IDS - Intrusion Detection Systems) so utili-
zados na fase de deteco. Eles realizam o monitoramente da rede, chamado de NIDS
(Network Based Intrusion Detection System), ou de um dispositivo conectado a ela, bem
conhecido como HIDS (Host Based Intrusion Detection System), com objetivo de en-
contrar a ocorrncia de algum ataque ou atividade maliciosa. Um IDS pode utilizar vrias
abordagens para identicar um ataque, sendo as mais conhecidas: Baseado em Assinatura
(Signature Based) e Baseado em Anomalia (Anomaly Based), como descrito em [18]:
Baseado em Assinatura: Monitora as atividades da rede, ou de um dispositivo
especco, procurando por ocorrncias de alguma intruso que comparada com
uma base de assinaturas, esta ltima contendo informaes de caractersticas de
ataques e atividades maliciosas;
Baseado em Anomalia: Inicialmente montado um perl que representa o com-
portamento normal da rede ou host, fase conhecida como treinamento. Posterior-
mente o sistema entra em fase de monitoramento, no qual utiliza vrias mtricas
para determinar se est havendo algum comportamento diferente do perl inicial,
caracterizando ento uma intruso.
64
Outro mecanismo encontrado na fase de deteco visto atravs das chamadas
Metodologias de Decepo, denidas em [15] como a criao de um ambiente falso para
enganar usurios mal intencionados. Elas so usadas quando aplicadas tcnicas no qual
o atacante interage com um recurso colocado como uma armadilha, propositalmente vul-
nervel, que emula os servios ou sistemas que realmente deveriam ser alvos de sua ao.
Tcnicas bastante utilizadas so com o uso de honeypots, denido por Spitzner [38] como
um recurso de rede cuja funo de ser sondado, atacado ou comprometido. Signica di-
zer que poder ser invadido, sendo uma mquina congurada a m de obter informaes
sobre o invasor. A inteno que o intruso ao realizar uma tentativa de invaso, na qual
a rede possua um honeypot em funcionamento, tenha a sensao de est interagindo com
uma mquina que exerce alguma funcionalidade e poder conseguir algum recurso.
Se umtrfego malicioso detectado, ento iniciado o processo ou fase de defesa.
Para que isso ocorra necessrio que o sistema implemente essas duas fases (deteco e
defesa), integrando mais de uma aplicao de segurana. Um exemplo o Sistema de
Preveno de Intruso (IDS - Intrusion Prevention System), no qual gera alguma resposta
a m de neutralizar o ataque, podendo integrar um IDS e um rewall, por exemplo.
Em alguns casos quando as fases anteriores de preveno e deteco falham e
o ataque foi bem sucedido, se faz necessrio uma anlise de todos os logs, no sentido
de aprender como os mtodos utilizados nos processos de deteco e defesa podem ser
melhorados para futuros incidentes. Sendo esta a fase chamada de forense, que tem
como objetivo realizar uma investigao para descobrir detalhes especcos de ataques,
apresentando resultados que contribuam de alguma maneira para a melhoria da proteo
da rede. Outro objetivo desta fase fornecer provas sucientes para permitir que o autor
do incidente de segurana seja processado. Para Pilli ES et al., em [31], as tcnicas de
forense de rede fornecem recursos para os investigadores rastrearem os atacantes.
Diante destas fases possvel caracterizar a atuao das aplicaes de segurana
de redes. Por sua vez, muitas das aplicaes utilizadas atualmente possuem problemas.
Junto a isso, os ataques redes de computadores vem se tornando cada vez mais sosti-
cados. Esses problemas sero detalhados a seguir.
31.3.2. Problemas Enfrentados
Zseby et al., em [41], arma que a segurana de redes necessita crucialmente de uma
maior ateno por parte do administrador e quase sempre de mais esforos e custos, pois
novos protocolos e aplicaes introduzem novas vulnerabilidades. Infelizmente, os me-
canismos utilizados para aumentar o nvel de segurana atualmente possuem alguns pro-
blemas, a saber:
Estrutura slida: Sistemas desenvolvidos para segurana possuem pouca exi-
bilidade, pois so desenvolvidos apenas para situaes isoladas. No possuem as
caractersticas de um sistema aberto. Tambm no so capazes de se integrar com
outros mecanismos de segurana existentes no ambiente;
Habilidade de defesa baixa: O escopo das atuais aplicaes de segurana limi-
tado. So desenvolvidas apenas para atender alguma das fases de proteo, sem ter
65
a habilidade para prover um mecanismo integrado que fornea maior capacidade de
segurana;
Sem autoadaptao: Aplicaes no tem a capacidade de mudar componentes
internos para se adaptarem s necessidades do ambiente em que se encontram a m
de conseguir prov segurana rede. Todo um processo de recongurao manual
preciso para manter a segurana;
Sem autoaprendizagem: Aplicaes no possuem a habilidade para aprender com
o tempo que se encontram em funcionamento, necessitando de interveno para
se atualizarem. No conseguem aprender com suas prprias aes, vericando os
resultados destas que foram providos rede, para uma anlise e melhorias futuras;
Sem autoevoluo: Alm de no possuirem capacidade para aprenderem, ainda
no implementam meios para que novos conhecimentos sejam agregados s tcni-
cas de defesa.
Para Atay e Masera, em [2], todos os mtodos de anlise de ameaas, vulnera-
bilidades e riscos necessitam atualizarem continuamente os seus conhecimentos sobre as
novas fraquezas encontradas nos ativos da rede. Isso servir para identicar como estas
fraquezas podem ser exploradas, para posteriormente denir e aplicar as contramedidas
necessrias. Esse um ciclo contnuo, pois novas avaliaes sero necessrias ao longo
do tempo.
No entanto, sabe-se que informaes sobre novos ataques no so imediatamente
divulgadas, pelos fabricantes ou pela comunidade que desenvolve o software, devido sua
sensibilidade. Isso ocorre devido essas informaes poderem ser utilizadas para explorar
mais ainda as vulnerabilidades, visto que usurios mal intecionados podem obt-las. Elas
so publicadas ento logo aps os fabricantes liberarem as correes. Os mtodos de
anlise de riscos citado por [2] devem refazer a avaliao de segurana dos sistemas le-
vando em considerao informaes de novos ataques quando forem divulgadas, ou com
a utilizao de tcnicas de inteligncia para deteco antes mesmo da divulgao.
Diante desta situao, Wang et al. [40] arma que a direo correta para o desen-
volvimento de aplicaes de defesa e segurana com a adoo de duas caractersticas: a
integrao e inteligncia. Integrao para possibilitar o gerenciamento de vrios recursos
de proteo em um ambiente de rede distribudo e a inteligncia para prov adaptao
ao ambiente, aumentar a ecincia de proteo baseado em seu conhecimento e no que
adquiriu e, por m, alcanar um equilbrio entre a aplicao de segurana e o ambiente de
rede.
Aliado aos problemas enfrentados pelos atuais sistemas de segurana, os ataques
a sistemas computacionais esto se tornando cada vez mais sosticados, imprevisveis,
frequentes e com uma maior quantidade de origens [2]. Como exemplo destes ataques
pode-se destacar os realizados com a utilizao de Botnets e os ataques de ltimo dia,
detalhados a seguir.
66
31.3.2.1. Botnets
De acordo com Rajab et al., em [35], Botnet uma rede de computadores comprometi-
dos controlados remotamente por um operador humano chamado de botmaster. Um bot
uma aplicao residente em um n integrante de uma Botnet com capacidade de se
autopropagar infectando outros hosts vulnerveis.
Botnets so plataformas de computao distribuda predominantemente usadas
para atividades ilegais com o objetivo de lanamentos de ataques de negao de ser-
vio distribudo (DDoS - Distributed Denial of Service), envio de spam, trojan e e-mails
phishing, distribuio ilegal de mdias e softwares piratas, roubo de informaes e de
recursos computacionais, realizao de fraudes e falsidade de identidade [7].
31.3.2.2. Ataques de ltimo Dia
Um ataque de ltimo dia, do ingls Zero-day Attack ou 0-Day Attack, tambm conhecido
como ataque de dia zero ou zero hora, aproveita vulnerabilidades que atualmente no tem
uma soluo ou ainda no so conhecidas [33] [37]. Normalmente, descoberto um bug
ou um problema em um software depois que ele foi liberado, sendo ento em seguida
oferecida uma correo destinada ao problema original. Um ataque de ltimo dia vai
aproveitar esse problema antes da correo ser criada. Na maioria dos casos, esse tipo
de ataque vai tirar proveito de um problema no conhecido pelos criadores do software e
seus usurios.
importante ressaltar que nem todos os ataques de ltimo dia realmente acon-
tecem antes dos produtores de software estarem cientes da vulnerabilidade. Em alguns
casos eles conhecem a vulnerabilidade, mas o desenvolvimento da correo pode deman-
dar um tempo elevado, em frente a complexidade do problema enfrentado. Neste sentido,
proteo de ltimo dia a capacidade de um sistema de segurana fornecer proteo con-
tra ataques de ltimo dia.
31.4. Segurana Autonmica em Redes de Computadores
Os sistemas de proteo das redes atuais esto baseados no paradigma da computao
interativa, ou seja, ca a cargo dos administradores humanos decidirem o que fazer e
como proteger os sistemas no caso de ocorrncias de ataques maliciosos ou erros em
cascata imprevistos [3]. Os sistemas que incorporam mais de uma fase para proteo de
rede, objetivando aumentar ainda mais o nvel de segurana, so mais complexos. Isso se
deve ao fato de possuirem mais componentes para atenderem os requisitos de cada fase.
Essa complexidade necessita de uma constante interveno humana especializada para a
correta utilizao do sistema.
Dessa maneira, interessante a utilizao de mecanismos autonmicos para auto-
matizar os processos de gerncia. A aplicao dos conceitos da CA segurana de redes
introduz no sistema a capacidade de autosegurana, atravs da qual servios e funes de
gerenciamento da segurana so executados sem a necessidade de um gerente humano, a
partir da denio de objetivos e parmetros iniciais fornecidos por seus administradores.
67
possvel destacar tambm que para tentar propror solues aos problemas des-
critos anteriormente (Seo 1.3.2), a arquitetura de sistemas autonmicos pode ser apli-
cada para o desenvolvimento de software voltado para defesa e segurana. O modelo
MAPE-K (Seo 1.2.2.1) oferece uma viso conceitual de como sistemas autonmicos
podem ser desenvolvidos para atender necessidades de segurana.
Sensores podem ser qualquer programa que verique ocorrncias de trfego ma-
licioso, independente de qual fase de proteo seja, coletando informaes relevantes da
rede para serem enviadas aos monitores. Exemplo de dados coletados podem ser, por
exemplo, o trfego destinado a honeypots, alertas de IDS, logs de rewall, etc. Os moni-
tores iro receber essas informaes e trat-las a m de extrair o que vem a ser relevante,
por exemplo, o endereo ip de origem do intruso, o protocolo utilizado pelo servio no
qual foi realizado o ataque, horrio/data da intruso, etc.
Os monitores enviaro as informaes necessrias para os componentes de anlise
e planejamento, que as utilizaro para seu processamento. Como se sabe, geralmente as
fases de anlise e planejamento so implementadas em um nico componente. O pro-
cessamento realizado por esse componente varia de acordo com a estratgia autonmica
adotada pelo administrador que inseriu os objetivos para o sistema. Um exemplo de pro-
cessamento utilizando ECA rules pode ser visto na Figura 3.5. Neste exemplo, na ocor-
rncia de um alerta de IDS (IDSAlert), se o IP de origem que gerou o alerta no estiver na
lista negra do rewall (BlackList !Contains SrcIpAddr), ser adicionado (Add SrcIpAddr
in BlackList).
on IDSAlert if BlackList !Contains SrcIpAddr do Add SrcIpAddr in BlackList;
Figura 13.5. Exemplo de recongurao.
A base de conhecimento pode ser utilizada pelo componente de anlise e plane-
jamento na adoo de estratgias para, por exemplo, no realizar aes anteriormente j
feitas. Na Figura 3.5 no sero adicionados endereos IP na lista negra que j estiverem
contidos. O componente de anlise e planejamento ter como sada um plano de ao a
ser executado pelo componente executor, que na Figura 3.5 a adio do endereo IP de
origem que gerou o alerta na lista negra.
Oexecutor ir aplicar as aes no elemento gerenciado atravs dos atuadores. Atu-
adores so responsveis por fazerem alteraes de congurao no elemento gerenciado,
ou seja, em alguma aplicao de segurana da rede. O objetivo em realizar as mudanas
nas conguraes aumentar o nvel de segurana. No exemplo da Figura 3.5 o atuador
ir interagir diretamente com a aplicao responsbel pela lista negra, o rewall.
Almda arquitetura de sistemas oferecida pela CA, visando o estado emque se en-
contram os atuais sistemas de segurana e tambm o crescimento e evoluo dos ataques
s redes de computadores, possvel relacionar a necessidade que este tipo de sistema
tem pelas propriedades dos sistemas autonmicos, destacando as propriedades de auto-
proteo (self-protecting), autocura (self-healing), autocongurao (self-conguring) e
autoaprendizagem (self-learning) [30], como visto a seguir.
68
Autoproteo: Refere-se propriedade do sistema de defender-se de ataques aci-
dentais ou maliciosos. Para tanto, o sistema deve ter conhecimento sobre potenciais
ameaas, bem como prov mecanismos para trat-las [5]. Para atingir essa proprie-
dade o sistema deve ter habilidade para antecipar, detectar, identicar e proteger o
elemento gerenciado contra ameaas;
Autocura: Responsvel por identicar e corrigir erros ou falhas. No contexto da
segurana de redes, o sistema autonmico deve ser capaz de detectar, diagnosticar
e consertar problemas resultantes de ataques a ativos de produo da rede. Uti-
lizando conhecimento sobre a congurao dos recursos da rede, o sistema deve
possuir um componente de diagnstico que deve analisar informaes que mostram
a ocorrncia de falhas ou danos causados por um ataque rede, para posteriormente
buscar uma soluo a ser tomada, aplic-la e depois testar se foi satisfatria. Essa
soluo poder ser, por exemplo, a substituio dinmica de recursos por suas rpli-
cas. importante ressaltar que o processo de cura deve ser realizado com mxima
transparncia para usurios legtimos da rede;
Autocongurao: Nesta propriedade fornecido a capacidade para os sistemas se
congurarem e recongurarem automaticamente de acordo com polticas de neg-
cio fornecidas por seus administradores, os quais denem o que deve ser feito e no
como fazer [5]. A m de automatizar o gerenciamento de congurao, um sistema
de segurana deve possuir capacidade de recongurao dinmica com o mnimo
de interveno humana;
Autoaprendizagem: Propriedade que fornece capacidade de aprendizado a partir
de dados sensoriados e tambm atravs de experincias e resultados obtidos em
aes anteriores. Propriedade fundamental para sistemas de segurana, visto que
ela oferece a capacidade para o sistema aprender a se defender de ataques antes
desconhecidos, ou, pelo menos, reconhecer trfego malicioso na rede para poste-
rior defesa. Um exemplo pode ser visto no trabalho desenvolvido em [32] (Seo
1.4.1.5), no qual atualizado a base de assinaturas de um IDS quando so desco-
bertos novos ataques.
Mesmo diante de vrias qualidades oferecidas pela CA, aplic-la s redes de com-
putadores e sua segurana no um processo trivial, h desaos a serem enfrentados para
alcanar o autogerenciamento. Segundo Agoulmine et al., em [1], o desao simpli-
car as tarefas de gerncia para o administrador, automatizando o processo de deciso.
Questes de segurana outro desao para o desenvolvimento de sistemas autonmicos,
visto que o emprego de autoaprendizagem e autoevoluo poder ocasionar a perda do
domnio humano sob a gerncia das decises tomadas pelo prprio sistema, havendo a
possibillidade de desvio dos objetivos iniciais inseridos. Com isso, no processo de de-
senvolvimento de software autonmico a fase de validao deve ser aplicada de maneira
rigorosa.
31.4.1. Sistemas de Segurana baseados em Computao Autonmica
Para dar uma viso com mais alto grau de realismo, sero vistos alguns trabalhos que
utilizam a CA como base para o desenvolvimento de suas propostas ou implementam
69
alguma das propriedades oferecidas pela CA. Inicialmente ser mostrado exemplos de
sistemas que tem fundamentao na CA ou que fornecem algumas propriedades da CA.
31.4.1.1. ISDS
Em [40] foi desenvolvido o ISDS (Intelligent Security Defensive Software), um modelo
de software de segurana baseado em CA. A estratgia do ISDS fazer o processo de
construo do software de segurana fornecendo a ele inteligncia. Em outras palavras,
construir um software utilizando o modelo ISDS fazer com que seus componentes se
modiquem dinamicamente de acordo com a situao de segurana atual da rede. Para
isto, o ISDS fornece conscincia do contexto.
O ISDS um modelo de sistema de defesa distribudo caracterizado por ser ex-
vel e autoadaptativo. Os domnios nos quais ele pode ser aplicado so principalmente no
gerenciamento de segurana em redes locais e na gerncia de segurana da informao na
Internet. A ideia do modelo que o sistema possa analisar as informaes do ambiente
e ajustar sua estrutura e maneira de agir dinamicamente. Ele consiste de alguns compo-
nentes bsicos, so eles: componente de comando, componente de execuo, componente
sensor, componente de polticas, componente de equipamento e outros auxiliares como
visto na Figura 3.6.
Figura 13.6. Framework conceitual do ISDS [40].
O componente de comando a principal parte do ISDS, tendo como funes: a
ativao dos componentes de polticas, sensor e equipamento, a execuo da tomada de
decio baseada no componente sensor, o gerenciamento do conjunto de componentes de
segurana e poltica, atualizao de novos componentes de segurana e polticas, veri-
cando e resolvendo conitos de polticas. J o componente de execuo trabalha como um
canal de comunicao entre as entidades de segurana e o componente de comando. Ele
se encarrega de ltrar, tratar e transmitir a mensagem para todos os outros componentes,
os fazendo trabalharem corretamente.
70
O componente de polticas se encarrega principalmente em fazer a manuteno do
conjunto de polticas, a tomada de deciso das polticas adequadas e tambm a passagem
do resultado da deciso. As informaes do resultado das decises tomadas sero pas-
sadas para o componente de equipamento que ento ir executar alguma ao. Por m,
o componente sensor coleta informaes do ambiente e as envia para o componente de
comando, levando em considerao o custo do sensoriamento de dois modos: emergncia
e timing, sendo o primeiro com maior prioridade em relao ao segundo.
31.4.1.2. Autonomic Security and Self-Protection based on Feature-Recognition with
Virtual Neurons
No trabalho desenvolvido em [6] foi apresentado um mecanismo de segurana auton-
mico baseado em neurnios virtuais e no reconhecimento de caractersticas. Sua abor-
dagem trabalha para detectar automaticamente vrios problemas de segurana que atual-
mente so difceis de realizar defesa. Atravs de simulao e diferentes estudos de caso,
resultados mostram que esta soluo vivel.
Os neurnios virtuais so desenvolvidos de forma anloga aos neurnios dos ani-
mais, como visto na Figura 3.7. A ideia que eles sejam distribudos de maneira a perce-
ber modicaes no ambiente e reagir a estmulos. Esse neurnio virtual na realidade
um simples software com capacidade de cincia de contexto, a m de analisar informa-
es do contexto e estar ciente de eventuais surgimentos de ataques.
Figura 13.7. Neurnio Virtual [6].
No neurnio virtual, o componente Information Collector captura vrias infor-
maes de contexto, tais como uso de memria e processador, status dos processos e
informaes de trfego da rede. So considerados vizinhos os neurnios que se conectam
diretamente, atravs do Neighbor Communicator. Existe um outro componente chamado
de Feature Recognizer, seu funcionamento baseado no conhecimento sobre infomaes
que caracterizam um ataque (baseado em assinaturas). Essas informaes so passados
para o Feature Recognizer pelo Information Collector do prprio neurnio e dos seus vi-
zinhos, atravs do Neighbor Communicator. Os neurnios virtuais podem ser facilmente
distribudos, pois o pacote de instalao compacto (tamanho pequeno), eles exigem
poucos recursos computacionais e so de fcil instalao nos hosts.
71
Esses neurnios virtuais so distribudos em uma arquitetura hierrquica e Par-a-
par (P2P - Peer-to-peer), como visto na Figura 3.8. A estrutura P2P opera baseada nas
relaes com neurnios vizinhos, tendo a comunicao entre eles atravs de passagem de
mensagens. Aarquitetura hierrquica utilizada para aumentar a ecincia na propagao
das mensagens por grupo de neurnios, chamados de clulas. Emcada clula umneurnio
eleito como neurnio-chefe, o algoritmo de eleio leva em considerao os recursos
computacionais e velocidade de comunicao do host.
Figura 13.8. Estrutura de organizao hierarquica e P2P dos neurnios virtuais [6].
Na organizao hierrquica, um neurnio-chefe eleito como o chefe de alto nvel
para outros neurnios-chefes. Este procedimento repetido at existir umnico neurnio-
chefe de maior nvel sobre os demais. Se ocorrer alguma falha em algum neurnio-chefe
de uma clula, um outro neurnio desta mesma clula ir assumir o papel de neurnio-
chefe, atravs de uma nova eleio. Nessa organizao hierrquica as mensagens so
entregues de maneira mais eciente.
O mecanismo de segurana empregado por este sistema distribudo feito na de-
teco de mensagens com dados ou mensagens ilegais. Primeiramente as origens dos
ataques so rastreadas para identicar e localizar o atacante. Depois o trfego ilegal ori-
ginado por ele bloqueado, ou seja, todos os neurnios iro receber mensagens para
descartarem trfego que tenha como origem um usurio malicioso identicado. A recon-
gurao de recursos feita neste momento para realizao da defesa pelo sistema. Para
realizar a deteco e posterior defesa foi desenvolvido um mecanismo (caracterstica ou
assinatura) para cada tipo de ataque, dentre esses: Eavesdropping, Replay, Masquerading,
Spoong e Negao de Servio (DoS - Denial of Service).
31.4.1.3. Self-Conguration of Network Security
Este trababalho [4] apresenta uma abordagem de autocongurao para controlar e ge-
renciar os mecanismos de segurana em redes de grande porte. Nela o sistema automati-
camente congura os mecanismos de segurana e modica as conguraes dos recursos
e suas polticas em tempo de execuo. Para mostrar sua viabilidade foi implementado
o AND (Autonomic Network Defense System). AND um sistema que pode detectar
ataques de rede conhecidos ou desconhecidos (ataques de ltimo dia) e proativamente
prevenir ou minimizar impactos causados em servios da rede.
72
O AND foi desenvolvido sobre o framework AUTONOMIA [13], sendo uma ex-
tenso focada em estratgias e mecanismos para detectar e proteger-se de ataques de rede.
O AUTONOMIA possui dois mdulos de software, so eles: Component Management In-
terface (CMI) e Component Runtime Manager (CRM). O CMI utilizado para especicar
as conguraes e polticas associadas com cada componente (de hardware ou software).
E o CRM que gerencia as operaes dos componentes usando as polticas denidas no
CMI. Mais detalhes sobre o framework AUTONOMIA podem serem vistos em [14].
As principais extenses do AND so os mdulos de Monitoramento Online (On-
line Monitoring), Seleo de Caracterstica (Feature Selection), Anlise de Anomalia
(Anomaly Analysis) e o de Ao (Action Module), como visto na Figura 3.9. poss-
vel observar que essa arquiteura baseada no MAPE-K.
Figura 13.9. Arquitetura do AND [4].
O monitoramento online coleta os dados trafegados na rede e operaes realiza-
das em computadores atravs de ferramentas especcas e arquivos de log gerados por
sistemas operacionais. O modelo de seleo de caracterstica ir ltrar os dados moni-
torados a m de encontrar informaes ou caractersticas relevantes para serem passadas
para o mdulo seguinte. No mdulo de anlise de anomalias executada uma funo
para quanticar se existe um desvio do perl padro da rede ou de algum sistema, caso
haja, considerado uma anomalia e o mdulo de ao ir executar aes adequadas. O
mdulo de ao ir, resumidamente, restringir o acesso aos recursos atacados e poste-
riosmente tentar desinstalar cdigos maliciosos que esto executando em computadores
comprometidos da rede.
31.4.1.4. Qualidade de Proteo
Trabalho iniciado em [10] teve como resultado um novo termo em [12] chamado de Qua-
lidade de Proteo (QoP - Quality-of-Protection). Ele um framework proativo para
defesa de redes que pode ser integrado com os j existentes protocolos de Qualidade de
Servio (QoS - Quality-of-Service). O objetivo prov servios diferenciados para uxos
de trfegos de acordo com seu grau de anormalidade.
Para isso foi criado uma nova mtrica chamada de Distncia de Anormalidade
(DA), como visto na Figura 3.10, que pode ser usada para classicar o trfego em nor-
mal, incerto (trfego suspeito) e anormal (trfego malicioso). Existe uma funo Delta
73
que mostra o quanto mais prximo o trfego est de normal ou anormal, podendo ser
classicado ento como provavelmente normal ou provavelmente anormal.
Figura 13.10. Distncia de Anormalidade [10].
A ideia que a mtrica AD seja usada em conjunto com protocolos de QoS para
aumentar a prioridade de trfegos considerados normais e diminuir a prioridade de tr-
fegos anormais. Testes foram realizados com ataques de DDoS e propagao de Worms.
Com isso foi possvel demonstrar o quanto a abordagem proposta pode detectar e reduzir
o impacto causado pelos ataques.
31.4.1.5. Propriedades de Computao Autonmica em Sistemas de Segurana
Alguns trabalhos se cacterizam por fornecer alguma(s) das propriedades autonmicas de
maneira isolada, mesmo no tendo como base a CA. Ou seja, foram desenvolvidos sem
seguir os conceitos da CA, mas provem algum mecanismo que se qualica dentre alguma
das propriedades autonmicas. Sistemas como estes no so considerados autonmicos.
Foi desenvolvido em [39] um esquema de segurana para atualizao de regras
de rewall baseado no trfego de uma honeynet (autocongurao e autoaprendizagem).
Para [38] honeynets so mltiplos honeypots juntamente com um rewall para limitao
e log de trfego. No esquema h um mdulo de anlise de dados que oportunamente
descobre novos ataques. Este mdulo analisa o trfego gerado pelos logs da honeynet e
com a utilizao de minerao de dados ele cria dinamicamente novas regras de rewall
passando-as para o mdulo de aprendizagem de regras, que as ltra eliminando incoe-
rncias entre as regras e, por m, ele as aplica. Dessa maneira o rewall continua enri-
quecendo suas estratgias melhorando sua capacidade para se defender de novos ataques,
inclusive ataques de ltimo dia.
A ferramenta Honeycomb [21] tem como objetivo automatizar a gerao de as-
sinaturas de ataques para sistemas de deteco de intruso a partir de logs gerados por
honeypots (autoaprendizagem). Na verdade esta ferramenta trata-se de um plugin a ser
utilizado junto ao honeyd [34], que um framework de honeypots de baixa interatividade
[38]. A implementao do Honeycomb gera assinaturas no formato Bro [29] e Snort [36].
Sua inteno ser utilizado para criar as assinaturas de ataques em tempo de execuo
74
(autocongurao), atividade que normalmente realizada manualmente por especialistas
de segurana aps o registro das atividades maliciosas nos logs.
No caso do SweetBait [32], foi desenvolvido um sistema automatizado de prote-
o que utiliza honeypots de baixa e alta interatividade para reconhecer e capturar trfego
malicioso. Com base nos logs gerados, aps descartar padres da lista branca, ele auto-
maticamente cria assinaturas de ataques (autoaprendizagem), componente implementado
utilizando o Honeycomb. Para prov um baixo tempo de resposta ao ataque ele distribui
imediatamente assinaturas para IDSs (autocongurao), aps sua gerao. Paralela-
mente a isto, as assinaturas so renadas continuamente a m de aumentar sua preciso
e diminuir falsos positivos (auto-otimizao). Este trabalho extendido e surge ento o
Argos [33] que emprega uma caracterstica mais ampla, a propriedade de autoproteo,
por reagir proativamente contra ataques.
31.5. Concluso
Em 2001 a IBM produziu um manifesto no qual alertou a diculdade de gerenciamento
dos sistemas computacionais atuais e apontou a autonomia dos sistemas como a alter-
nativa para a soluo deste problema. Neste captulo foi apresentado a denio e as
principais caractersticas de uma nova abordagem para o desenvolvimento de sistemas
que provem autonomia, a Computao Autonmica. Na qual envolve uma mudana no
modo de projetar sistemas computacionais.
A ideia por traz dessa abordagem desenvolver software autogerencivel, tendo
pouca ou nenhuma interveno humana para manter-se, baseado apenas em polticas de
alto nvel denidas pelo supervisor e no conhecimento adquirido ao longo do tempo.
Uma srie de propriedades autonmicas so utilizadas por esta abordagem para diminuir
ou eliminar a interveno humana sob a gerncia dos sistemas computacionais, tais como:
autocura, autoproteo, auto-otimizao, autoaprendizagem, autocongurao, etc. Neste
sentido ser colocado sob responsabilidade das prprias mquinas a tarefa de gerencia-
mento.
Foi mostrado tambm neste captulo que as redes de computadores so cenrios
onde a CA pode ser facilmente aplicada, principalmente pelo crescimento resultante da
Internet. Em particular, apresentou-se a aplicabilidade de CA em um ambiente bem espe-
cco, a gerncia da segurana de redes. Para isto foi explicitado a necessidade da segu-
rana de redes por mecanismos autonmicos e maneiras de como possvel implement-
los. Trabalhos j realizados dentro da temtica foram descritos a m de oferecer uma
viso mais prtica.
Finalizando, pesquisas mostram que a direo correta para as aplicaes de segu-
rana a adoo de integrao e inteligncia, ento isso mostra que os recursos fornecidos
pela CA o caminho mais vivel para solucionar problemas existentes nas redes de com-
putadores e de maneira mais especca, como visto, na segurana destas.
Agradecimento: O desenvolvimento deste trabalho foi viabilizado pelo apoio
nanceiro concedido pela Fundao de Amparo Pesquisa e ao Desenvolvimento Cien-
tco e Tecnolgico do Maranho (FAPEMA).
75
Referncias
[1] Agoulmine, N., Balasubramaniam, S., Botvich, D., Strassner, J., Lehtihet, E. e Don-
nelly, W. (2006), Challenges for Autonomic Network Management, In 1st IEEE
International Workshop on Modelling Autonomic Communications Environments -
MACE.
[2] Atay, S. e Masera, M. (2009), Challenges for the security analysis of Next Genera-
tion Networks, In Proceedings of the Sixth International Conference on Broadband
Communications, Networks, and Systems - BROADNETS.
[3] Braga, T. R. M., Silva, F. A., Ruiz, L. B., and ao, H. P. A. (2006), Redes Au-
tonmicas, In XXIV Simpsio Brasileiro de Redes de Computadores e Sistemas
Distribudos - SBRC, Sociedade Brasileira de Computao (SBC).
[4] Chen, H., Al-Nashif, Youssif B., Qu, G. e Hariri, S. (2007), Self-Conguration of
Network Security, In Proceedings of the 11th IEEE International Enterprise Distri-
buted Object Computing Conference, p. 97-108.
[5] Corra, S. e Cerqueira, R. (2009), Computao Autnoma: Conceitos, Infra-
estruturas e Solues em Sistemas Distribudos, In XXVII Simpsio Brasileiro de
Redes de Computadores e Sistemas Distribudos - SBRC, Sociedade Brasileira de
Computao (SBC).
[6] Dai, Y., Hinchey, M., Qi, M. e Zou, X. (2006), Autonomic Security and Self-
Protection based on Feature-Recognition with Virtual Neurons, In Proceedings
of the 2nd IEEE International Symposium on Dependable, Autonomic and Secure
Computing.
[7] Feily, M., Shahrestani, A. e Ramadass, S. (2009), A Survey of Botnet and Botnet
Detection, In Third International Conference on Emerging Security Information,
Systems and Technologies.
[8] Gonalves, J. F. (2010), Introduo Computao Autonmica e sua Aplicao em
Ambientes Computacionais Distribudos, Graduate thesis, Universidade Federal do
Maranho, Bacharelado em Cincia da Computao.
[9] Goodloe, A. e Pike, L. (2010), Monitoring distributed real-time systems: A survey
and future directions, NASA Langley Research Center.
[10] Guangzhi Qu, Hariri, S., Jangiti, S., Rudraraju, J., Seungchan Oh, Fayssal, S.,
Guangsen Z. e Parashar, M. (2004), Online Monitoring and Analysis for Self-
Protection against Network Attacks, In Proceedings of the International Conference
on Autonomic Computing, p. 324-325.
[11] Hallsteinsen, S. (2010), Madam-theory of adaptation, Technical report, SINTEF
ICT.
[12] Hariri, S., Guangzhi Qu, Modukuri, R., Chen, H. e Yousif, M. (2005), Quality-of-
Protection (QoP) - An Online Monitoring and Self-Protection Mechanism, IEEE
Journal on Selected Areas in Communications, v. 23, n. 10, p. 1983-1993.
76
[13] Hariri, S., Khargharia, B., Chen, H., Yang, J., Zhang, Y., Parashar, M. e Liu, H.
(2006), The autonomic computing paradigm, Cluster Computing, Springer, v. 9,
p. 5-17.
[14] Hariri S., Xue L., Chen, H., Zhang, M., Pavuluri, S. e Rao, S. (2003), AUTONO-
MIA: an autonomic computing environment, In Proceedings of the IEEE Internati-
onal Performance, Computing, and Communications Conference, p. 61-68.
[15] Hongli, Z. e Qassrawi, Mahmound T. (2010), Deception Methodology in Virtual
Honeypots, In Second International Conference on Networks Security, Wireless
Communications and Trusted Computing, Wuhan, China, p. 462-467.
[16] Huebscher, Markus C. e McCann, Julie A. (2008), A survey of autonomic compu-
ting - degrees, models, and applications, ACM Computing Surveys, v. 40, n. 3.
[17] IBM (2003), An architectural blueprint for autonomic computing, IBM Press
Prentice-Hall.
[18] Kabiri, P. e Ghorbani, Ali A. (2005), Research on Intrusion Detection and Res-
ponse: A Survey, International Journal of Network Security, v. 2, n. 1, p. 84-102.
[19] Kephart, J.O. e Chess, D.M. (2003), The Vision of autonomic computing, Com-
puter, IEEE Computer Society, p. 41-50.
[20] Krause, M. and Tipton, H. F. (1999), Handbook of Information Security Manage-
ment, Auerbach Publications, http://www.cccure.org/Documents/HISM/.
[21] Kreibich, C. e Crowcroft, J. (2004), Honeycomb - Creating Intrusion Detection Sig-
natures Using Honeypots, SIGCOMM Computer Communication Review, ACM,
v. 34, ed. 1.
[22] Lger, M., Ledoux, T. e Coupaye, T. (2007), Reliable dynamic recongurations in
the fractal component model, In Proceedings of the 6th international workshop on
adaptive and reective middleware: held at the ACM/IFIP/USENIX International
Middleware Conference - ARM, New York, NY, USA, p. 1-6.
[23] Mansouri-samani, M. (1995), Monitoring of Distributed Systems, PhD thesis,
University of London, Imperial College of Science, Technology and Medicine.
[24] McKinley, P. K., Sadjadi, S. M., Kasten, E. P. e Cheng, B. H. C. (2004), Composing
adaptive software, IEEE Computer Society, p. 56-64.
[25] Murch, R. (2004), Autonomic computing, IBM Press Prentice-Hall.
[26] Palma, N. D., Laumay, D. P. e Bellissard, L. (2001), Ensuring dynamic recon-
guration consistency, In 6th International Workshop on Component-Oriented Pro-
gramming - WCOP, p. 18-24.
[27] Parashar, M. e Hariri, S. (2005), Autonomic computing: An overview, Unconven-
tional Programming Paradigms, Springer Verlag, p. 247-259.
77
[28] Parashar, M. e Hariri, S. (2007), Autonomic computing: concepts, infrastructure,
and applications, CRC Press.
[29] Paxson, V. (1999), Bro: A System for Detecting Network Intruders in Real-Time,
Computer Networks, v. 31, n. 23-24, p. 2435-2463.
[30] Poslad, S. (2009), Autonomous Systems and Articial Life, Ubiquitous Compu-
ting: Smart Devices, Environments and Interactions, John Wiley & Sons, Ltd., p.
317-341.
[31] Pilli, E. S., Joshi, R.C. e Niyogi, R. (2010), Network forensic frameworks: Survey
and research challenges, Digital Investigation, Elsevier, p. 1-14.
[32] Portokalidis, G. e Bos, H. (2007), SweetBait: Zero-hour worm detection and con-
tainment using low- and high-interaction honeypots, Computer Networks, Elsevier,
v. 51, ed. 5, p. 1256-1274.
[33] Portokalidis, G., Slowinska, A. e Bos, H. (2006), Argos: an Emulator for Finger-
printing Zero-Day Attacks for advertised honeypots with automatic signature gene-
ration, In Proceedings of the EuroSys, p. 15-27.
[34] Provos, N. (2004), A virtual honeypot framework, In Proceedings of the 13th con-
ference on USENIX Security Symposium, v. 13, Berkeley, CA, USA.
[35] Rajab, M., Zarfoss, J., Monrose, F. e Terzis, A. (2006), A multifaceted approach to
understanding the botnet phenomenon, In Proceedings of the 6th ACM SIGCOMM
Conference on Internet Measurement - IMC, p. 41-52.
[36] Roesch, M. (1999), Snort: Lightweight Intrusion Detection for Networks, In Pro-
ceedings of the 13th Conference on Systems Administration, p. 229-238.
[37] Song, J., Kwon, Y. e Takakura, H. (2008), A Generalized Feature Extraction
Scheme to Detect 0-Day Attacks via IDS Alerts, In International Symposium on
Applications and the Internet - SAINT, Turku, Finlndia.
[38] Spitzner, L. (2002), Honeypots: Denitions and Value of Honeypots, SANS An-
nual Conference.
[39] Wang, B., Zhu, P., Wen, Q. e Yu, X. (2009), A Honeynet-based Firewall Scheme
with Initiative Security Strategies, In International Symposium on Computer
Network and Multimedia Technology - CNMT, p. 1-4.
[40] Wang, K., Wang, J., Shen, L. e Han, Z. (2010), An Intelligent Security Defensive
Software Scheme and Realization, In Third International Symposium on Intelligent
Information Technology and Security Informatics - IITSI, p. 793-796.
[41] Zseby, T. Pfeffer, H. e Steglich, S. (2009), Concepts for Self-Protection, Autono-
mic Computing and Networking, Springer Science, p. 355-380.
78
Captulo
4
Linked Data: da Web de Documentos para a
Web de Dados
Danusa R. B. Cunha, Bernadette F. Lscio, Damires Souza
Abstract
The term Linked Data refers to a set of best practices for publishing and connecting
structured data on the Web with the purpose of creating a Web of Data. Recently, a
significant number of datasets have been published adhering to the Linked Data
principles and numerous efforts are underway to build applications for exploit this
Web of Data. In this context, during this course, we present the fundamental
concepts of Linked Data, as well as the theoretical basis of how to publish and to
consume data available on the Web of Data. We also present some applications for
visualization and consume of Linked Data and we discuss the main difficulties and
challenges in this research area.
Resumo
O termo Linked Data refere-se a um conjunto de prticas para publicar e conectar
dados estruturados na Web, com o intuito de criar uma Web de Dados.
Recentemente, um grande volume de dados denidos de acordo com o padro Linked
Data tem sido publicado, com isso, muitos esforos esto sendo feitos para construir
aplicaes com o objetivo de facilitar a explorao de tais dados. Neste cenrio, este
minicurso apresenta os conceitos relacionados ao termo Linked Data, bem como
prov aos participantes um embasamento prtico de como publicar e consumir
dados na Web de Dados. Alm disso, so apresentadas as aplicaes usadas para
visualizao e consumo dos dados Linked Data e, por fim, discute as principais
dificuldades e desafios nessa rea de pesquisa.
79
4.1 Introduo
A Internet contempornea, nos moldes da World Wide Web, vive um constante
processo de evoluo e tem revolucionado a forma como criamos contedo e
trocamos informaes. A Web organiza as informaes disponveis na Internet por
meio de hipertexto e torna a interao do usurio com a rede mundial mais amigvel.
Com isso, possibilita um ambiente de compartilhamento de documentos oriundos de
diversas reas do conhecimento. Entretanto, tais contedos geralmente seguem regras
apenas sintticas, com objetivos de apresentao, no permitindo que se consiga
facilmente extrair semntica dos mesmos, sem que para isso seja feito um grande
esforo de implementao. Considerando isso, a Web atual pode ser classificada
como sinttica e o processo de interpretao dos contedos disponibilizados fica
geralmente a cargo dos usurios [Costa & Yamate 2009].
Em sua maior parte, os dados na Web ainda so organizados para serem lidos
ou compreendidos por humanos e no por agentes de software. Para que um agente
de software possa entender e interpretar um dado, necessrio processar a semntica
envolvida naquele dado, num determinado contexto. Neste escopo, semntica diz
respeito atribuio de significado a elementos, dados ou expresses que precisam
ser interpretados numa dada situao [Souza 2009]. No cenrio da Web, isso
representa atribuir significado aos dados interligando-os com outros conjuntos de
dados ou outros domnios de conhecimento, conseguindo, assim, criar uma relao
de significncia entre os contedos publicados na Internet de modo que seja
perceptvel tanto pelo usurio quanto pelos agentes de software. Essa nova viso da
Web vem sendo denominada de Web Semntica (Semantic Web) [Lee et al. 2001].
A Web Semntica considerada uma extenso da Web atual cujo objetivo
principal facilitar a interpretao e integrao dos dados na Web. Como parte do
desenvolvimento da Web Semntica, surgiu o conceito de Linked Data (dados
ligados) que pode ser definido como um conjunto de boas prticas para publicar e
conectar conjuntos de dados estruturados na Web, com o intuito de criar uma Web
de Dados [Bizer et al. 2009]. Estas prticas so fundamentadas em tecnologias
Web, como HTTP (Hypertext Transfer Protocol) e URI (Uniform Resource
Identier), com o objetivo de permitir a leitura dos dados conectados
semanticamente, de forma automtica, por agentes de software. A Web de Dados
cria inmeras oportunidades para a integrao semntica de dados, motivando o
desenvolvimento de novos tipos de aplicaes e ferramentas, como navegadores e
motores de busca.
Este captulo apresenta os conceitos bsicos para publicao e consumo de
dados na Web de acordo com os padres de Linked Data e est organizado como
segue. A seo 2 traa um paralelo entre a Web clssica e a Web de Dados. A Seo
3 apresenta uma viso geral sobre o tema Linked Data, introduzindo os princpios
que regem esse conjunto de prticas. Alm disso, so explicados os seguintes
aspectos: (i) a nomeao de recursos atravs de URIs; (ii) como possvel utilizar
URIs para prover navegao entre os recursos; (iii) como disponibilizar os dados
atravs do modelo RDF, mostrando os benefcios oriundos desse modelo e (iv) como
links entre os recursos so criados e identificados. A Seo 4 discute os aspectos
bsicos que devem ser considerados para a publicao de dados segundo os
80
princpios do Linked Data. Para tal, aborda questes de formatao e estruturao de
dados e, por fim, apresenta um conjunto de padres e diretrizes a serem seguidos
com o intuito de tornar possvel a publicao e interligao dos dados. A Seo 5
apresenta exemplos de aplicaes existentes e, finalmente, a Seo 6 tece
consideraes sobre o tema exposto, apontando benefcios de seu uso e dificuldades
ainda existentes.
4.2. Web de Documentos versus Web de Dados
Para um melhor entendimento sobre a Web de Dados, pode-se estabelecer um
paralelo entre a Web de Documentos (a Web atual) e a Web de Dados. A primeira
faz uso de navegadores HTML (HyperText Markup Language) para acessar dados na
enquanto que na segunda os dados so acessados a partir de navegadores RDF. Na
Web de Documentos hiperlinks so usados para navegar entre as pginas, enquanto
que na Web de Dados os links RDF so usados para acessar dados de diversas fontes.
A Web de Documentos baseada em um conjunto de padres, incluindo:
um mecanismo de identicao global e nico, as URIs; um mecanismo de acesso
universal, o HTTP e um formato padro para representao de contedo, o HTML.
De modo semelhante, a Web de Dados tem por base alguns padres, como: o
mesmo mecanismo de identicao e acesso universal usado na Web de
documentos (as URIs e o HTTP); um modelo padro para representao de dados,
o RDF e uma linguagem de consulta para acesso aos dados, a linguagem SPARQL.
A seguir esses padres so apresentados.
URIs Uniform Resource Identiers
URI uma cadeia de caracteres compacta usada para identificar ou denominar um
recurso na Internet, onde um recurso pode ser um documento html, uma figura ou
uma pessoa. O principal propsito desta identificao permitir a interao com
representaes do recurso atravs de uma rede, tipicamente a Web, usando
protocolos especficos. Uma URI pode ser classificado como um localizador URL
(Uniform Resource Locator) ou um nome URN (Uniform Resource Name), ou
ainda como ambos. O URN define a identidade de um item, enquanto que o URL
nos d um mtodo para encontr-lo. Tecnicamente URL e URN funcionam como
IDs de recursos, no entanto, muitos conjuntos no podem ser categorizados como
somente um ou outro, por que todas as URIs podem ser tratados como nomes, e
alguns conjuntos integram aspectos de ambas ou de nenhuma das categorias.
No contexto Linked Data, URIs so usadas para identicar objetos e
conceitos, permitindo que eles sejam dereferenciados para obteno de informaes
a seu respeito. Assim, o dereferenciamento de uma URI resulta em uma descrio
RDF do recurso identicado. Por exemplo, a URI
http://www.w3.org/People/Berners-Lee/card#i identica o pesquisador Tim
Bernes-Lee.
HTTP HyperText Transfer Protocol
HTTP um protocolo de aplicao responsvel pelo tratamento de pedidos e
respostas entre cliente e servidor na Web. Ele surgiu da necessidade de distribuir
informaes pela Internet e, para que essa distribuio fosse possvel, foi
81
necessrio criar uma forma padronizada de comunicao entre os clientes e os
servidores da Web. Com isso, o protocolo HTTP passou a ser utilizado para a
comunicao entre computadores na Internet e a especificar como seriam realizadas
as transaes entre clientes e servidores, atravs do uso de regras bsicas.
O HTTP utiliza o modelo cliente-servidor, como a maioria dos protocolos
de rede, baseando-se no paradigma de requisio e resposta. Um programa
requisitante (cliente) estabelece uma conexo com um outro programa receptor
(servidor) e envia-lhe uma requisio, contendo a URI, a verso do protocolo, uma
mensagem contendo os modificadores da requisio, informaes sobre o cliente e,
possivelmente, o contedo no corpo da mensagem. O servidor responde com uma
linha de status (status line) incluindo sua verso de protocolo e com os cdigos de
erro informando se a operao foi bem sucedida ou no, seguido pelas informaes
do servidor, informaes da entidade e possvel contedo no corpo da mensagem.
Aps o envio da resposta pelo servidor, encerra-se a conexo estabelecida.
RDF Resource Description Framework
A utilizao de um modelo padro para representao de dados, como o RDF, torna
possvel a implementao de aplicaes genricas capazes de operar sobre o espao
de dados global [Heath & Bizer 2011]. O modelo RDF baseado no conceito de
grafo, extensvel e possue um alto nvel de expressividade, facilitando, dessa
forma, a interligao entre dados de diferentes fontes.
Em RDF, um recurso pode estar relacionado com dados ou com outros
recursos atravs das sentenas, as quais so estruturadas no formato sujeito +
predicado + objeto, onde:
Sujeito: Tem como valor o recurso sobre o qual se quer escrever uma sentena.
Todo recurso deve ser capaz de ser identificado unicamente.
Predicado: Especifica um relacionamento entre um sujeito e um objeto. O
predicado especificado por meio de propriedades, que so relaes binrias
geralmente nomeadas por um verbo e permitem relacionar um recurso a dados ou
a outros recursos. Uma propriedade tambm um recurso e, portanto, deve ter um
identificador nico.
Objeto: Denomina o recurso ou dado que se relaciona com o sujeito. O valor de
um objeto pode ser um recurso ou um literal, que pode ser um valor numrico ou
uma cadeia de caracteres.
A Figura 4.1 mostra alguns exemplos de triplas RDF.
Figura 4.1. Triplas RDF.
82
As triplas representadas na Figura 4.1 contm informaes sobre dois recursos.
A primeira tripla informa que o recurso p91002043177 possui nome Berna Farias.
A segunda tripla descreve um segundo recurso CK120, cujo nome Banco de
Dados I. A terceira tripla descreve um relacionamento entre os dois recursos criados
atravs do predicado EnsinadoPor. Cada tripla faz parte da Web de Dados e pode
ser usada como ponto de partida para explorar esse espao de dados. Triplas de
diferentes fontes podem ser facilmente combinadas para formar um nico grafo.
Alm disso, possvel usar termos de diferentes vocabulrios para representar os
dados. O modelo RDF ainda permite a representao de dados em diferentes nveis
de estruturao, sendo possvel representar desde dados semiestruturados a dados
altamente estruturados.
SPARQL
Assim como os sistemas de bancos de dados relacionais fazem uso do SQL para
consultar registros nas suas bases de dados, SPARQL a linguagem de consulta
padro recomendada pelo W3C para recuperao de informaes contidas em
grafos RDF. Apesar de existirem outras linguagens de consulta (SeRQL, RQL,
etc..) mais antigas, maduras e com maior poder de expressividade que o SPARQL,
estas ou foram projetadas para se trabalhar em um domnio especfico ou so
interpretadas apenas por algumas poucas ferramentas, o que acaba resultando em
uma baixa interoperabilidade.
Semelhante ao SQL, o SPARQL possui uma estrutura Select-From-Where
onde:
Select: Especifica uma projeo sobre os dados como a ordem e a quantidade de
atributos e/ou instncias que sero retornados.
From: Declara as fontes que sero consultadas. Esta clusula opcional.
Quando no especificada, assumimos que a busca ser feita em um documento
RDF/RDFS particular.
Where: Impes restries na consulta. Os registros retornados pela consulta
devero satisfazer as restries impostas por esta clusula.
O resultado de uma consulta SPARQL pode ser encarado como um subgrafo
resultante da execuo da consulta sobre o grafo que representa o modelo.
Considere por exemplo o grafo apresentado na Figura 4.2 extrado de [Allemang &
Hendler 2008].
83
Figura 4.2. Representao das instncias de um domnio
O grafo da Figura 4.2 representa a relao entre as instncias de uma
ontologia cujo domnio focado na descrio e formalizao de escritores. O
subgrafo destacado em negrito pode ser encarado, por exemplo, como o resultado
de uma consulta que retorna o escritor que escreveu o livro King Lear e casado
com AnneHathaway.
4.3. Princpios Linked Data
O termo Linked Data refere-se ao conjunto de melhores prticas para a publicao
de dados estruturados na Web. Essas prticas foram introduzidas por Tim Berners-
Lee em [Lee et al 2006] e resumem-se em quatro princpios bsicos:
1.Usar URIs como nome para recursos.
2.Usar URIs HTTP para que as pessoas possam encontrar esses nomes.
3.Quando algum procura por uma URI, garantir que informaes teis
possam ser obtidas por meio dessa URI, as quais devem estar representadas no
formato RDF.
4.Incluir links para outras URIs de forma que outros recursos possam ser
descobertos.
O primeiro princpio defende o uso de referncias URI para identificar, no
apenas documentos Web e contedos digitais, mas tambm objetos do mundo real e
conceitos abstratos.
84
O segundo princpio defende o uso de URIs HTTP para identificar os objetos
e os conceitos abstratos definidos pelo princpio 1, possibilitando essas URIs serem
dereferenciveis sobre um protocolo HTTP. Neste contexto, dereferenciar o
processo de recuperar uma representao de um recurso identificado por uma URI,
onde um recurso pode ter vrias representaes como documentos HTML, RDF,
XML entre outros.
A fim de permitir que uma ampla gama de aplicaes diferentes possam
processar dados disponveis na Web, importante que exista um acordo sobre o
formato padro para disponibilizao dos dados. O terceiro princpio Linked Data
defende o uso de RDF como modelo para a publicao de dados estruturados na Web
[Klyne et al. 2004]. Com o RDF, possvel descrever significado sobre recursos,
habilitando agentes de software a explorar os dados de forma automtica, muitas
vezes, agregando, interpretando ou mesclando dados.
O quarto princpio diz respeito ao uso de hiperlinks para conectar no apenas
os documentos da Web, mas qualquer tipo de recurso. Por exemplo, uma ligao
pode ser fixada entre uma pessoa e um lugar, ou entre um local e uma empresa. Em
contraste com a Web clssica onde os hiperlinks so em grande parte no tipados,
hiperlinks que conectam os recursos em um contexto de Linked Data so capazes de
descrever a relao entre eles. Hyperlinks no contexto de Linked Data so chamados
de links RDF, a fim de distingui-los dos hiperlinks existentes na Web convencional
[Heath & Bizer 2011].
O exemplo mais visvel da adoo e aplicao dos princpios Linked Data
tem sido o projeto Linking Open Data
1
fundado em janeiro de 2007 e apoiado pelo
W3C Semantic Web Education and Outreach Group
2
. O objetivo principal desse
projeto identificar conjuntos de dados disponveis sob licenas abertas e convert-
los para RDF de acordo com os princpios Linked Data.
Os participantes nas fases iniciais do projeto foram os pesquisadores e
desenvolvedores de laboratrios universitrios e empresas de pequeno porte. Desde
ento, o projeto tem crescido consideravelmente, conseguindo um envolvimento
significativo de grandes organizaes como a BBC
3
. Este crescimento possvel
graas natureza aberta do projeto, onde qualquer um pode participar, sendo
necessrio apenas publicar um conjunto de dados de acordo com os princpios Linked
Data e interlig-lo aos conjuntos de dados j existentes. Na Figura 4.3 podem-se
observar os diversos conjuntos de dados publicados no contexto do projeto Linking
Open Data.
1
http://www.w3.org/wiki/SweoIG/TaskForces/CommunityProjects/LinkingOpenData
2
http://www.w3.org/2001/sw/sweo/
3
http://www.bbc.co.uk/
85
Figura 4.3. Viso geral de conjuntos de dados publicados e seus relacionamentos em Setembro de
2011.
No grafo da Figura 4.3, cada n representa um conjunto de dados publicado
seguindo os princpios Linked Data, os quais esto interligados com outros
conjuntos de dados na nuvem. O tamanho de cada n corresponde ao nmero de
triplas RDF do conjunto de dados. As setas indicam a existncia de pelo menos 50
ligaes entre dois conjuntos, podendo ser unidirecionais, indicando que um certo
conjunto contem triplas RDF de um outro conjunto, ou bidirecionais, indicando que
ambos os conjuntos contem triplas RDF um do outro.
O contedo da nuvem possui natureza diversa, incluindo dados sobre
localizaes geogrficas, empresas, livros, publicaes cientficas, filmes, msica,
televiso e rdio, ensaios clnicos, comunidades online, dados estatsticos entre
outros [Heath & Bizer 2011].
4.4. Diretrizes para Publicao de dados em Linked Data
De acordo com [Heath & Bizer 2011], a adoo das melhores prticas de publicao
de dados ligados facilita a descoberta de informaes relevantes para a integrao de
dados entre diferentes fontes. A seguir so apresentados alguns passos para publicar
dados na Web de Dados, como definido em [Heath & Bizer 2011].
4.4.1. Criao de URIs adequadas
Como mencionado anteriormente, recursos so nomeados a partir de URIs. Dessa
forma, ao publicar dados Linked Data preciso fazer um esforo para criar boas
URIs para identificao dos recursos. Para isso, devem ser feitas algumas
consideraes, incluindo:
Usar URIs HTTP para tudo, tornando-as passveis de serem dereferenciadas.
Evitar URIs com detalhes de implementao ou do ambiente em que esto
publicadas. Por exemplo, a URI http://www.lia.ufc.br:8080/~danusarbc
86
/index.php um exemplo do que deve ser evitado, pois possui detalhes da porta
8080 usada em seu ambiente de publicao e do script implementado em PHP
necessrio para sua execuo.
Manter as URIs estveis e persistentes, pois a alterao das URIs pode levar
quebra de links j estabelecidos, criando um problema para a localizao de
recursos. Para evitar esse tipo de alterao, recomenda-se um planejamento das
URIs que sero usadas e tambm que o responsvel pela publicao detenha a
propriedade do espao de nomes
Muitas vezes ser preciso usar algum tipo de chave primria dentro das URIs,
para se certificar de que cada uma delas nica. Se possvel, usar uma chave que
significativa dentro do domnio para o qual est sendo criada a URI. Por
exemplo, quando se trata de livros, pode-se usar o ISBN como identificador
nico.
Essas so apenas algumas caractersticas desejveis para serem consideradas
quando se for criar uma URI. Maiores detalhes podem ser encontrados no tutorial
Cool URIs for the Semantic Web
4
disponibilizado pela W3C.
4.4.2. Usar URIs dereferenciveis
Qualquer URI HTTP deve ser capaz de ser dereferenciada, o que significa que
clientes HTTP podem procurar por uma URI usando um protocolo HTTP e recuperar
uma descrio do recurso que identificado pela URI.
A recuperao da representao mais adequada para o usurio feita por
meio da negociao de contedo. Assim, clientes HTTP enviam, por meio dos
cabealhos HTTP (Get, Head, Post, Put, Delete, Trace, Options, Connection), o
pedido para indicar qual tipo de contedo deseja obter. Aps isso, ao receber uma
requisio, o servidor analisa o cabealho e seleciona a resposta adequada. H duas
estratgias para fazer URIs serem dereferenciveis: 303 URI e Hash URI.
303 URI : 303 um cdigo de status de redirecionamento no qual o servidor pode dar
a localizao de um documento que contm informaes sobre um recurso. Por
exemplo, a Figura 4.4 mostra como ocorre o dereferenciamento quando um usurio
deseja obter informaes sobre a cidade de Berlin da fonte DBpedia
5
. Primeiramente,
em 1, especicado que o contedo desejado no formato RDF/XML atravs do
comando Accept: text/html;q=0.5, application/rdf+xml. Aps isso, em 2, o servidor
enviar para o cliente uma URI http://dbpedia.org/data/Berlin, mostrando a
localizao exata do contedo requerido e o cdigo 303 See Other, indicando que a
requisio ser redirecionada para essa URI. Com essa URI em mos, em 3, o cliente
reenvia sua solicitao e, por fim, em 4, recebe do servidor um arquivo RFD com o
contedo conforme solicitado.
4
http://www.w3.org/TR/cooluris/
5
http://dbpedia.org/
87
Figura 4.4. Dereferenciamento de URI utilizando a estratgia 303 URI .
Hash URI : Nessa estratgia, a URI contm um fragmento, uma parte especial que
separada do resto da URI pelo smbolo #. Quando um cliente deseja recuperar uma
hash URI, ele remove tudo que vem aps o smbolo # e envia o restante da URI para
o servidor. Como resposta, o cliente recebe um documento completo com o contedo
solicitado. Para um melhor entendimento, a Figura 4.5 mostra como ocorre o
dereferenciamento utilizando Hash URI para o seguinte exemplo: suponha um
arquivo que contm um vocabulrio definido para uma empresa fictcia chamada
Small and Medium-sized Enterprises representado pela seguinte URI:
http://biglynx.co.uk/vocab/sme. As seguintes URIs foram criados para identificar
termos distintos que podem ser encontrados no documentos previamente criado:
http://biglynx.co.uk/vocab/sme#Small MediumEnterprise e
http://biglynx.co.uk/vocab/sme#Team. Para dereferenciar qualquer uma dessas duas
URIs, o cliente remover o fragmento especial (#Team por exemplo) e ento enviar
sua requisio para o servidor, especicando que o contedo desejado no formato
RDF/XML atravs do comando Accept: application/rdf+xml conforme visto em 1.
Em seguida, o servidor retornar como resposta, em 2, um documento contendo todo
o contedo expresso em http://biglynx.co.uk/vocab/sme.
88
Figura 4.5. Dereferenciamento de URI utilizando a estratgia Hash URI .
4.4.3. Criao de links RDF
De modo a permitir a navegao entre as fontes de dados, devem ser criados links
para outras fontes, seja de forma manual ou automatizada. Links no contexto de
Linked Data fazem referncia aos de links RDF. Links RDF podem ser classificados
em dois tipos: links RDF internos e externos. O link RDF interno conecta recursos
dentro de uma nica fonte de dados Linked Data. Links externos conectam recursos
os quais so provenientes de diferentes fontes de dados Linked Data. No caso de
links externos, as URIs referentes ao sujeito e predicado do link pertencem a
diferentes namespaces (os quais so URIs que referenciam o esquema do qual o
elemento faz parte). Links externos so cruciais para a Web dos Dados visto que eles
permitem juntar as fontes de dados dispersas em um espao global de dados [Heath
& Bizer 2011].
A Figura 4.6 apresenta dois exemplos de links RDF. O primeiro exemplo
interliga o perl FOAF
6
do pesquisador Tim Berners-Lee localizado em um arquivo
RDF ao recurso que o identica na fonte de dados do DBLP
7
. No segundo exemplo,
o recurso que identica Tim Berners-Lee na fonte DBpedia
8
tambm ligado ao
recurso na fonte DBLP que o identica. A propriedade
http://www.w3.org/2002/07/owl#sameAs dene que os recursos interligados
representam a mesma entidade do mundo real.
Sujeito: http://www.w3.org/People/Berners-Lee/card#i
6
http://www.foaf-project.org/
7
http://www.informatik.uni-trier.de/~ley/db/
8
http://dbpedia.org/About
89
Predicado: http://www.w3.org/2002/07/owl\#sameAs
Objeto: http://www4.wiwiss.fu-berlin.de/dblp/resource/person/100007
Sujeito: http://dbpedia.org/resource/Tim\_Berners-Lee
Predicado: http://www.w3.org/2002/07/owl\#sameAs
Objeto: http://www4.wiwiss.fu-berlin.de/dblp/resource/person/100007
Figura 4.6. Exemplos de Links RDF.
Ao se criar links RDF preciso estabelecer relaes entre os termos dos
vocabulrios entre as fontes que esto sendo interligadas. Embora no haja restries
para seleo de vocabulrios, considerada uma boa prtica o reuso de termos de
vocabulrios RDF amplamente usados para facilitar o processamento de dados
ligados pelas aplicaes clientes. Novos termos s devem ser denidos se no forem
encontrados em vocabulrios j existentes. Alguns vocabulrios bastante conhecidos
so: Friend-of-a-Friend (FOAF), Semantically-Interlinked Online Communities
9
(SIOC), Simple Knowledge Organization System
10
(SKOS), Description of a
Project
11
(DOAP), Creative Commons
12
(CC) e Dublin Core
13
(DC). Propriedades
como: owl:equivalentClass, owl:equivalentProperty, rdfs:subClassOf,
rdfs:subPropertyOf podem ser usadas para estabelecer equivalncias entre os termos
dos vocabulrios citados. Maiores detalhes sobre as linguagens OWL e RDFS podem
ser encontrados em [Filho & Lscio 2009].
4.4.4. Explicitar formas de acesso adicional aos dados
Para acessar os dados das fontes Linked Data preciso realizar consultas SPARQL
sobre as fontes. Para enviar consultas e recuperar resultados atravs da linguagem
SPARQL usado o protocolo SPARQL
14
. Fontes Linked Data tipicamente fornecem
um SPARQL endpoint que um servio Web com suporte ao protocolo SPARQL.
Esse servio possui uma URI especca para receber requisies HTTP com
consultas SPARQL e retornar os resultados dessas consultas em diferentes formatos
como XML, JSON
15
, texto, RDF/XML, NTriples
16
, Turtle
17
ou N3
18
e HTML
[Magalhes et al 2011]. O framework Jena
19
disponibiliza duas implementaes de
SPARQL endpoints: o Joseki
20
e o Fuseki
21
. Ambos suportam o protocolo e a
linguagem SPARQL, permitem a realizao de consultas sobre arquivos RDF e RDF
9
http://sioc-project.org/
10
http://www.w3.org/2009/08/skos-reference/skos.html
11
http://trac.usefulinc.com/doap
12
http://creativecommons.org/
13
http://dublincore.org/
14
http://www.w3.org/TR/rdf-sparql-query/
15
http://www.json.org/
16
http://www.w3.org/2001/sw/RDFCore/ntriples/
17
http://www.w3.org/TR/turtle/
18
http://www.w3.org/TeamSubmission/n3/
19
http://incubator.apache.org/jena/
20
http://www.joseki.org/
21
http://openjena.org/wiki/Fuseki
90
Triple Stores, e implementam SPARQL Update
22
(linguagem para atualizar RDF
store). A diferena principal entre eles que o Fuseki mais simples de congurar e
usar, alm de j possuir a RDF Store Jena TDB
23
embutida. No entanto o Fuseki
um projeto mais recente, iniciado em 2011, que ainda possui limitaes quanto ao
gerenciamento de mltiplas fontes de dados e tambm quanto ao uso de mecanismos
de segurana prprios [Magalhes et al 2011].
4.4.5.Padres para Publicar Dados Linked Data
Para a publicao de dados RDF podem ser usadas ferramentas especficas de
converso de planilhas, arquivos CSV, arquivos XML, dados relacionais e outros
documentos para o formato RDF como, por exemplo, a ferramenta ConvertToRDF
24
.
Aps a gerao do arquivo em formato RDF, os dados podem ser carregados em um
banco de dados que armazena as triplas RDF, chamado de RDF Store. A publicao
de dados de uma RDF Store, seguindo os princpios Linked Data, tipicamente
envolve a disponibilizao de uma interface para acesso ao dados Linked Data e de
um SPARQL endpoint para acesso aos dados. Uma vantagem de se converter dados
para o formato RDF a melhoria de desempenho que pode ser obtida ao usar formas
de armazenamento especicamente otimizadas para realizar a persistncia de triplas
RDF. No entanto, o armazenamento das triplas requer espao extra em relao aos
dados originais. Alm disso, a converso demanda um certo tempo para ser realizada
e os dados em RDF podem car desatualizados em relao aos dados originais.
Um outra forma de acessar dados que no esto no modelo RDF consiste em
fornecer uma viso RDF. Isso feito atravs de um RDF Wrapper. Nesse caso, a
converso realizada por um RDF Wrapper por meio de mapeamentos estabelecidos
entre o modelo nativo e o modelo RDF, devendo haver um wrapper especfico para
cada tipo de modelo. Um RDF Wrapper tambm pode prover uma viso RDF para
dados que precisam ser acessados atravs de uma Web API. Criar uma viso RDF
tende a ter um desempenho inferior converso de dados para RDF devido s
tradues dinmicas entre os modelos que deve ser realizada a cada uso da viso
RDF. No entanto, o uso de RDF Wrappers traz algumas vantagens, pois como o
acesso ocorre sobre os dados originais, a viso RDF no requer espao de
armazenamento extra e no corre o risco de apresentar dados desatualizados.
Um exemplo comum de utilizao de vises RDF a publicao de dados
armazenados em banco de dados relacionais. O RDB-to-RDF
25
Wrappers uma
soluo que cria vises RDF a partir de mapeamentos entre as estruturas relacionais e
os grafos RDF. A plataforma D2RQ
26
um exemplo de RDB-to-RDF Wrappers, que
fornece toda a infraestrutura necessria para acessar bancos de dados relacionais
como grafos RDF virtuais. Esta plataforma possui os seguintes componentes:
Linguagem de mapeamento D2RQ uma linguagem declarativa para descrever
as correspondncias entre o modelo relacional e o modelo RDF. Os mapeamentos
escritos em D2RQ so documentos RDF.
22
http://www.w3.org/Submission/SPARQL-Update/
23
http://openjena.org/TDB/
24
http://www.w3.org/wiki/ConverterToRdf
25
http://www.w3.org/TR/r2rml/
26
http://www4.wiwiss.fu-berlin.de/bizer/d2rq/spec/
91
Mecanismo D2RQ um plug-in para os frameworks Jena e Sesame que usa os
mapeamentos escritos na linguagem D2RQ para converter chamadas s APIs
desses frameworks em consultas SQL ao banco de dados para obteno dos
resultados.
Servidor D2R
27
um servidor HTTP que usa o mecanismo D2RQ para prover
uma interface Linked Data e um SPARQL endpoint sobre o banco de dados
relacional [Bizer & Cyganiak 2006].
Alm do D2R, duas outras ferramentas destacam-se como RDB-to-RDF
Wrappers: o Virtuoso RDF Views [Erling & Mikhailov 2006] e o Triplify [Auer et al.
2009]. Este ltimo um plugin para aplicaes Web que permite mapear os
resultados de consultas SQL em RDF e JSON. Depois disso, os dados podem ser
compartilhados e acessados na Web de dados.
Aps gerar os dados no modelo RDF, necessrio verificar se o resultado
est de acordo com os princpios Linked Data. Essa verificao pode ser feita atravs
de ferramentas de validao como, por exemplo, Sindice Web Data Inspector
28
,
Eyeball
29
e W3C Validation Service
30
.
A prxima seo apresentar uma srie de aplicaes Web que vem sendo
desenvolvidas para consumir os dados publicados nos padres Linked Data.
4.5. Consumo de dados ligados
Nos ltimos trs anos, um nmero significativo de dados vem sendo disponibilizado
de acordo com os princpios Linked Data. Como resultado, uma srie de aplicaes
Web esto sendo desenvolvidas para explorar a Web de Dados. Segundo [Bizer et al
2009], essas aplicaes podem ser classificadas em trs categorias: browsers,
motores de buscas e aplicaes para domnios especficos. Essa seo examinar
cada uma dessas categorias.
4.5.1. Browsers Linked Data
Assim como os tradicionais browsers da Web clssica permitem aos usurios
navegarem por pginas HTML, os browsers Linked Data permitem aos usurios
navegar por fontes de dados seguindo os links expressos nas triplas RDF. Por meio
destes browsers possvel percorrer os links RDF, explorando e descobrindo novas
informaes na Web. A seguir, sero apresentados alguns exemplos de browsers
usados para acessar dados ligados.
Tabulator
31
permite ao usurio percorrer a Web de Dados e expor parte dos
dados de uma forma controlada, onde o usurio pode dividir a informao por
tpicos. Os resultados das consultas podem ser analisados atravs de vrios mtodos,
que vo desde a apresentao de dados de maneira convencional at a apresentao
por meio de mapas. A utilizao do modo de explorao inicia a partir da submisso
de uma URI. Depois disso, o Tabulator obtm informaes sobre o recurso e as
27
http://www4.wiwiss.fu-berlin.de/bizer/d2r-server/
28
http://inspector.sindice.com/
29
http://jena.sourceforge.net/Eyeball/
30
http://www.w3.org/RDF/Validator/
31
http://www.w3.org/2005/ajar/tab
92
exibe como um grafo RDF em uma viso de rvore. A expanso de um n permite a
obteno de mais informaes sobre ele. Para passar ao modo de anlise, o usurio
pode selecionar predicados para denir um padro e requisitar que o Tabulator
encontre todos os exemplos daquele padro. Os resultados podem ser exibidos
atravs das vises de tabela, mapas, calendrios ou linhas de tempo. Pode-se iniciar
uma nova explorao pela seleo de um detalhe de uma das vises. O Tabulator
pode ser usado como um complemento do navegador Firefox ou como uma aplicao
Web que atualmente compatvel apenas com o Firefox [Lee et al. 2006].
Marbles
32
um aplicativo do lado do servidor que formata o contedo da
Web Semntica para clientes XHTML. Pontos coloridos so usados para
correlacionar a origem dos dados apresentados com as fontes de dados de onde foram
encontrados. Os dados so recuperados de mltiplas fontes e integrados em um nico
grafo que mantido atravs das sesses do usurio. Alm de dereferenciar a URI,
Marbles consulta os mecanismos de busca Sindice e Falcons em busca de fontes que
contenham informaes sobre o recurso referenciado pela URI dada como entrada
para a busca. Alm disso, os predicados owl:sameAs e rdfs:seeAlso so seguidos para
obteno de informaes adicionais sobre o recurso. A Figura 4.7 apresenta
como o Marbles disponibiliza os dados para o usurio aps uma consulta. Os pontos
coloridos indicam as fontes de dados que forneceram os dados para o usurio. Dessa
forma, o usurio pode clicar sobre as fontes e encontrar mais informaes para a sua
busca.
Figura 4.7. Visualizao de Informaes sobre recursos do Browser Marbles.
32
http://marbles.sourceforge.net/
93
Disco Hiperdata Browser
33
uma aplicao Web usada como navegador
simples para visualizar informaes sobre um recurso por meio de uma pgina
HTML. Para iniciar a navegao, o usurio digita a URI do recurso em uma caixa de
texto e pressiona o boto Go. A partir da, o browser recupera as informaes
sobre o recurso e as exibe em uma tabela contendo propriedades, valores e as fontes
das quais os dados foram recuperados. Os links exibidos permitem a navegao entre
os recursos, de modo que ao selecionar um novo recurso, o navegador
dinamicamente recupera informaes sobre ele atravs do dereferenciamento de sua
URI. medida que a navegao feita, Disco armazena os grafos RDF recuperados
em um cache de sesso. Ao clicar sobre o link Display all RDF graphs, uma nova
janela aberta contendo a lista dos grafos RDF recuperados e das URIs que no
foram dereferenciadas com sucesso. Disco pode ser usado de forma online ou
executado localmente.
Alm das aplicaes descritas acima, destacam-se: Dipper
34
, Piggy Bank
35
,
URI Burner
36
, LinkSailor
37
e Graphite RDF Browser
38
como browsers simples e
rpidos para obter detalhes sobre uma determinada URI aps dereferenci-la.
4.5.2. Motores de Busca Linked Data
Um grande nmero de motores de busca tem sido desenvolvido para rastrear dados
no padro Linked Dados. Esses mecanismos de busca permitem localizar recursos de
diferentes fontes por meio de palavras-chave. A consulta pode ser realizada pelo
usurio atravs de uma interface Web ou atravs de servios Web oferecidos pelos
mecanismos de busca. A seguir so apresentados alguns dos motores de busca mais
utilizados.
Falcons permite tanto uma busca por palavras-chave, como oferece ao
usurio a opo de buscar objetos, conceitos e documentos, possibilitando uma
apresentao dos resultados um pouco diferente dos demais motores de busca. A
busca por objeto adequado para a busca por pessoas, lugares e outros itens
considerados concretos, enquanto que a busca por conceito orientada para a
localizao de classes e propriedades em ontologias publicadas na Web. O recurso de
pesquisa por documento segue uma abordagem mais tradicional, onde os resultados
apontam para documentos RDF que contm os termos de pesquisa especificados
[Cheg & Qu 2011].
Sindice
39
coleta dados estruturados na Web (RDF, RDFa e microformatos) e
os indexa por URIs, propriedades funcionais inversas (IFPs) e palavras-chave,
oferecendo uma interface Web para que os usurios possam fazer buscas a partir dos
itens indexados. Sindice tambm fornece um SPARQL endpoint que permite a
realizao de consultas sobre todos os seus dados e uma API que permite a utilizao
33
http://www4.wiwiss.fu-berlin.de/rdf_browser/
34
http://api.talis.com/stores/iand-dev1/items/dipper.html
35
http://simile.mit.edu
36
http://linkeddata.uriburner.com
37
http://linksailor.com/
38
http://graphite.ecs.soton.ac.uk/browser/
39
http://sindice.com/
94
de seus servios por outras aplicaes [Oren et al 2008]. Na Figura 4.8 pode-se
observar como o motor de busca Sindice apresenta o resultado de uma consulta ao
usurio.
Figura 4.8. Resultado mostrado pelo Sindice sobre a pesquisadora Bernadette Farias Lscio.
Sig.ma
40
busca dados estruturados a partir de uma palavra-chave e os exibe
em uma nica pgina, integrando os dados de mltiplas fontes. A viso criada pelo
Sig.ma baseia-se em resultados fornecidos pelo Sindice. O usurio pode aprovar,
rejeitar ou acrescentar fontes para estabelecer uma viso dos dados relevantes. Ao
selecionar uma entidade da lista de resultados, uma nova viso apresentada ao
usurio. Um link permanente pode ser criado para futuros acessos ou
compartilhamento dessa viso. Os filtros aplicados nas fontes pelos usurios ajudam
a classicar melhor a relevncia das fontes e aperfeioar a qualidade dos resultados
futuros. Alm da interface Web do usurio, Sig.ma ainda fornece uma API destinada
aos desenvolvedores de aplicaes. A Figura 4. 9 ilustra o resultado de uma consulta
sobre a pesquisadora Damires Yluska envolvendo trs fontes nas quais ela
referenciada.
40
http://sig.ma/
95
Figura 4.9. Viso criada pelo Sig.ma sobre a pesquisadora Damires Yluska.
Watson
41
e Swoogle
42
so mecanismos de busca mais voltados para a
descoberta de informaes sobre ontologias. Podem ser usados, por exemplo, para
obter ontologias que possuem determinados conceitos e descobrir relacionamentos
entre termos. Yahoo e Google tambm deram incio ao uso de Linked Data. Yahoo
prov acesso aos dados atravs da BOSS API
43
, enquanto o Google usa os dados para
a Social Graph API
44
.
4.5.3. Aplicaes para Domnios Especficos
Enquanto os browsers Linked Data e motores de busca descritos anteriormente
fornecem funcionalidades muito genricas, uma srie de servios, chamadas de
Linked Data Mashups, foram desenvolvidos com o objetivo de prover
funcionalidades mais especficas e de acordo com determinados domnios de dados.
A seguir descreveremos algumas dessas aplicaes [Lee et al 2006].
Revyu
45
uma aplicao Web para crtica e classicao de qualquer item
passvel de avaliao. Revyu tambm disponibiliza uma API e um SPARQL endpoint
para serem usados pelos desenvolvedores de aplicaes.
DBpedia Mobile
46
uma aplicao cliente para dispositivos mveis
consistindo de uma viso com um mapa e do navegador Linked Data Marbles.
Baseado na localizao geogrca de um dispositivo mvel, a aplicao exibe um
mapa indicando localizaes prximas a partir de dados extrados das fontes
DBpedia, Revyu e Flickr. O acesso ao Flickr realizado atravs de um Wrapper. O
usurio pode explorar informaes sobre essas localizaes e navegar em conjuntos
de dados interligados. Tambm possvel a publicao de informaes como Linked
Data, de modo que possam ser usadas por outras aplicaes [Becker & Bizer 2008].
Talis Aspire
47
uma aplicao Web voltada para que alunos e professores e
possam encontrar os principais recursos educacionais em universidades do Reino
41
http://watson.kmi.open.ac.uk/WatsonWUI/
42
http://swoogle.umbc.edu/
43
http://developer.yahoo.com/search/boss/boss_api_guide/
44
http://code.google.com/intl/pt-BR/apis/socialgraph/
45
http://revyu.com/
46
http://beckr.org/DBpediaMobile/
47
http://www.talisaspire.com/
96
Unido. O servio gratuito e prov ferramentas para criar e editar listas de leitura,
alm da produo e publicao de materiais educativos. Quando o usurio publica
contedo, a aplicao cria triplas RDF em uma RDF store. Itens publicados so
interligados de forma transparente a itens correspondentes de outras instituies.
BBC Programmes
48
e BBC Music
49
so projetos desenvolvidos pela BBC
Audio and Music Interactive. A aplicao Web BBC Programmes disponibiliza
informaes detalhadas sobre tipos, sries e episdios de todos os programas de TV e
rdio transmitidos pela BBC. BBC Music fornece informaes sobre artistas,
vinculando-os aos programas da BBC. Assim possvel escolher um artista e obter
todos os episdios de programas relacionados a ele. As aplicaes mencionadas
usam Linked Data como tecnologia de integrao de dados, inclusive fazendo uso de
vocabulrios amplamente conhecidos como DBpedia e MusicBrainz
50
.
LinkedDataBr um projeto brasileiro que visa construir uma infra-estrutura
de suporte criao de repositrios de dados governamentais pblicos utilizando os
padres de Linked Data. A ideia consiste em utilizar e ligar dados governamentais
disponveis na Web, gerados a partir das iniciativas de e-gov e open-government, de
forma a possibilitar a publicao padronizada e o acesso por parte dos cidados e
organizaes [Campos 2010].
4.6. Consideraes Finais
O imenso emaranhado de documentos acessveis na Web composto de dados e
informaes de praticamente todas as reas do conhecimento humano. Contudo,
ainda rdua a tarefa de prover meios eficientes que permitam aproveitar todo esse
contedo, que pode ser composto tanto por dados estruturados, como os dados
provenientes de bancos de dados relacionais, quanto por dados no estruturados,
como textos e dados multimdia. No cenrio da Web atual, o grande volume de
dados e a falta de metadados dificultam o acesso informao til, especfica e
relevante.
Neste contexto, espera-se que o uso dos princpios do Linked Data possibilite
a transformao de uma Web na qual os recursos so documentos HTML para uma
Web de Dados, onde os dados estaro interligados atravs de metadados. O tema
Linked Data traz novos desafios para o desenvolvimento de aplicaes Web de uma
maneira geral, bem como para o gerenciamento da grande nuvem de dados que vem
se formando como resultado da crescente adoo dos princpios do Linked Data.
Tendo em vista a relevncia deste assunto para a comunidade de Computao e o
grande potencial de pesquisa desta rea, Linked Data tem sido o foco de diversas
conferncias internacionais, bem como o foco de estudo de diversos grupos de
pesquisa. Dessa forma, torna-se de fundamental importncia que este tema seja
amplamente abordado e discutido por pesquisadores, alunos e profissionais da rea
de Computao.
48
http://www.bbc.co.uk/programmes
49
http://www.bbc.co.uk/music
50
http://musicbrainz.org/
97
Referncias
[Allemang & Hendler 2008] Allemang, D., Hendler, D. (2008) Semantic Web for the
Working Ontologist, 1
st
edition. Morgan Kaufmann publ., Amsterdam,
Netherlands.
[Auer et al. 2009] Auer, S., Dietzold, S., Lehmann, J., Hellmann, S., and Aumueller,
D. (2009) Triplify: Light-weight linked data publication from relational
databases. In Quemada, J., Len, G., Maarek, Y. S., and Nejdl, W., editors,
Proceedings of the 18th International Conference on World Wide Web, WWW
2009, Madrid, Spain, April 20-24, 2009, pages 621630. ACM.
[Becker & Bizer 2008] Becker, C., Bizer, C. (2008) DBpedia Mobile: A Location-
Enabled Linked Data Browser. In Linked Data on the Web (LDOW2008).
[Bizer & Cyganiak 2006] Bizer, C., Cyganiak, R. (2006) D2R Server Publishing
Relational Databases on the Semantic Web. In 5th International Semantic Web
Conference.
[Bizer et al 2009] Bizer C., Heath T., Berners-Lee T. (2009) Linked data - the story
so far. Int. J. Semantic Web Inf. Syst., 5(3):122, 2009.
[Campos 2010] Campos M. L. (2010) GT-LinkedDataBR Exposio,
compartilhamento e conexo de recursos de dados abertos na Web (Linked Open
Data). Disponvel em http://www.rnp.br/pd/gts2010-2011/gt_linkeddatabr.html
[Cheg & Qu 2011] Cheng, G., Qu, Y. (2011) Searching Linked Objects with
Falcons: Approach, Implementation and Evaluation. International Journal on
Semantic Web and Information Systems, Special Issue on Linked Data.
[Costa & Yamate 2009] Costa A., Yamate F. (2009) Semantic Lattes: uma
ferramenta de consulta baseada em ontologias. Trabalho de Grduao em
Engenharia de Computao - Escola Politcnica. IME/USP.
[Erling & Mikhailov 2006] Erling, O., Mikhailov, I. (2006) Mapping Relational
Data to RDF in Virtuoso. http://virtuoso.openlinksw.com/dataspace/dav/wiki/
Main/VOSSQLRDF.
[Filho & Lscio 2009] Filho, F. W. B. H , Lscio B. F. (2009) Web Semntica:
Conceitos e Tecnologias. In Anais do ERCEMAPI (Escola Regional de
Computao Cear Maranho Piau).
[Freitas 2003] Freitas, F. L. G. (2003) Ontologias e a Web Semntica. XXIII
Congresso da Sociedade Brasileira de Computao. JAI. Campinas, So Paulo,
Junho de 2003.
[Gruber 1995] Gruber T. (1995) Toward principles for the design of ontologies used
for knowledge sharing. 1995. International Journal Human-Computer Studies Vol.
43, Issues 5-6, November 1995, p.907-928.
[Heath & Bizer 2011] Heath, T., Bizer, C. (2011) Linked Data: Evolving the Web
into a Global Data Space (1st edition). Synthesis Lectures on the Semantic Web:
Theory and Technology, 1:1, 1-136. Morgan & Claypool, 2011.
98
[Klyne et al 2004] Klyne, G., Carroll, JJ., McBride., B. (2004) Resource description
framework (RDF): Concepts and abstract syntax. Disponvel em:
http://www.w3.org/TR/rdf-concepts/
[Lee et al 2006] Lee, B. T., Chen, Y., Chilton, L., Connolly, D., Dhanaraj, R., Hol-
lenbach, J., Lerer, A., and Sheets, D. (2006) Tabulator: Exploring and Analyzing
Linked Data on the Semantic Web. In In Procedings of the 3rd International
Semantic Web User Interaction Workshop (SWUI06, page 06.
[Lee et al 2001] Lee, B. T., Hendler J., Lassilia O. (2001) The semantic web.
Scientific American, 284(5):3444, Mai 2001.
http://dx.doi.org/10.1038/scientificamerican0501-34DOI:
10.1038/scientificamerican0501-34
[Magalhes et al 2011] Magalhes, R. P., Macedo, J. A. F., Vidal, V. M. P. (2011)
Linked Data: Construindo um Espao de Dados Global na Web. In Anais do
XXIV Simpsio Brasileiro de Banco de Dados. Outubro de 2011.
[Oren et al 2008] Oren, E., Delbru, R., Catasta, M., Cyganiak, R., Stenzhorn, H., and
Tumma-rello, G. (2008) Sindice.com: a document-oriented lookup index for open
linked data. Int. J.Metadata Semant. Ontologies, 3:3752.
[Souza 2009] Souza D. (2009) Using Semantics to Enhance Query Reformulation in
Dynamic Distributed Environments. PhD Thesis, Federal University of
Pernambuco (UFPE), Recife, PE, Brazil.
99
Captulo
5
Desenvolvimento de Aplicaes para Plataforma
Google Android
Fbio de Jesus Lima Gomes, Manoel Taenan Ferreira de Souza, Rafael
Madureira Lins de Arajo
Abstract
Com a evoluo da tecnologia mvel, os dispositivos mveis tornaram-se uma
importante fonte de transmisso e recepo de informaes, gerando a necessidade de
sistemas operacionais mais robustos e uma considervel demanda para o
desenvolvimento de servios e aplicaes. A plataforma Google Android surgiu para
preencher esta lacuna. Dessa forma, este mini-curso pretende disseminar conceitos
envolvidos no desenvolvimento de servios e aplicaes para a plataforma Google
Android. Tambm ser abordado como aplicaes para dispositivos mveis podem
consumir servios web atravs da arquitetura REST.
Resumo
With the evolution of mobile technology, mobile devices have become an important
source of transmission and reception of information, creating the need for more robust
operating systems and a considerable demand for the development of services and
applications. The Google Android platform was created in order to fill this gap. Thus,
this mini-course aims disseminate concepts about developing services and applications
for the Google Android platform. Also we will describe how mobile applications can
consume web services via REST architecture.
5.1. Introduo
O Google Android OS, tambm chamado apenas de Android, um sistema operacional
de cdigo aberto para dispositivos mveis e utiliza uma verso modificada do Sistema
Operacional Linux. Permite a desenvolvedores criarem aplicaes Java que controlam o
dispositivo atravs de bibliotecas desenvolvidas pela Google. O Android tambm prov
uma infra-estrutura robusta de execuo de aplicaes Java. Apesar de ser recente (seu
100
lanamento foi em 2008), o Android foi adotado rapidamente por diversos fabricantes
de dispositivos mveis e atualmente a plataforma que mais cresce no mundo.
Atualmente, a plataforma Google Android mantida pela OHA (Open Handset
Alliance), um grupo formado por mais de 40 empresas que se uniram para inovar e
acelerar o desenvolvimento de aplicaes e servios para dispositivos mveis, trazendo
aos consumidores uma experincia mais rica em termos de recursos e menos onerosa
financeiramente para o mercado. Pode-se dizer que a plataforma Google Android a
primeira plataforma completa, aberta e livre para dispositivos mveis. O Android SDK
o kit de desenvolvimento que disponibiliza as ferramentas e APIs necessrias para
desenvolver aplicaes para a plataforma Google Android, utilizando a linguagem Java.
Este mini-curso visa abordar conceitos envolvidos sobre desenvolvimento de
aplicaes para a plataforma Google Android, apresentando os principais aspectos do
desenvolvimento de aplicaes para dispositivos mveis, com enfoque para o
desenvolvimento de aplicaes que consomem servios web utilizando a linguagem
Java. Pretende-se capacitar os participantes no desenvolvimento de aplicaes Java para
plataforma Google Android com base no Android SDK e demonstrar a arquitetura
REST (Representational State Transfer) de desenvolvimento de aplicaes web. O
curso procura explorar as funcionalidades dessas tecnologias atravs do
desenvolvimento passo a passo de aplicaes-exemplos.
5.2. Arquitetura do Google Android
Android uma pilha de software para dispositivos mveis que inclui sistema
operacional, middleware e aplicaes-chave. Esta pilha possui 4 nveis (Google, 2011):
Figura 5.1 Arquitetura da Plataforma Google Android (Google, 2011)
101
1. LINUX KERNEL: a base da pilha o kernel. O Google usou a verso 2.6 do Linux
para construir o kernel do Android, que inclui servios essenciais do sistema, tais
como, gerenciamento de memria, gerenciamento de processos, gerenciamento de
energia, configuraes de segurana, configuraes de rede e drivers. O kernel
tambm atua como uma camada de abstrao entre o hardware do dispositivo e os
outros nveis da pilha de software.
2. RUNTIME ANDROID e LIBRARIES: acima do kernel esto as bibliotecas do
Android e o android runtime. Android runtime consiste de um conjunto de
bibliotecas que fornece a maioria das funcionalidades disponveis nas principais
bibliotecas da linguagem de programao Java e de uma Mquina Virtual Dalvik
(DVM). Uma aplicao Android roda em seu prprio processo, com a sua prpria
instncia da mquina virtual Dalvik. Dessa forma, nenhuma aplicao dependente
de outra; se uma aplicao pra, ela no afeta quaisquer outras aplicaes
executando no dispositivo e isso simplifica o gerenciamento de memria. Dalvik
foi escrito de modo que um dispositivo possa executar vrias VMs eficientemente.
Android possui um conjunto de bibliotecas C/C ++ usado por diversos
componentes da plataforma. As principais bibliotecas so listadas abaixo:
System C library uma implementao da biblioteca padro C (libc), derivada
do sistema operacional BSD, alterada para dispositivos embarcados baseados no
Linux;
Media Libraries baseada no OpenCORE da PacketVideo; estas bibliotecas
suportam reproduo e gravao de muitos formatos populares de udio, vdeo e
imagem, tais como, MPEG4, H.264, MP3, AAC, AMR, JPG, e PNG.
Surface Manager gerencia acesso ao sub-sistema de exibio e compe as
camadas grficas 2D e 3D para as aplicaes.
LibWebCore um moderno engine para um navegador web que alimenta o
navegador do Android.
SGL engine de grficos 2D.
3D libraries uma implementao baseada nas APIs OpenGL ES 1.0; estas
bibliotecas usam acelerao de hardware 3D (quando disponvel) ou o software
embutido no sistema.
FreeType renderizador de bitmap e fontes vetorizadas.
SQLite engine leve e poderoso de banco de dados relacional para as aplicaes.
3. APPLICATION FRAMEWORK: O prximo nvel o framework de aplicao que
consiste nos programas que gerenciam as funes bsicas do telefone, tais como,
alocao de recursos, aplicaes de telefone, mudana entre processos ou
programas e informaes sobre a localizao fsica do aparelho. Os
desenvolvedores de aplicaes tm acesso total ao framework de aplicao do
Android. Isso possibilita tirar vantagem das capacidades de processamento e do
suporte de recursos do Android.
102
4. APPLICATIONS: No topo da pilha esto as aplicaes em si. Aqui se encontram as
funes bsicas do dispositivo, como fazer chamadas telefnicas, acessar o
navegador web ou acessar sua lista de contatos. Esta a camada do usurio comum,
que utiliza a interface de usurio. Apenas os programadores do Google, os
desenvolvedores de aplicao e os fabricantes de hardware acessam as camadas
inferiores da pilha. O Android contm um conjunto de aplicativos, implementados
em Java, como um cliente de e-mail, programa para SMS (Short Message Service),
calendrio, mapas, navegador e gerenciador de contatos.
5.3. Componentes de uma aplicao Android
As aplicaes Android podem ser divididas em quatro tipos de componentes bsicos
que so definidos pela prpria arquitetura (ABLESON,2007), so eles:
5.3.1. Activities
Funcionam como mediadores que definem como as informaes sero apresentadas ao
usurio, alm de controlar o fluxo da aplicao. Elas podem interagir com o usurio e
trocar informaes com outras activities ou services (MEIER,2009).
A maioria do cdigo que escreveremos para uma aplicao Android ir executar
no contexto de uma activity. Activities normalmente correspondem a telas: cada activity
mostra uma tela para o usurio. Quando esta no est em execuo, o sistema
operacional pode elimin-la para liberar memria.
5.3.1.1. Ciclo de vida de uma Activity
Ao longo de sua criao at o momento de sua eliminao da memria, uma activity
atravessar seis estados, podemos referenciar cada estado pelos mtodos:
OnCreate
chamado quando a activity criada. Ela obrigatria e chamada apenas uma vez,
deve referenciar a tela que ser apresentada ao usurio.
OnStart
chamado quando a activity est ficando visvel e j tem uma tela definida.
OnResume
chamado quando a activity foi parada temporariamente e est retornando execuo.
OnPause
chamado quando a activity est sendo tirada do topo da execuo. Geralmente
utilizado para salvar o estado da aplicao.
OnStop
chamado quando a activity no est mais visvel e est em segundo plano.
OnDestroy
Executa os ltimos processamentos antes da activity ser literalmente encerrada.
103
Figura 5.2. Ciclo de vida de uma Activity.
5.3.2. Services
So programas que executam em segundo plano. No interagem diretamente com o
usurio e podem ficar executando por tempo indefinido.
5.3.3. Broadcast e Intent Receivers
So componentes que ficam aguardando a ocorrncia de um determinado evento, pode-
se entender como evento a inicializao do sistema operacional, uma chamada de voz, a
chegada de um SMS, um evento disparado por uma aplicao (MEIER,2009).
Intents so elementos chave no Android, porque facilitam a criao de novas
aplicaes a partir de aplicaes j existentes. Precisaremos utilizar Intents para
interagir com outras aplicaes e servios que proporcionaro informaes necessrias
para nossa aplicao.
5.3.4. Content Providers
So os compartilhadores de contedo entre as aplicaes, uma aplicao pode requisitar
informaes de outra, por exemplo, uma aplicao pode receber dados da lista de
contatos que nativa do Android, e com base nesses dados, realizar algum
processamento (LECHETA,2010).
104
5.4. Android SDK e seus pacotes para implementao de aplicaes
O SDK um conjunto de ferramentas utilizadas para desenvolver aplicaes para a
plataforma Android. Possui um emulador para simular o dispositivo mvel e uma API
completa para a linguagem Java, com todas as classes necessrias para desenvolver as
aplicaes (BURNETTE, 2008).
Existem atualmente trs verses do SDK para atender a maior parte dos
desenvolvedores: verso para Windows, Linux e Mac OS.
O ambiente de desenvolvimento que nos utilizaremos nos exemplos seguintes
composto, alm do JDK e Android SDK, pelo Eclipse IDE verso Galileo e o Android
Development Plugin (ADT), um plugin que ajudar na integrao da IDE com o
emulador.
Os componentes do ambiente de desenvolvimento podem ser encontrados nos
links a seguir:
JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html
Android SDK: http://developer.android.com/sdk/
Eclipse IDE: http://www.eclipse.org/downloads/
ADT: http://developer.android.com/sdk/eclipse-adt.html
5.4.1. Conceitos bsicos do Android
5.4.1.1 Criando uma Activity
A classe android.app.activity utilizada para criar uma tela na aplicao. Essa tela
composta de vrios elementos visuais, os quais no Android so representados pela
classe android.view.View (LECHETA, 2010).
A classe android.view.View pode representar algo simples como um boto, um
checkbox ou imagem, como tambm pode representar algo complexo como um
gerenciador de layout, a qual pode conter vrias views aninhadas para organizar na tela.
Figura 5.3. Exemplo de uma Activity.
O mtodo setContentView(view) o que faz a ligao entre a activity e a view e
recebe como parmetro a view que ser exibida na tela.
105
5.4.1.2 A classe R
A classe R criada automaticamente pelo ADT e no pode ser alterada manualmente.
Nela existem constantes para os recursos do projeto. Cada constante nomeada com o
nome do recurso, que deve ser escrito com letra minscula e sem espao, e recebe um
valor inteiro.
5.4.1.3 O arquivo AndroidManifest.xml
Toda aplicao Android deve ter um arquivo AndroidManifest.xml em seu diretrio raiz.
Esse arquivo apresenta informaes essenciais sobre a aplicao para o sistema
operacional, que deve possuir informaes do sistema antes que possa executar qualquer
solicitao do cdigo do aplicativo (MEDNIEKS,2009).
Ele armazena informaes como o nome do pacote da aplicao, descreve os
componentes da aplicao, determina qual processo da aplicao vai armazenar os
componentes, declara de que formas as solicitaes devem ter permisses para acessar
partes protegidas da API e interagir com outras aplicaes. Declara tambm as
permisses que os outros processos sero obrigados a ter, fim de interagir com os
componentes da aplicao, enumera classes e perfis e fornece outras informaes sobre
como a aplicao ser executada, declara qual o nvel mnimo da API que o aplicativo
exige e enumera bibliotecas que estaro relacionadas com a aplicao.
Figura 5.4. Exemplo de arquivo AndroidManifest.xml
5.4.1.4 Criao de uma interface visual
O Android fornece um sofisticado e poderoso modelo, baseado em componentes, para
construir sua interface, baseado no esquema de classes fundamentais:
android.view.View e android.view.ViewGroup, e inclui tambm as suas classes filhas
chamadas de widgets e layouts respectivamente(LECHETA, 2010).
Podemos citar alguns exemplos de widgets como Button, TextView, EditText,
ListView, CheckBox, RadioButton, Gallery, Spinner, e outros.
Podemos citar, tambm, exemplos de layouts como LinearLayout, FrameLayout,
RelativeLayout entre outros.
Para exemplificar a criao da interface visual criaremos uma tela de login, a
qual conter os campos de nome de usurio e senha, e um boto para submet-los.
106
Figura 5.5. Representao grfica da tela de login.
Figura 5.6. Cdigo da tela de login
107
Podemos observar que foram utilizados trs tipos de widgets e um layout. Dois
TextView que so utilizados para renderizar strings na tela e dois EditText que so
caixas para receber texto. Foi utilizado, tambm, um Button para enviar os dados e
um LinearLayout para organiz-los na tela.
Podemos observar, tambm, alguns atributos como o id que serve como
identificador de cada componente, o text que tem o funcionamento semelhante ao value
do HTML e o atributo password que esconde os caracteres digitados no nosso EditText.
5.4.1.5 O mtodo findViewById()
Ao construir uma tela usando um arquivo XML de layout, surge a necessidade de
recuperar os objetos definidos no arquivo dentro do cdigo-fonte da aplicao para obter
seus valores ou definir atributos (LECHETA, 2010).
Podemos recuperar um objeto de viso atravs do seu identificador nico
(android:id), passando-o como parmetro no mtodo findViewById(id). Esse mtodo
recebe o id do componente desejado e retorna uma subclasse de android.view.View,
como as classes Button, TextView e EditText.
Na figura a seguir mostrado como recuperar a senha inserida pelo usurio
atravs do mtodo findViewById(id) e uma pequena ajuda da classe R.
Figura 5.7. Exemplo da utilizao do mtodo findViewById()
5.4.2 Intent
Uma intent representa uma inteno da aplicao em realizar alguma ao. Ela envia
uma mensagem ao sistema operacional chamada de broadcast. Ao receber essa
mensagem, o sistema operacional tomar as decises necessrias (LECHETA, 2010).
108
Uma intent representada pela classe android.content.Intent e pode ser
utilizada para enviar uma mensagem ao sistema operacional, abrir uma nova tela da
aplicao, utilizando o mtodo startActivity(intent), solicitar ao sistema operacional que
ligue para determinado nmero de celular, abrir o browser em um determinado endereo
da internet, exibir algum endereo, localizao ou rota no Google Maps dentre outros.
5.4.2.1 Navegao entre telas com passagem de parmetros
Existem dois mtodos de se iniciar uma nova tela (activity), atravs dos mtodos
startActivity(intent) e startActivityForResult(intent,codigo) que apenas inicia uma nova
activity ou inicia uma nova activity e cria um vnculo para ser utilizado ao retornar
respectivamente (PEREIRA, 2009).
Para que o sistema operacional possa reconhecer nossa nova activity,
necessrio adicionar seu endereo no arquivo AndroidManifest.xml.
Figura 5.8. Trecho do arquivo AndroidManifest.xml que contm a nova activity.
Podemos enviar informaes para outras telas atravs de uma intent.
Figura 5.9. Exemplo de passagem de parmetro e troca de tela atravs de uma intent
Podemos observar na figura 5. 8, que criada uma intent com a activity da tela-
alvo, passado como parmetro atravs do mtodo putExtra() o texto contido no
EditText referente ao usurio para a prxima tela, e finalmente, a nova activity
iniciada atravs do mtodo startActivity(intent).
109
Figura 5.10. Cdigo da classe SegundaTela.
Observando essa classe, vemos que a intent capturada atravs do mtodo
getIntent() e recebemos o parmetro do login atravs do mtodo getStringExtra(string).
O contedo da tela apenas um TextView com uma mensagem de boas vindas.
5.4.2.2 Intents Nativas do Android
Vimos no exemplo anterior que possvel iniciar uma nova activity atravs das intents.
O Android possui alguns tipos de intents pr-definidas que podemos utilizar para enviar
mensagens ao SO, porm, algumas delas necessitam de permisses para executar, tais
permisses precisam ser registradas no arquivo AndroidManifest.xml (PEREIRA,2009).
Vrias intents como a ACTION_VIEW, que serve para iniciar o navegador, a
ACTION_CALL, que utilizada para realizar chamadas, a ACTION_PICK, que serve
para visualizar todos os contatos, dentre outras, so utilizadas em aplicaes Android.
A seguir veremos um exemplo de como chamar o navegador atravs de uma
intent pr-definida no Android.
Figura 5.11. Exemplo da iniciao do navegador atravs de uma Intent.
O exemplo demonstra a utilizao da intent ACTION_VIEW, mas, para usar
essa intent necessria a permisso INTERNET que deve ter sido registrada
previamente.
Figura 5.12. Inserindo a permisso INTERNET no arquivo AndroidManifest.xml
110
5.4.3 Intent Filter
Podemos utilizar intents para enviar mensagens ao sistema operacional, definindo uma
ao que identifique essa intent. Ento quando a mensagem for enviada ao sistema
operacional ela seja identificada por essa ao, e somente uma activity que esteja
mapeada para aquela ao ser executada (MEDNIEKS, 2009).
Esse tipo de rotina bem prtica quando queremos que mais de um programa
esteja configurado para receber uma ao (LECHETA, 2010).
Para definir essa ao, basta criar uma Intent usando seu construtor, que recebe
uma string que identifica a ao, como, por exemplo:
Figura 5.13. Exemplo de uma chamada de ao por uma Intent.
Logicamente, algum tem que responder por essa ao. Para isto, precisamos
mapear um Intent Filter no arquivo AndroidManifest.xml, para escutar esse chamado e
delegar a execuo uma activity.
Figura 5.14. Cdigo fonte da classe SegundaTela.
Figura 5.15. Exemplo de mapeamento de uma Intent Filter.
5.4.4 BroadcastReceiver
A classe BroadcastReceiver utilizada para responder a determinados eventos enviados
por uma intent. Ela sempre executada em segundo plano durante pouco tempo,
normalmente dez segundos. No deve ter interface grfica ou interao com o usurio
(LECHETA, 2010).
111
utilizada normalmente para executar algum processamento sem que o usurio
perceba, em segundo plano.
Assim como uma activity, devemos declar-lo no arquivo AndroidManifest.xml
atravs da tag <receiver>, deve ser declarada, tambm, um Intent Filter para o broadcast,
ou podemos registr-lo dinmicamente, utilizando o mtodo
registerReceiver(receiver,filtro), que tem como parmetros uma classe-filha de
IntentReceiver e uma instncia da classe IntentFilter que possui a configurao da ao e
a categoria (LECHETA, 2010).
O mtodo para enviar uma mensagem para um broadcast diferente do utilizado
para uma intent que chama uma activity. O mtodo utilizado o sendBroadcast(intent)
que envia uma mensagem para todas as aplicaes instaladas no celular.
Para implementar um BroadcastReceiver deve-se extender a classe
BroadcastReceiver e implementar o mtodo onReceive() que ser executado assim que o
IntentFilter receber a mensagem.
Figura 5.16. Utilizando o mtodo sendBroadcast(intent).
112
Figura 5.17. Exemplo de um BroadcastReceiver.
Apenas por motivos didticos foi utilizado a classe Toast para verificar o funcionamento
do BroadcastReceiver. Recomenda-se que no tenha nenhum tipo de interao com o
usurio.
Figura 5.18. Exemplo do mapeamento de um BroadcastReceiver.
5.4.5 Notification
A classe Notification utilizada para exibir informaes ao usurio sem que este seja
interrompido se estiver executando alguma atividade. O usurio pode escolher visualizar
as informaes neste momento, ou depois (LECHETA, 2010).
A notificao exibida na barra de status do celular para chamar a ateno do
usurio. Ao ser visualizada, a intent configurada pode uma abrir uma nova activity ou
pode ser usada para iniciar um servio por exemplo (MEIER, 2009).
Um exemplo de notificao a recepo de uma nova SMS, onde usurio pode
decidir visualiz-la ou no.
Para criar uma notificao necessrio capturar um servio do Android chamado
de NOTIFICATION_SERVICE, ser necessrio, tambm utilizar a classe PendingIntent
que criar uma intent que ficar pendente at o usurio decidir visualizar a notificao:
113
Figura 5.19. Exemplo da criao de uma notificao.
Podemos observar, que o construtor da classe Notification recebe trs
parmetros: o cone que dever ser exibido, o ttulo da notificao e a hora que
aparecer do lado da notificao.
Observamos, tambm, que deve-se informar atravs do mtodo
setLatestEventInfo, a mensagem que aparecer na barra de status assim que a
notificao for reconhecida pelo servio de notificaes do android, o ttulo da
notificao e a intent que dever ser chamada quando o usurio visualizar a notificao.
Figura 5.20. Classe que ser instanciada quando a notificao for visualizada.
A figura anterior mostra a classe que ser instanciada quando o usurio
visualizar a notificao. Capturamos o servio de notificaes do android, e pedimos
114
para que a notificao no aparea mais na barra de status atravs do mtodo cancel(int)
que recebe como parmetro o id da notificao.
5.4.6 Service
Tm as mesmas caractersticas dos servios dos sistemas operacionais de computador.
So utilizados quando queremos executar algo por tempo indeterminado em
segundo plano e que exija um alto consumo de recursos, memria e CPU (LECHETA,
2010).
Geralmente so iniciados por um BroadcastReceiver para executar algum
processamento demorado, pois um BroadcasReceiver tem um tempo determinado para
executar (PEREIRA, 2009).
interessante que os servios tenham suas prprias threads para que fiquem
independentes do programa hospedeiro. Eles tambm possuem um ciclo de vida prprio,
semelhante ao de uma Activity, mas possuem apenas trs estgios: o onCreate, onStart e
onDestroy, que desempenham o mesmo papel que o de uma Activity.
Para iniciar um servio necessrio criar uma activity que chame o mtodo
startService(intent). Para parar um servio existem duas maneiras: a primeira chamar o
mtodo stopService(intent), a mesma intent utilizada para iniciar o servio deve ser
usada para par-lo, e a segunda forma o prprio servio chamar o mtodo stopSelf().
Figura 5.21. Chamando um servio.
Para implementar um servio necessrio estender a classe android.
115
Figura 5.22. Exemplo de um servio.
Para exemplificar o funcionamento de um servio, utilizamos esta classe, que
quando iniciada, cria uma srie de logs. Podemos observar que mesmo fechando a
aplicao que iniciou o servio, ele continua criando logs at chamar o mtodo
stopSelf().
necessrio mapear o servio no arquivo AndroidManifest.xml e configurar um
IntentFilter com a ao que iremos passar como parmetro pela nossa Intent.
116
Figura 5.23. Exemplo do mapeamento de um servio.
5.4.7 AlarmManager
So eventos agendados no sistema operacional para serem executados no futuro
(LECHETA, 2010).
utilizado quando necessrio executar algo uma vez em determinado horrio
ou ficar repetindo de tempos em tempos.
Quando agendados, ficam ativos no sistema at que sejam explicitamente
cancelados, ou o sistema for reiniciado.
Para agendar um alarme, primeiro temos que definir uma intent com o
BroadcastReceiver que ir responder pelo nosso alarme. Depois temos que capturar o
servio do Android responsvel pelo gerenciamento dos alarmes, o AlarmManager.
Figura 5.24. Agendando um alarme.
117
Figura 5.25. BroadcastReceiver que ser chamado pelo nosso alarme.
5.5. Arquitetura REST de desenvolvimento de aplicaes Web
Vivemos hoje uma febre de Apps pequenos aplicativos auto-contidos que tem uma
nica funo e comumente so interfaces para sistemas Web. A maioria desses
aplicativos extremamente dependente de dados para serem teis e esses dados podem
vir dos mais variados lugares por exemplo, a plataforma Android disponibiliza ao
desenvolvedor uma pequena base dados SQLite onde ele pode criar suas tabelas,
armazenar e buscar dados, mas cada vez mais esses dados vm de servios web.
A Web uma plataforma orientada a recursos. Um Recurso pode ser definido
como qualquer coisa que exposta a Web atravs de um identificador e que possamos
manipular (ler e/ou escrever) (WEBBER; PARASTATIDIS, 2010)..
Desde sua formalizao REST
1
vem sendo um termo e, mais adequadamente,
uma arquitetura de software de sistemas Web cada vez mais utilizado, estudado e
discutido. Esta arquitetura foi proposta pelo Dr. Roy T. Fielding em 2000 e desde ento
vem sendo adotada em vrios sistemas de grande porte como Twitter, Facebook, Flickr
e todas as APIs de servios pblicos do Google como Google Agenda, Google Health,
Google Data e Google Maps.
Veremos a seguir o que REST e, em seguida, formas de se trabalhar com
REST em Java.
5.5.1 Definio
O protocolo HTTP, e consequentemente servidores HTTP, um protocolo simples e
sem muitos recursos. Em sua primeira verso ele apresentou endereamento e
statelessness: duas caractersticas de seu projeto que o tornou um avano perante seus
rivais e que ainda o mantm escalvel mesmo nos mega-sites de hoje (RICHARDSON;
RUBY, 2007).
Sistemas com esta arquitetura so sistemas Clientes-Servidores comuns,
entretanto suas requisies e respostas so construdas ao redor da transferncia da
representao de recursos. Recursos so os blocos fundamentais de sistemas baseados
na web, ao ponto que a Web considerada como orientada a recursos (WEBBER;
PARASTATIDIS, 2010). A abstrao chave de informao do REST so os recursos.
Qualquer informao que pode ser nomeada pode ser um recurso: documentos, imagens,
informaes sobre o tempo, uma pessoa, e assim sucessivamente (FIELDING, 2000).
1
Representational State Transfer Transferncia de Estado Representacional
118
Um dos recursos mais comuns da Web so pginas HTML, que em sistemas so
comumente a representao de um recurso interno do sistema, por exemplo, uma pgina
de exibio de um vdeo do YouTube a representao do recurso vdeo do sistema.
Um mesmo recurso pode ter vrias representaes diferentes. Utilizando o
exemplo do vdeo do YouTube, uma representao a pgina HTML onde mostrado o
vdeo, comentrios, etc. outra representao vista quando o vdeo incorporado em
outra pgina. Nessa representao vemos apenas um player que carrega o vdeo em
questo. Outra representao, um pouco menos conhecida, a representao em XML
2
ou mais recentemente JSON
3
, ambas tecnologias de transio de dados hierrquicos.
Devido a essas caractersticas REST tambm requer que as aplicaes faam
total distino entre cliente e servidor atravs da implementao das seguintes
caractersticas:
1. Cliente-Servidor: Clientes so separados dos Servidores por uma interface
uniforme. Essa diviso faz com que o cliente no se preocupe com, por exemplo,
armazenamento de dados ao passo que o servidor no se preocupa com interface
com o usurio;
2. Stateless (Sem Estado): A comunicao cliente-servidor ocorre sem que nenhum
contexto relativo ao cliente seja armazenado no servidor entre as requisies.
Cada requisio de cada cliente contm toda informao necessria para atender
aquela requisio e a reposta deve conter toda a informao para satisfazer a
requisio;
3. Cache: Como comum na Web, o cliente pode manter um cache das respostas do
servidor, portanto recomendado que as respostas contenham informaes sobre
se podem e como deve ser feito o cache a fim de evitar que clientes requisitem um
mesmo recurso repetidamente. Um bom cache elimina vrias interaes cliente-
servidor desnecessrias o que proporciona escalabilidade e performance;
4. Camadas: Um cliente no pode normalmente distinguir se ele est ou no
conectado ao servidor final ou apenas a um intermedirio. Um sistema com vrios
servidores permite o balanceamento de carga, caches compartilhados e ajudam a
manter uma boa segurana;
5. Cdigo sob demanda (opcional): Servidores podem ser capazes de estender a
funcionalidade de um cliente transferindo lgica para que ele execute. Exemplos
disso so componentes compilados como Applets Java ou scripts no lado cliente
como JavaScript;
6. Interface uniforme: Todo cliente obedece ao mesmo formato de requisio e
recebe o mesmo formato de resposta.
2
XML eXtensible Markup Language Linguagem de marcao extensvel.
3
JavaScript Object Notation Notao de Objetos JavaScript.
119
A arquitetura REST est fundamentada sob o protocolo HTTP e seus mtodos.
Clientes que acessam recursos informando sua inteno atravs do mtodo que
executam sob o recurso. A maioria dos sistemas hoje em dia segue a seguinte conveno
de mtodos HTTP, concebidos para simular operaes de CRUD:
GET: Leitura;
POST: Escrita;
PUT: Alterao ou Atualizao;
DELETE: Remoo.
Muitas aplicaes novas esto utilizando os princpios REST a fim de obterem
um bom nvel de escalabilidade. Normalmente essas aplicaes disponibilizam a seus
usurios uma API dos mtodos REST disponveis, suas entradas e suas sadas.
Para compreender melhor, vejamos a API de um sistema referncia em
tecnologia REST: o Twitter.
O Twitter disponibiliza em seu website uma extensa e detalhada documentao
da API de seu sistema
4
. uma plataforma de apoio aos desenvolvedores que desejam criar
clientes para o Twitter com pginas de ajuda onde so descritos os mtodos da API, um
guia ao desenvolvedor e ferramentas para ajud-lo.
Chamadas a alguns mtodos da API podem ser feitas, para testes, atravs de um
navegador web qualquer.
Durante a escrita deste texto, a API do Twitter aceita a seguinte chamada:
http://api.twitter.com/1/users/show.xml?screen_name=fat. Para
chamar este mtodo da API basta abrir esta URL em qualquer navegador web.
Ao abrir esta URL em um navegador, o que feito uma chamada a API atravs
do mtodo HTTP GET. Chamadas a qualquer API REST na Web so compostas de 3
partes:
1. A URL correspondente ao mtodo da API
http://api.twitter.com/1/users/show
2. Os parmetros da chamada ao mtodo
screen_name = fat
3. O mtodo HTTP utilizado para chamada aquela URL
Por padro, toda transao HTTP dos navegadores atuais utiliza o mtodo GET.
A URL uma chamada ao mtodo 1/users/show da API do Twitter. Uma
particularidade dessa API a possibilidade de escolha do formato de representao do
recurso: XML ou JSON, representado pela extenso do arquivo na URL.
4
Disponvel em http://dev.twitter.com/ - Acesso em 12 outubro 2011
120
5.5.2. REST em Java
Em Java chamadas a APIs REST so feitas utilizando chamadas HTTP simples,
normalmente com objetos java.net.URL e java.net.HttpURLConnection.
Nos exemplos a seguir utilizaremos a API do Twitter como exemplo.
A forma mais simples de se executar uma chamada a seguinte:
String apiCall = "<url de chamada a API>";
URL url = new URL(apiCall);
HttpURLConnection conn;
conn = (HttpURLConnection) url.openConnection();
Ao invocar o mtodo openConnection() uma requisio HTTP GET feita
a URL especificada em apiCall. Aps essa chamada, importante verificar o cdigo
de resposta dado pelo servidor. Normalmente um cdigo de resposta 200 significa que
tudo ocorreu como esperado. Outros cdigos de resposta podem ser especificados pela
API.
if (conn.getResponseCode() == 200) {
// Tudo ocorreu como esperado.
}
Dessa forma podemos tomar alguma providncia caso ocorra algum erro, e
garantir um bom funcionamento da aplicao.
Aps a confirmao do sucesso da chamada o prximo passo ler os dados da
resposta do servidor. necessrio um cuidado especial com o tipo de dado esperado
pois a resposta da API pode ser uma imagem, ou um documento, ou at mesmo um
Stream de dados. Vamos considerar que a resposta a nossa chamada est em formato
textual, caso qual podemos utilizar a seguinte tcnica para captar o resultado num
formato mais cmodo para manipulao:
BufferedReader reader = new BufferedReader(new
InputStreamReader(conn.getInputStream()));
StringBuilder str = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
str.append(line);
}
reader.close();
Aps o recebimento da resposta, uma boa prtica sempre fechar a conexo
junto ao servidor invocando o mtodo disconnect():
conn.disconnect();
Dessa forma podemos fazer chamadas a quaisquer API REST utilizando Java.
121
5.5.2.1 Interpretando Respostas
Em Java podemos quase sempre considerar um recurso disponibilizado pelo servidor
com um Objeto. Comumente recebemos respostas em XML o qual uma serializao
de um objeto que est no servidor.
Devido a isso um ponto que requer especial ateno a interpretao das
respostas. APIs REST utilizam representaes do estado de um recurso (um Objeto) do
sistema. Nestes casos a forma mais comum de representao textual, segundo um
padro determinado pela API, XML ou JSON.
Existem vrias bibliotecas disponveis para se trabalhar com os formatos XML e
JSON, algumas bastante sofisticadas e simples de usar. Para XML temos, por exemplo,
uma biblioteca chamada jDOM
5
que interpreta XML e d ao desenvolvedor uma
representao do documento XML na forma de um grafo de objetos com uma interface
nativa Java que podem ser facilmente percorridos e manipulados. Para JSON h uma
biblioteca chamada Gson
6
disponibilizada pelo Google que pode transformar Objetos
Java em sua representao JSON e vice-versa:
Gson gson = new Gson();
String json = gson.toJson(meuObjeto);
MeuObjeto obj = gson.fromJson(json, MeuObjeto.class);
Atravs do uso de bibliotecas auxiliares possvel criar objetos concretos Java a
partir de representaes textuais dos mesmos.
A utilizao de JSON recomendada nestes casos pois grande parte dos sistemas
REST atuais so voltados para a interatividade entre sistemas de Websites, os quais so
em sua maioria feitos utilizando JavaScript, linguagem-me da notao JSON e que d
suporte nativo a interpretao e construo de objetos a partir de sua representao
textual e vice-versa.
Referncias bibliogrficas
ABLESON, W. Frank; Unlocking Android - A Developers Guide. Ed. Manning, 2007.
BURNETTE, Ed.Hello, Android:Introducing Google`s Mobile Development Plataform.
Pragmatic Bookshelf, 2008.
Google Android. Disponvel em <http://developer.android.com/guide/basics/what-is-
android.html>. Acesso em 12 outubro 2011.
LECHETA, Ricardo R. Google Android. So Paulo: Novatec, 2010, 2 ed.
MEDNIEKS, Zigurd; MEIKE, Blake. Desenvolvimento de Aplicaes Android. So
Paulo: Novatec, 2009, 1 ed.
MEIER, Reto. Professional Android Application Development. Indianapolis: Wiley
Publishing, 2009, 1. ed.
5
http://www.jdom.org/ - Acesso em 12 outubro 2011
6
http://code.google.com/p/google-gson/ - Acesso em 12 outubro 2011
122
PEREIRA, Lcio C. Oliva. Android para Desenvolvedores. So Paulo: Brasport, 2009,
1 ed.
WEBBER, Jim; PARASTATIDIS, Savas; ROBINSON Ian. REST in Practice:
Hypermidia and Systems Architecture. OReilly Media, 2010.
RICHARDSON, Leonard; RUBY Sam. RESTful web services. OReilly Media, 2007.
FIELDING, Roy; Architectural Styles and the Design of Network-based Software
Architectures. Dissertao de Doutorado, University of California, 2000.
123
Captulo
6
Desenvolvendo aplicaes multi-tenancy para
computao em nvem
Josino Rodrigues Neto, Vincius Cardozo Garcia e Wilton dos Santos
Oliveira
Abstract
This course focuses on presenting the main concepts of multi-tenancy and use a
practical approach to demonstrate the implementation of an application based on a
multi-tenancy architecture. Thus, this chapter presents the definitions and key
characteristics of cloud computing, SaaS service model and a multi-tenancy approach
for SaaS.
Resumo
Este minicurso tem como foco principal apresentar os principais conceitos de multi-
tenancy e utilizar uma abordagem prtica para demonstrar a implementao de uma
aplicao baseada em uma arquitetura multi-tenancy. Assim, este captulo apresenta as
definies e as caractersticas essenciais da computao em nuvem, o modelos de
servio SaaS e uma abordagem multi-tenancy para SaaS.
6.1 Introduo
Com o ritmo de desenvolvimento da sociedade humana moderna, servios bsicos e
essenciais so quase todos entregues de uma forma completamente transparente.
Servios de utilidade pblica como gua, eletricidade e telefone tornaram-se
fundamentais para nossa vida diria e so explorados atravs de um modelo de
pagamento baseado no uso. As infraestruturas existentes permitem entregar os servios
em qualquer lugar e a qualquer hora, de forma que possamos simplesmente acender a
luz, abrir a torneira ou fazer uma ligao para qualquer lugar. O uso desses servios
cobrado de acordo com as diferentes polticas para o usurio final. A mesma idia de
124
utilidade tem sido aplicada na rea da informtica e uma mudana consistente neste
sentido tem sido feita com a disseminao da computao em nuvem.
Segundo o NIST, Cloud Computing(Computao em nvem) composta por
cinco caractersticas essenciais: self-service sob demanda; amplo acesso a rede; pooling
de recursos; elasticidade rpida. Ainda segundo o NIST, Cloud Computing dividido
em trs modelos de servio: Software como servio (SaaS); Plataforma como servio
(PaaS); Infraestrutura como Servio (IaaS).
Nesse contexto, este minicurso tem como foco principal apresentar os principais
conceitos de multi-tenancy e utilizar uma abordagem prtica para demonstrar a
implementao de uma aplicao baseada em uma arquitetura multi-tenancy. Assim,
este captulo apresenta as definies e as caractersticas essenciais da computao em
nuvem, o modelos de servio SaaS e uma abordagem multi-tenancy para SaaS.
Este captulo est organizado no seguinte formato:
A seo 1.2apresenta os conceitos fundamentais de cloud computing, Software
como servio e Multi-tenancy.
A seo 1.3 apresenta os componentes de uma arquitetura multi-tenancy.
A seo 1.4 apresenta o passo a passo para a implementao de um prottipo de
aplicao multi-tenancy com Grails.
Finalmente, a seo 1.5 apresenta as concluses finais.
6.2 Conceitos Fundamentais
6.1.2.1 Cloud Computing
Na computao em nuvem os recursos de TI so fornecidos como um servio,
permitindo aos usurios o acessa-los sem a necessidade de conhecimento sobre a
tecnologia utilizada. Assim, os usurios e as empresas passaram a acessar os servios
sob demanda e independente de localizao, o que aumentou a quantidade de servios
disponveis. Computao em nuvem pretende ser global e prover servios para todos,
desde o usurio final que hospeda seus documentos pessoais na Internet at empresas
que terceirizaro toda a parte de TI para outras empresas.
Mas o que Cloud Computing? Segundo Taurion o termo computao em
nuvem surgiu em 2006 em uma palestra de Eric Schmidt, da Google, sobre como sua
empresa gerenciava seus data centers. Hoje, computao em nuvem, se apresenta como
o cerne de um movimento de profundas transformaes do mundo da tecnologia
(TAURION, 2009).
Segundo o NIST(National Institute of Standards and Technology) , Cloud
Computing composta por cinco caractersticas essenciais:
125
Self-service sob demanda: O usurio pode adquirir unilateralmente recurso
computacional, como tempo de processamento no servidor ou armazenamento
na rede na medida em que necessite e sem precisar de interao humana com os
provedores de cada servio.
Amplo acesso a rede: recursos esto disponveis atravs da rede e acessados por
meio de mecanismos que promovam o padro utilizado por plataformas
heterogneas (por exemplo, telefones celulares, laptops e PDAs).
Pooling de recursos: o provedor de recursos de computao so agrupados para
atender vrios consumidores atravs de um modelo multi-tenant, com diferentes
recursos fsicos e virtuais atribudos dinamicamente e novamente de acordo com
a demanda do consumidor. H um senso de independncia local em que o cliente
geralmente no tem nenhum controle ou conhecimento sobre a localizao exata
dos recursos disponibilizados, mas pode ser capaz de especificar o local em um
nvel maior de abstrao (por exemplo, pas, estado ou data center). Exemplos de
recursos incluem o armazenamento, processamento, memria, largura de banda
de rede e mquinas virtuais.
Elasticidade rpida: recursos podem ser adquiridos de forma rpida e elstica,
em alguns casos automaticamente, caso haja a necessidade de escalar com o
aumento da demanda, e liberados, na retrao dessa demanda. Para os usurios,
os recursos disponveis para uso parecem ser ilimitados e podem ser adquiridos
em qualquer quantidade e a qualquer momento.
Servio medido: sistemas em nuvem automaticamente controlam e otimizam a
utilizao dos recursos, alavancando a capacidade de medio em algum nvel de
abstrao adequado para o tipo de servio (por exemplo, armazenamento,
processamento, largura de banda, e contas de usurios ativos). Uso de recursos
pode ser monitorado, controlado e relatado a existncia de transparncia para o
fornecedor e o consumidor do servio utilizado.
Ainda segundo o NIST, Cloud Computing dividido em trs modelos de
servio:
Software como Servio (Software as a Service - SaaS): A capacidade fornecida
ao consumidor usar as aplicaes do fornecedor que funcionam em uma
infraestrutura da nuvem. As aplicaes so acessveis dos vrios dispositivos do
cliente atravs de uma relao do thin client tal como um browser web. O
consumidor no administra ou controla a infraestrutura bsica, incluindo nuvens
de rede, servidores, sistemas operacionais, armazenamento, ou mesmo
capacidades de aplicao individual, com a possvel exceo de limitada
aplicao especfica e definies de configurao de usurios da aplicao.
Plataforma como Servio (Plataform as a Service - PaaS): A capacidade
fornecida ao consumidor desdobrar na nuvem a infraestrutura consumidor
criada ou as aplicaes adquiridas criadas usando linguagens de programao e
as ferramentas suportadas pelo fornecedor. O consumidor no administrar ou
126
controlar a infraestrutura bsica, incluindo nuvens de rede, servidores, sistemas
operacionais, ou armazenamento, mas tem controle sobre os aplicativos
utilizados e eventualmente hospedagem de aplicativos e configuraes de
ambiente.
Infraestrutura como Servio (Infraestructure as a Service - IaaS) : A
capacidade prevista para o consumidor a prestao de transformao,
armazenamento, redes e outros recursos computacionais fundamental que o
consumidor seja capaz de implantar e executar programas arbitrrios, que podem
incluir sistemas operacionais e aplicativos. O consumidor no administra ou
controla a infraestrutura de nuvem subjacente, mas tem controle sobre os
sistemas operacionais, armazenamento, aplicativos implantados, e,
eventualmente, o controle limitado de componentes de rede selecionar (por
exemplo, firewalls host).
Esse trabalho no pretende abordar exaustivamente todos os modelos de servio
de Cloud Computing, esse trabalho tem como foco principal SaaS, especificamente a
aplicao da arquitetura multi-tenancy.
6.1.2.2 Software como Servio(SaaS)
Por dcadas, as companhias utilizavam seu software em sua prpria infraestrutura e
eram responsveis por todas as atividades de manuteno, integridade, escalabilidade,
disponibilidade e uma srie de encargos relacionados ao gerenciamento de TI na
empresa. Alm de custos relacionados compra de licenas e atualizaes, as empresas
tinham que adequar sua infraestrutura e contratar pessoas especializadas para as
atividades de gerenciamento.
Foi nesse contexto que surgiu o conceito de SaaS. Neste modelo, a
funcionalidade da aplicao oferecida atravs de um modelo de assinatura pela
Internet. O cliente no se torna dono do software, ao invs disso, ele aluga a soluo
total que oferecida remotamente.
Podemos dividir as aplicaes de software como servio em duas categorias
(CHONG e CARRARO, 2006):
Servios para linha de negcios (line-of-business): oferecidos a
empresas e organizaes de todos os tamanhos. Os servios de linha de negcios
geralmente so solues de negcios grandes e personalizveis direcionadas para
facilitar processos de negcios como finanas, gerenciamento da cadeia de
suprimentos e relaes com o cliente. Normalmente esses servios so vendidos
aos clientes como assinatura. Um exemplo desse tipo de servio so as solues
personalizveis do Salesforce (SALESFORCE, 2000).
Servios orientados ao consumidor: oferecidos ao pblico em geral.
Os servios orientados a cliente s vezes so vendidos como assinatura, mas
geralmente so fornecidos sem custo e financiados por anncios. Um outro
127
exemplo desse tipo de servio so os servios oferecidos pelo Google(Gmail,
Google docs, Google Agenda, etc).
Apesar do conceito de SaaS no ser uma coisa nova, esse conceito ganhou fora
somente por volta de 2005 e 2006 com o surgimento e viabilidade de uso de novas
tecnologias como web 2.0, rich internet application(RIA), SOA, cloud computing,
virtualizao, etc. Implementar o conceito de SaaS nem sempre to simples como
parece. Chong (CHONG e CARRARO, 2006) prope 4 nveis de maturidade para
aplicaes que utilizam o modelo de SaaS:
Figura 6.1 - Nveis de Maturidade SaaS (CHONG e CARRARO, 2006)
Nvel 1 Ad-Hoc/Personalizado: O primeiro nvel de maturidade semelhante
ao modelo de entrega de software do provedor de servios de aplicativos (ASP)
tradicional, que data da dcada de 1990. Nesse nvel, cada cliente tem a sua
prpria verso personalizada do aplicativo hospedado e executa a sua prpria
instncia do aplicativo nos servidores do host. Pensando em arquitetura, software
nesse nvel de maturidade muito semelhante ao software de linha de negcios
vendido tradicionalmente, em que diferentes clientes em uma organizao
conectam a uma instncia nica em execuo no servidor, mas essa instncia
totalmente independente de quaisquer outras instncias ou processos que o host
esteja executando para os seus outros clientes.
Nvel 2 Configurvel: No segundo nvel de maturidade, o fornecedor hospeda
uma instncia separada do aplicativo para cada inquilino enquanto que no
128
primeiro nvel cada instncia personalizada individualmente para o inquilino,
neste nvel todas as instncias utilizam a mesma implementao de cdigo e o
fornecedor atende as necessidades dos clientes fornecendo opes de
configurao detalhadas que permitem ao cliente alterar a aparncia e o
comportamento do aplicativo para os seus usurios. Apesar de serem idnticas
umas s outras no nvel do cdigo, cada instncia permanece totalmente isolada
de todas as demais.
Nvel 3 Configurvel e eficiente para vrios tenants: No terceiro nvel de
maturidade, o fornecedor executa uma nica instncia que serve a todos os
clientes, com metadados configurveis fornecendo uma experincia de usurio e
conjunto de recursos exclusivos para cada um. Polticas de autorizao e de
segurana garantem que os dados de cada cliente sejam mantidos separados dos
de outros clientes e que, da perspectiva do usurio final, no exista qualquer
indicao de que a instncia do aplicativo esteja sendo compartilhada entre
vrios tenants.
Nvel 4 Escalonvel, configurvel e eficiente para vrios tenants: No quarto e
ltimo nvel de maturidade, o fornecedor hospeda vrios clientes em um
ambiente com carga balanceada de instncias idnticas, com os dados de cada
cliente mantidos separados e com metadados configurveis fornecendo uma
experincia do usurio e um conjunto de recursos exclusivos para cada cliente.
Um sistema de SaaS escalonvel para um nmero de clientes arbitrariamente
grande, uma vez que a quantidade de servidores e instncias no lado do
fornecedor pode ser aumentada ou diminuda conforme necessrio para
corresponder demanda sem a necessidade de remodelar a arquitetura aplicativo,
alm do que as alteraes ou correes podem ser transmitidas para milhares de
tenants to facilmente quanto para um nico tenant.
Normalmente se esperaria que o quarto nvel fosse a meta definitiva para
qualquer aplicativo de SaaS, mas no sempre assim. necessrio verificar as
necessidades operacionais, arquiteturais e de negcio relacionadas aplicao. Uma
abordagem single-tenant faz sentido financeiramente? O seu aplicativo pode ser feito
para executar em uma nica instncia lgica? Voc pode garantir os seus contratos de
nvel de servio (SLAs) sem isolamento das aplicaes? Essas so questes que devem
ser respondidas quando se pretende adotar o modelo SaaS.
6.1.2.3 Multi-tenancy
Multi-tenancy uma abordagem organizacional para aplicaes SaaS. Bezemer
(BEZEMER e ZAIDMAN, 2010) define multi-tenancy como aplicaes que permitem
o compartilhamento dos mesmos recursos de hardware, atravs do compartilhamento da
aplicao e da instncia do banco de dados, enquanto permite configurar a aplicao
para atender s necessidades do cliente como se estivesse executando em um ambiente
dedicado. Tenant uma entidade organizacional que aluga uma aplicao multi-tenancy.
Normalmente, um tenant agrupa um nmero de usurios que so os stakeholders da
organizao.
129
A definio acima foca no que ns consideramos aspectos em aplicaes multi-tenancy:
Possibilidade de compartilhamento de recursos de hardware, permitindo a
reduo de custos (HU WANG, JIE GUO, et al., 2008) (WARFIELD, 2007).
Alto grau de configurabilidade, permitindo que cada consumidor customize sua
prpria interface e seu workflow na aplicao (NITU, 2009)(JANSEN,
HOUBEN e BRINKKEMPER, 2010).
Uma abordagem arquitetural na qual os tenants fazem uso de uma nica
aplicao e banco de dados (KWOK, NGUYEN e LAM, 2008).
Como multi-tenancy um conceito relativamente novo, muito comum as
pessoas confundirem multi-tenancy com outros conceitos j existentes. Multi-tenancy
no multi-usurio. Em uma aplicao multi-usurio ns assumimos que os usurios
esto usando a mesma aplicao com opes de acesso limitadas. Em uma aplicao
multi-tenancy ns assumimos que os tenants tem um algo grau de configurao,
dependendo da definio dessas configuraes, dois tenants pode possuir aparncia e
workflows diferentes. Um argumento adicional para essa distino que o SLA(Service
Level Agreement) para cada tenant pode ser diferente (LIN, SUN, et al., 2009).
Outra abordagem que contrasta com multi-tenancy a abordagem multi-
instance. Com o aumento da popularidade de das tecnologias de virtualizao e de cloud
Computing, multi-instance a forma fcil de criar aplicaes parecidas com multi-
tenancy. necessrio apenas criar uma imagem de maquina virtual com a aplicao pr-
configurada e, logo em seguida criar instncias apartir dessa imagem. A abordagem
multi-instance uma melhor abordagem quando o nmero de tenants for pequeno (JIE
GUO, SUN, et al., 2007).
61.3 Arquitetura Multi-tenancy
Nesse minicurso iremos tomar como base a arquitetura apresentada na Figura 6.2. Aqui
vemos que multi-tenancy afeta quase todas as camadas de uma aplicao tpica, e como
tal, possui um grande potencial para se tornar um interesse transversal. Para manter o
impacto sobre o cdigo (complexidade), as implementaes de componentes multi-
tenancy devem ser separadas da lgica dos tenants o tanto quanto possvel. Caso
contrrio, a manuteno pode se tornar um pesadelo, porque:
Implementar cdigo de requisitos da arquitetura multi-tenancy juntamente com
a lgica de negcio dos tenants em todas as camadas de aplicao, o que exige
que todos os desenvolvedores sejam reeducados sobre multi-tenancy;
Misturar multi-tenancy com cdigo de tenants leva ao aumento da
complexidade do cdigo, pois mais difcil manter o controle de onde o cdigo
multi-tenancy introduzido.
Estes dos problemas podem ser superados integrando cuidadosamente multi-tenancy na
arquitetura. No restante desta seo, descrevemos os componentes da arquitetura
130
abordada por Bezemer (BEZEMER e ZAIDMAN, 2010) para implementao de multi-
tenancy como um interesse transversal.
A. Autenticao
Pelo motivo de uma aplicao multi-tenant ter apenas uma aplicao e instancia
de banco de dados, todos os tenants usam o mesmo ambiente fsico. A fim de ser capaz
de oferecer customizao do ambiente e ter certeza de que os tenants podem acessar
somente os seus prprios dados, tenants devem ser autenticados. Enquanto autenticao
de usurio , possivelmente, j presente na aplicao de destino, um mecanismo
separado de autenticao de tenants especficos pode ser necessrio, por duas razes: (1)
geralmente muito mais fcil introduzir um mecanismo de autenticao adicional, do
que mudar um j existente, e (2) autenticao de tenants permite que um nico usurio
faa parte de mais do que uma organizao lgica, o que estende a idia de autenticao
de usurios com grupos.
B. Configurao
Em uma aplicao multi-tenancy a customizao deve ser possvel atravs de
configurao. A fim de permitir que o usurio tenha uma experincia como se ele
estivesse trabalhando em um ambiente dedicado, necessrio permitir pelo menos os
tipos de configurao seguintes:
Estilo de Layout(Layout Style) O componente de configurao de estilo de layout
permite o uso de temas e estilos especficos.
Configurao Geral (General Configuration) O componente de configurao geral
permite a especificao de configuraes especficas, como configuraes de chave de
criptografia e detalhes do perfil pessoal.
Entrada e sada de arquivo (File I/O) O componente de configurao de I/O de
arquivo permite a especificao de caminhos de arquivos, que podem ser usados para,
por exemplo, gerao de relatrio.
Fluxo de trabalho (Workflow) O componente de configurao de fluxo de trabalho
permite a configurao de fluxos especficos. Por exemplo, configurao de fluxos
necessria em uma aplicao de planejamento de recursos empresariais ERP, em que o
fluxo de requisies pode variar significativamente para diferentes companhias.
C. Banco de dados (Database)
Em uma aplicao multi-tenancy h uma grande exigncia para o isolamento dos dados.
Porque todos os tenants usam a mesma instncia de um banco de dados necessrio ter
certeza de que eles podem acessar somente seus prprios dados. Atualmente sistemas
de gerenciamento de dados (Data Base Management Systems DBMS) de prateleira
no so capazes de lidar com multi-tenancy, isso deve ser feito em uma camada entre a
131
camada lgica de negcios e o pool de banco de dados de aplicaes. As principais
tarefas dessa camada so as seguintes:
Criao de novos tenants no banco de dados Se a aplicao armazena ou recupera
dados que podem ser de tenants especficos, tarefa da camada de banco de dados criar
os registros do banco de dados correspondente quando um novo tenant se inscreveu para
a aplicao.
Adaptao de consulta A fim de prover um isolamento de dados adequado, a camada
de banco de dados deve ter certeza que consultas so ajustadas de forma que cada tenant
possa acessar somente seus prprios registros.
Balano de carga Para melhorar o desempenho de uma aplicao multi-tenancy
necessrio um balanceamento de carga eficiente para o pool de banco de dados. Note
que qualquer acordo feito no SLA de um tenant e quaisquer restries impostas pela
legislao do pas onde o tenant est localizado deve ser satisfeita. Alm disso, a
aplicao pode ter requisitos de onde os dados de um tenant esto sendo armazenados,
por exemplo, para a gerao de relatrios. Estes requisitos dificultam o uso de
algoritmos de balanceamento de carga existentes. Por outro lado, nossa expectativa a
de que possvel criar algoritmos de balanceamento de carga mais eficientes usando as
informaes que possumos sobre os tenants.
Figura 6.2- Arquitetura Multi-tenancy (BEZEMER e ZAIDMAN, 2010)
132
6.1.4 Implementando um prottipo de aplicao multi-tenancy com Grails
6.1.4.1 Introduo ao Framework Grails
Para implementar um prottipo que demonstre a aplicabilidade da arquitetura multi-
tenancy ser utilizado o framework Grails. O Grails um framework web open-source
que utiliza a linguagem Groovy, e outros frameworks consagrados como Hibernate,
Spring e Sitemesh, como mostrado na Figura 6.3. O Grails foi projetado para desenvolver
aplicaes CRUD (Create, Read, Update e Delete) de forma simples e gil, utilizando o
modelo de escrever cdigo por conveno introduzido pelo Ruby on Rails. O Grails
est se propondo a trazer a produtividade do Ruby on Rails para a plataforma Java,
porm ele possui uma grande vantagem, sendo que a linguagem Groovy roda sobre uma
JVM, e pode utilizar classes Java e as diversas APIs que existem normalmente.
Groovy (padronizado pela JSR-241) uma linguagem dinmica e gil para a
plataforma Java, que possui muitas caractersticas de linguagens de script como Ruby,
Python e Smalltalk, e ainda pode utilizar classes Java facilmente. Linguagens de script
esto ganhando cada vez mais popularidade, devido a quantidade reduzida de cdigo
fonte necessrio para implementar determinadas funcionalidades, se comparado com
uma implementao em Java.
Figura 6.3 - Arquitetura Grails
6.1.4.2 Instalando Grails
Instalar o Grails framework pode ser considerada uma tarefa simples. O passo a passo
para a instalao do Grails framework apresentado na Figura 6.4.
133
Uma vez instalado, possvel abrir um prompt de comando e testar sua instalao
utilizando, por exemplo, o comando grails help.
Figura 6.4 - Instalao Grails
Para criar uma aplicao em grails o desenvolvedor dever executar o comando:
Esse comando cria um projeto de aplicao grails contendo um conjunto de arquivos e
diretrios necessrios para executar uma aplicao grails. Os diretrios criados e suas
descries podem ser vistos com mais detalhes na Tabela 6.1.
Tabela 6.1 - Estrutura de pastas de uma aplicao Grails
Pasta Descrio
+ grails-app
+ conf Contm as configuraes da aplicao, como a
configurao de banco (DataSource.groovy) e onde
podem ser feitas as configuraes de
inicializao(BootStrap.groovy) entre outros.
+ controllers Contm as classes de controller(controladores) da
aplicao.
+ domain Contm as classes de Domnio, ou modelos.
+ i18n Contm arquivos inerentes a internacionalizao.
grails create-app multitenantapp
134
+ services Nessa pasta ficam as classes utilizadas na camada de
servios do Grails, caso sejam criadas.
+ taglib Contm as TagLibs criadas pelo usurio
+ views Contm os arquivos .gsp(Groovy Server Pages)
utilizados para cada classe de domnio.
+ layouts Nessa pasta ficam os templates da aplicao. Templates
em Grails so views includas em outras views.
+ grails-tests Parta que contm os testes unitrios
+ lib Contm as libs externas, como por exemplo os drivers de
conexo aos bancos de dados
+ src
+ groovy Contm classes groovy que no se encaixam nem em
Domain, Controller ou Service.
+ java Contm classes java que podero ser usadas na aplicao
+ web-app
+ css Contm os arquivos .css
+ images Imagens
+ js JavaScript
+ WEB-INF Arquivos relacionados ao deploy
+ index.jsp O Index da app
Para executar a aplicao criada devero ser executados os seguintes comandos:
O comando cd multitenantapp ir abrir o diretrio da aplicao e o comando grails
run-app executar a aplicao.
Para adicionar um cadastro de uma entidade (CRUD) aplicao, deve ser criado uma
classe de domnio e em seguida uma classe de controller que ir gerenciar as requisies
para o cadastro desta entidade.
O primeiro comando cria uma classe de domnio no seguinte endereo
..\multitenantapp\grails-app\domain\multitenantapp\Product.groovy. Esse arquivo
dever ser alterado para o cdigo da Figura 6.5 a seguir:
>> grails create-domain-class Product
>> grails create-controller multitenantapp Product
>> grails create-domain-class Product
>> grails create-controller multitenantapp Product
>> cd multitenantapp
>> grails run-app
135
Figura 6.5 - cdigo Product.groovy
O segundo comando cria a classe de controller, que dever ser alterada para o cdigo a
da seguir:
Figura 6.6 - Cdigo da Classe Controller
Uma vez criadas as classes de domnio e controller,o comando grails run-app dever
ser executado novamente. Aps isso ser possvel acessar o link
http://localhost:8080/multitenantapp para visualizar a primeira tela da aplicao,
mostrado na Figura 6.7, com o CRUD da entidade criada (Product).
Figura 6.7 - Tela Inicial de uma aplicao Grails
Assim, observamos que com poucos comandos temos uma pequena aplicao grails
funcionando.
6.1.4.3. Componentes de uma aplicao multi-tenancy
Para implementar uma aplicao multi-tenancy necessrio implementar autenticao,
controle de configurabilidade e controle de acesso a dados que atendam s necessidades
de uma aplicao multi-tenancy que foram descritos nos tpicos anteriores. A fim de
diminuir a complexidade da aplicao de exemplo no ser implementado o controle de
configurabilidade em nosso aplicativo de demonstrao.
136
Grails disponibiliza uma arquitetura de plugins que promove o reuso e o aumento de
produtividade. Dentre os plug-ins disponveis existem plugins que facilitam muito a
implementao de aplicaes multi-tenancy em Grails. So eles Multi-tenant Plugin
(Core) e Multi-tenant Spring Security Integration. Esses 2 plugins extendem as
funcionalidades de controle de acesso a dados e autenticao de forma a atender os
requisitos de aplicaes multi-tenant.
Para dar continuidade ao nosso exemplo prtico ser instalado agora um plugin que
adiciona a funcionalidade de autenticao em nossa aplicao. Para isso necessrio a
execuo dos comandos a seguir.
Para que esse plugin funcione necessrio que o cdigo no arquivo BootStrap.groovy
existente na pasta conf do seu projeto esteja semelhante ao cdigo apresentado na
Figura 6.8. Em Seguida j possvel re-executar a aplicao com o comando run-app e
verificar que para utilizar a aplicao agora necessrio utilizar um login e senha. As
configuraes adicionadas no arquivo BootStrap.groovy criaram no banco de dados 2
usurios(user1 e user2), ambos com senha 123.
Figura 6.8 - BootStrap.groovy (Single Tenant)
O prximo passo instalar os plug-ins necessrios para tornar nosso exemplo uma
aplicao multi-tenant. Para isso necessrio a execuo do comando a seguir em nosso
projeto.
Aps a instalao do plugin so necessrias algumas configuraes adicionais:
>> grails install-plugin multi-tenant-spring-security
>> grails install-plugin spring-security-core 1.1.2
>> s2-quickstart login SecUser Role Requestmap
137
1. Adicionar o campo Integer userTenantId na classe SecUser.groovy. Isso far
com que cada usurio esteja associado a um tenant especfico. Ao cadastrar um
usurio, ele dever possuir um valor para o campo userTenantId, isso ir indicar
quais registros do banco de dados ele ter acesso.
2. Anotar a classe Product.groovy com @MultiTenant. Em uma aplicao multi-
tenancy poderemos ter entidades que tero ou no caractersticas multi-tenancy.
Ou seja, mesmo em uma aplicao multi-tenancy poderemos ter entidades que
tero seus registros compartilhados entre todos os tenants. Para indicar quais
entidades tero seus registros filtrados por tenant utilizamos a anotao
@MultiTenant.
3. Adicionar no bloco de constraints da classe Product.groovy a seguinte linha de
cdigo tenantId(display:false). Isso far com que o campo tenantId, que
criado dinamicamente no seja alterado pelos usurios. Dado que o
gerenciamento de seu valor feito pelo plugin.
4. Altera a classe BootStrap.groovy para que o valor do atributo userTenantId seja
informado na criao dos 2 usurios padres do sistema. O cdigo da classe
BootStrap.groovy dever ficar semelhante ao cdigo apresentado na Figura 6.9.
Essa alterao far com que cada usurio padro do sistema esteja em um tenant
diferente.
5. Adicionar o cdigo da Figura 6.10 ao final do arquivo Config.groovy, localizado
na pasta conf do projeto.
Figura 6.9 - BootStrap.groovy (Multi-tenant)
Figura 6.10 - Alterao Config.groovy
138
Seguido estes passos, as funcionalidades bsicas de uma aplicao multi-tenancy esto
presentes no nosso exemplo. Para validar o funcionamento necessrio efetuar o login
com o usurio user1(senha=123) e cadastrar alguns produtos. Em seguida efetuar login
com o usurio user2 e, tambm, efetuar alguns cadastros no sistema. Ser possvel ver
que os dados cadastrados efetuados pelo usurio user1 no sero visualizados pelo
usurio user2, e vice versa. Isto ocorre porque quando esses usurios foram criados
colocados em tenants diferentes.
6.1.5. Concluso
Tomando como base a fundamentao terica e o exemplo prtico apresentado,
conclumos que possvel implementar uma aplicao multi-tenancy de forma produtiva
e com alto grau de reuso de cdigo. Apesar do exemplo prtico ser implementado em
Groovy e Grails, essa arquitetura pode ser replicada em vrias outras linguagens
existentes no mercado. Embora os esforos de pesquisa na rea de SaaS e multi-tenancy
estejam crescendo bastante ainda existem vrios pontos a serem explorados e evoludos,
como avaliao de desempenho, monitoramento de tenants, escalabilidade, migrao de
aplicaes legadas para a arquitetura multi-tenancy, entre outros.
6.1.6. Referncias
ABDUL-JAWAD,. Groovy and Grails Recipes. Berkely: Apress, 2009.
BEZEMER, C.-P.; ZAIDMAN, A. Multi-tenant SaaS applications: maintenance dream
or nightmare? ERCIM Workshop on Software Evolution (EVOL) and International
Workshop on Principles of Software Evolution (IWPSE), New York, 2010.
CHONG , ; CARRARO,. Architecture Strategies for Catching the Long Tail, 2006.
Disponivel em: <http://msdn.microsoft.com/en-us/library/aa479069.aspx>. Acesso em:
2011 out. 01.
HU WANG, Z. et al. A Study and Performance Evaluation of the Multi-Tenant Data
Tier Design Patterns for Service Oriented Computing. ICEBE '08 Proceedings of the
2008 IEEE International Conference on e-Business Engineering, Washington, DC,
2008. 94-101.
JANSEN, S.; HOUBEN, G.-J.; BRINKKEMPER, S. Customization realization in
multi-tenant web applications: case studies from the library sector. Proceeding
ICWE'10 Proceedings of the 10th international conference on Web engineering,
Berlin, Heidelberg, 2010. 445-459.
JIE GUO, et al. A Framework for Native Multi-Tenancy Application Development and
Management. 9th IEEE International Conference on E-Commerce Technology and
the 4th IEEE International Conference on Enterprise Computing, E-Commerce,
and E-Services, Tokyo, 2007. 551 - 558.
KLEIN, D. Grails: A Quick-Start Guide. [S.l.]: Pragmatic Bookshelf, 2009.
KWOK, T.; NGUYEN, T.; LAM, L. A Software as a Service with Multi-tenancy
Support for an Electronic Contract Management Application. International
Conference on Services Computing. Washington: IEEE Computer Society. 2008. p.
179-186.
139
LIN, H. et al. Feedback-Control-Based Performance Regulation for Multi-Tenant
Applications. 15th International Conference on Parallel and Distributed Systems
(ICPADS). Shenzhen: IEEE. 2009. p. 134 - 141.
MELL , P.; GRANCE,. Draft nist working definition of cloud computing - v15.
National Insitute of Standards and Technology, 2009. Disponivel em:
<http://www.nist.gov/itl/cloud/upload/cloud-def-v15.pdf>. Acesso em: 1 out. 2011.
NITU. Configurability in SaaS (software as a service) applications. Proceedings of the
2nd annual India Software Engineering Conference (ISEC), Pune, India, 2009. 19-
26.
ROCHER, G. K. The Definitive Guide to Grails. Berkely: Apress, 2006.
SALESFORCE, 2000. Disponivel em: <http://www.salesforce.com>. Acesso em: 2011
out. 1.
SMITH, G.; LEDBROOK, P. Grails in Action. Greenwich: Manning Publications,
2009.
TAURION, C. Cloud Computing: Computao em Nuvem: Transformando o mundo
da tecnologia da informao. Rio de Janeiro: Brasport, 2009.
WARFIELD, B. Multitenancy Can Have a 16:1 Cost Advantage Over Single-Tenant.
SmoothSpan Blog, 2007. Disponivel em:
<http://smoothspan.wordpress.com/2007/10/28/multitenancy-can-have-a-161-cost-
advantage-over-single-tenant/>. Acesso em: 17 out. 2011.
140
Captulo
7
Introduco a Agentes Autnomos e Sistemas Multiagentes
Samy S
1
, Joo Alcntara
1
1
Departamento de Computao Universidade Federal do Cear (UFC)
Caixa Postal 12.166 60.455-970 Fortaleza CE Brazil
{samy,jnando}@lia.ufc.br
Abstract. The goal of this chapter is to introduce the main concepts in the area
of autonomous agents and multiagent systems. Starting with the question "What
is an agent?", we discuss the key aspects of building agents and agent
societies. For each such concept, we provide some intuition about it, its
formalization, illustrations and examples. In the beginning, we consider the
properties of a single agent and its relation towards the environment in which it
exists. Next, we step up to observe agents societies and the peculiarities that
emerge from the plurality of autonomous self-interested entities. In such
situations, it is possible that agents get involved in situations of conflict or
cooperation, or that some coordination of their actions is required to assure their
goals can be achieved.
Resumo. O objetivo deste captulo introduzir os principais conceitos da rea
de agentes autnomos e sistemas multiagentes. Comeando pela pergunta "O
que um agente?", abordamos os aspectos-chave para a contruo de
agentes autnomos e sociedades de agentes. Para cada conceito abordado,
fornecemos uma intuio sobre o mesmo, sua formalizao, ilustraes e
exemplos. Inicialmente, consideramos as propriedades de um nico agente e
sua relao com o ambiente em que existe. Em seguida, passamos a observar
sociedades de agentes e as peculiaridades emergentes da pluralidade de
entidades autnomas dotadas de interesses prprios. Em tais situaes,
possvel que os agentes se envolvam em situaes de disputa ou cooperao,
ou que precisem coordenar suas aes para garantir que seus objetivos
possam ser cumpridos.
7.1. O que so agentes?
Nesta seo, vamos definir o que so agentes e abordar alguns aspectos sobre como
constru-los. No entanto, devemos destacar que a definio de agente controversa,
pois depende muito do domnio do problema a ser explorado. Apesar disso, todos ns
iremos concordar que uma caracterstica central que todo agente deve ter o da
autonomia. Mas o que vem a ser essa autonomia? Responder essa pergunta no
fcil e ir depender mais uma vez do tipo de problema que estamos lidando. Para
alguns problemas, autonomia pode ser entendida como a capacidade de aprender a
partir da prpria experincia; j em outras aplicaes, aprendizagem um aspecto a
ser evitado. Comearemos, ento, com uma definio de agentes adaptada de
[Wooldridge and Jennings 1995]:
Um agente um sistema computacional que est situado em algum ambiente e
capaz de aes autonmas nesse ambiente com o propsito de alcanar os
objetivos que lhe foram delegados. O que precisamos comprender que agentes
devem decidir por conta prpria o que precisa ser feito para alcanar os objetivos
propostos em vez de receber comandos para tal fim. Em suma, um agente deve ser
141
no s capaz de tomar decises, mas tambm de escolher que aes tomar e quando
execut-las.
Figura 7.1. Um agente em seu ambiente
Como ilustrado na Figura 7.1, um agente percebe o ambiente no qual ele est
inserido atravs de sensores. Como resultado dessa percepo, o agente produz
como sada uma ao que ir, por sua vez, alterar o ambiente. Esse processo de
percepo/ao continua ciclicamente e a base do funcionamento de um agente.
No obstante, na maioria dos problemas de interesse prtico, um agente ir possuir
um controle parcial sobre o ambiente. Isso quer dizer que a mesma ao executada
duas vezes em circunstncias aparentemente idnticas podem ocasionar resultados
completamente diferentes, podendo, em particular, falhar na obteno dos resultados
esperados. Podemos, assim, dizer que os ambientes em geral so no-
determinsticos.
No presente contexto, devemos compreender autonomia como a habilidade de
decidir como agir para alcanar os objetivos delegados. Mas at que ponto um agente
autnomo? Um agente, por exemplo, no deve ter autonomia para escolher o
objetivo a ser alcanado pelo sistema; sua autonomia limita-se, portanto, a buscar os
meios para alcanar esse objetivo. Alm disso, nem todo agente possui o mesmo nvel
de autonomia. Por exemplo, um agente participante de uma operao mdica no
deve ter a mesma autonomia de um agente responsvel por desligar os quartos de um
hotel quando no houver ningum presente.
Mais recentemente, tem-se recorrido ideia de agentes com a autonomia
ajustvel de acordo com as circunstncias. O princpio geral que um agente deve
entregar o poder de tomar deciso para uma autoridade maior (um ser humano)
quando
Ele acredita que isso trar grandes benefcios;
Ambiente com alto grau de incerteza;
A deciso pode causar danos;
Incapacidade do agente de tomar deciso.
7.1.1. Agentes Inteligentes
Com base no que foi exposto, podemos perceber que a noo de agente bastante
abrangente e vai de um simples interruptor de luz ou um termostato ao complexo
sistema de controle de uma nave espacial no-tripulada. No entanto, nem todos esses
agentes (como o caso do termostato) so inteligentes. Mas o que seria um agente
inteligente? De acordo com [Wooldridge and Jennings 1995], um agente inteligente
se ele possui
Reatividade
142
Proatividade
Habilidade Social
7.1.1.1. Reatividade
Agentes inteligentes devem perceber seu ambiente e responder atempadamente s mu-
danas ocorridas nele para satisfazer os seus objetivos. Agora se as nicas mudanas que
ocorrem no ambiente so resultantes das aes do agente, ele no precisar se preocu-
par com essas mudanas, pois as ter sobre controle. No obstante, o mundo no bem
assim: os ambientes so normalmente dinmicos e as mudanas ocorrem independen-
tes do agente, dicultando sobremaneira o desenvolvimento de sistemas computacionais
ecientes. Podemos denir um sistema reativo como aquele que mantm uma interao
contnua com o seu ambiente e responde em tempo hbil s mudanas que ocorrem nele.
7.1.1.2. Proatividade
Desenvolver agentes reativos considerado relativamente simples na medida que para
cada estmulo percebido do ambiente, haja uma regra que permita ao agente dar a resposta
mais adequada. Em geral, no entanto, ns queremos que os agentes executem tarefas para
ns. Com isso, agentes inteligentes devem tambm ser proativos, ou seja, devem exibir
um comportamento orientado a objetivos, tomar a iniciativa para alcan-los alm de
reconhecer novas oportunidades.
7.1.1.3. Habilidade Social
O mundo real um mundo com multiagentes; em pouqussimas tarefas, podemos alcanar
algum xito sem a ajuda de outros. O problema que nem todo mundo compartilha os
nossos mesmos objetivos, sendo muita vezes necessrio negociar e cooperar com outros.
Algo similar ocorre num ambiente computacional. Nesse sentido, a habilidade social de
um agente deve ser compreendida como a sua capacidade de interagir com outros agentes
(e possivelmente humanos) atravs de alguma linguagem de comunicao de agentes.
Atravs dessa linguagem os agentes podem
Cooperar: neste caso, os agentes trabalham como se estivessem num time com o obje-
tivo de alcanar um objetivo em comum. Os agentes cooperam quando um agente
sozinho no capaz de alcanar o objetivo ou quando o trabalho conjunto ir
produz um resultado melhor .
Coordenar: nem sempre dois ou mais agentes podem usar o mesmo recurso ao mesmo
tempo. Assim preciso que eles coordenem suas atividades de modo que os agen-
tes envolvidos possam fazer uso do recurso.
Negociar: a habilidade de fazer acordos sobre assuntos de interesse em comum. Se
voc quer assistir TV e seu irmo quer estudar, um possvel acordo voc ligue a
TV, mas com volume baixo. Tipicamente, negociao envolve proposta e contra-
proposta com compromissos feitos pelos participantes.
Essas habilidades sociais sero esmiuadas mais adiante.
143
7.1.1.4. Algumas Propriedades que Agentes Podem Ter
Alm das propriedades citadas um agente (inteligente) pode ter
Mobilidade: habilidade do agente se mover. Para um agente software, esse movi-
mento por volta de uma rede eletrnica;
Veracidade: se um agente ir propositalmente comunicar informao falsa para
alcanar seu objetivo;
Benevolncia: se agentes possuem objetivos conitantes e se nesse caso, eles vo
se ajudar entre si;
Racionalidade: se um agente ir agir para alcanar seus objetivos e no ir delibe-
radamente agir para evitar esse alcance;
Aprendizagem/adaptao: se os agentes melhoram o seu desempenho com o de-
correr do tempo.
7.1.2. Arquitetura Abstrata para Agentes
Vamos agora formalizar a noo de agente da qual temos discutido. Primeiramente, ire-
mos caracterizar o ambiente simplesmente como umconjunto nito, discreto E de estados
instantneos:
E = {e, e
, . . .}.
Os agentes possuem um repertrio de aes disponveis, que podem ser usadas
para transformar o estado do ambiente. Seja
Ac = {a, a
, . . .}
o conjunto (nito) dessas aes.
A ideia geral que o ambiente comea em algum estado e
0
E. Ento o agente
inicia escolhendo uma ao
0
Ac. Como resultado dessa ao, o ambiente poder
escolher (inclusive no-deterministicamente) dentre umcerto nmero de estados possveis
aquele que servir de resposta para o agente (chamemo-lo de e
1
). Com base nesse estado
e
1
, o agente ter que escolher uma ao para executar, que ir, por sua vez, provocar uma
resposta do ambiente e assim por diante. Uma execuo r de um agente em um ambiente
, portanto, uma sequncia alternada de estados do ambiente e aes:
r e
0
0
e
1
1
e
2
2
e
3
u1
e
u
.
Sejam
R o conjunto de todas as sequncias nitas possveis (sobre E e Ac);
R
Ac
o subconjunto dessas sequncias que terminam em ao;
R
E
o subconjunto dessas sequncias que terminam em um estado.
Ns usaremos r, r
Faa() then
4: return
5: end if
6: end for
7: for cada Ac do
8: if
Faa() then
9: return
10: end if
11: end for
12: return null
13: end
147
A ideia que o programador do agente ir codicar as regras de deduo e
um banco de dados de um modo tal que se uma frmula Faa() possa ser derivada,
em que um termo que denota uma ao, ento a melhor ao a ser executada.
Nesta abordagem, o processo de tomada de deciso visto como uma deduo, sendo
esse processo codicado como uma teoria lgica e a parte de selecionar uma ao reduz-
se a um problema de prova. Essa abordagem elegante e possui uma semntica bem
denida. No obstante, problemas relacionados a sua alta complexidade computacional
tornam questionveis se agentes como provadores de teorema podem ser empregados em
ambientes que requerem decises rpidas. Alm disso, eles partem do pressuposto que o
mundo no ir mudar de modo signicativo enquanto o agente est decidindo o que fazer.
Quando isso no se aplica, essa abordagem poder acarretar em resultados indesejveis.
7.1.3.2. Programao Orientada a Agentes
Em 1990, Yoav Shoham introduziu um novo paradigma de programao baseado numa
viso societria da computao. Chamado de "programao orientada a agentes", sua
principal ideia permitir programar agentes diretamente em termos noes como crena,
compromisso e inteno. A primeira implementao desse paradigma foi a linguagem de
programao Agent0. Nessa linguagem, um agente especicado como um conjunto de
capacidades (coisas que ele pode fazer), um conjunto de crenas iniciais, um conjunto de
compromissos iniciais e um conjunto de regras de compromisso. O componente-chave
que determina como o agente agente vai agir o conjunto de regras de compromissos.
Cada regra de compromisso contm uma condio de mensagem, uma condio mental
e uma ao. Para determinar se uma regra pode ser aplicada, a condio de mensagem
confrontada com as mensagens que o agente recebeu; a condio mental confron-
tada com as crenas do agente. Se essas condies forem satisfeitas, o agente torna-se
comprometido quela ao.
Aes em Agent0 podem ser privadas, correspondendo a uma sub-routina execu-
tada internamente ou comunicativa (envio de mensagens). Por sua vez, mensagens so
restritas a trs tipos: requests or unrequests para respectivamente se comprometer a
ou declinar a execuo de aes e mensagens do tipo inform. de se destacar que men-
sagens request e unrequest resultam tipicamente na modicao dos compromissos do
agente, enquanto que mensagens inform alteram as crenas do agente. A seguir, mostra-
mos um exemplo de regra de compromisso em Agent0:
COMMIT(
( agent, REQUEST, DO(time, action)
), ;;; msg condition
( B,
[now, Friend agent] AND
CAN(self, action) AND
NOT [time, CMT(self, anyaction)]
), ;;; mental condition
self,
DO(time, action)
)
148
Essa regra pode ser parafraseada da seguinte maneira: se eu recebo uma mensa-
gem de agent que me solicita executar action em time e eu acredito que
agent um amigo no momento atual;
eu posso fazer essa ao;
em time, eu no estou comprometido em fazer qualquer outra ao,
ento eu me comprometo a fazer action em time.
7.1.3.3. Agentes Reativos
Dois problemas principais so vericados com as abordagens baseadas em representao
lgica/simblica dos agentes:
Problema da Transduo: como traduzir o mundo real numa representao simblica?
Problema da Representao/Raciocnio: como representar simbolicamente informa-
o sobre complexas entidades do mundo real e raciocinar com elas eciente-
mente?
As diculdades de lidar com esses problemas nas abordagens simblicas levaram
muitos pesquisadores a investigar alternativas. Uma delas a abordagem reativa, que
tem esse nome porque tais sistemas so frequentemente percebidos como simplesmente
reagindo a um ambiente sem raciocinar sobre ele. Um dos pesquisadores que estudou
essa abordagem, Rodney Brooks, argumentou o seguinte:
1. Comportamento inteligente pode ser gerado sem representao explcita do tipo
que a IA simblica prope.
2. Comportamento inteligente pode ser gerado sem raciocnio abstrato explcito do
tipo que a IA simblica prope.
3. Inteligncia uma propriedade emergente de certos sistemas complexos.
Ele identifca duas ideias centrais em sistemas reativos:
1. Situado e encorpado: inteligncia real situada no mundo; no so sistemas
desencorpados tais como provadores de teorema ou sistemas especialistas.
2. Inteligncia e emergncia: comportamento inteligente surge como um resultado
da interao de um agente com o seu ambiente. Ademais, inteligncia est no olho
do observador; no uma propriedade inata e isolada.
Para ilustrar suas ideias, Brooks construiu alguns agentes baseados em sua arquitetura da
subsuno. Nesse trabalho, podemos identicar que no processo de tomada de deciso do
agente feito atravs de um conjunto de comportamentos de realizao de tarefas. Cada
comportamento pode ser visto como uma simples regra situao ao, que mapeia
uma entrada de dados (perceptual) diretamente em aes. Alm do mais, cada comporta-
mento compete com outros pelo controle sobre o agente. Uma outra caracterstica dessa
abordagem que ela est dividida em camadas que formam uma hierarquia, sendo que
as camadas inferiores representam tipos mais primitivos de comportamentos (tais como
evitar obstculos) e tm precedncia sobre camadas superiores dessa hierarquia (Figura
7.3).
149
Figura 7.3. Exemplo de mquina baseada em arquitetura da subsuno
vlido mencionar que uma das vantagens desses sistemas baseados em arqui-
tetura da subsuno a sua simplicidade aliada sua ecincia computacional, sendo
empregado em situaes que exigem um rpido tempo de resposta. Em [Steels 1990], por
exemplo, o autor prope um agente baseado em arquitetura da subsuno concebido para
explorar planetas distantes.
7.1.3.4. Agentes Hbridos
Muitos pesquisadores tm argumentado que tanto uma abordagem que seja completa-
mente deliberativa quanto um que seja completamente reativa no so apropriadas para a
construo de agentes. Em funo disso, eles sugeriram um sistema hbrido que buscasse
tirar proveito das boas qualidades de ambas as abordagens. Um caminho direto para tal
sistema seria o de construir um agente a partir de dois (ou mais) subsistemas:
Subsistema Deliberativo: contm um modelo simblico do mundo que desen-
volve planos e toma decises maneira proposta pela IA Simblica;
Subsistema Reativo: capaz de reagir a eventos sem ter que fazer raciocnios
complexos.
De um modo geral, o componente reativo tem precedncia sobre a parte delibera-
tiva. Pode-se ainda argumentar que essa forma de estruturao leva naturalmente ideia
de arquitetura em camadas, das quis TouringMachines [Ferguson 1992] and InteRRaP
[Mller and Pischel 1993] so dois bem conhecidos exemplos. Em tais arquiteturas, os
subsistemas de controle de um agente so dispostos numa hierarquia com as camadas
mais altas lidando com informao cada vez mais abstrata.
Um problema central nessas arquiteturas que tipo de estrutura de controle em-
butir nos subsistemas do agente para gerir as interaes entre as vrias camadas. Em todo
caso, podemos identicar dois tipos de uxo de controle nessas arquiteturas por camadas:
Camada horizontal: cada camada est diretamente conectada s entradas senso-
riais e as aes retornadas como sadas (Figura 7.4(a)). Note que como se cada
camada agisse como um agente, produzindo sugestes sobre que ao executar.
Camada vertical: nesse tipo de arquitetura entradas sensoriais e as aes como
sada so lidadas cada uma por no mximo uma camada (Figuras 7.4(b) e (c)).
150
Figura 7.4. Agentes Hbridos
7.2. Sistemas Multiagentes
At o momento temo-nos concentrado na construo de um agente. No entanto, exce-
o de sistemas extremamente triviais, no iremos encontrar um sistema com um nico
agente. A razo que um sistema contm um nmero de subsistemas que devem intera-
gir uns com os outros com o objetivo de executar suas tarefas com xito. O ponto-chave
agora no como construir um agente, mas como construir uma sociedade de agentes. A
Figura 7.5 ilustra a estrutura tpica de um Sistema Multiagente.
Figura 7.5. Estrutura tpica de um Sistema Multiagente
Um aspecto fundamental aqui a interao entre agentes. Num sistema multia-
gentes, os agentes so capazes de agir num ambiente; diferentes agentes tm diferentes
esferas de inuncia, ou seja, as partes do ambiente sobre a qual os agentes vo ter al-
guma forma de controle. Esferas de inuncia com reas em comum do margem para
151
uma relao de dependncia entre os agentes. Por exemplo, dois agentes robs podem ser
capazes de passar por uma porta, mas ambos no podero fazer isso simultanemente.
Num sistema multiagente, iremos encontrar duas maneiras distintas (muitas vezes
conitantes) de se analisar um agente:
Na perspectiva de quem construiu um agente individual, espera-se que esse agente
faa o melhor para ele.
Na perspectiva de quem projetou o sistema multiagente, o sistema deve otimizar
o desempenho do sistema como um todo.
Um bom sistema multiagente aquele que consegue satisfazer essas duas perspec-
tivas e evitar conitos. Ademais, no que tange aos tipos de interaes que podem ocorrer
entre os agentes, podemos destacar:
Coordenao : objetivo que um agente pelo menos no interra no trabalho do outro.
Eles podem, inclusive, coordenarem entre si para que um agente possa ajudar um
outro.
Comunicao : coordenao normalmente requer comunicao entre os agentes.
Cooperao : Dependendo do objetivo de cada agente, quando um agente coordena ele
pode tambm querer cooperar ou ainda competir.
Negociao : se um agente age por interesse prprio, ento cooperao descartada, mas
agentes podem recorrer a uma negociao para alcanar cooperao.
Em suma, um sistema multiagente consiste de um nmero de agentes que intera-
gem entre si. No caso mais geral, eles vo agir para atender os propsitos para os quais
foram projetados, podendo ter diferentes objetivos e motivaes. No obstante, para que
essa interao seja exitosa, eles tero que cooperar, coordenar e negociar uns com os
outros [Wooldridge 2009].
7.3. Interaes entre Agentes
Como sugerido anteriormente na Figura 7.5, as esferas de inuncia dos agentes em um
sistema podem coincidir. Quando isso acontece, abre-se espao para conitos, mas tam-
bm para ganhos mtuos. De certa maneira, o que faz um sistema multiagentes so o
conjunto de entidades autnomas (s quais chamamos de agentes) e as interaes entre as
mesmas. Portanto, compreender que tipo de interaes se do entre os agentes e em que
situaes elas ocorrem de extrema importncia ao nos depararmos com algo que parea
um domnio multiagentes.
7.3.1. Utilidades e Preferncias
Para simplicar o entendimento dos conceitos a seguir, vamos nos restringir a sistemas
com apenas dois agentes, os quais chamaremos de i e j, respectivamente. Assumimos que
cada um desses agentes tem interesses prprios ( self-interested), ou seja, cada agente
tem suas prprias preferncias e desejos sobre como o mundo deveria ser. No momento,
tambm no vamos nos preocupar com a origem desses desejos e preferncias. Considere
= {
1
,
2
, . . . , }, o conjunto de todos os possveis estados ou resultados (outcomes)
sobre os quais os agentes tm preferncias.
As preferncias dos agentes so capturadas por funes de utilidade, uma para
cada agente, que designam um nmero real para cada resultado em . Esse nmero real
152
indica o quo favorvel o agente acredita que esse resultado lhe , de forma que, quanto
maior o nmero, mais o agente tem interesse naquele estado. Dessa forma, a funo de
utilidade do agente i ser
u
i
R
e as preferncias do agente j so capturadas pela funo de utilidade
u
j
R.
Note que, para cada agente, a relao = {(,
) u
i
() u
i
(
)}
uma ordem parcial, isto , uma relao reexiva, transitiva e anti-simtrica.
7.3.2. Encontros entre Agentes
Vamos agora considerar um modelo para o ambiente no qual os agentes agem. Conside-
raremos que os agentes escolhem simultaneamente que ao iro executar no ambiente
e que um dos estados de ser o resultado dessas escolhas. O resultado depender de
que ao cada agente executa, portanto ambos os agentes podem inuenciar no resultado.
Assumimos tambm que os agentes precisam executar uma ao, ou seja, no podem in-
uenciar o resultado ao permanecer inativos, mas precisam escolher entre uma das aes.
Alm disso, assumiremos que um agente no pode inuenciar e nem sabe qual ser a ao
executada pelo outro agente.
Para simplicar ainda mais, assumiremos que cada agente s tem duas opes
de ao para executar. Chamaremos s opes de C (cooperar) e A (abster-se), ter-
minologia que ser utilizada em um exemplo frente. Seja Ac = {C, A}, o ambiente
modicado de acordo com a funo
Ac Ac ,
onde a primeira ocorrncia de Ac a ao do agente i e a segunda ocorrncia a
ao de j. Essa funo , essencialmente, uma funo de transformao de estados, como
discutido na Seo 1.2.
Eis um exemplo de funo de ambiente:
(A, A) =
1
, (A, C) =
2
, (C, A) =
3
, (C, C) =
4
(3.1)
Nessa funo, cada combinao de aes dos agentes leva a um resultado dife-
rente. Isso signica que o ambiente sensvel s escolhas dos agentes. Em um outro
extremo, os agente poderiam ser completamente incapazes de inuenciar no seu ambi-
ente. Nesse caso, a funo de ambiente mapearia todas as combinaes de aes para o
mesmo resultado.
(A, A) =
1
, (A, C) =
1
, (C, A) =
1
, (C, C) =
1
(3.2)
No exemplo acima, no importa o que os agentes faam. Uma outra possibili-
dade que apenas um dos agentes possa inuenciar no ambiente. No exemplo abaixo, o
ambiente varia somente de acordo com as escolhas do Agent j.
(A, A) =
1
, (A, C) =
2
, (C, A) =
1
, (C, C) =
2
(3.3)
153
Como podemos observar, as escolhas de i no interferem no ambiente.
Consideremos novamente o cenrio (3.1), em que os dois agentes tm inuncia
no ambiente, mas agora vamos levar em conta as suas preferncias. Suponhamos que as
preferncias dos agentes so dadas pelas seguintes funes de utilidade:
u
i
(
1
) = 1 u
i
(
2
) = 1 u
i
(
3
) = 4 u
i
(
4
) = 4
u
j
(
1
) = 1 u
j
(
2
) = 4 u
j
(
3
) = 1 u
j
(
4
) = 4
Nesse caso, podemos relacionar as escolhas dos agentes s utilidades atribudas a
cada resultado da seguinte maneira:
u
i
((A, A)) = 1 u
i
((A, C)) = 1 u
i
((C, A)) = 4 u
i
((C, C)) = 4
u
j
((A, A)) = 1 u
j
((A, C)) = 4 u
j
((C, A)) = 1 u
j
((C, C)) = 4
Neste caso, a preferncia do agente i dada pela ordem parcial
u
i
((C, C)) u
i
((C, A)) > u
i
((A, C)) u
i
((A, A)),
sugerindo que o agent i deve cooperar para obter um resultado mais satisfatrio.
Dizemos que essa a opo racional, pois no h nenhum cenrio em que ele tenha
vantagem se agir de maneira diferente.
As preferncias dos agentes podem ser apresentadas de maneira concisa em uma
matriz de payoffs:
Figura 7.6. A matrix de payoffs para os agentes i e j.
Em uma matriz de payoffs, o agente i joga de acordo com as colunas e recebe a
recompensa de cima em cada clula. Similarmente, as jogadas do agente j esto repre-
sentadas nas linhas e a utilidade alcanada em cada caso o nmero de baixo em cada
clula.
7.3.3. Extratgias Dominantes
Dado um encontro envolvendo dois agentes i e j, cada um deve decidir sobre que ao
tomar. Um agente decide por sua aes de maneira racional se pesa, em cada escolha,
os possveis cenrios que podem resultar de suas aes e as utilidades destes. Sejam
1
,
2
, dizemos que
1
domina
2
se cada resultado em
1
prefervel sobre cada
resultado em
2
.
154
Por exemplo, considere = {
1
,
2
,
3
,
4
}, com u
i
(
1
) > u
i
(
2
) > u
i
(
3
) >
u
i
(
4
),
1
= {
1
,
2
} e
2
= {
3
,
4
}. Nesse caso, dizemos que
1
domina fortemente
2
, pois u
i
(
1
) > u
i
(
3
), u
i
(
1
) > u
i
(
4
), u
i
(
2
) > u
i
(
3
) e u
i
(
2
) > u
i
(
4
).
Uma vez que os conceitos discutidos nessa seo so provenientes de teoria dos
jogos, vamos comear a falar de aes possveis como estratgias. Dessa forma, os agen-
tes devem escolher que estratgias vo adotar em cada situao. Denotemos por s
, o
conjunto de resultados que podem ser alcanados quando o agente i escolhe e joga de
acordo com a estratgia s. Nos exemplos da Seo 3.2, teramos, portanto, C
= {
3
,
4
},
enquanto que A
= {
1
,
2
} para o agente i. Dizemos que uma estratgia s
1
domina
fortemente outra estratgia s
2
se s
1
domina fortemente s
2
. Se uma estratgia s
i
domina
fortemente a todas as outras estratgias acessveis a um agente, dizemos que s
i
uma
estratgia dominante.
A intuio por trs de uma estratgia dominante que esta garante ao agente
alcanar os melhores resultados possveis, ou seja, maximizar a sua utilidade. Quando
existe uma estratgia dominante, o melhor que o agente tem a fazer jogar por ela, pois
os desvios podem lhe levar a recompensas menores ou cenrios envolvendo perdas.
Quando temos dois ou mais agentes em uma mesma situao, podemos perceber
que, por vezes, as estratgias dominantes de cada agente o so por inuncia mtua.
Nesse caso, dizemos que as estratgias se encontram em equilbrio, pois nenhum agente
tem incentivo para desviar-se dessa escolha de estratgias. Esse conceito o de Equilbrio
de Nash e um dos mais importantes em Teoria dos Jogos e na anlise de interaes entre
agentes. Um cenrio de interao entre agentes pode ter zero, um ou vrios equilbrios de
Nash.
7.3.4. O Dilema dos Prisioneiros
Considere o seguinte cenrio:
Dois homens so presos e acusados de terem cometido um crime juntos. Os prisi-
oneiros so mantidos em celas separadas e no tm como se comunicar. A cada um dos
homens dito o seguinte:
1. Se um dos dois confessar o crime, mas o outro no o zer, o que tiver confessado
ser absolvido e o outro cumprir pena de 3 anos;
2. Se os dois confessarem o crime, cada um receber dois anos.
Os dois prisioneiros sabem que, se nenhum dos dois confessar, cada um pegar
1 ano de cadeia. A partir de agora, nos referiremos a confessar como cooperar (com a
polcia) e no confessar como abster-se (da oferta). Suponha que voc um dos agentes
e responda: se voc fosse um dos prisioneiros, o que faria?
Esse cenrio conhecido como o dilema do prisioneiro. Existem quatro resultados
possveis para esse cenrio, dependendo de que estratgias cada agente escolhe. Tais
resultados so resumidos nas funes
u
i
((A, A)) = 3 u
i
((A, C)) = 0 u
i
((C, A)) = 5 u
i
((C, C)) = 2
u
j
((A, A)) = 3 u
j
((A, C)) = 5 u
j
((C, A)) = 0 u
j
((C, C)) = 2.
As funes de utilidade dos agentes, portanto, so:
155
u
i
((C, A)) > u
i
((A, A)) > u
i
((C, C)) > u
i
((A, C)),
u
j
((A, C)) > u
j
((A, A)) > u
j
((C, C)) > u
j
((C, A)).
Ilustramos as funes de utilidade dos agentes na seguinte matriz de payoffs:
Figura 7.7. Matrix de payoffs para o dilema dos prisioneiros
Observe que os nmeros na matrix no dizem respeito ao nmero de anos que
cada agente poderia pegar de cadeia, mas utilidade vista em cada resultado por cada
agente. Nesse sentido, menos anos de cadeia sugerem uma utilidade maior.
Faamos uma anlise para denir o que o agente i deve fazer, colocando-nos em
seu lugar:
Suponha que eu (agente i) me abstenha da oferta. Nesse caso, se o j tambm se
abstiver, ns dois teremos um payoff 3 (pena de 1 ano). Se, por outro lado, o j
cooperar, ento eu terei um payoff 0 (pena de 5 anos). Portanto, o melhor payoff
que eu posso garantir se eu me abstiver, 0.
Suponha, ento, que eu coopere com a polcia. Nesse caso, se j se abstiver, eu
co com um payoff 5, mas se ele cooperar tambm, eu co com payoff 2. Assim
sendo, o melhor payoff que eu garanto se cooperar, 2.
Se eu me abstiver da oferta, garanto um payoff mnimo de 0, mas se eu cooperar
com a polcia, garanto o payoff mnimo de 2. Consequentemnte, se desejo ma-
ximizar a minha utilidade, devo garantir o payoff mnimo de 2. Ento eu devo
cooperar com a polcia!
O dilema dos prisioneiros um exemplo clssico em teoria dos jogos e multiagen-
tes, pois seu resultado inesperado. Como o cenrio de j idntico ao de i, seu raciocnio
j deve ser similar. Consequentemente, se i e j agirem de forma racional, os dois coope-
raro com a polcia e o resultado ser de utilidade 2 para ambos. Observe que o melhor
cenrio possvel para os agentes aquele em que os dois decidem por se abster, o que
lhes daria um payoff de 3, mas ambos evitam esse cenrio porque h um risco de que o
resultado lhes d uma utilidade menor.
7.4. Comunicao
Alm da interao, a comunicao entre agentes outro ponto essencial a ser estudado em
sistemas multiagentes. Nesse sentido, devemos destacar que a maioria dos trabalhos sobre
comunicao de agentes est alicerado na noo de atos de fala, cuja origem remonta-nos
ao livro How to Do Things with Words de Johm Austin [Austin 1962]. Para ele, enunciar
algo pode ser entendido como uma ao fsica. Nessa linha de estudos, em [Searle 1969]
John Searle identicou vrios tipos diferentes de atos de fala:
156
Representativas : tem carter informativo: "est chovendo".
Diretivas : tenta fazer com que o ouvinte faa algo: "por favor, pegue o ch".
Compromissivas : compromete o falante a fazer algo: "eu prometo que...".
Expressivas : meio pelo qual o falante expressa um estado mental: "muito obrigado".
Declaraes : tais como declarar uma guerra ou nomear algum.
De um modo geral, os atos de fala possuem dois componentes: um verbo perfor-
mativo(pedir, informar,...) e um contedo proposicional ("a porta est fechada"). Observe
que o verbo performativo est relacionado inteno do ato de fala. Assim, vrios atos
de fala diferentes podem ter o mesmo contedo proposicional. Veja os seguintes exem-
plos com o mesmo contedo proposicional ("a porta est fechada") gerando trs tipos
diferentes de atos de fala medida que mudamos o verbo performativo:
performativo = pedir; ato de fala: por favor, feche a porta.
performativo = informar; ato de fala: a porta est fechada.
performativo = perguntar; ato de fala: a porta est fechada?
A Foundation for Intelligent Physical Agents (FIPA) comeou a trabalhar sobre a
denio de padres de programas de agentes. Na linguagem desenvolvida por eles, os
atos de fala so caracterizados em termos dos performativos (a FIPA prope 20 tipos di-
ferentes), personagens envolvidos (remetente, destinatrio, etc) e contedo proposicional
da mensagem. Na Figura 7.8, temos um exemplo de ato de fala representado em FIPA no
qual o agent1 informa o agent5 que o preo oferecido a good200 150.
Figura 7.8. Exemplo de Ato de Fala em FIPA
Em FIPA, "Inform" e "Request" so dois performativos bsicos, em termos dos
quais todos os demais so denidos. O signicado de "Inform" e "Request" denido em
duas partes: pr-condio (o que deve ser verdadeiro para o ato de fala ser bemsucedido) e
efeito racional (o que o remetente da mensagem espera ocorrer). No caso do performativo
"Inform", o contedo uma declarao e a sua pr-condio determina que o remetente
acredita que o contedo verdadeiro, pretende que o destinatrio acredite na veracidade
do contedo e no acredita que o destinatrio saiba se o contedo seja verdadeiro ou no.
7.5. Alocao de Recursos
Em sociedades de agentes com interesses prprios (self-interested), recursos escassos se-
ro disputados e estaro, com frequncia, indisponveis. Exemplos de recursos escassos
incluem o direito ao uso de um objeto ou recursos computacionais. Tais recursos podem
ser necessrios realizao de uma atividade por um agente e, portanto, essencial para
que este alcance um objetivo. Nesse sentido, a alocao de recursos um problema cen-
tral em Sistemas Multiagentes e as disputas geradas por escassez devem ser tratadas de
maneira eciente.
157
Formalmente, dados um conjunto com k recursos R = {o
1
, . . . , o
k
} e um conjunto
com n agentes Agentes = {Ag
1
, . . . , Ag
n
}, um problema de alocao de recursos envolve
encontrar uma partio de R com tamanho n, ou seja, conjuntos R
1
, . . . , R
n
tais que
R
1
R
n
= R, mas R
i
R
j
= para quaisquer R
i
, R
j
{R
1
, . . . , R
n
}. Nesse caso,
cada R
i
o conjunto de recursos alocados para o agente Ag
i
, 1 i n.
Os mecanismos utilizados para alocao de recursos dependem essencialmente do
nmero de agentes e recursos envolvidos no problema. No caso em que h uma plurali-
dade de agentes, uma forma bastante eciente de lidar com a distribuio dos recursos
pela utilizao de leiles.
7.5.1. Leiles
Os leiles eram, at pouco tempo, no muito utilizados. A razo era o alto custo para
viabilizar um leilo, dada a necessidade de encontrar um local para o evento, transportar
as mercadorias, contratar um leiloeiro, e mais. A internet mudou isso, reduzindo drasti-
camente os custos e permitindo realizar e concorrer em leiles a partir de qualquer lugar
do mundo.
Essencialmente, um leilo ocorre entre um agente (o leiloeiro) que controla um
recurso (uma mercadoria) e outros agentes (os licitantes) interessados neste. O objetivo
de um leilo decidir qual dos licitantes ca com a mercadoria. Para tal, os licitantes
faro ofertas com outros recursos (a exemplo de dinheiro) com o intuito de minimizar o
seu custo, enquanto que o leiloeiro deseja maximar seu ganho. Nesse sentido, se uma
troca uma atribuio de valores a pagar por uma mercadoria, devemos considerar que:
Cada agente envolvido atribui um preo limite mercadoria.
Um comprador que troca mais do que o seu valor limite pela mercadoria, tem uma
perda.
Um vendedor que troca sua mercadoria por menos do que o seu valor limite, tem
uma perda.
Uma instituio de mercado dene como trocas devem ser feitas. Dessa maneira,
uma instituio dene que tipo de mensagens podem ser trocadas e, com base nas men-
sagens trocadas, quem o vencedor. O mais comum que as mensagens sejam restritas
a lances ou pedidos e que a regra que determina o vencedor diculte a elaborao de
estratgias para vencer o leilo.
Um leilo uma instituio de mercado em que mensagens entre interessados em
trocas (comerciantes) envolvem alguma informao de valor - uma oferta para comprar a
mercadoria (um lance) ou para vend-la (um pedido) por um certo valor - e que prioriza
lances de valor maior ou pedidos de valor menor.
7.5.1.1. Leilo Ingls
O leilo ingls o tipo mais conhecido, consistindo em uma sucesso de propostas pbli-
cas, com valor crescente e cujo vencedor aquele que profere a ltima (maior) proposta:
O leiloeiro prope um preo de reserva (que pode ser 0). Se nenhum agente der
um lance maior, a mercadoria ca com o leiloeiro por esse valor.
158
Agentes so convidados a dar lances cada vez mais altos, vontade. Quando
nenhum agente est disposto a aumentar o lance, o leilo encerrado e o vencedor
paga o valor que props.
A estratgia dominante em leiles desse tipo envolve o agente elevar o valor das
propostas aos poucos at atingir o seu valor de reserva e, ento, desistir.
7.5.1.2. Leilo Holands
Este modelo de leilo consiste de propostas pblicas, mas decrescentes. Dessa maneira,
ligeiramente diferente do leilo ingls, mas tal diferena o bastante para que, em geral,
no haja estratgia dominante.
O leiloeiro prope um valor inicial articialmente alto e segue com ofertas pouco
menores a cada momento.
Quando um agente aceita a ltima oferta feita, paga este valor e ca com a merca-
doria. Em caso de empate, o leilo reiniciado com um valor um pouco maior do
que o atual.
7.5.2. Negociao
Em alguns casos, o mecanismo de leiles insuciente e outras tcnicas mais elaboradas
precisam ser utilizadas. Um dos motivos possveis para tal que os leiles dependem
da existncia de algum tipo de moeda de troca que permita comparaes de valor. Em
um contexto mais geral, tal moeda pode no existir, mas os agentes poderiam que trocar
recursos diversos ou at favores. Nos referimos a essas tcnicas, em geral, pelo nome de
negociao. Em uma negociao, os agentes buscam um acordo em situaes que sejam
de interesse mtuo.
Em um contexto de negociao teremos ao menos quatro elementos:
Um conjunto de negociao, com todas as propostas que os agentes podem fazer.
Um protocolo, o qual dene quais propostas so legais em cada momento da ne-
gociao, com base em seu histrico.
Um coleo de estratgias de negociao, uma para cada agente, que determina
quais propostas um agente pretende fazer. Essa estratgia costuma ser privada
para cada agente, embora as propostas, quando feitas, costumem ser pblicas.
Uma regra que determina o m da negociao e qual seria o acordo alcanado.
Vrios fatores podem fazer com que o processo seja bastante complicado, a exem-
plo do nmero de itens negociados e do nmero de envolvidos na negociao. Devido s
diculdades introduzidas por esses fatores, a maior parte dos trabalhos nesse tema envolve
negociaes dos tipos mais simples, envolvendo apenas dois agentes, um nico item ne-
gocivel e em que h simetria, no sentido de que um resultado mais favorvel a um dos
agentes menos favorvel ao outro, em igual proporo, e vice-versa. Normalmente,
assume-se que os agentes buscam maximizar sua utilidade durante a negociao e que o
pior resultado possvel a ausncia de um acordo.
Uma negociao costuma ser realizada em uma sequncia de rodadas que en-
volvem, cada, uma proposta. A seguir, considere o seguinte modelo para negociao
um-a-um com ofertas alternadas:
159
Os agentes Ag
1
e Ag
2
negociam em uma sequncia de rodadas 0, 1, 2, . . .
Nas rodadas pares (r = 0, 2, 4, . . . ):
Ag
1
faz uma proposta p
r
;
Ag
2
aceita ou rejeita p
r
; Se aceita, a negociao nalizada. Caso contrrio,
a negociao avana para a rodada r + 1.
Nas rodadas mpares (r = 1, 3, 5, . . . ):
Ag
2
faz uma proposta p
r
;
Ag
1
aceita ou rejeita p
r
; Se aceita, a negociao nalizada. Caso contrrio,
a negociao avana para a rodada r + 1.
A negociao tambm pode ser encerrada caso nenhum dos agentes possa fazer
nova proposta aps a rejeio da ltima. Nesse caso, no h acordo. To logo a negoci-
ao seja nalizada, o acordo a que os agentes chegaram (se chegaram) implementado.
A Figura 7.9 ilustra uma negociao desse tipo:
Figura 7.9. O ciclo de negociao entre dois agentes.
7.6. Cooperao
Considerando que agentes so autnomos, eles tm que tomar decises em tempo de exe-
cuo e devem ser capazes de se coordenarem dinamicamente. No entanto, se os agentes
foram projetados por indivduos diferentes, eles podem no compartilhar as mesmas me-
tas. Assim por que e como os agentes iro trabalhar juntos? Para responder essa pergunta
precisamos distinguir dois tipos de agentes: agentes benevolentes e os com interesses
prprios.
Se o sistema multiagente foi projetado por uma nica pessoa ou organizao,
possvel conceber os agentes de um modo tal que eles possam ajudar uns aos outros toda
vez que for preciso. Nesse caso, ns assumimos que os agentes so benevolentes: nosso
melhor interesse o melhor interesse deles. Nesse caso, a soluo de problemas e coope-
rativa e distribuda, sendo que a presena de agentes benevolentes simplica enormemente
a projeo do sistema.
160
Por outro lado, se os agentes representam os interesses de indivduos ou organi-
zaes distintas, ento ns no poderemos assumir que os agentes sero benevolentes.
Nesse cenrio, os gentes sero assumidos como defendendo seus prprios interesses, pos-
sivelmente s custas de outros. No difcil constatar que a possibilidade de conitos
grande, tornando a projeo de tarefas bem mais complicadas. Alm disso, pode ser
necessrio elaborar estratgias de atuao para que os agentes possam atingir os seus
objetivos, como ocorre, por exemplo, na Teoria de Jogos.
7.6.1. Resoluo de Problemas em Conjunto
Ao se tentar resolver um problema cooperativamente em um sistema multiagentes, uma
pergunta fundamental "como um grupo de agentes trabalha junto para resolver proble-
mas?". Esse trabalho cooperativo pode ser dividido em trs estgios: decomposio do
problema, soluo do subproblema e sntese da resposta. A seguinte gura, adaptada de
[Wooldridge 2009], ilustra as fases para a soluo de problemas de forma cooperativa e
distribuda:
Figura 7.10. Os trs estgios para a soluo de problemas em cooperao.
Na decomposio do problema, o problema principal subdividido em subpro-
blemas. Esse processo normalmente hierrquico/recursivo. Os subproblemas so, por
sua vez, divididos em subproblemas ainda menores, sendo que esse processo continua at
se chegar a um nvel atmico razovel. Claramente h como se processar essa diviso.
A questo a ser decidida durante a projeo do sistema como isso ser feito? Outra
questo importante quem ir fazer a diviso. Ser centralizado? Que agentes tero co-
nhecimento da estrutura das tarefas? Que agentes iro resolver cada subproblema? Como
se pode perceber, essa fase de decomposio do problema passa pela resposta de muitas
perguntas.
No prximo estgio, os agentes procuraro solucionar cada um dos subproblemas
gerados. Para tal, eles vo geralmente compartilhar informao durante esse processo.
Almdisso, eles tero que sincronizar suas aes quando precisaremdos mesmos recursos
ao mesmo tempo.
Por m, no estgio de sntese da soluo, as solues dos subproblemas so in-
tegradas. Mais uma vez esse processo pode ser hierrquico, permitindo a obteno de
161
solues diferentes em diferentes nveis de abstrao. Uma questo recorrente nesta fase
que agente ir fazer essa sntese.
Neste modelo de soluo de problemas cooperativamente, muito provavelmente,
ns encontraremos as seguintes atividades:
Compartilhamento de tarefas: os componentes de uma tarefa so distribudos entre
os agentes; uma questo a responder como ns decidimos como alocar tarefas a
agentes?
Compartilhamento de resultados: informaes relevantes soluo de subproble-
mas (a exemplo de resultados parciais) so compartilhadas entre os agentes do
time por demanda ou pr-ativamente.
A Figura 7.11, adaptada de [Wooldridge 2009], ilustra os conceitos discutidos
acima:
Figura 7.11. (a) Compartilhamento de tarefas e (b) compartilhamento de resulta-
dos.
7.6.2. Distribuio de Tarefas com Contract Net
Distribuir tarefas de maneira eciente entre os agentes de um time pode ser difcil, uma
vez que cada membro do time pode ter capacidades muito diferentes. Nos casos em que
os agentes so realmente autnomos, concebvel que estes possam rejeitar tarefas que
lhes sejam atribudas e precisem buscar acordos sobre a alocao destas tarefas. Um
protocolo bem conhecido de compartilhamento de tarefas que leva isso em considerao
o Contract Net. Ele inclui cinco estgios e nos lembra um processo de licitao:
1. Reconhecimento do Problema
2. Anncio da Tarefa
3. Ofertas
4. Seleo do contrato
5. Expedio
Esse protocolo prima por ser autoexplicatrio e ilustrado na Figura 7.12.
Apesar de sua simplicidade, o Contract Net se tornou o framework mais imple-
mentado e melhor estudado para a soluo de problemas com distribuio de tarefas.
7.7. Coordenao
Talvez o problema principal no que tange o trabalho cooperativo em grupos de agentes
o da coordenao entre os envolvidos. Este problema concentra-se no gerenciamento de
162
Figura 7.12. Protocolo Contract Net
dependncias entre as atividades dos agentes para que estas possam interagir de maneira
apropriada. As dependncias entre atividades vo desde os requisitos para seu incio ao
cumprimeiro de regras que garantem a consistncia do sistema.
Considere o seguinte exemplo, corriqueiro na vida real:
Duas pessoas esto em uma sala e, ao mesmo tempo, resolvem sair. H uma nica
porta na sala e sua largura s permite que uma pessoa passe por vez. Nesse caso, h um
recurso pblico (a porta) que ambos desejam usar, mas do qual apenas um pode usufruir
por vez. Como consequncia, as atividades das pessoas precisam ser coordenadas para
que no haja uma coliso e todos possam cumprir os seus objetivos.
Os agentes de uma sociedade tambm podem usar de coordenao para evitar a
repetio de esforos, nesse caso, agindo de forma coordenada e cooperativa. No exemplo
acima, se a porta deve permanecer fechada quando ningumestiver utilizando a passagem,
as aes necessrias a cada agente envolveriam abrir a porta, sair e fechar a porta. Se o
primeiro que passar pela porta perceber que h outra e, invs de executar todos os passos,
deixar a porta aberta, alguns esforos so evitados.
Existem diversas abordagens para coordenar dinamicamente as atividades de
agentes em um sistema. Entre estas abordagens, pode-se modelar os agentes desde o
comeo para que ajam coordenadamente, desenhar regras que induzam coordenao
de atividades ou promover a comunicao das intenes dos agentes sociedade. Neste
captulo, vamos nos concentrar em apenas uma dessas abordagens, a dizer, baseada em
normas e leis sociais.
163
7.7.1. Normas e Leis Sociais
Sociedades so frequentemente reguladas por regras (muitas vezes no-escritas) de com-
portamento. Por exemplo, um grupo de pessoas est esperando numa parada de nibus.
O nibus chega; quem entra no nibus primeiro? Num sistema multiagentes, ns teremos
que projetar as normas que o programa dos agentes deve seguir ou formalizar aspectos do
ambiente e dos agentes de maneira que essas normas possam emergir. Vamos agora dar
mais detalhes sobre esses dois tipos de normais sociais:
Antes de descrever como projetar as normas que o programa dos agentes deve
seguir, vlido destacar que ns descrevemos agentes como
Ag R
E
Ac,
ou seja, uma funo que dada uma execuo terminando num estado, retorna uma ao.
Uma restrio um par
E
, ,
em que E
(1)
O termo imagem refere-se a uma funo de intensidade luminosa bidimensional,
denotada por f (x, y). O valor ou amplitude de f nas coordenadas espaciais (x, y) d a
intensidade (brilho) da imagem naquele ponto. Para adequar-se a um sistema compu-
tacional, a funo f (x, y) precisa ser digitalizada tanto espacialmente quanto na ampli-
tude. A digitalizao de suas coordenadas espaciais denominada amostragem da ima-
gem e a digitalizao da amplitude chamada quantizao em nveis de cinza. Supondo
que uma imagem contnua f (x, y) aproximada por amostras igualmente espaadas, ar-
ranjadas na forma de uma matriz NxM (Equao (1)) com cada elemento apresentando
uma quantidade discreta. O lado direito desta equao traz a representao de uma ima-
gem digital [Gomes e Velho 1994]. Cada elemento desta matriz denido como um ele-
mento da imagem ou pixel (abreviao do termo picture element, elemento da gura)
[Azevedo et al. 2007]. Os valores dos pixels podem indicar, alm da intensidade da luz,
uma ou vrias faixas de cor (gerando imagens em tons de cinza ou coloridas), mas tam-
bm podem indicar valores fsicos como profundidade e absoro ou reexo das ondas
eletromagnticas.
Considerando a Equao (1) uma aproximao de uma imagem contnua, deve-
se avaliar quantas amostras e nveis de cinza so sucientes para esta aproximao. A
resoluo desta imagem depender destes dois parmetros. Maiores valores nestes ndices
indicam maior aproximao da matriz digitalizada imagem original. Essa relao pode
ser observada na Figura 10.1(b), que se apresenta diferente da Figura 10.1(a), aps ser
reamostrada no plano digital e com uma limitao nos nveis de cinza visveis. Diferentes
equipamentos podem ser utilizados para a aquisio de imagens, como cmeras CCD (do
ingls Charge-Coupled Device, dispositivo de carga acopladade para vdeo e fotograa),
sistema infravermelho, aparelhos para radiologia que utilizam sinais recebidos de raio-X,
220
tomograa computadorizada, medicina nuclear, ultra-sonograa e ressonncia magntica
nuclear.
(a) (b)
Figura 10.1. Efeito da discretizao da imagem: exemplo de (a) imagem contnua
e (b) resultado da amostragem e quantizao da mesma. Adaptado de Gonzalez
& Woods (2007).
Para a realizao de testes em um sistema CAD, possvel processar imagens
armazenadas em repositrios disponveis na web. Alguns destes podem ser abertos e
oferecem a caracterizao das imagens oferecidas. Como exemplo, num sistema CAD
que atue com imagens de mamograa, h bases de dados que disponibilizam as imagens
de mamograa com a indicao de quais destas correspondem a exames de pacientes
doentes ou no.
10.3.1.2. Tcnicas de Pr-Processamento
Emmuitas aplicaes, os mtodos de processamento de imagens requeremajustes na ima-
gem de entrada para extrair suas informaes de maneira satisfatria. Somente aps estes
ajustes, a imagem processada e se torna apta para anlise na aplicao. Essa etapa de
pr-processamento pode ser denida por diversas tcnicas como: remapeamento (para as-
segurar o sistema de coordenadas), reduo de rudos (para assegurar que as informaes
so verdadeiras) e aumento de contraste (para assegurar que as informaes relevantes
sero detectadas), entre outras.
Algumas distores esto presentes em uma imagem e afetam a percepo da real
informao presente na mesma. Uma distoro crtica a presena de rudo na imagem.
Esse fator implica em nova informao na imagem, diferente do seu comportamento real.
Normalmente, os rudos so denidos por uma distribuio estatstica, como o modelo
gaussiano, speckle e de poisson [Marques et al. 2004, Gonzalez e Woods 2007].
Para eliminao do rudo em uma imagem, faz-se necessrio aplicar tcnicas de
realce com processamento por mscara. Isso consiste em denir uma nova imagem, de
dimenso menor do que aquela a ser processada, e aplicar valores a cada um dos elemen-
tos dessa nova imagem que ser chamada de mscara (ou janela). Essa janela percorre
toda a imagem, e faz uma avaliao pixel a pixel de acordo com sua dimenso. A dis-
tribuio de valores nessa mscara dene o tipo de ltragem a ser executada: passa-alta
(preserva as informaes de alta-frequncia, como bordas e rudo, e elimina as demais)
ou passa-baixa (preserva as informaes de baixa-frequncia, como regies homogneas
221
Figura 10.2. Exemplos de ltragem. Ao lado esquerdo esto dispostas imagens
com resultados de tentativa de remoo de rudo com ltro passa-baixa. No lado
direito, um exemplo de deteco de borda com um ltro passa-alta.
em suas intensidades, e elimina o restante). Na Figura 10.2 esto dispostos exemplos de
ltros passa-baixa e passa-alta com suas respectivas mscaras. Cada mscara apresenta
um efeito diferenciado no resultado da ltragem [Paula 2009, Velho et al. 2009].
(a) Imagem original. (b) Fatiamento da imagem em oito
pseudo-cores.
Figura 10.3. Exemplo de realce por uso de fatiamento de intensidades. Adaptado
de Gonzalez & Woods (2007).
Existem ainda outras tcnicas que no realizam um processamento especial como
ocorre na ltragem, mas que permitem ajustar a imagem em seu pr-processamento. Uma
dessas tcnicas o fatiamento de intensidades, que permite criar uma nova codicao de
cores na imagem para melhor interpret-la. Esse mtodo muito utilizado em aplicaes
mdicas e meteorolgicas, em que as intensidades dos pixels so categorizadas em inter-
valos especcos. Cada interstcio de intensidade assume uma cor na nova representao
da imagem. Um exemplo desse processo est na Figura 10.3 que apresenta uma imagem
monocromtica do Fantasma de tireide de Picker [Gonzalez e Woods 2007]. Com o fa-
tiamento de intensidades, a imagem redenida com oito intervalos de intensidades onde
cada regio assume uma pseudo-cor especca.
222
H ainda tcnicas de pr-processamento identicadas com a avaliao da estats-
tica inerente imagem para melhorar a sua aparncia. Um exemplo muito prtico consiste
na equalizao do histograma da imagem. O histograma de uma imagem digital corres-
ponde a uma estimativa da probabilidade de ocorrncia dos seus nveis de cinza. Este
desenvolvimento produz uma imagem cujos nveis de cinza possuem uma densidade uni-
forme. Isso implica num aumento da escala dinmica dos pixels, o que pode acarretar
em um efeito relevante na visualizao da imagem [Gonzalez e Woods 2007]. A Figura
10.4 exibe amostras em condies diferentes de contraste e suas imagens de resultado
aps a equalizao dos seus respectivos histogramas. possvel perceber a mudana no
contraste destas imagens.
10.3.1.3. Segmentao
O processo de segmentao visa separao dos pixels pertencentes a cada objeto pre-
sente na imagem. Isso implica em separao de regies dentro da imagem analisada.
0
1000
2000
3000
4000
5000
6000
0 50 100 150 200 250
0
1000
2000
3000
4000
5000
6000
7000
0 50 100 150 200 250
0
1000
2000
3000
4000
5000
6000
7000
0 50 100 150 200 250
0
500
1000
1500
2000
2500
3000
3500
4000
0 50 100 150 200 250
0
1000
2000
3000
4000
5000
6000
7000
0 50 100 150 200 250
0
1000
2000
3000
4000
5000
6000
7000
0 50 100 150 200 250
0
1000
2000
3000
4000
5000
0 50 100 150 200 250
Figura 10.4. Realce na imagem atravs da equalizao do histograma. Cada co-
luna apresenta quatro diferentes amostras de imagens: escura, clara, com baixo
contraste e com alto contraste. Analisando cada amostra a partir da imagem
de topo at a de base, tem-se: imagem original, histograma, efeito do realce e
histograma equalizado.
223
Exemplos desse processo incluem a seleo de regies de interesse especcos e segmen-
tao de uma ou mais regies que contm um objeto de interesse [Castleman 1996].
A importncia do realce em uma imagem percebida no momento em que o pro-
cesso de segmentao efetuado. Omtodo de segmentao precisa que a imagem tratada
esteja livre de distores para atingir seu objetivo. A tcnica mais simples a limiarizao
(ver Figura 10.5), que consiste em denir um valor de intensidade como limiar e modicar
todos os pixels da imagem com base no mesmo. Isso ocorre a partir de um comparativo,
no qual o pixel com intensidade menor ou igual ao limiar recebe valor 0 (zero). Em caso
contrrio, a intensidade do pixel considerado receber valor igual a 255. Portanto, duas
regies so separadas na imagem.
(a)
0
500
1000
1500
2000
2500
3000
3500
0 50 100 150 200 250
(b) (c) (d)
Figura 10.5. Exemplo de segmentao por limiarizao: (a) imagem original e (b)
seu respectivo histograma. Aplica-se o processo a partir do valor r =125 aplicado
na (c) funo de limiarizao s =T(r) e obtm-se o (d) resultado da segmentao.
Adaptado de Gonzalez & Woods (2007).
10.3.1.4. Representao e Descrio de Formas
Com os agrupamentos obtidos a partir da segmentao da imagem, torna-se possvel re-
presentar e descrever as regies identicadas. Inicialmente, a representao de uma re-
gio pode ser caracterizada como baseada no contorno (fronteira), ou em termos de suas
caractersticas internas (pixels que compem a regio) [Paula et al. 2011]. Os dados da
regio so enm transformados em uma nova representao de acordo com a abordagem
escolhida e depois a mesma regio descrita. Esta descrio consiste em reconhecer ca-
ractersticas da regio da imagem que possam diferenci-la de outras regies ou ainda de
outras imagens. Sendo assim, caractersticas matemticas da imagem so extradas em
vrios nveis de complexidade. Exemplos bsicos incluem deteco de bordas, cantos ou
pixels destacados na imagem [Costa e Cesar 2009].
Normalmente uma representao externa escolhida quando as caractersticas da
forma so importantes. Por outro lado, se a ateno da aplicao est na cor e textura,
utiliza-se a representao interna. De toda maneira, as caractersticas selecionadas para o
descritor da forma devem ser afetadas o mnimo possvel por variaes de mudana de es-
cala, rotao e translao da imagem. A representao da forma geralmente compacta os
dados emesquemas consideravelmente mais teis no clculo de descritores. AFigura 10.6
dispe de duas assinaturas de formas. A primeira uma representao funcional unidi-
224
Figura 10.6. Exemplo de realce por uso de fatiamento de intensidades. Adaptado
de Gonzalez & Woods (2007).
mensional de uma fronteira e pode ser gerada por maneiras distintas [Costa e Cesar 2009].
No exemplo apresentado, tem-se dois grcos da distncia da fronteira ao centride em
funo do ngulo para as formas de crculo e quadrado. Obtm-se assim, uma reduo na
representao da forma a uma funo unidimensional que se apresenta mais simples que
a imagem original.
Tabela 10.1. Exemplo de descrio de regies. Na imagem esquerda, imagem
do mapa da Amrica separada em regies. Proporo de luzes utilizado como
descritor, direita. Adaptado de Gonzalez & Woods (2007).
Para gerar uma descrio de uma regio importante avaliar quais os descritores
que captam as diferenas essenciais entre os objetos ou classes de objetos. Diferentes
informaes da imagem podem ser tratadas como descritores. Exemplos simples so rea
e permetro. A rea de uma regio denida pelo nmero de pixels contidos dentro de
sua fronteira. O permetro o tamanho dessa fronteira. A Tabela 10.1 traz um exemplo de
descrio de uma representao de regio. Utilizaram-se as informaes de intensidade
dos pixels para identicar quantos detalhes de luzes podem ser reconhecidos nas regies
da imagem apresentada (lado esquerdo da tabela). Um descritor foi denido a partir da
contagem de pontos que representam luz em cada regio e foi possvel diferenci-los entre
si.
225
10.3.2. Reconhecimento de Padres
Conforme [Jain et al. 2000], o estudo de reconhecimento de padres teve incio depois da
dcada de 60, quando foi desenvolvida a maior parte da teoria estatstica moderna. Com
o advento dos computadores, cresceu ainda mais a demanda por aplicaes de reconhe-
cimento de padres. Atualmente, o reconhecimento de padres utilizado em aplicaes
envolvendo viso computacional, reconhecimento de caracteres, diagnstico auxiliado
por computador, reconhecimento da fala, reconhecimento de impresso digital, autenti-
cao de assinaturas, etc.
Existem muitos tipos de padres, por exemplo: padres visuais, padres tem-
porais, padres lgicos. Pode-se dizer que tarefas de reconhecimentos de padres so
encontradas em toda atividade inteligente. Deste modo, no h uma s teoria de reconhe-
cimento de padres que seja capaz de cobrir a grande quantidade de problemas possveis.
Porm, existem algumas abordagens clssicas, incluindo: Reconhecimento Estatstico de
Padres, Reconhecimento de Padres usando Lgica Fuzzy, Reconhecimento de Padres
usando Redes Neurais, Reconhecimento Sinttico (ou Estrutural de Padres) e Reconhe-
cimento de Padres Baseado em Conhecimento
A abordagem mais amplamente utilizada a estatstica. Dessa forma, os proble-
mas de reconhecimentos de padres so tratados como problemas de classicao. O que
consiste em associar um conjunto de atributos (caractersticas) de entrada a uma deter-
minada categoria ou classe (sada). Em outras palavras, pode-se dizer que reconhecer
padres equivale a classicar determinado objeto fsico ou situao como pertencente ou
no a um certo nmero de categorias previamente estabelecidas. H dois mtodos de
classicao:
1. Supervisionada: em que uma amostra de dados previamente conhecida, represen-
tada por um conjunto de padres e suas respectivas classes. Neste mtodo, a regra
de deciso pode ser representada por uma funo densidade probabilidade, previa-
mente conhecida (parametrizada) ou no (no parametrizada), ou por uma funo
de classicao.
2. No-Supervisionada: em que no h associao dos padres e suas respectivas clas-
ses. O desao ser encontrar agrupamentos de dados e identicar suas respectivas
classes. Este mtodo tambm conhecido por clustering.
10.3.3. Atributos
Uma forma de classicar um objeto ou evento medindo algumas de suas caractersti-
cas ou algumas de suas propriedades mais representativas (features). Por exemplo, para
classicar uma letra impressa deve ser til conhecer sua rea e permetro.
Aespecicao das caractersticas necessrias para uma boa classicao depende
das caractersticas do problema que se deseja resolver. Especicar esses atributos uma
tarefa rdua que necessita de um elevado grau de experimentao com diferentes combi-
naes de caractersticas.
Com frequncia, um determinado objeto que se deseja classicar representado
por um conjunto xo de d atributos. Neste caso, til pensar no conjunto de atributos
226
como um vetor de atributos x, tambm chamado simplesmente de padro, tal que x um
vetor coluna de dimenso d.
10.3.4. Exemplos de Classicadores
O objetivo de um classicador dividir o espao de atributos em regies de deciso.
Dessa forma, os vetores de atributos que estiverem contidos na mesma regio de deciso
compartilham a mesma classe.
10.3.4.1. Vizinho mais Prximo
O algoritmo de classicao baseado no vizinho mais prximo (Nearest Neighbor - NN)
uma tcnica amplamente empregada para reconhecer padres. O centro de seu funci-
onamento est em descobrir o vizinho mais prximo de uma dada instncia. O NN
considerado um dos mais simples algoritmos de aprendizagem de mquina. Ele funciona
bem quando a distncia entre as mdias grande quando comparada com a disperso de
cada classe em relao a sua mdia. Um resumo do funcionamento do classicador
mostrado no Algoritmo 1.
Algoritmo 1 Algoritmo Vizinho Mais Prximo (Nearest Neighbor, NN).
1 Armazenar os exemplos em uma tabela.
2 Seja x
novo
um vetor cuja classe desconhecida, ou seja:
Classe(x
novo
) =?
3 Procurar na tabela o vetor armazenado mais prximo de x
novo
.
4 Chamar de x
prox
o vetor armazenado mais prximo de x
novo
.
5 Atribuir a x
novo
a mesma classe de x
prox
, ou seja:
Classe(x
novo
) =Classe(x
prox
)
6 Se a classicao for correta incluir x
novo
na tabela.
10.3.4.2. Distncia Mnima aos Centrides (DMC)
O algoritmo Distncia Mnima aos Centrides funciona de forma similar ao do Vizinho
Mais Prximo. No entanto, cada classe passa a ter um nico vetor que a representa,
chamado de centride. Dessa forma, no h necessidade de armazenar todos os exemplos
de uma classe o que nos leva a uma economia de memria. O centride de uma classe
o seu vetor mdio; ou seja, a mdia dos exemplos daquela classe. Assim, pode-se dizer
que o centride de uma classe um modelo que representa aquela classe. Um resumo do
funcionamento do classicador mostrado no Algoritmo 2.
227
Algoritmo 2 Algoritmo Distncia Mnima aos Centrides (DMC).
1 Armazenar apenas os centrides das classes em uma tabela.
2 Seja x
novo
um vetor cuja classe desconhecida, ou seja:
Classe(x
novo
) =?
3 Procurar na tabela o centride mais prximo de x
novo
.
4 Chamar de C
j
o centride mais prximo de x
novo
.
5 Atribuir a x
novo
a mesma classe de centride mais prximo, ou seja:
Classe(x
novo
) =Classe(C
j
)
6 Se a classicao for correta, usar x
novo
para recalcular C
j
.
10.3.4.3. Rede Neural Articial
Uma rede neural articial composta por vrias unidades de processamento, cujo funci-
onamento paralelo e, por vezes, distribudo. Essas unidades, geralmente so conectadas
por canais de comunicao que esto associados a determinado peso, que denominado
peso sinptico. As unidades fazem operaes apenas sobre seus dados locais, que so
entradas recebidas pelas suas conexes. O comportamento inteligente de uma rede neural
articial advm das interaes entre as unidades de processamento da rede. O modelo de
um neurnio articial pode ser visto na Figura 10.3.4.3.
Figura 10.7. Modelo de Neurnio Articial baseado em Haykin (2001).
O comportamento das conexes entre os neurnios simulado por meio de seus
pesos sinpticos. Os valores de tais pesos podem ser negativos ou positivos, dependendo
das conexes serem inibitrias ou excitatrias. O efeito de um sinal proveniente de um
outro neurnio determinado pela multiplicao do valor (intensidade) do sinal recebido
pelo peso da conexo correspondente (x
i
..p
i
). efetuada a soma dos valores x
i
..p
i
de
todas as conexes, e o valor resultante enviado para a funo de ativao, que dene a
sada (y) do neurnio. Combinando diversos neurnios, forma-se uma rede neural arti-
228
cial. De uma forma simplicada, uma rede neural articial pode ser vista como um grafo
onde os ns so os neurnios e as ligaes fazem a funo das sinapses.
A rede neural articial um sistema de neurnios ligados por conexes sinpticas
e dividido em neurnios de entrada, que recebem estmulos do meio externo, neurnios
internos ou hidden (ocultos) e neurnios de sada, que se comunicam com o exterior. A
forma de arranjar perceptrons em camadas denominado Multilayer Perceptron (MLP).
O MLP foi concebido para resolver problemas mais complexos, os quais no poderiam
ser resolvidos pelo modelo de neurnio bsico. Para isto so necessrias mais conexes,
os quais s existem em uma rede de perceptrons dispostos em camadas. Na Camada
escondida, camada oculta ou camada intermediria, como tambm conhecida os neur-
nios so denominados escondidos porque eles no tem acesso direto a sada da rede MLP,
onde os erros de aproximao so calculados.
10.4. Aplicaes
Nesta seo apresentamos duas aplicaes do processamento digital de imagens no diag-
nstico auxiliado por computador. A primeira a identicao de estruturas da retina. A
identicao dessas estruturas auxiliam no diagnsticos de vrias doenas como a retino-
patia diabtica e o edema macular. A segunda envolve o reconhecimento e a anlise de
posturas humanas. Estas aplicaes utilizam imagens obtidas em ambientes clnicos para
o tratamento de desvios posturais.
10.4.1. Identicao de Estruturas da Retina
A retina constitui a membrana mais interna do olho, situando-se na parede posterior.
Quando o olho focaliza uma cena, a imagem correspondente projetada sobre a retina, na
qual esto distribudos dois tipos de receptores de luz: os cones e os bastonetes. Os cones
so so responsveis pela chamada viso fotptica ou de luz clara. J os bastonetes so
teis para detectar detalhes.
Entre os padres presentes no fundo do olho, encontra-se a rede de veias da retina,
que pode revelar uma srie de doenas ligadas s variaes ocorridas no globo ocular. O
tratamento para essas doenas se torna mais ecaz quanto mais cedo elas so descobertas,
e isso se d atravs de exames oftalmolgicos peridicos [Hajer et al. 2006].
Imagens digitais de retina podem prover informaes sobre mudanas patolgicas
causadas por doenas oculares locais e sinais recentes de doenas sistemticas como a
hipertenso, a arterioesclerose e o Diabetes Mellitus (DM). Aanlise e interpretao desse
tipo de imagemvemse tornando umauxlio importante e necessrio no diagnstico dessas
doenas.
10.4.1.1. Disco ptico
Nos sitemas CAD para deteco de doenas oculares usando imagens coloridas de retina,
a localizao automtica do disco ptico (DO) e o clculo do seu contorno so passos
fundamentais, antes de qualquer anlise. A segmentao do disco ptico um passo
importante no pr-processamento de vrios algoritmos desenvolvidos para a extrao au-
229
tomtica das estruturas anatmicas e para a deteco de leses na retina. Alm disso,
esse processo tambm atua como um indicador de patologias oftalmolgicas, como o
glaucoma, que uma das causas mais comuns de cegueira [Xu et al. 2007].
A identicao do disco ptico tambm essencial na localizao dos vasos, os
quais, fornecem uma referncia que pode facilitar o processo da deteco da posio de
outras estruturas do fundo ocular e de leses. Alm disso, essencial a remoo prvia
do disco ptico nos algoritmos de deteco de exudatos
1
, dada a semelhana entre ambos
em termos de cor, brilho e contraste [Gagnon et al. 2001].
Basicamente, podemos classicar os algoritmos de deteco do disco ptico em
duas classes: abordagem geogrca e abordagem baseada em caractersticas locais. Os
algoritmos que usam a abordagem geogrca baseiam-se na informao fornecida pela
estrutura dos vasos, isto , no fato de todos os vasos da retina terem origem no disco p-
tico. Embora a deteco dos vasos seja uma operao complexa, a sua relao geomtrica
com o disco ptico pode ser utilizada para identicar a localizao deste. Uma vez conhe-
cida a localizao do disco ptico, este detectado como ponto inicial para determinar o
respectivo contorno.
Os algoritmos baseados nas caractersticas locais levam em considerao, princi-
palmente, a sua forma redonda e brilho relativamente elevado, quando comparado com o
resto da imagem. Em [Veras et al. 2011] os principais algoritmos de deteco do disco
ptico foram avaliados e o mtodo proposto por [Hoover e Goldbaum 2003].
A Figura 10.8 apresenta trs exemplos de imagens de retina. Na Figura 10.8(a) o
contorno do disco ptico bem denido o que torna mais fcil sua deteco. J na Figura
10.8(b), o plano de fundo bastante heterogneo e a regio central possui intensidade de
cor bem prxima a da regio do disco ptico. A Figura 10.8(c) apresenta uma imagem
onde no possvel a identicao do disco ptico.
(a) (b) (c)
Figura 10.8. Exemplos de imagens da base STARE
10.4.1.2. Mcula
A deteco da mcula uma tarefa relevante no processamento de imagens de fundo
de olho (retina) e utilizada em vrias aplicaes. Ela considerada um importante
1
Produto seroso, purulento, resultante de processo inamatrio.
230
marcador siolgico na anlise de imagens da retina e usada na localizao de outras
estruturas da retina como o DO, microvasos e exsudatos [Winder et al. 2009].
A mcula um ponto ovalado de cor amarela junto ao centro da retina do olho
humano e tem um dimetro de cerca 1,5 mm. A regio da mcula possui uma sub-regio
chamada fvea, que localiza-se no centro da mcula e possui uma rea menor que a m-
cula. nesta ltima que encontramos uma maior quantidade de cones (clulas respon-
sveis pela percepo de cores). A mcula contm uma pigmentao mais escura e sua
localizao aproximadamente o centro da retina. De acordo com [Tobin et al. 2007], o
raio da mcula igual ao dobro do raio do DO e a fvea mede metade do raio do DO.
Uma deteco precisa da mcula um importante primeiro parmetro para de-
terminar patologias como a Degenerao e o Edema Macular. O diagnstico de Edema
Macular, por exemplo, realizado levando-se em considerao a quantidade de exsudatos
e suas localizaes com relao regio da mcula.
O algoritmo de deteco da mcula, na maioria dos trabalhos publicados, deter-
mina uma Regio de Interesse (ROI - Region of Interest) baseado na localizao do DO,
como mostra a Figura 10.9. Aps a determinao da ROI, algoritmos especcos so exe-
cutados para denir o centro da mcula. Uma descrio e avaliao de vrios mtodos de
deteco da mcula pode ser encontrada em [Silva et al. 2011].
Figura 10.9. Ilustrao da ROI.
10.4.1.3. Microaneurismas e Exsudatos
A Retinopatia Diabtica (RD) uma doena assintomtica nas fases iniciais, o que di-
culta a sua deteco. Ela ocorre como resultado das alteraes vasculares na retina
causando inchaos de capilares, conhecidos como microaneurismas (MA). Estes podem
romper-se, e, eventualmente, se tornarem uma fonte de extravasamento de plasma cau-
sando o espessamento da retina, ou edema, se ocorrem na regio macular, e pode causar
perda de viso de alta qualidade [Fleming et al. 2007]. O espessamento da retina no
facilmente visvel nas fotograas do fundo do olho, portanto, regies de depsitos de gor-
dura, conhecidas como exsudatos, so usadas como marcadores. Exsudatos geralmente
formam aglomerados, e podem ser distribudos em toda a retina ou podem aparecer em
um anel em torno de um ponto central do vazamento.
231
A Organizao Mundial de Sade estima que 135 milhes de pessoas tenham
diabetes no mundo e que este nmero de diabticos dever aumentar para 300 milhes at
o ano de 2025 [Amos et al. 1997]. ARDafeta uma parte considervel da populao, o que
justica trabalhos avanados na rea de deteco de doenas por imagens. Desenvolvendo
tcnicas simples, e com um custo-benefcio baixo, seria possvel a deteco da RD em sua
fase inicial. Estudos comprovam que quanto mais cedo for detectada a RD mais chances
o paciente ter de no desenvolver a doena em seu grau mais elevado.
Microaneurismas se apresentam como os primeiros padres patolgicos que sur-
gem na retina humana, em portadores de Retinopatia Diabtica, e constituem uma evi-
dncia direta de isquemia, uma vez que cada microaneurisma representa a ocluso de ao
menos um vaso capilar. Portanto, existe uma relao entre o nmero de microaneurismas
e o agravamento da doena em pacientes portadores do Diabetes Mellitus, ou simples-
mente Diabetes, como popularmente conhecida. Sistemas automticos de deteco de
microaneurismas vm sendo bastante utilizados em substituio aos sistemas manuais de
contagem, uma vez que estes consomem muito tempo e so mais sujeitos a erros. Alguns
dos principais mtodos so [Fleming et al. 2007, Walter et al. 2002, Martins et al. 2008].
Com o avano da Retinopatia Diabtica aparecem os exsudatos. Quando isso
ocorre a doena j se encontra em um nivel grave, mas ainda pode ser controlada. A
Figura 10.10(a) um exemplo de retina saudvel. J na Figura 10.10(b) existe alguns
exsudatos bem pequenos na regio central da retina. A Figura 10.10(c) apresenta vrios
exsudatos e hemorragias.
(a) (b) (c)
Figura 10.10. Exemplos de imagens com e sem exsudatos
Basicamente existem trs tcnicas diferentes de deteco exsudatos em imagens
da retina. A primeira funciona atravs da denio de um limiar como foi observado em
[Kavitha e Shenbaga 2005]. Essa tcnica no possui um bom desempenho, pois como o
disco ptico possui propriedades de cor semelhante a dos exsudatos muitas vezes ele
marcado incorretamente como exsudato. Outro problema dessa tcnica ocorre quando
aparecem regies mais claras na imagem, elas tambm podem ser marcadas como exsu-
datos.
Asegunda tcnica utiliza agrupamento de pixels, como em [Sopharak et al. 2010].
Essa a principal tcnica usada para a deteco dos exsudatos, porm isoladamente ela
no produz resultados satisfatrios, pois muitas vezes necessrio o uso de classicao
ou morfologia matemtica para eliminar falsos candidatos [de Arajo et al. 2011].
A terceira tcnica faz uso de operaes de morfologia matemtica, como foi ob-
232
servado em [Walter et al. 2002]. Assim como no agrupamento, essa tcnica no produz
bons resultados isoladamente. Geralmente ela usada para remover falsos candidatos ou
pixels isolados.
10.4.1.4. Microvasos
Imagens de fundo de olho fornecem informaes sobre as mudanas patolgicas causa-
das por doenas oculares. Uma caracterstica importante para o diagnstico de doenas
como diabetes, arteriosclerose e hipertenso a aparncia dos vasos sanguneos na retina
[Li et al. 2006]. O desenvolvimento de uma soluo computacional para a segmentao
dos vasos sanguneos permite que o mdico especialista diagnostique melhor os casos
de vascularidade anormal. Em outros casos, o desempenho de mtodos automticos de
deteco (segmentao) de vasos auxilia no diagnstico de outras doenas como foi apre-
sentado em [Martins et al. 2009].
Entretanto, essa segmentao dicultada pelos seguintes fatos [Li et al. 2006]:
a largura dos vasos pode variar de muito larga a muito na e o contraste local dos vasos
no estvel. Vrias abordagens para segmentao de vasos so encontradas na literatura
[Zana e Klein 2001, Niemeijer et al. 2004, Soares et al. 2006].
A Figura 10.4.1.4 apresenta um exemplo de imagem de retina e o resultado de
dois mtodos diferentes de segmentao de vasos.
(a) (b) (c)
Figura 10.11. Imagem de retina com duas segmentaes de vasos
10.4.2. Postura
Postura geralmente denida como o arranjo relativo das partes do corpo. Dessa ma-
neira, a postura correta traduz o estado de equilbrio muscular e esqueltico que protege
as estruturas de suporte do corpo contra leso ou deformidade progressiva. Independente
da atitude assumida pelo paciente (agachada, ereta, deitada), estas estruturas esto traba-
lhando ou repousando. Os rgos torcicos e abdominais mantm-se em posies ideais
e os msculos funcionam com mais ecincia sob tais condies. [Furlaneto et al. 2007]
Consequentemente, com a m postura ocorre uma relao defeituosa entre vrias partes
do corpo. Isso produz uma maior tenso sobre estruturas de suporte e onde ocorre um
equilbrio menos eciente do corpo [Ferreira et al. 2011].
233
Entre diversos tratamentos sioteraputicos existentes, a Reeducao Postural Glo-
bal (RPG) um mtodo que atua na dor e no desconforto provocados por alteraes pos-
turais. Diferente das outras abordagens, o tratamento por RPG leva em considerao que
o corpo humano um sistema muscular integrado. Portanto, h a necessidade da obser-
vao de toda a silhueta humana independentemente da localizao do desvio de postura
[Ferreira et al. 2010].
A Figura 10.12 traz a caracterizao da coluna vertebral, que dividida em quatro
curvaturas. Duas delas com a concavidade virada para trs (lordoses nas regies cervi-
cal e lombar) e duas delas com a concavidade virada para a frente (cifoses nas regies
torxica e plvica, ver Figura 10.12(a)). Em geral, as imagens para o diagnstico so to-
madas em vrios planos de observao. Alguns desvios da postura podem ser observados
em imagens do plano frontal do paciente, como a escoliose (Figura 10.12(b)). Imagens
adquiridas em plano sagital provem conhecimento de desvios posturais, tais como hiper-
cifose dorsal, hiperlordose lombar e hiperlordose cervical. Tambm possvel mensurar
a angulao da tbia em relao ao p, exo e extenso dos joelhos e inclinao anterior
e posterior da plvis [Passarinho et al. 2006, Ferreira et al. 2011].
(a) (b)
Figura 10.12. Caracterizao da (a) coluna vertebral e suas regies ou curvatu-
ras (Fonte: Wikipdia). Como exemplo de desvio, a (b) escoliose que pode ser
percebida no plano frontal (Fonte: Wikipdia).
Passarinho e outros autores apresentaram em [Passarinho et al. 2006] uma meto-
dologia utilizada para avaliao de mudanas no equilbrio postural em pacientes subme-
tidos RPG. Este trabalho descreve uma medida de similaridade com o intuito de obter
melhor desempenho na quanticao das alteraes posturais.
O procedimento se inicia com o clculo das assinaturas das formas dos pacientes.
Estas formas so obtidas de segmentaes aplicadas sobre as imagens obtidas pelo sio-
terapeuta. Esta assinatura traz uma nova representao da forma com uma relao entre
a curvatura e a informao de ngulo, em relao ao centride, de cada um dos pontos
234
do contorno da forma. A funo de curvatura descreve a varincia da direo assumida
pelo contorno da forma [Cesar e Costa 1996]. Quanto mais ereta a postura do paciente,
sua funo de curvatura correspondente alcanar menor amplitude. A Figura 10.13(a)
mostra a comparao entre duas assinaturas polares de um mesmo paciente antes e depois
do tratamento. O mtodo descrito em [Passarinho et al. 2006] usa como medida de simi-
laridade o clculo da diferena de reas sob as assinaturas e inversamente proporcional
diferena da rea sob as curvas das assinaturas. Esta medida, SM, calculada atravs da
relao: SM = 1 1