Computação Autonômica
Nathalia Nascimento
[email protected]
Motivação
• “Os profissionais de TI mais experientes
acreditam que, em poucos anos, o mundo
tecnológico se tornará impossível de administrar”
[Kephart, 2005]
– Sistemas complexos; heterogêneos; dífíceis de integrar e
manter
• Em 2001, a IBM lançou um manifesto para
comprovar que a complexidade tecnológica seria
o maior obstáculo ao progresso da indústria
tecnológica
• O sonho da “Internet das Coisas” podia vir a se
tornar um pesadelo [Kephart, 2005]
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
2
Motivação
• Solução: Computação Autonômica
– Prover aos componentes a habilidade de auto
gerenciamento de acordo com objetivos especificados
pelo administrador [Kephart, 2003]
– Computação autonômica visa melhorar os sistemas de
computação com um objetivo semelhante de diminuir a
participação humana.
– IBM: O termo “autonômico” 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.
– Em 2005, já existiam mais de 20 workshops voltados ao
tema de Computação Autonômica [Kephart, 2005]
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
3
O Estudo de Sistemas Autoadaptáveis
• O tópico de sistemas autoadaptáveis tem sido estudado em
diferentes áreas de pesquisa da engenharia de software:
– Requisitos
– Arquitetura de software
– Middleware
– Desenvolvimento baseado em componente
– Linguagens de programação
– etc.
• Outras comunidades de pesquisa tem sido investigadas:
– Computação tolerante a falhas
– Computação inspirada na biologia
– Sistemas multiagents
– Robótica,
– etc.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
4
Auto Gerenciamento
• A essência da computação autonômica é o auto
gerenciamento
• O quão livre o administrador é dos detalhes de operação do
sistema
• O sistema irá manter e ajustar suas operações frente à
falhas de software ou hardware, mudanças externas ou dos
componentes, etc.
• Monitora o uso próprio do sistema e checa por atualizações
– O sistema realiza a instalação, se reconfigura e realiza teste de
regressão
– Se um erro for detectado, o sistema tenta reverter para a
versão anterior enquanto tenta isolar a falha do sistema
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
5
Auto Gerenciamento - Exemplo
• Upgrade: Novos módulos introduzidos
• Teste de regressão detecta falhas
• O sistema retoma a versão anterior, detecta o “elemento X”,
gera um diagnóstico e envia ao administrador do sistema
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
6
Auto-Gerenciamento
• IBM considera 4 aspectos para auto gerenciamento
– Self-*
– Atualmente, esses aspectos vêm sendo tratados
separadamente
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
7
Self-Configuration
• O Data Centro de grandes corporações podem requerer
meses de investimento para integrar os servidores, banco
de dados, etc.
– Instalação, configuração demandam muito tempo e estão
propensos à erros
• Sistema autonômicos irão se auto configurar com base em
políticas de alto nível
– Objetivos em nível de negócio
– O que é desejado alcançar, e não como deve ser feito
• Novo elemento é introduzido
– Ele incorpora as regras
– Os outros elementos se adaptam à ele
– Nova célula no corpo ou uma nova pessoa na população
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
8
Self-Optimization
• Sistemas complexos como banco de dados possuem uma
série de parâmetros para serem corretamente configurados,
de forma que o sistema seja otimizado
• Sistemas autonômicos continuam a buscar formas de
aperfeiçoar as suas atividades
– Identificar formas para melhorar performance e custo
– Monitora, experimentar novos valores para os seus parâmetros
e realizar escolhas apropriadas
– Músculos mais fortes durante o exercício físico, e o
cérebro realiza adaptações durante o processo de
aprendizado
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
9
Self-healing
• IBM e outras empresas de TI possuem vastos
departamentos focados em identificar e determinas as
causas de falhas em sistemas complexos
– Alguns problemas levam meses para serem diagnosticados e
tratados
• Sistemas autonômicos irão detectar, diagnosticar e reparar
as falhas
– Exemplo: através de testes de regressão
– Utiliza conhecimento da configuração do sistema, arquivos de
log, etc.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
10
Self-protection
• Os sistemas precisam ser prevenidos de ataques maliciosos
• Sistemas autonômicos terão auto-proteção em dois
sentidos:
– Irá defender o sistema de problemas correlacionados aos
ataque maliciosos ou falhas em cascata
– Irá antecipar os problemas com base em relatórios
previamente emitidos pelos sensores, e assim, poderá realizar
as etapas necessárias para evitá-los
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
11
Desenvolvimento de Sistemas AutoAdaptáveis
• Self-Adaptive:
– top-down
– Avaliam seu comportamento global e mudam ele quando a
avaliação indica que não estão se comportando como deveriam
ou com a performance desejada.
• Self-organising:
– bottom-up.
– Compostos por componentes que interagem localmente de
acordo com regras simples. O comportamento global do
sistema emerge dessas interações locais, sendo difícil deduzir
as propriedades do sistema global estudando apenas as
propriedades locais dessas partes.
• É atribuído aos componentes dos sistemas auto adaptativos um
certo grau de descentralização e auto organização. Ser puramente
descentralizado, não consegue garantir uma segurança
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
12
O Desenvolvimento de Sistemas
Autoadaptáveis
• O desenvolvimento de sistemas autoadaptáveis pode ser
visto a partir de duas perspectivas:
• top-down quando considera um sistema individual
– Avaliar seu próprio comportamento e alterá-lo quando é
identificada a necessidade de se adaptar, devido a evolução
das exigências funcionais e não-funcionais
• bottom-up quando considera sistema cooperativos
– O comportamento global do sistema emerge a partir de
interações locais.
– Auto-organização
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
13
Sumário
• Requisitos
• Engenharia
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
14
Requisitos
• R1: Componentes individuais autônomos
– Componentes com características de self-*
– Os componentes devem ser desacoplados, para quando for
resolver uma falha, não interferir no sistema global
• R2: Interoperabilidade
– As capacidades de auto adaptação e auto organização originam
a partir da interação entre componentes individuais
– Em cenários reais, os componentes que interagem são
heterogêneos
• R3: Self-*
– Propriedades de Self-* vêm da capacidade dos componentes de
detectarem novas condições/falhas sem intervenção humana
– Capacidades de sentir, decidir e agir
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
15
Requisitos
• R4: Guia de Comportamento
– Sistemas auto organizáveis: regras locais
– Sistemas audo adaptáveis: regras locais e globais
– É importante deixar o sistema livre para permitir a adaptação
decentralizada, mas limitar o escopo das ações permitidas
• R*: Processo de desenvolvimento
– preocupa-se em o que um sistema deve fazer e quais
restrições ele deve considerar.
– requisitos deve endereçar quais adaptações são possíveis e
quais restrições estão relacionadas a adaptações.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
16
Requisitos
• Outras questões importantes:
– Quais aspectos do ambiente são relevantes para adaptação?
– Quais requisitos podem variar e evoluir em tempo de execução,
e serem sempre mantidos?
– Logo, a engenharia de requisitos para sistema autoadaptáveis
tem que tratar incertezas, já que expectativas sobre o
ambiente frequentemente podem variar ao longo do tempo.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
17
Requisitos
• Um dos principais desafios para autoadaptações é no design
do sistema, já que não pode-se sempre assumir que todas
as adaptações são conhecidas a priori.
• Não é possível antecipar todas as condições possíveis do
ambiente e suas respectivas adaptações.
• Exemplo:
– Se um sistema responder a um cyber-ataque, ele pode não
conhecer algum ataque realizado, já que atores maliciosos
desenvolvem novos ataques todo o tempo.
• Uma evolução dos requisitos deve ser realizada em tempo
de execução.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
18
Sumário
• Requisitos
• Engenharia
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
19
Engenharia: State of the Art & Feedback Loops
Considerações preliminares
• Qualquer tentativa de automatizar sistemas de autoadaptativos, necessariamente, tem que considerar loops de
feedback (processo de autoadaptação).
• Proposta da IBM: O raciocínio do sistema geralmente
envolve processos de feedback com quatro atividades
chaves:
– collect, analyze, decide, and act
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
20
Atividades do control loop.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
21
Exemplo
• Imagine manter e executar web services por um longo
periodo. Isso necessita:
– coletar informações que refletem o estado do sistema
– analisar informações para diagnosticar os problemas de
desempenho ou detectar falhas do sistema, a fim de decidir
como resolvê-los (ex: autocura [self-healing]),
– e efetuar a decisão tomada no sistema.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
22
Engenharia: Atividades do Control Loop
• Coleta:
– Inicio do processo de autoadaptação
– Uso de sensores e outras fontes que permita conhecer o estado
corrente do sistema
– Necessidade de sensores confiáveis.
• Análise:
– Analisar os dados coletados
– Há muitas maneiras de estruturar e raciocinar sobre os dados
coletados (ex: lógica fuzzy, forward chaining, backward
chaining, raciocic).
– Tem que ser capaz de responder: Como é o estado corrente do
sistema? Quanto de informação antiga pode ser necessária
para o futuro? Quais dados precisam ser analisados?
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
23
Engineering: Generic Control Loop 3
• Decisão:
– Responsável por informar como adaptar o sistema para
alcançar o estado do sistema desejado.
– Definir estratégias de decisão.
– Importante questão: Como a decisão é alcançada?
• Atuar (Efetuador/Executor)
– Implementar a decisão tomada a partir de atuadores ou
efetuadores.
– Importante questão: Quando e como a adaptação pode ser
feita de forma segura?
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
24
Exemplos de Autoadaptação em
Sistemas Multi-agentes
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
25
Autoadaptação em SMA
• Agentes podem ser autoadaptáveis.
• Como criar um agente autoadaptável?
– Existem diversos frameworks de SMA.
– Existe algum framework que oferece facilidades para o
desenvolvimento de adaptações?
– Jade, tem alguma coisa?
• Problemas comuns nas abordagens oferecidas:
– Amarração em algum processo de autoadaptação.
– Impossibilidade de adicionar atividades em algum processo.
– Não usa algum dos frameworks conhecidos de SMA.
– Não são gratuitos.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
26
Autoadaptação em SMA
• Frameworks que estendem o JADE.
2008
05/11/2015
2009
Carlos J. P. Lucena © LES/PUC-Rio
2010
27
JAAF Framework
• *JAAF: Java Self-Adaptive Agent Framework
– Extensão do JADE
– Oferece um control-loop padrão baseado na proposta da IBM (4
atividades)
– Permite a criação de novos control-loops.
– Oferece tipos de sensores para coletar dados.
– Oferece módulo com estratégias de IA originalmente
implementadas no framework DRP-MAS**.
*S. NETO, B. F. ; COSTA, Andrew Diniz da ; NETTO, M. T. A. ; SILVA, Viviane Torres da ; LUCENA, Carlos J P .
A Framework to Implement Self-Adaptive Agents. In: International Conference on Software Engineering and Knowledge
Engineering, 2009, Boston. Proceedings of the 21th International Conference on Software Engineering and Knowledge
Engineering (SEKE 09), 2009
**COSTA, Andrew Diniz da ; SILVA, Viviane Torres da ; ALENCAR, P ; LUCENA, Carlos J P . A Hybrid
Diagnostic-Recommendation System for Agent Execution in Multi-Agent Systems. In: ICSOFT-2008, 2008, Porto.
Proceedings of the ICSOFT-2008, 2008.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
28
JAAF-S Framework
• JAAF-S: Java self-Adaptive Agent Framework for Services
– Extensão do JAAF
– Voltado para adaptações de serviços (ex: web-services).
– Oferece suporte para OWL-S.
• Leitura de dados
– Atualização do módulo de IA com
• algoritmo genético
• raciocínio baseados em casos
S. NETO, B. F. ; COSTA, Andrew Diniz da ; SILVA, Viviane Torres da ; LUCENA, Carlos J P . JAAF-S: A Framework
to Implement Autonomic Agents Able to Deal with Web Services. In: The 4th International Conference on Software and
Data Technologies (ICSOFT 2009), 2009, Sofia. Proceedings of the 4th International Conference on Software and
Data Technologies (ICSOFT 2009), 2009.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
29
JAAF+T Framework (I/II)
• JAAF+T: Java self-Adaptive Agent Framework for Self-Test
– Extensão e remodelagem do JAAF-S
– Objetivo: Testar adaptações antes de concretizá-las. Aplicar
auto-teste.
– Inclusão de novos control-loops
– Integração com ferramentas de teste (ex: Junit, DBUnit, JAT,
etc).
– Uso de arquivos XML que servem como input para o sistema.
COSTA, Andrew Diniz da ; Camila Nunes ; SILVA, Viviane Torres da ; S. NETO, B. F. ; LUCENA, Carlos J P . JAAF+T: A
Framework to Implement Self-Adaptive Agents that Apply Self-Test. In: 25th Symposium On Applied Computing, 2010, Sierre.
Proceedings of the 25th Symposium On Applied Computing, 2010.
COSTA, Andrew Diniz da ; SILVA, Viviane Torres da ; LUCENA, Carlos J P ; Janaina Horácio . A Multi-Agent System
Framework to Assure the Reliability of Self-Adapted Behaviors. In: II Workshop sobre Sistemas de Software AutônomosI
(Autosoft), do II Congresso Brasileiro de Software: Teoria e Prática (CBSoft), 2011, São Paulo. II Workshop sobre Sistemas de
Software AutônomosI (Autosoft), do II Congresso Brasileiro de Software: Teoria e Prática (CBSoft), 2011.
COSTA, Andrew Diniz da ; SILVA, Viviane Torres da ; LUCENA, Carlos J P ; Soeli Fiorini ; CARVALHO, G. . Innovative
Modeling of Relevant Test Concepts. In: Sixth International Workshop on Software Quality and Maintainability of the CSMR 2012,
2012, Szeged. Proceedings of the Sixth International Workshop on Software Quality and Maintainability, 2012.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
30
Discussão (I/III)
• Outros frameworks de autoadaptação que usem famosos
frameworks de SMA (ex: Jadex, Jack, ...).
– Abordagens genéricas
– Abordagens ad-hoc (ex: redes de computadores, gerenciamento de
projetos – alocação de atividades, redes sociais, mobile etc.).
• Criar abordagens que atendam algum dos seguintes self-*
– self-configuration
– self-optimization
– self-healing
– self-protection
• Definir nova linguagem de desenvolvimento que permita a melhor
representação de incertezas (pode, talvez se, se somente se, etc)
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
31
Discussão (II/III)
• Definir novos control-loops
– Uso de reputação e normas?
– Ad-hoc
• Criar simulações que usem a ideia de autoadaptações.
• Definir padrões de autoadaptação direcionada ao uso de
agentes de software.
• Como modelar autoadaptação? UML é suficiente?
• Caso use BDI em um SMA, como testar autoadaptações que
refletem mudanças no BDI de um agente?
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
32
Discussão (III/III)
• Fornecer o histórico de adaptações realizadas para consulta
de um usuário.
– Possível hot spot de algum framework.
• Por que não pensar em oferecer uma interface gráfica que
permita configurar agentes de software autoadaptáveis?
– Construir ou modificar graficamente um agente de software
• Incluir estratégias de coleta, análise, decisão etc.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
33
References
• A Generic Framework for the Engineering of SelfAdaptive and Self-Organising Systems
– Giovanna di Marzo, et.al.
• Software Engineering for Self-Adaptive Systems: A
Research Road Map
– Betty H.C. Cheng, et. al.
• Research challenges of autonomic computing. In: 27th
International Conference on Software Engineering (ICSE
2005)
– Kephart, J.
• The Vision of Autonomic Computing. Computer,
36(1):41–50, January 2003.
– J. O. Kephart and D. M. Chess.
05/11/2015
Carlos J. P. Lucena © LES/PUC-Rio
34
Software Engineering for Self-Adaptive
Systems
Andrew Diniz da Costa
Download

SelfAdaptiveSystems - (LES) da PUC-Rio