Software Engineering for Self-Adaptive Systems Andrew Diniz da Costa [email protected] Autoadaptação • A complexidade dos atuais sistemas levou a comunidade de engenharia de software a procurar inspiração em diversas áreas afins (ex: robótica, inteligência artificial), bem como outras áreas (ex: biologia) para encontrar novas formas de design e gestão de sistemas e serviços. • Autoadaptação – Tornou-se uma das mais promissoras direções. – A capacidade do sistema ajustar seu comportamento em resposta a percepção do ambiente. 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 2 Motivação Sistema Funcionando Sistema com Problema Eu sou inteligente. Deixa que eu resolvo!! 1) Independe de intervenção externa 2) Mais rápido 3) Seguro* Usuário conserta/muda manualmente o sistema 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 3 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. 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 4 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 5 Sumário • Requisitos - Estado da arte - Desafios da Pesquisa • Engenharia - Estado da arte - Desafios da Pesquisa 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 6 Requisitos (I/III) • A Engenharia de Requisitos preocupa-se em o que um sistema deve fazer e quais restrições ele deve considerar. • Portanto, a engenharia de 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 7 Requisitos (II/III) • 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 espectativas sobre o ambiente frequentemente podem variar ao longo do tempo. 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 8 Requisitos (III/III) • 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 9 Requisitos – Alguns Desafios • Como documentar adaptações em nível de requisito – Uso de vocabulário que oferece incertezas – Definir linguagem para especificar requisitos • Como mapear requisitos para a arquitetura do sistema – Ex: O sistema pode/deve realizar alguma coisa. • Como realizar e garantir rastreabililidade entre requisitos e implementação • Como tratar incertezas – Definir quando uma autoadaptação começa. – Qual o processo de execução (control-loop) para que uma autoadaptação seja realizada? 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 10 Sumário • Requisitos - Estado da arte - Desafios da Pesquisa • Engenharia - Estado da arte - Desafios da Pesquisa 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 11 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). • 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 12 Atividades do control loop. 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 13 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: balancemento de carga ou autocura [self-healing]), – e efetuar a decisão tomada no sistema. 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 14 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 15 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 16 Computação Autonômica • Computação autonômica visa melhorar os sistemas de computação com um objetivo semelhante de diminuir a participação humana. • 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. • O temo computação autonômica foi primeiro usada pela IBM em 2001 para descrever sistemas computacionais que são ditos autogerenciáveis. 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 17 Computação Autonômica • Computação autonômica visa prover sistema com caracteríticas auto-gerenciáveis. – self-configuration (automatic configuration according to a specified policy) – self-optimization (continuous performance monitoring) – self-healing (detecting defects and failures, and taking corrective actions) – self-protection (taking preventive measures and defending against malicious attacks) • Conhecidos como self-*. Camila Nunes, Elder Cirilo e Ingrid Nunes © LES/PUC-Rio Exemplos de Autoadaptação em Sistemas Multi-agentes 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 19 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 e Jadex 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. – São criados de forma ad-hoc. 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 20 Autoadaptação em SMA • Frameworks que estendem o JADE. 2008 05/11/2015 2009 Carlos J. P. Lucena © LES/PUC-Rio 2010 21 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 22 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 23 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 24 JAAF+T Framework (II/II) • Arquivos XML – Test File (TF.xml) – Data File (DF.xml) – Control Flow File (CFF.xml) – Criterion of Extion File (CEF.xml) 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 25 Geração Automática de XMLs • Manter arquivos XML é cansativo. • Como posso facilitar essa trabalho? – Uso do plug-in RSA-MBT para a ferramenta Rational Software Architecture (RSA) – Ferramenta que gera de forma automática os arquivos XML do JAAF+T a partir de modelos UML – RSA-MBT usa diagramas baseados no profile UML Testing Profile for Coordination (extensão da UML). – Ferramenta disponível no site www.les.inf.pucrio.br/escritorioqualidade. SILVA, A. ; COSTA, Andrew Diniz da ; CIRILO, E. ; LUCENA, Carlos J P ; STAA, A. V. . RSA-MDT: Ferramenta voltada para Testes Dirigidos a Modelos baseados em Diagramas UTPX. In: Sessão de ferramentas do CBSoft 2012, 2012, Natal. Sessão de ferramentas do CBSoft 2012, 2012. COSTA, Andrew Diniz da ; VENIERIS, R. ; CARVALHO, G. ; LUCENA, Carlos J P . RSA-MBT: A Test Tool for Generating Test Artifacts Based on Models. In: 9th European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, 2013, St. Petersburg. Proceedings of the ESEC/FSE 2013, 2013. Olhar lattes para mais referências: http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=W528140 05/11/2015 Carlos J. P. Lucena © LES/PUC-Rio 26 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 27 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 28 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 29 Software Engineering for Self-Adaptive Systems Andrew Diniz da Costa