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
Download

SelfAdaptiveSystems2013.2 - (LES) da PUC-Rio