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