• Nenhum resultado encontrado

Um mecanismo fuzzy auto-adaptativo para oferecer QoS em serviços Web

N/A
N/A
Protected

Academic year: 2021

Share "Um mecanismo fuzzy auto-adaptativo para oferecer QoS em serviços Web"

Copied!
131
0
0

Texto

(1)

Universidade Estadual de Campinas

Instituto de Computação

Anderson Francisco Talon

Um Mecanismo Fuzzy Auto-Adaptativo para

Oferecer QoS em Serviços Web

CAMPINAS

2016

(2)

Universidade Estadual de Campinas

Instituto de Computação

Anderson Francisco Talon

Um Mecanismo Fuzzy Auto-Adaptativo para

Oferecer QoS em Serviços Web

Tese apresentada ao Instituto de Computação da Universidade Estadual de Campinas como parte dos requisitos para a obtenção do título de Doutor em Ciência da Computação.

Orientador: Prof. Dr. Edmundo Roberto Mauro Madeira Este exemplar corresponde à versão final da

Tese defendida por Anderson Francisco Talon e orientada pelo Prof. Dr. Edmundo Roberto Mauro Madeira.

CAMPINAS

2016

(3)

Agência(s) de fomento e nº(s) de processo(s): Não se aplica.

Ficha catalográfica

Universidade Estadual de Campinas

Biblioteca do Instituto de Matemática, Estatística e Computação Científica Ana Regina Machado - CRB 8/5467

Talon, Anderson Francisco, 1982-

T149m Um mecanismo fuzzy auto-adaptativo para oferecer QoS em serviços Web / Anderson Francisco Talon. – Campinas, SP : [s.n.], 2016.

Orientador: Edmundo Roberto Mauro Madeira.

Tese (doutorado) – Universidade Estadual de Campinas, Instituto de Computação.

1. Sistemas distribuídos. 2. Serviços Web. 3. Arquitetura orientada a serviços (Computação). 4. Qualidade de serviço (Redes de computadores). 5. Sistemas fuzzy. I. Madeira, Edmundo Roberto Mauro,1958-. II. Universidade Estadual de Campinas. Instituto de Computação. III. Título.

Informações para Biblioteca Digital

Título em outro idioma: A self-adaptive fuzzy mechanism to provide QoS for Web services Palavras-chave em inglês:

Distributed systems Web services

Service-oriented architecture (Computer science) Quality of service (Computer networks)

Fuzzy systems

Área de concentração: Ciência da Computação Titulação: Doutor em Ciência da Computação Banca examinadora:

Edmundo Roberto Mauro Madeira [Orientador] Marcos José Santana

Aparecido Nilceu Marana Jacques Wainer

Islene Calciolari Garcia Data de defesa: 25-05-2016

(4)

Universidade Estadual de Campinas

Instituto de Computação

Anderson Francisco Talon

Um Mecanismo Fuzzy Auto-Adaptativo para

Oferecer QoS em Serviços Web

Banca Examinadora:

• Prof. Dr. Edmundo Roberto Mauro Madeira IC/UNICAMP

• Prof. Dr. Marcos José Santana ICMC/USP

• Prof. Dr. Aparecido Nilceu Marana DCo/UNESP

• Prof. Dr. Jacques Wainer IC/UNICAMP

• Profa. Dra. Islene Calciolari Garcia IC/UNICAMP

A ata da defesa, onde constam as assinaturas dos membros da banca, está arquivada pela Universidade Estadual de Campinas.

(5)

Dedicatória

Dedico esta tese aos meus familiares. Sem eles, este trabalho não seria possível.

(6)

Agradecimento

Agradeço aos meus familiares, que sempre estiveram ao meu lado e que sempre me ajudaram durante estes anos.

Agradeço à Profa. Dra. Maria Beatriz Felgar de Toledo e ao Prof. Dr. Edmundo Roberto Mauro Madeira pelas orientações.

Agradeço também a todos que de alguma forma ajudaram para a conclusão dessa tese.

(7)

Resumo

É notado atualmente um crescimento acentuado dos serviços web. Eles são uma realidade para muitas empresas. As regras desses serviços são descritas em contratos eletrônicos. O monitoramento é essencial para garantir que a qualidade do serviço seja maior ou igual do que foi acordado no contrato eletrônico. Isto é importante tanto para os consumidores como para os provedores. Para os consumidores é importante saber se os provedores estão respeitando o que foi estabelecido no contrato eletrônico e para os provedores é importante saber se estão satisfazendo as características funcionais e não-funcionais requisitadas pelos consumidores. Monitoramento é a base para verificar violações, mas também pode ser utilizado para prever uma possível violação. Esta tese propõe um mecanismo fuzzy auto-adaptativo para execução de processos de negócio e apresenta uma arquitetura que incorpora este mecanismo. O monitor da arquitetura proposta utiliza técnicas fuzzy para prever uma falha não-funcional no contrato eletrônico e tomar ações para não permitir que isto aconteça. Esta falha pode acontecer devido a uma sobrecarga no provedor. A previsão é feita baseada nos dados históricos dos serviços que são analisados pelo sistema fuzzy. Com esta previsão, existe uma auto-configuração da arquitetura que muda a prioridade do serviço, executando primeiro os serviços com maior possibilidade de falha. Esta previsão também ajuda na auto-otimização da arquitetura. Pode ser observada uma diminuição na média dos tempos de resposta e um aumento na média da disponibilidade, além de uma diminuição na quantidade de contratos eletrônicos violados. Nem sempre é possível prever uma falha, e se uma falha acontecer, a arquitetura tem a capacidade de auto-cura utilizando ações para recuperar o serviço com falha. Para validar a arquitetura foi desenvolvido um protótipo e foram realizados seis experimentos. Todos os experimentos foram realizados em um ambiente real com máquinas reais. O ambiente é composto por um conjunto de consumidores, provedores, serviços e monitores. Nos experimentos iniciais, o mecanismo fuzzy foi comparado com o agendamento de fila tradicional, e nos últimos experimentos o mecanismo fuzzy foi comparado com outros agendamentos (fila, aleatório, menor tempo limite, menor tempo de resposta e menor tempo de processamento). Resultados mostram uma melhora no cumprimento dos contratos eletrônicos em até 40,41% e uma diminuição de até 42,64% na média dos tempos de resposta. Comparando o agendamento fuzzy com outros agendamentos, é observada uma melhora de até 83,02% no cumprimento dos contratos eletrônicos e uma diminuição de até 96,21% na média dos tempos de resposta. Além disso, utilizando o sistema fuzzy, a sobrecarga do provedor foi melhor balanceada variando no máximo em 12,04%, já para os outros agendamentos a variação chegou em 68,99%. Os resultados mostram que o mecanismo auto-adaptativo baseado em técnica fuzzy proposto nesta tese é adequado para melhorar a QoS em serviços web.

(8)

Abstract

The growth of web services has been increasingly noticed. Web services are a reality for many businesses nowadays. The rules of these services are described on e-contracts. Therefore, monitoring is essential to ensure that the quality of the service be higher or equal that agreed in the e-contract. Web service monitoring is important for consumers and providers. For the consumer, it is important to know if the provider is respecting the established e-contract. For the providers, it is important to know if they are satisfying functional and non-functional features as required by their consumers. Monitoring is the basis for violation verification, but it can also be used to predict a possible violation. This thesis proposes a self-adaptive fuzzy mechanism for business process execution, and it shows an architecture that incorporates this mechanism. The monitor of the proposed architecture uses a fuzzy approach to predict an e-contract failure, and take actions to avoid it. This failure can be caused by a provider overload. The prediction is based on services historical data that are analyzed by a fuzzy system. With this prediction, there is a self-configuration on the system that changes service priority, making the provider processes high priority services before low priority ones. This prediction also helps the self-optimization of the system. It can be observed by the decrease of average response time and by the increase of average availability, as well as a decrease in the amount of e-contracts violations. It is not possible always to predict a failure. And after a failure, the system is capable of self-healing using recovering actions. To validate the architecture, a prototype was developed and six experiments were conducted. All experiments were performed in a real environment with real machines. The environment consists of a set of consumers, providers, services and monitors. In the initial experiments, the fuzzy mechanism was compared to traditional queue scheduling, and in the recent experiments the fuzzy mechanism was compared to others scheduling (queue, random, shorter duedate, shorter response time, and shorter processing time). Results show an improvement up to 40.41% in e-contracts accomplishments, and a decrease up to 42.64% in average response time. Comparing the fuzzy scheduling with others scheduling, it is observed an improvement up to 83.02% in the e-contracts accomplishment, and a decrease up to 96.21% in average response time. Furthermore, using the fuzzy scheduling, the overload of the provider was better balanced varying at most 12.04%, while for the other schedulings variation reached 68.99%. The results show that the self-adaptive mechanism based on fuzzy technique proposed in this thesis is appropriate for QoS improvement in web services.

(9)

Lista de Figuras

Figura 1: Funções de pertinência: (a) triangular, (b) trapezoidal e (c) gaussiana. ... 32 Figura 2: (a) Conjuntos A e B. (b) União. (c) Intersecção. (d) Complemento de A. ... 33 Figura 3: Arquitetura Proposta por Fantinato. ... 51 Figura 4: Arquitetura Proposta por Vecchiato. ... 53 Figura 5: Arquitetura Proposta por Santos. ... 53 Figura 6: Arquitetura Proposta. ... 57 Figura 7: Fase de Monitoramento / Requisição e Processamento. ... 63 Figura 8: Fase de Monitoramento / Recuperação Nível 7. ... 63 Figura 9: Fase de Monitoramento / Resposta. ... 64 Figura 10: Fase de Monitoramento / Recuperação Nível 6. ... 64 Figura 11: Fase de Monitoramento / Recuperação Níveis 8 e 9. ... 64 Figura 12: Fase de Recuperação / Prioridade. ... 65 Figura 13: Fase de Recuperação / Renegociação. ... 66 Figura 14: Fase de Otimização. ... 66 Figura 15: Variável Fuzzy Atraso / Funções Trapezoidais para os Conjuntos Fuzzy. ... 69 Figura 16: Variável Fuzzy TempoResposta / Funções Trapezoidais para os Conjuntos Fuzzy. ... 69 Figura 17: Variável Fuzzy TempoProcessamento / Funções Trapezoidais para os Conjuntos Fuzzy. ... 70 Figura 18: Variável Fuzzy Disponibilidade / Funções Trapezoidais para os Conjuntos Fuzzy. ... 71 Figura 19: Variável Fuzzy Atraso / Funções Triangulares para os Conjuntos Fuzzy. ... 75 Figura 20: Variável Fuzzy TempoResposta / Funções Triangulares para os Conjuntos Fuzzy. ... 75 Figura 21: Variável Fuzzy TempoProcessamento / Funções Triangulares para os Conjuntos Fuzzy. ... 75 Figura 22: Variável Fuzzy Disponibilidade / Funções Triangulares para os Conjuntos Fuzzy. ... 76 Figura 23: Ambiente de Validação com dois Serviços no Provedor. ... 78

(10)

Figura 24: Monitoramento Leve do Tempo de Resposta / Comparação entre LAN e MAN. ... 84 Figura 25: Monitoramento Leve do Tempo de Resposta / Comparação entre Provedor e Consumidor. ... 84 Figura 26: Monitoramento Leve da Disponibilidade / Análise dos Resultados com o Mecanismo Fuzzy . ... 86 Figura 27: Monitoramento Leve da Disponibilidade / Comparação entre LAN e MAN. ... 87 Figura 28: Monitoramento Leve do Tempo de Resposta e da Disponibilidade / Análise dos Resultados do Cumprimento dos Contratos com o Mecanismo Fuzzy. ... 90 Figura 29: Monitoramento Leve do Tempo de Resposta e da Disponibilidade / Análise dos Resultados do Tempo de Resposta Médio com o Mecanismo Fuzzy. ... 90 Figura 30: Monitoramento Leve do Tempo de Resposta e da Disponibilidade / Comparação do Cumprimento dos Contratos entre LAN e MAN. ... 91 Figura 31: Monitoramento Leve do Tempo de Resposta e da Disponibilidade / Comparação do Tempo de Resposta Médio entre LAN e MAN. ... 91 Figura 32: Comparação entre Monitoramento Leve e Pesado / Melhora no Cumprimento dos Contratos. ... 95 Figura 33: Comparação entre Monitoramento Leve e Pesado / Análise entre LAN, MAN e WAN. ... 95 Figura 34: Comparação entre Fuzzy e Outros Agendamentos / Análise do Cumprimento do Contrato pela Disponibilidade (Dois Serviços no Provedor). ... 100 Figura 35: Comparação entre Fuzzy e Outros Agendamentos / Análise do Cumprimento do Contrato pelo Tempo de Resposta do Lado do Consumidor (Dois Serviços no Provedor). ... 100 Figura 36: Comparação entre Fuzzy e Outros Agendamentos / Análise do Cumprimento do Contrato pelo Tempo de Resposta do Lado do Provedor (Dois Serviços no Provedor). ... 101 Figura 37: Comparação entre Fuzzy e Outros Agendamentos / Análise da Média do Tempo de Resposta do Lado do Consumidor (Dois Serviços no Provedor). ... 101 Figura 38: Comparação entre Fuzzy e Outros Agendamentos / Análise da Média do Tempo de Resposta do Lado do Provedor (Dois Serviços no Provedor). ... 102 Figura 39: Ambiente de Validação com seis Serviços no Provedor. ... 103

(11)

Figura 40: Comparação entre Fuzzy e Outros Agendamentos / Análise do Cumprimento do Contrato pela Disponibilidade (Seis Serviços no Provedor). ... 108 Figura 41: Comparação entre Fuzzy e Outros Agendamentos / Análise do Cumprimento do Contrato pelo Tempo de Resposta do Lado do Consumidor (Seis Serviços no Provedor). ... 108 Figura 42: Comparação entre Fuzzy e Outros Agendamentos / Análise do Cumprimento do Contrato pelo Tempo de Resposta do Lado do Provedor (Seis Serviços no Provedor). ... 109 Figura 43: Comparação entre Fuzzy e Outros Agendamentos / Análise da Média do Tempo de Resposta do Lado do Consumidor (Seis Serviços no Provedor). ... 109 Figura 44: Comparação entre Fuzzy e Outros Agendamentos / Análise da Média do Tempo de Resposta do Lado do Provedor (Seis Serviços no Provedor). ... 110 Figura 45: Comparação entre os Sistemas Fuzzy com Funções Trapezoidais e Triangulares / Análise do Cumprimento do Contrato pela Disponibilidade. ... 115 Figura 46: Comparação entre os Sistemas Fuzzy com Funções Trapezoidais e Triangulares / Análise do Cumprimento do Contrato pelo Tempo de Resposta do Lado do Consumidor. ... 115 Figura 47: Comparação entre os Sistemas Fuzzy com Funções Trapezoidais e Triangulares / Análise do Cumprimento do Contrato pelo Tempo de Resposta do Lado do Provedor. ... 116 Figura 48: Comparação entre os Sistemas Fuzzy com Funções Trapezoidais e Triangulares / Análise da Média do Tempo de Resposta do Lado do Consumidor. ... 116 Figura 49: Comparação entre os Sistemas Fuzzy com Funções Trapezoidais e Triangulares / Análise da Média do Tempo de Resposta do Lado do Provedor. .... 117

(12)

Lista de Tabelas

Tabela 1: Comparação entre os Trabalhos Relacionados e a Tese com Relação ao Tipo de Monitoramento. ... 43 Tabela 2: Comparação entre os Trabalhos Relacionados e a Tese com Relação ao Tempo em que é Feito o Tratamento de uma Falha. ... 43 Tabela 3: Comparação entre os Trabalhos Relacionados e a Tese com Relação às Propriedades Autonômicas. ... 45 Tabela 4: Comparação entre os Trabalhos Relacionados e a Tese com Relação à Aplicabilidade na Utilização das Propriedades Autonômicas. ... 46 Tabela 5: Comparação entre os Trabalhos Relacionados e a Tese com Relação ao Tratamento dos Serviços. ... 49 Tabela 6: Organização dos Contratos Eletrônicos (Dois Serviços no Provedor). ... 79 Tabela 7: Especificações Técnicas dos Hosts. ... 79 Tabela 8: Resultados do Monitoramento Leve do Tempo de Resposta. ... 83 Tabela 9: Momento da Sobrecarga nos Provedores durante o Monitoramento Leve do Tempo de Resposta. ... 83 Tabela 10: Resultados do Monitoramento Leve da Disponibilidade. ... 86 Tabela 11: Melhora do Cumprimento dos Contratos Eletrônicos durante o Monitoramento Leve do Tempo de Resposta e da Disponibilidae. ... 89 Tabela 12: Diminuição do Tempo de Resposta Médio durante o Monitoramento Leve do Tempo de Resposta e da Disponibilidade. ... 89 Tabela 13: Resumo dos Resultados do Monitoramento Leve. ... 92 Tabela 14: Resultados da Comparação entre o Monitoramento Leve e Pesado em uma LAN. ... 93 Tabela 15: Resultados da Comparação entre o Monitoramento Leve e Pesado em uma MAN. ... 94 Tabela 16: Resultados da Comparação entre o Monitoramento Leve e Pesado em uma WAN. ... 94 Tabela 17: Comparação entre Fuzzy e Fila (Dois Serviços no Provedor). ... 97 Tabela 18: Comparação entre Fuzzy e Aleatório (Dois Serviços no Provedor). ... 97

(13)

Tabela 19: Comparação entre Fuzzy e Menor Tempo Limite (Dois Serviços no Provedor). ... 98 Tabela 20: Comparação entre Fuzzy e Menor Tempo de Resposta (Dois Serviços no Provedor). ... 98 Tabela 21: Comparação entre Fuzzy e Menor Tempo de Processamento (Dois Serviços no Provedor). ... 99 Tabela 22: Variação entre o melhor e o pior resultado (Dois Serviços no Provedor). ... 102 Tabela 23: Organização dos Contratos Eletrônicos (Seis Serviços no Provedor). ... 104 Tabela 24: Comparação entre Fuzzy e Fila (Seis Serviços no Provedor). ... 105 Tabela 25: Comparação entre Fuzzy e Aleatório (Seis Serviços no Provedor). ... 105 Tabela 26: Comparação entre Fuzzy e Menor Tempo Limite (Seis Serviços no Provedor). ... 106 Tabela 27: Comparação entre Fuzzy e Menor Tempo de Resposta (Seis Serviços no Provedor). ... 106 Tabela 28: Comparação entre Fuzzy e Menor Tempo de Processamento (Seis Serviços no Provedor). ... 107 Tabela 29: Variação entre o melhor e o pior resultado (Seis Serviços no Provedor). .... 110 Tabela 30: Melhora do Mecanismo Fuzzy Auto-Adaptativo com o Aumento de Serviços no Provedor / Análise do Cumprimento do Contrato pela Disponibilidade. ... 112 Tabela 31: Melhora do Mecanismo Fuzzy Auto-Adaptativo com o Aumento de Serviços no Provedor / Análise do Cumprimento do Contrato pelo Tempo de Resposta (Lado do Consumidor). ... 112 Tabela 32: Melhora do Mecanismo Fuzzy Auto-Adaptativo com o Aumento de Serviços no Provedor / Análise do Cumprimento do Contrato pelo Tempo de Resposta (Lado do Provedor). ... 112 Tabela 33: Melhora do Mecanismo Fuzzy Auto-Adaptativo com o Aumento de Serviços no Provedor / Análise da Média do Tempo de Resposta (Lado do Consumidor). .. 113 Tabela 34: Melhora do Mecanismo Fuzzy Auto-Adaptativo com o Aumento de Serviços no Provedor / Análise da Média do Tempo de Resposta (Lado do Provedor). ... 113

(14)

Lista de Abreviaturas

BPMN Business Process Model and Notation CEi Contrato Eletrônico i

Ci Consumidor i

COS Computação Orientada a Serviço HTTP HyperText Transfer Protocol LAN Local Area Network

MAN Metropolitan Area Network

Mi Monitor i

Pi Provedor i

QoS Quality of Service

RCE Repositório de Contratos Eletrônicos RD Repositório de Dados

RS Repositório de Serviços Si Serviço i

SLA Service Level Agreement SOA Service-Oriented Architecture SOAP Simple Object Access Protocol SOC Service-Oriented Computing

UDDI Universal Description, Discovery, and Integration UI User Interface

URI Uniform Resource Identifier WAN Wide Area Network

WS-BPEL Business Process Execution Language for Web Services WSDL Web Services Description Language

(15)

Sumário

1. Introdução ... 17 2. Fundamentos ... 21 2.1. Serviços Web ... 21 2.1.1. Processos de Negócio ... 21 2.1.2. Orientação a Serviços ... 22 2.1.3. Padrões de Serviços Web ... 22 2.1.4. Interação entre Serviços Web ... 24 2.1.5. Qualidade de Serviço ... 24 2.1.6. Contratos Eletrônicos ... 25 2.2. Monitoramento de Serviços Web ... 26 2.2.1. Classificação quanto à Intrusão ... 26 2.2.2. Classificação quanto à Carga ... 27 2.2.3. Classificação quanto ao Tempo ... 27 2.3. Computação Autonômica ... 28 2.3.1. Propriedades Autonômicas ... 28 2.3.2. Sistemas Auto-Adaptativos ... 29 2.4. Sistemas Fuzzy ... 29 2.4.1. Conjuntos Fuzzy ... 30 2.4.2. Operações em Conjuntos Fuzzy ... 32 2.4.3. Variáveis Linguísticas ... 33 2.4.4. Sintaxe das Regras Fuzzy ... 34 2.4.5. Semântica das Regras Fuzzy ... 35 2.4.6. Sistemas Fuzzy baseados em Regras ... 36 2.4.7. Sistemas Fuzzy de Classificação ... 37 2.5. Considerações Finais ... 38 3. Trabalhos Relacionados ... 39 3.1. Monitoramento ... 39 3.2. Propriedades Autonômicas ... 43 3.3. Teoria Fuzzy ... 46 3.4. Arquiteturas Similares ... 50 3.5. Arquiteturas Anteriores ... 51 3.6. Considerações Finais ... 54

(16)

4. Arquitetura e Mecanismo Propostos para Oferecer QoS em Serviços Web ... 55 4.1. Arquitetura Proposta ... 56 4.2. Entidades ... 58 4.2.1. Entidade Monitora ... 58 4.2.2. Entidade Consumidora ... 58 4.2.3. Entidade Provedora ... 59 4.2.4. Entidade Negociadora ... 59 4.3. Fila de Prioridades ... 60 4.4. Fases ... 62 4.4.1. Fase de Monitoramento ... 62 4.4.2. Fase de Recuperação ... 65 4.4.3. Fase de Otimização ... 66 4.5. Definições do Mecanismo Fuzzy ... 67 4.6. Outras Definições para o Mecanismo Fuzzy ... 74 4.7. Considerações Finais ... 76 5. Resultados do Mecanismo Fuzzy Auto-Adaptativo ... 77 5.1. Experimento 1: Monitoramento do Tempo de Resposta ... 80 5.2. Experimento 2: Monitoramento da Disponibilidade ... 85 5.3. Experimento 3: Monitoramento do Tempo de Resposta e da Disponibilidade ... 87 5.4. Resumo dos Monitoramentos Leves ... 92 5.5. Experimento 4: Comparação entre Monitoramento Leve e Pesado ... 93 5.6. Experimento 5: Comparação entre os Diferentes Agendamentos ... 96 5.7. Experimento 6: Balanceamento de Carga no Provedor ... 103 5.8. Influência da Quantidade de Serviços no Provedor ... 111 5.9. Outros Resultados ... 114 5.10. Considerações Finais ... 117 6. Conclusão ... 119 6.1. Contribuições Originais do Trabalho ... 122 6.2. Publicações ... 123 6.3. Trabalhos Futuros ... 123 Referências ... 125

(17)

Capítulo 1

1.

Introdução

Padrões podem ser criados para gerenciar a complexidade de aplicações distribuídas, como a Arquitetura Orientada a Serviço (SOA – Service-Oriented Architecture) e a Computação Orientada a Serviço (SOC – Service-Oriented Computing). SOA e SOC podem ajudar na integração de plataformas heterogêneas e na construção de aplicações complexas pela composição de serviços simples. Serviços web constituem um exemplo desses padrões. Um acordo pode ser firmado entre as partes envolvidas no serviço, o provedor concorda no que irá oferecer e o consumidor concorda no que irá utilizar. Este acordo é feito através de um contrato eletrônico.

Mesmo existindo um acordo entre as partes envolvidas nos serviços web, existem várias incertezas que podem impedir que as condições sejam satisfeitas. A integração e composição de serviços podem criar vários problemas. Podem existir problemas funcionais e não-funcionais, como por exemplo:

• O serviço pode mudar no provedor. O provedor pode lançar uma nova versão com uma operação diferente e consumidores não avisados podem chamar a versão antiga. O que representa um problema para ambos;

• O serviço pode parar de funcionar no provedor. O serviço não existe mais, ou o serviço pode estar fora do ar;

• O provedor pode parar de funcionar;

• O serviço pode funcionar de modo diferente do esperado devido a erros de programação;

(18)

A manutenção das características não-funcionais, como tempo de resposta, disponibilidade, confiabilidade e segurança, é um problema difícil de resolver.

Devido a esses problemas o monitoramento de composições de serviços web é essencial. Para os consumidores é importante saber se o provedor está respeitando o que foi estabelecido no contrato eletrônico. Para os provedores é importante saber se eles estão satisfazendo as características funcionais e não-funcionais como requisitado pelos seus consumidores.

Esta tese tem como foco justamente este problema, o monitoramento de composições de serviços web. É notado um crescimento acentuado dos serviços web, eles são uma realidade para muitas empresas, e o monitoramento é fundamental para saber se as características de qualidade de serviço estão sendo atendidas pelas partes.

O objetivo principal desta tese, além do monitoramento de composições de serviços web, é o desenvolvimento de um mecanismo fuzzy auto-adaptativo para melhorar a qualidade de serviço em serviços web. O mecanismo prevê possíveis violações de contratos eletrônicos e toma ações para preveni-las. A partir dessas previsões, a arquitetura proposta tenta diminuir as violações e, consequentemente, aumentar a qualidade de serviço. Um sistema fuzzy é usado porque é uma técnica para o tratamento de imprecisão, e neste caso não é possível garantir quando haverá uma violação do contrato eletrônico.

O mecanismo apresentado nesta tese pode ser classificado como auto-adaptativo devido a três fatores:

• Apresenta a propriedade de auto-configuração porque pode mudar a prioridade dos serviços para cumprir os contratos eletrônicos;

• Apresenta a propriedade de auto-otimização porque pode tomar ações pró-ativas para melhorar a média do tempo de resposta do sistema e a média da disponibilidade do sistema;

• Apresenta a propriedade de auto-cura porque pode detectar um(a) problema/falha e tomar ações para resolver este(a) problema/falha.

Existem vários trabalhos relacionados com o monitoramento de serviços web. Porém esta tese apresenta várias funcionalidades onde a maioria dos trabalhos apresentam uma ou duas combinadas. As funcionalidades apresentadas nesta tese são: monitoramento levemente-intrusivo, monitoramento leve, monitoramento pesado, monitoramento assíncrono, teoria fuzzy para diminuir a violação dos contratos eletrônicos, configuração, auto-otimização e auto-cura.

(19)

O monitor desta tese suporta tanto o monitoramento leve (um monitor para cada característica não-funcional de qualidade de serviço) como o monitoramento pesado (um único monitor para todas as características não-funcionais de qualidade de serviço). Mas, nos trabalhos presentes na literatura, os monitores apresentam apenas um tipo de monitoramento, ou leve, ou pesado.

Analisando o tempo em que acontece o monitoramento, os trabalhos com monitoramento assíncrono (processo de monitoramento separado do processo de negócio) apenas descobrem uma falha depois da execução do processo. O apresentado nesta tese tenta prever uma falha em paralelo com a execução do processo.

Muitos trabalhos utilizam a teoria fuzzy em serviços web. Até onde é conhecido, nenhum dos trabalhos utiliza teoria fuzzy para otimizar o cumprimento de contratos eletrônicos. A grande maioria dos trabalhos que utilizam a teoria fuzzy está relacionada com a descoberta/seleção de serviços.

Comparando os trabalhos que apresentam propriedades autonômicos, eles apresentam uma ou duas, porém esta tese apresenta três propriedades combinadas: auto-configuração, auto-otimização e auto-cura.

Esta tese é baseada em uma arquitetura anterior apresentada nos trabalhos de Fantinato (2007), Fantinato et al. (2010), Vecchiato (2010) e Santos (2011). Eles apresentaram um monitor que acompanhava a execução dos serviços web para verificar se estão satisfazendo os níveis de qualidade de serviço. Se eles não estivessem, ações poderiam ser tomadas como: o cancelamento do processo, a aplicação de uma penalização e/ou a renegociação do contrato eletrônico.

A arquitetura proposta nesta tese é um aprimoramento da arquitetura original. O monitor foi modificado para prever uma violação do contrato eletrônico antes dela realmente acontecer. São monitoradas mais de uma característica não-funcional de qualidade de serviço, além de suportar o monitoramento leve e pesado. Em comparação com a arquitetura original, três módulos foram adicionados: analisador, otimizador e recuperador. O módulo analisador utiliza um mecanismo fuzzy para prever as violações do contrato eletrônico. O módulo otimizador muda a prioridade do serviço com base no resultado da análise feita pelo módulo analisador. A fila de prioridade é adaptada de acordo com as necessidades dos resultados. Se uma violação acontecer, o módulo recuperador tenta solucionar esta violação.

(20)

A principal contribuição desta tese é prever uma possível violação de um contrato eletrônico em um provedor, e baseado nessa previsão, algumas ações podem ser tomadas como por exemplo:

• A ordem dos serviços no provedor pode ser alterada para atender todos os contratos eletrônicos sem violação;

• O consumidor pode selecionar outro provedor que seja capaz de atender suas necessidades;

• O provedor pode aumentar sua capacidade de processamento para ser capaz de cumprir todos os contratos eletrônicos;

• Ambas as partes podem renegociar o contrato eletrônico alterando os valores da qualidade de serviço.

Resultados mostram que a arquitetura é muito promissora. Com o mecanismo fuzzy auto-adaptativo houve um aumento no cumprimento dos contratos eletrônicos e uma diminuição na média do tempo de resposta.

Esta tese está organizada da seguinte maneira. O Capítulo 2 apresenta os fundamentos básicos para o entendimento da tese e está dividido em seções. A Seção 2.1 apresenta os conceitos de serviços web, enquanto a Seção 2.2 discute as diferentes formas de monitoramento de serviços web. A Seção 2.3 apresenta a computação autonômica e a Seção 2.4 mostra os sistemas fuzzy. O Capítulo 3 mostra os trabalhos relacionados com a tese. O Capítulo 4 apresenta a arquitetura aprimorada proposta nesta tese juntamente com o mecanismo fuzzy proposto, enquanto o Capítulo 5 apresenta a avaliação do mecanismo fuzzy auto-adaptativo proposto. E por último, o Capítulo 6 mostra as conclusões e os trabalhos futuros.

(21)

Capítulo 2

2.

Fundamentos

Neste capítulo são apresentados os fundamentos básicos necessários para o entendimento desta tese. Na Seção 2.1 são apresentados os conceitos de serviços web, na Seção 2.2 são apresentados os conceitos de monitoramento de serviços web, na Seção 2.3 são apresentados os conceitos de computação autonômica e na Seção 2.4 são apresentados os conceitos de sistemas fuzzy. As considerações do capítulo são apresentadas na Seção 2.5.

2.1. Serviços Web

Nesta seção são apresentados vários conceitos e definições relacionados com os serviços web. São apresentados os processos de negócio, a arquitetura e a computação orientada a serviços, os padrões de serviços web, a interação entre os serviços, qualidade de serviço e contratos eletrônicos.

2.1.1. Processos de Negócio

Um Processo de Negócio (Business Process) consiste de um conjunto de atividades para atingir objetivos de negócio (Weske, 2007). Essas atividades envolvem pessoas, tarefas, máquinas, softwares e outros elementos de forma coordenada. Um processo de negócio transforma alguns recursos de entrada em recursos de saída com um valor agregado a serem disponibilizados (Toledo et al., 2013).

(22)

Processos de negócio podem ser muito complexos. Esta complexidade exige que eles sejam automatizados, se não totalmente, pelo menos em parte, de forma a obter maior eficiência e confiabilidade. Se um processo se limitar a um setor de uma organização, sua infraestrutura para a realização será homogênea, mas se envolver vários setores, ou organizações diferentes, provavelmente a infraestrutura para a execução do processo será heterogênea (Toledo et al., 2013).

A área de Gestão de Processos de Negócio (Business Process Managment) inclui conceitos, métodos e técnicas para apoiar a análise, o projeto, a configuração, a execução e a administração de processos de negócio. Já um Sistema de Gestão de Processos de Negócio (Business Process Management System) é um sistema que coordena a execução de processos de negócio (Toledo et al., 2013). A BPMN (Business Process Model and Notation) é um padrão para a modelagem de processos de negócio (Object Management Group, 2015).

2.1.2. Orientação a Serviços

A Arquitetura Orientada a Serviços (Service-Oriented Architecture) (Papazoglou et al., 2008) e sua realização através da tecnologia de Serviços Web (Web Services) (Alonso et al., 2004) são fundamentais para atender os requisitos dos sistemas de gestão de processos de negócio. Os serviços web são responsáveis pelas interações entre organizações diferentes.

Na Computação Orientada a Serviços (SOC – Service-Oriented Computing) (Huhns & Singh, 2005), as aplicações distribuídas são desenvolvidas usando construtores chamados serviços. Um serviço é um pacote contendo algumas funcionalidades. Um serviço é autocontido, tem identificação única e pode ser descoberto e chamado através de protocolos na Internet. O paradigma SOC permite a integração de aplicações distribuídas executando sobre plataformas heterogêneas. Serviços web tornaram-se a implementação preferencial da SOC (Toledo et al., 2013).

2.1.3. Padrões de Serviços Web

Um serviço web é um tipo específico de serviço eletrônico que utiliza padrões abertos da Internet para sua descrição, descoberta e invocação (Alonso et al., 2004). Os padrões mais básicos para serviços web são HTTP para transporte e XML (Bray et al., 2008) para especificação de documentos do tipo texto. SOAP (Mitra & Lafon, 2007) é usado para

(23)

comunicação, WSDL (Christensen et al., 2001; Booth & Liu, 2007) para descrição de serviços, e UDDI (Clement et al., 2004) para definir a estrutura e o conteúdo dos repositórios (Toledo et al., 2013).

Os padrões são descritos a seguir:

• Descrição de Serviços: A descrição de serviços é baseada em interfaces, ela deve conter as operações oferecidas pelo serviço e o método de invocá-las. Além de especificar seu endereço através de um Identificador Uniforme de Recursos (URI – Uniform Resource Identifier) e o protocolo de transporte para invocar o serviço (Alonso et al., 2004). O padrão aceito atualmente para descrição de serviços é o WSDL (Web Services Description Language) (Chinnici et al., 2006);

• Descoberta de Serviços: Após descrever o serviço deve-se disponibilizar esta descrição para que os interessados possam utilizá-lo. O conceito de diretório de serviços foi criado para armazenar descrições, nele é possível registrar e permitir que clientes procurem por serviços (Alonso et al., 2004). A especificação UDDI (Universal Description, Discovery, and Integration) (Clement et al., 2004) define padrões para publicação e descoberta de serviços;

• Interação de Serviços: Para se iniciar uma comunicação entre os serviços deve-se estabelecer primeiramente um protocolo de transporte, uma vez escolhido, a informação a ser trocada deve ser empacotada e formatada. O SOAP (Simple Object Access Protocol) (Gudgin et al., 2007) é um protocolo de comunicação capaz de encapsular mensagens escritas em XML (eXtensible Marckup Language) (Bray et al., 2008) e trocar informações em uma plataforma distribuída;

• Composição de Serviços: Um serviço web pode utilizar em sua implementação invocações a outros serviços disponibilizados por terceiros ou pela própria organização. A possibilidade de desenvolver serviços complexos a partir da invocação de serviços mais simples facilita a manutenção da aplicação, além de reduzir tempo e custo de desenvolvimento. Um processo de negócio pode ser constituído de vários serviços, porém precisa ser descrito por meio de uma linguagem interpretável por computador que seja capaz de organizar tais serviços de

(24)

uma forma específica para atingir um objetivo de negócio (Weske, 2007). O padrão atual para a especificação de processos de negócio é a linguagem WS-BPEL (Business Process Execution Language for Web Services) (Alves et al., 2007).

2.1.4. Interação entre Serviços Web

Os tipos de interação entre serviços são orquestração e coreografia. Na orquestração, as interações dos serviços são definidas do ponto de vista de uma única organização que controla seus serviços. Na coreografia, as interações são vistas de uma perspectiva global entre os vários serviços (Toledo et al., 2013).

As regras de interação podem ser estabelecidas em comum acordo por todas as partes envolvidas para que um processo de negócio inter-organizacional execute com sucesso. Essas regras incluem a ordem das mensagens e os pontos em que ocorrem as interações entre as orquestrações das partes (Toledo et al., 2013).

Um processo de negócio pode ser visto como uma coreografia (entre organizações) e/ou uma ou mais orquestrações (na mesma organização), em que as partes que colaboram no negócio definem a interação entre elas.

2.1.5. Qualidade de Serviço

A funcionalidade de um serviço eletrônico diz respeito às operações executadas por aquele serviço, ou seja, a sua característica funcional. Porém, outras informações podem estar associadas a descrições de serviços, como os atributos de Qualidade do Serviço (QoS – Quality of Service). A QoS de um serviço eletrônico está relacionada à qualidade da execução desse serviço, isto é, como o serviço realiza as suas operações, a sua função. Além do termo “QoS”, “não-funcionalidade” é outro termo que pode ser utilizado para indicar a qualidade da execução de uma operação e, portanto, os termos “atributos de QoS” e “características não-funcionais” são utilizados para indicar as propriedades de qualidade de um serviço eletrônico (Toledo et al., 2013).

Existe a necessidade de especificar os processos de negócio considerando as suas características não-funcionais. Essa necessidade de descrever os atributos de qualidade de serviço dos processos de negócio mostra a importância da gerência das características

(25)

não-funcionais, incluindo questões tais como a especificação das características não-funcionais dos processos de negócio e a descoberta das atividades de negócio considerando os seus atributos de qualidade de serviço (Toledo et al., 2013).

Alguns exemplos de atributos de QoS são:

• Tempo de Resposta: O intervalo de tempo demandado para que um serviço complete a sua operação;

• Taxa de Serviço: A taxa de processamento de requisição oferecida por um serviço;

• Escalabilidade: A taxa de crescimento da taxa de serviço em um determinado intervalo de tempo;

• Capacidade: O número de requisições concorrentes permitido por um serviço;

• Disponibilidade: A porcentagem de tempo em que um serviço está operante;

• Confiabilidade: A capacidade de entregar um serviço que pode ser considerado confiável. A capacidade de entregar o serviço correto;

• Custo: A medida do custo envolvido na utilização de um serviço; • Reputação: É uma medida de satisfação do cliente utilizando o serviço; • Segurança: Define se um serviço oferece mecanismos de

confidencialidade, integridade, autenticação e autorização.

2.1.6. Contratos Eletrônicos

Um contrato é um acordo entre duas ou mais partes interessadas em criar relacionamentos mútuos nos negócios ou obrigações legais. Ele define um conjunto de atividades a serem executadas por cada parte, as quais devem satisfazer um conjunto de termos e condições conhecidos como cláusulas contratuais. Um contrato deve especificar exatamente o produto ou serviço a ser comercializado de modo que provedores e consumidores saibam o que eles podem esperar e o que é esperado deles. Além disso, um contrato deve estabelecer as regras de relacionamento de negócio, tais como obrigações, permissões e proibições. O contrato deve ainda conter informações para apoiar eventuais julgamentos em caso de discordâncias posteriores (Toledo et al., 2013).

(26)

Contratos eletrônicos são usados para descrever acordos firmados entre organizações para a realização cooperativa de negócios eletrônicos na Internet. Eles são usados para detalhar o fornecimento e o consumo de serviços eletrônicos em um processo de negócio, podendo incluir atributos de qualidade de serviço (QoS) acordados entre as partes envolvidas (Toledo et al., 2013). O conjunto de QoS de um contrato eletrônico (Angelov & Grefen, 2008) costuma ser chamado de SLA (Service Level Agreement) (Sahai et al., 2002; Castellanos et al., 2003; Keller & Ludwig, 2003; Kaminski & Perry, 2006).

2.2. Monitoramento de Serviços Web

O monitoramento de serviços visa acompanhar a execução de serviços/processos registrando as informações produzidas durante sua execução, visualizar estatísticas de serviços/processos e realizar ações corretivas quando certos requisitos não estejam sendo cumpridos (Papazoglou et al., 2008).

Existem várias formas de classificar o tipo de monitoramento em serviços web. Neste capítulo são apresentadas algumas formas de classificação. A classificação pode ser feita com relação à intrusão, à carga que suporta, e/ou ao tempo em que o monitoramento acontece.

2.2.1. Classificação quanto à Intrusão

O monitoramento pode ser classificado com relação à intrusão. Sendo assim, existem três grupos (Moser et al., 2008; Bratanis et al., 2010; Santos, 2011; Tripathy & Patra, 2011):

• Monitoramento Intrusivo: Consiste em adicionar a lógica de monitoramento dentro do código do processo de negócio. Neste contexto, o código do processo de negócio é alterado com a adição do código de monitoramento;

• Monitoramento Levemente Intrusivo: O código do processo de negócio e do monitoramento são completamente separados. Entretanto, uma pequena alteração é necessária no processo de negócio para adicionar o monitor. Pode ser alterar o endereço da requisição/resposta (endereço do monitor) ou enviar uma mensagem a mais para o monitor;

(27)

• Monitoramento Não-Intrusivo: Consiste em não alterar o código do processo de negócio que se deseja monitorar. O monitoramento não intrusivo pode ser realizado em nível de rede, ou seja, realizando a captura dos pacotes de comunicação entre o consumidor e o provedor.

2.2.2. Classificação quanto à Carga

O monitor pode também ser classificado quanto à carga que suporta (Bratanis et al., 2010):

• Monitor Heavy-Weight: Um único monitor suporta o monitoramento de diferentes características de um serviço web. Este tipo de monitor é mais difícil de implementar porque ele é mais complexo. Além disto, uma falha no monitor implica na incapacidade de monitorar as diversas características do serviço;

• Monitor Light-Weight: Um monitor suporta o monitoramento de apenas uma característica do serviço web a ser monitorado. Vários monitores leves podem ser usados para monitorar diversas características de um serviço, mas com cada monitor monitorando uma característica diferente. Embora estes monitores não sejam tão complexos de serem implementados, as mensagens de requisição/resposta precisam ser passadas para cada monitor, podendo criar uma sobrecarga nas trocas de mensagens. Porém, a falha de um monitor tem impacto apenas na característica monitorada por ele, sendo que os outros monitores não são afetados.

2.2.3. Classificação quanto ao Tempo

É possível classificar os serviços de monitoramento com relação ao tempo em que o monitoramento acontece. Com relação ao tempo, é possível classificar as abordagens em dois grupos (Baresi et al., 2008; Mannava & Ramesh, 2012):

• Síncrono: O serviço é bloqueado enquanto o monitoramento é realizado; • Assíncrono: O monitoramento é feito durante a execução do serviço, sem

(28)

2.3. Computação Autonômica

Computação autonômica é um conceito que junta vários campos da computação com o objetivo de criar sistemas computacionais que são auto-gerenciáveis. O ideal é que nestes sistemas exista a mínima interferência humana (Huebscher & McCann, 2008).

O termo autônomo vem da biologia. No corpo humano, o sistema nervoso autônomo cuida dos reflexos inconscientes, ou seja, as funções corporais que não requerem a nossa atenção, por exemplo, tamanho da pupila, funções digestivas, taxa e profundidade da respiração, dilatação ou constrição dos vasos sanguíneos, entre outras. Sem o sistema nervoso autônomo, os seres humanos estariam constantemente ocupados em adaptar o corpo às suas necessidade e ao meio ambiente.

O termo computação autonômica foi usado a primeira vez pela IBM em 2001 para descrever sistemas computacionais que são classificados como auto-gerenciáveis (Kephart & Chess, 2003). Entretanto, os conceitos por trás de auto-gerenciamento não são inteiramente novos.

2.3.1. Propriedades Autonômicas

Estes sistemas gerenciáveis possuem quatro propriedades principais: auto-configuração, auto-otimização, auto-cura, e auto-proteção. Uma breve descrição dessas propriedades podem ser vistas a seguir (Huebscher & McCann, 2008):

• Auto-Configuração: Um sistema que se configura sozinho de acordo com um objetivo, isto é, especificando o que é desejado, mas não necessariamente como realizá-lo. Ele é capaz de se instalar e de mudar seus parâmetros de acordo com suas necessidades específicas, tanto de plataforma como do usuário.

• Auto-Otimização: Um sistema que otimiza a utilização dos recursos. Ele pode decidir iniciar uma alteração de forma pró-ativa (em oposição a um comportamento reativo) para melhorar o desempenho ou a qualidade do serviço.

• Auto-Cura: Um sistema que detecta ou que diagnostica problemas. Os tipos de problema que são detectados podem ser interpretados de forma

(29)

ampla: desde erros de baixo nível (falha de hardware) até erros de alto nível (problema de software) (Paulson, 2002). Se for possível, o sistema deveria resolver o problema, por exemplo, mudando um componente redundante, ou baixando e instalando as atualizações de software. É importante ressaltar que o processo de cura não deve prejudicar o sistema, como por exemplo, introduzir novos erros ou a perda de configurações do sistema. Tolerância a falhas é uma característica importante de auto-cura. O sistema é reativo a falhas ou detecta o sinal de uma possível falha. • Auto-Proteção: Um sistema que se protege de ataques maliciosos. Mas

também de usuários que tentam fazer alterações indesejadas, como por exemplo, excluir um arquivo importante. O sistema consegue se ajustar para ter segurança, privacidade e proteção dos dados. Segurança é um aspecto importante de auto-proteção, mas não apenas de software, de hardware também. O sistema também pode ser capaz de prever violações de segurança e evitar que elas aconteçam. Dessa forma o sistema exibe características pró-ativas.

2.3.2. Sistemas Auto-Adaptativos

Sistemas auto-adaptativos têm algumas das propriedades autonômicas por algum tempo, especialmente para proporcionar a auto-otimização (Huebscher & McCann, 2008).

Os termos computação autonômica, sistemas gerenciáveis e sistemas auto-adaptativos podem ser utilizados como sinônimos.

2.4. Sistemas Fuzzy

Os seres humanos são capazes de lidar com processos bastante complexos, com base em informações imprecisas ou aproximadas. Por outro lado, técnicas tradicionais quantitativas exigidas para o tratamento computacional de diversas classes de problemas dificultam a representação da complexidade do mundo real, para a qual o ser humano tem habilidades natas. O extenso repertório de técnicas para tratamento de imprecisão derivadas a partir da teoria de conjuntos fuzzy, proposta por Zadeh (1965), surgiu como uma forma de flexibilizar os modelos tradicionais rígidos e precisos, e permitir o tratamento de situações

(30)

que são naturalmente imprecisas. O resultado dessa nova abordagem deu origem a uma nova classe de sistemas, os sistemas fuzzy. (Talon, 2006).

Na lógica clássica, há dois valores possíveis: verdadeiro e falso. Tais sistemas são conhecidos como lógicas bivalentes. A lógica em modelos probabilísticos também é bivalente: cada fato é verdadeiro ou falso, mas frequentemente não fica claro se um dado é verdadeiro ou falso. É usada probabilidade para expressar a plausibilidade de uma proposição específica se tornar verdadeira. Uma lógica polivalente pioneira foi usada para raciocinar sobre o princípio da incerteza, usada na física quântica. Esta lógica tem três valores: verdadeiro, falso e indeterminado. Uma extensão desta lógica de três valores é considerar 0 (zero) para falso, 1 (um) para verdadeiro, e números reais entre 0 (zero) e 1 (um) para representar graus de verdade. Este tipo de lógica polivalente (lógica fuzzy) é uma parte extremamente importante da inteligência artificial (Coppin, 2013).

O conceito de imprecisão associado às informações processadas pelos sistemas fuzzy é usualmente confundido com a incerteza relacionada à teoria da probabilidade. Segundo Coppin (2013), a teoria da probabilidade lida com a incerteza, não é possível saber se a proposição será verdadeira ou falsa, mas ela será definitivamente verdade ou falsa, não ambas, nem nenhuma das duas, e não algo entre as duas. Mas na lógica polivalente, é conhecido o valor da proposição, ele não é verdadeiro nem falso, ou é tanto verdadeiro como falso.

2.4.1. Conjuntos Fuzzy

A noção de conjunto é básica não só na matemática, mas também na vida diária. Ela ocorre frequentemente quando se tenta organizar, resumir e generalizar o conhecimento sobre objetos (Talon, 2006). Na natureza, muitos sistemas não podem ser caracterizados de uma maneira absoluta, do tipo verdadeiro ou falso, advindos da lógica clássica. Em função do caráter binário imposto pela álgebra booleana, a lógica clássica se mostra inadequada para modelar detalhes (Campos & Saito, 2004). Na teoria clássica dos conjuntos, um objeto pertence ou não pertence ao conjunto. Um objeto pertencente a um conjunto é dito um elemento do conjunto. A representação x ∈ A indica que o objeto x pertence ao conjunto A e a representação x ∉ A indica que o objeto x não pertence ao conjunto A.

Uma das maneiras de se definir um conjunto é por meio de uma função característica, que associa o valor 1 (um) ao elemento se ele pertence ao conjunto ou 0 (zero)

(31)

se ele não pertence ao conjunto. Por exemplo, um conjunto A sobre um universo X pode ser definido por uma função A: X → {0,1} como:

A(x) = 1 se x ∈ A 0 se x ∉ A ⎧ ⎨ ⎪ ⎩ ⎪

Assim, existe uma distinção clara e bem determinada entre os objetos que estão e os que não estão no conjunto.

O conceito de conjunto fuzzy foi introduzido de forma a evitar passagens bruscas entre duas classes, e a permitir que os elementos não pertençam completamente nem a uma, nem a outra classe, ou melhor, que os elementos possam pertencer parcialmente a cada uma delas. A definição de conjunto fuzzy responde a necessidade de representar conhecimentos imprecisos (Campos & Saito, 2004).

Sendo A um conjunto fuzzy, um objeto x pode pertencer ao conjunto A com um grau, que é chamado de grau de pertinência de x em A e usualmente expresso por um número no intervalo [0,1]. Os valores extremos desse intervalo, 0 (zero) e 1 (um), representam, a não pertinência total ao conjunto e a pertinência total ao conjunto respectivamente (Talon, 2006).

A função de pertinência de um conjunto A mapeia elementos do universo X em graus de pertinência no intervalo [0,1] escrevendo A: X → [0,1].

Em geral, conjuntos fuzzy são definidos para representar conceitos imprecisos, o que depende do entendimento que se tem desse conceito e também do contexto em que será utilizado. A rigor, a forma mais adequada de uma função de pertinência só pode ser definida no contexto de uma aplicação, mas algumas formas de funções de pertinência tornaram-se mais conhecidas e são utilizadas frequentemente, pela sua simplicidade. Entre as formas de funções mais conhecidas estão as famílias de funções parametrizadas, sendo que algumas delas são apresentadas a seguir:

• Função Triangular: parâmetros (a, m, b), onde a ≤ m ≤ b.

( )

(

)

(

)

⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ ≥ ∈ − − = ∈ − − ≤ = b x se b m x se m b x b se x m m a x se a m a x se x a x A 0 , 1 , 0 µ

(32)

• Função Trapezoidal: parâmetros (a, m, n, b), onde a ≤ m < n ≤ b. µA

( )

x = 0 se x ≤ a x − a m − a se x ∈ a, m

(

)

1 se x ∈ m, n

[

]

b − x b − n se x ∈ n, b

(

)

0 se x ≥ b ⎧ ⎨ ⎪ ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎪

• Função Gaussiana: parâmetros (m, k), onde k > 0.

( )

k(x m)2

A x =e− −

µ

A Figura 1 mostra os formatos mais comuns, especificando os parâmetros associados a cada caso.

Figura 1: Funções de pertinência: (a) triangular, (b) trapezoidal e (c) gaussiana.

2.4.2. Operações em Conjuntos Fuzzy

A união, intersecção e complemento são as operações essenciais realizadas em conjuntos clássicos. Essas operações podem ser generalizadas para usar os conjuntos fuzzy. Com base na teoria clássica dos conjuntos, Zadeh (1965) definiu as operações de união, intersecção e complemento para os conjuntos fuzzy, a partir da função de pertinência.

Sejam A e B dois conjuntos fuzzy no universo X com suas funções de pertinência A(x) e B(x), respectivamente.

(33)

A interseção fuzzy padrão (A∩B) dos conjuntos A e B é definida por: (A∩B)(x) = min[A(x), B(x)] = A(x) ∧ B(x)

onde min e ∧ denotam o operador de mínimo.

A união fuzzy padrão (A∪B) dos conjuntos A e B é definida por: (A∪B)(x) = max[A(x), B(x)] = A(x) ∨ B(x)

onde max e ∨ denotam o operador de máximo.

O complemento fuzzy de A indica o grau com que x não pertence ao conjunto A, e pode ser definido por:

A(x) = 1− A(x)

A Figura 2 mostra exemplos de união, intersecção e complemento aplicados a dois conjuntos fuzzy A e B.

Figura 2: (a) Conjuntos A e B. (b) União. (c) Intersecção. (d) Complemento de A.

2.4.3. Variáveis Linguísticas

Grande parte da experiência e do conhecimento dos seres humanos pode ser melhor representada na forma linguística, mais geral e imprecisa. Por outro lado, as representações numéricas são mais precisas e mais facilmente tratáveis por computador. As variáveis linguísticas permitem que problemas complexos ou mal definidos sejam adequadamente modelados com a representação apropriada das imprecisões naturalmente presentes nesses domínios pelo uso de termos linguísticos, ao mesmo tempo em que

(34)

possibilita seu tratamento computacional. Essas variáveis provêm mecanismos de tradução entre descrições linguísticas imprecisas e descrições numéricas, passíveis de tratamento computacional. Essa tradução se baseia no mapeamento entre termos linguísticos e conjuntos fuzzy (Talon, 2006).

Uma variável linguística pode ser definida, de maneira informal, como uma variável cujos valores são palavras ou sentenças em linguagem natural ao invés de números (Zimmermann, 1991). As variáveis linguísticas são definidas sobre um domínio chamado conjunto base, o qual é dividido em termos linguísticos definidos por conjuntos fuzzy.

2.4.4. Sintaxe das Regras Fuzzy

Uma das maneiras de representar conhecimento é pelo uso de regras que expressem o que deva acontecer ou o que realmente acontece diante de certas condições (Coppin, 2013). Sua popularidade vem do fato de possibilitar a expressão clara de diretivas e estratégias, captar o conhecimento experimental de especialistas humanos e possuir um formato linguístico de fácil compreensão (Talon, 2006).

No contexto de sistemas fuzzy as regras adquirem sintaxe e semântica particulares, e são chamadas de regras fuzzy. Sua principal propriedade é a capacidade de representar conhecimento impreciso, pelo uso de termos linguísticos (Talon, 2006).

Em geral, as regras fuzzy têm a seguinte forma:

SE <antecedente> ENTÃO <consequente>

Elas têm a finalidade de estabelecer relações entre as variáveis que aparecem no antecedente (condição ou premissa) e as que aparecem no consequente (conclusão ou ação).

Com a finalidade de detalhar melhor a sintaxe de uma regra fuzzy, é necessário definir uma proposição atômica fuzzy. A proposição atômica fuzzy é a parcela de informação básica que pode aparecer em uma regra e seu formato é:

VL é TL

onde VL é uma variável linguística sobre um domínio e TL é um termo linguístico que representa um conjunto fuzzy.

Proposições fuzzy podem ser compostas, isto é, construídas a partir de proposições atômicas pelos operadores de conjunção ou disjunção. Por exemplo:

VL1 é TL1 C VL2 é TL2 C ...

(35)

Uma regra fuzzy assume o formato de uma proposição condicional, que no caso mais simples fica:

SE VLA é TLA ENTÃO VLC é TLC

Porém, no caso mais geral, tanto o antecedente como o consequente podem ser formados por proposições compostas, que dá origem a regras da forma:

SE VL1 é TL1 C VL2 é TL2 C ... ENTÃO VL3 é TL3 C ...

2.4.5. Semântica das Regras Fuzzy

Considerando uma regra fuzzy no seu formato mais simples: SE X é A ENTÃO Y é B

onde esta regra descreve uma relação entre as variáveis X e Y, que pode ser descrita por uma relação fuzzy R cuja função de pertinência R(x,y) descreve o grau com que o par (x,y) ∈ X×Y é compatível com a relação entre as variáveis X e Y. Nessas condições a regra fuzzy induz uma relação fuzzy R.

As relações convencionais (crisp) representam a presença ou ausência de associação, interação ou interconexão entre os elementos de dois ou mais conjuntos. As relações fuzzy estabelecem associações (interações, interconexões) de diferentes graus entre os elementos pertencentes às relações (Talon, 2006).

Sendo A e B conjuntos fuzzy sobre X e Y, respectivamente, a relação R pode ser determinada por

R(x,y) = f(A(x), B(y)), ∀(x,y) ∈ X×Y onde f é uma função na forma f : 0,1

[ ]

2 → 0,1

[ ]

.

A escolha da função f é fundamental para o sistema fuzzy, pois determina a semântica da regra e diversos aspectos de processamento do sistema. As relações induzidas por regras fuzzy podem ser representadas pela implicação fuzzy. Um dos exemplos mais conhecidos de implicação fuzzy é a implicação de Lukasiewicz (1970):

f A x

(

( )

, B y

( )

)

= min 1,1− A x⎡⎣

( )

+ B y

( )

⎤⎦

Caso a regra possua múltiplas variáveis (proposições compostas) no antecedente e/ou no consequente, a relação R é definida de forma semelhante. Se o conector C for um E (conjunção fuzzy) (Mamdani & Assilian, 1975; Mamdani, 1977), pode-se utilizar a intersecção fuzzy para induzir a relação. E se o conector C for um OU (disjunção fuzzy), pode-se utilizar a união fuzzy para induzir a relação.

(36)

Então, para a regra:

SE X1 é A1 C X2 é A2 C ... C Xn é An ENTÃO Y1 é B1 C Y2 é B2 C ... C Ym é Bm

é definida a relação R assumindo que a proposição composta do antecedente induz uma relação n-ária definida por

Pa(x1, x2, ..., xn) = A1(x1) ∧/∨ A2(x2) ∧/∨ ... ∧/∨ An(xn)

e a proposição composta do consequente induz uma relação m-ária definida por Pc(y1, y2, ..., ym) = B1(y1) ∧/∨ B2(y2) ∧/∨ ... ∧/∨ Bm(ym)

A regra induz então uma relação de ordem n+m definida por: R(x1, x2, ..., xn, y1, y2, ..., ym) = f (Pa(x1, x2, ..., xn), Pc(y1, y2, ..., ym))

2.4.6. Sistemas Fuzzy baseados em Regras

Um sistema fuzzy baseado em regas é composto por dois componentes principais: a base de conhecimento e o mecanismo de inferência.

A base de conhecimento é composta pela base de dados fuzzy, a qual contém as definições dos conjuntos fuzzy relacionados aos termos linguísticos usados na regras fuzzy, e pela base de regras fuzzy, que armazena o conjunto de regras fuzzy que modelam um determinado problema.

O mecanismo de inferência é responsável pelo processamento das regras, o qual é realizado por um método de raciocínio. Este consiste na aplicação de um procedimento de inferência para derivar conclusões a partir das regras e de fatos conhecidos.

Com a definição dos diversos parâmetros envolvidos em um sistema fuzzy baseado em regras, obtém-se o que é chamado de modelo de sistema fuzzy, sendo que alguns desses modelos recebem destaque na literatura, devido ao seu sucesso em aplicações práticas. Nesse sentido, é possível citar dois modelos principais de sistemas fuzzy: os de Mamdani (Mamdani & Assilian, 1975; Mamdani, 1977) que possuem na parte consequente das regras fuzzy uma proposição fuzzy e os de Takagi-Sugeno (Takagi & Sugeno, 1983; 1985) que possuem na parte consequente uma função aplicada sobre os valores de entrada.

(37)

2.4.7. Sistemas Fuzzy de Classificação

Dado um conjunto de objetos E = e

{

1, e2,..., ei

}

, também chamados de padrões, o objetivo da classificação é atribuir uma classe Cj de um conjunto conhecido de classes

C = C

{

1, C2,..., Cm

}

a um objeto ep= a

{

p1, ap2,..., apn

}

, o qual é descrito por n atributos.

Um sistema fuzzy de classificação é um sistema fuzzy baseado em regras que tem a finalidade de definir a classe a que um determinado padrão pertence. Uma típica regra fuzzy de classificação segue o formato geral das regras fuzzy e pode ser expressa por:

Rk: SE VL1 é TL1 E VL2 é TL2 E ... ENTÃO Classe é Cj

sendo Rk o identificador da regra, VL1, VL2, ... os atributos do padrão (representados por

variáveis linguísticas) considerado no problema, TL1, TL2, ... os valores linguísticos usados

para representar os valores dos atributos e Cj a classe (fuzzy ou não) a que pertence o padrão.

O mecanismo de inferência aplica o conjunto de regras fuzzy no padrão a ser classificado, determinando a classe a que ele pertence. A maioria dos sistemas fuzzy de classificação utiliza o método de raciocínio fuzzy clássico (Chie et al., 1996; Abe & Thawonmas, 1997; Gonzalez & Perez, 1999), que classifica um padrão usando a regra que possuir maior grau de compatibilidade com esse padrão. Esta forma de raciocínio usa somente uma regra para classificar o padrão e desperdiça as informações providas por outras regras, embora elas também possuam um grau de compatibilidade com o padrão. Outro método de raciocínio que combina as informações providas por todas as regras para classificar o padrão pode ser utilizado. Ele recebe o nome de método de raciocínio fuzzy geral (Ishibuchi et al., 1999).

Considere o padrão a ser classificado ep = a

{

p1, ap2,..., apn

}

e um conjunto de regras R = R

{

1, R2,..., Rs

}

.

Para o raciocínio fuzzy clássico, calcula-se o grau de compatibilidade entre o padrão ep e cada regra Rk. Como o antecedente da regra foi definido com conjunções, pode-se

usar a intersecção fuzzy sobre o grau de pertinência dos valores dos atributos do padrão aos correspondentes conjuntos fuzzy que aparecem na regra. Encontra-se a regra que possui o maior grau de compatibilidade com o padrão. Ao padrão ep será atribuída a classe Cj, tal que

Cj é a classe da regra Rk que possui o maior grau de compatibilidade com o padrão.

Para o raciocínio fuzzy geral, calcula-se o grau de compatibilidade entre o padrão ep e cada regra Rk da mesma forma que o raciocínio fuzzy clássico. Em seguida, calcula-se

(38)

C, agregando os graus de compatibilidade do padrão com todas as regras que o classificam nessa classe C. Esta agregação pode ser a soma dos graus de compatibilidade. O padrão ep

será classificado na classe C, sendo C a classe que possuir maior valor da agregação dos graus de compatibilidade.

2.5. Considerações Finais

Este capítulo apresentou os conceitos básicos necessários para esta tese. Foram apresentados os fundamentos de serviços web, mais especificamente: processos de negócio, orientação a serviço, padrões de serviços web, interação entre serviços web, qualidade de serviço e contratos eletrônicos. Foi explicada a finalidade do monitoramento de serviços web e como ele pode ser classificado, em relação a: intrusão, carga e tempo. Em seguida foi mostrado o conceito de computação autonômica, assim como suas propriedades e a definição de sistemas auto-adaptativos. E por último, os sistemas fuzzy foram introduzidos, junto com os fundamentos de: conjuntos fuzzy, operações sobre conjuntos fuzzy, variáveis linguísticas, sintaxe e semântica das regras fuzzy, sistemas fuzzy baseados em regras e sistemas fuzzy de classificação.

(39)

Capítulo 3

3.

Trabalhos Relacionados

Neste capítulo são apresentados alguns trabalhos que abordam um ou mais assuntos relacionados com esta tese.

O capítulo é dividido pelos assuntos relacionados. Inicialmente são apresentados os trabalhos sobre monitoramento. Depois, são listados os trabalhos com propriedades autonômicas. Na sequência são apresentados trabalhos que utilizam a teoria fuzzy. Em seguida são apresentados alguns trabalhos com arquitetura similar. E por último, são apresentados os trabalhos anteriores ao desta tese, os trabalhos que foram utilizados como base para a arquitetura proposta nesta tese. No final são apresentadas as considerações do capítulo.

3.1. Monitoramento

É possível listar vários trabalhos sobre monitoramento. Um monitoramento levemente intrusivo pode ser encontrado nos trabalhos de Moser et al. (2008) e Michlmayr et al. (2009), e um monitoramento assíncrono pode ser encontrado nos trabalhos de Baresi et al. (2008) e Wetzstein et al. (2009). O trabalho de Magalhães & Silva (2015) apresenta características de monitoramento não-intrusivo e assíncrono.

Moser et al. (2008) apresentam VieDAME, um sistema que substitui serviços de acordo com os atributos de qualidade de serviço. Estes serviços são substituídos em tempo de execução. Cada serviço pode ser marcado como substituível para indicar que serviços

Referências

Documentos relacionados

Considere que determinada concessionária de veículos ofereça, além do pagamento à vista, vários planos de financiamento, à taxa de juros compostos de 1,5% ao mês. Com base nessas

3 Caliente aceite en un wok o una sartén, ponga en él la carne y dórela a fuego vivo unos 2 minutos sin dejar de remover.Añada la pasta de curry y mézclela bien; incorpore luego

Um outro ataque de natureza mais gravosa é o ataque de sulfatos aos CSH com formação de taumasite, esta acção é usual em estruturas de betão em contacto com o solo húmido,

Tendo em consideração que os valores de temperatura mensal média têm vindo a diminuir entre o ano 2005 e o ano 2016 (conforme visível no gráfico anterior), será razoável e

Cursos Conteúdos Administração e Recursos Humanos 10 questões de conhecimentos gerais 15 questões de matemática 10 questões de português Direito 20 questões de

APÊNDICES APÊNDICE 01: Tabela de frequência das disciplinas dos programas figura 07 Disciplinas dos programas Disciplina Gestão ambiental Acompanhamento e avaliação de programas

Pretendo, a partir de agora, me focar detalhadamente nas Investigações Filosóficas e realizar uma leitura pormenorizada das §§65-88, com o fim de apresentar e

2.4.1 Objetivo Geral Assim, o objetivo deste estudo é estabelecer um modelo de negócio para exportação de software pela Internet que seja exeqüível para pequenas e médias