• Nenhum resultado encontrado

A abordagem de autocura tenta habilitar os sistemas de computação para descobrir, diagnosticar e reparar automaticamente (ou pelo menos mitigar) falhas sem intervenção humana, portanto, é uma abordagem capaz de melhorar a confiabilidade e a autonomia de um sistema de computação (WEI et al., 2011).

Os desafios com o problema de monitoramento são a implementação de forma não intrusiva, os comportamentos do sistema a serem monitorados e o design dos componentes do sistema a serem monitorados. No aspecto de interpretação é impor- tante determinar quando há um problema a ser adaptado; em outras palavras, deve haver um mecanismo para detectar se os comportamentos dos sistema são alterados de forma a afetar o sistema corretamente ou não e como podemos selecionar o método de adaptação para melhorar o sistema. O problema de resolução está preocupado com a eficácia do mecanismo de reparo proposto, o plano de backup se ocorrer um conflito, a melhoria do sistema sem pará-lo, a solução de reparo adequada e, finalmente a fase de adaptação, em que a implementação em tempo real é uma questão vital e o design de um componente do sistema que responde à adaptação em tempo real (AL-ZAWI et al., 2011).

Em face das falhas dos sistemas que, por muitas vezes, são devidas a bugs, por não dispor de tempo para executar diagnósticos necessários e com o propósito de trazer o sistema de volta à disponibilidade imediatamente, a reinicialização é a única solução usada, ao invés de detectar e corrigir a falha quando esta ocorrer (CANDEA et

Capítulo 2. FUNDAMENTAÇÃO TEÓRICA 33

al., 2006).

Existem duas abordagens diferentes utilizadas nos sistemas de autocura, os me- canismos de adaptação integrada e externa (GARLAN; SCHMERL, 2002; SCHMERL; GARLAN, 2002):

A) Mecanismo de adaptação integrado: É descrito como uma metodologia ad-hoc por sistema, que é baseada no método tradicional que assume que o sistema a ser modificado está em estado off-line. Neste método, a autoadaptação é implementada internamente com o próprio sistema, portanto é pré-formada e especificada com um sistema específico - o que dificulta a separação e não é fácil de ser modificado. O conhecimento de adaptação resultante é difícil de ser reutilizado em outros sistemas; portanto, a técnica não poderá determinar a verdadeira fonte de erros. Cada vez mais, os sistemas são necessários para trabalhar de forma que não fiquem indisponíveis para atender aos requisitos das novas tecnologias em sistemas de software e hardware nos dias de hoje, onde os recursos em execução podem mudar com frequência.

B) Mecanismo de adaptação externa (controle de circuito fechado): Neste método, o comportamento do sistema é monitorado por componentes externos do sistema em execução. Esses componentes determinam quando o comportamento do sistema está dentro do nível aceitável e quando ele está fora do intervalo desejado. Este método suporta as seguintes características: diferentes modelos podem ser usados; o mecanismo pode ser reutilizado; facilmente alterado, estudado e fundamentado; a infraestrutura de monitoramento e adaptação pode ser compartilhada e permite a validade de qualquer alteração (AL-ZAWI et al., 2011).

Inicialmente os sistemas de autocura foram descritos como capazes de detectar e se recuperar de possíveis falhas, sem a necessidade ou com a mínima intervenção humana (KEPHART; CHESS, 2003). Embora nenhum sistema tenha sido capaz de operar com total autonomia, vários avanços foram feitos para a realização de ambientes de sistemas de informação autogerenciados. Isso ocorreu à medida que os processos evolutivos foram sendo rotineiramente envolvidos com o desenvolvimento e manutenção de estruturas de computação autônoma(IBM, 2006).

Projetos que permitem que os sistemas de software se autorrecuperem de falhas iriam melhorar radicalmente a confiabilidade e consistência da tecnologia no campo. O esforço para garantir esses benefícios originou o conceito de sistemas de autocura. A autocura pode ser definida como a propriedade que permite a um sistema perceber que não está operando corretamente e, sem ou com a mínima intervenção

humana, fazer os ajustes necessários para restaurar a normalidade. Os sistemas de autocura que requerem intervenção humana ou intervenção de um agente externo ao sistema podem ser categorizados como sistemas de autocura assistida. O foco central ou ideia principal é que um sistema de autocura deve se recuperar do estado anormal (ou “debilitado”) e retornar ao estado normal (“saudável”) e funcionar como antes da interrupção(GHOSH et al., 2007).

As estruturas de sistemas de autocura estão surgindo como uma abordagem útil para enfrentar os requisitos de complexidade crescente da gestão de sistemas. Essas estruturas tentam classificar e analisar dados sensoriais para detectar e mitigar, de forma autônoma, falhas. Isso, por sua vez, reduz a necessidade de sistemas para interagir com os administradores humanos, reduzindo os custos operacionais e, idealmente, melhorando as técnicas de mitigação existentes (SCHNEIDER; BARKER; DOBSON, 2013).

Pode-se argumentar que isso é muito geral e altamente similar ao que se espera dos sistemas de tolerância a falhas ou de sobrevivência bem estabelecidos. Os sistemas tolerantes a falhas compreendem técnicas de estabilização e estratégias de replicação como métodos essenciais de recuperação. Portanto, Ghosh et al. (2007) admitem que sistemas de autocura em alguns casos são vistos como subordinados a sistemas tolerantes a falhas. Os sistemas de sobrevivência manipulam comportamentos maliciosos contendo componentes com falha e assegurando os “serviços essenciais” que representam uma configuração de sistema mínima, mas funcional (ELLISON et al., 1999; R; N; H, 1998; M, 2003). Geralmente, o foco da pesquisa de autocura é a recuperação como um processo elaborado. Isso compreende ambos, métodos para estabilizar, substituir, proteger e isolar, mas, essencialmente, estratégias para reparar e prevenir falhas. Ghosh et al. (2007) identifica o aspecto-chave dos sistemas de autocura como informática voltada para a recuperação. Isso também pode ser uma razão, por que algumas das abordagens pesquisadas descrevem a autocura apenas como um método de recuperação aprimorado, por exemplo Akoglu, Sreeramareddy e Josiah (2009), Corsava e Getov (2003). Sterritt (2005) vê os esforços de toda a computação autônoma como um caminho evolutivo e bem elaborado para atingir os objetivos.

O modo de operação das aplicações de autocura é como um processo organi- zado de detecção e isolamento de um componente defeituoso, corrigindo o componente falhado e reintroduzindo o componente fixo ou de substituição no sistema sem qualquer aparente interrupção. O objetivo das propriedades de autocura é apoiar a confiabilidade do sistema, minimizando as interrupções. Além disso, os sistemas de autocura devem poder antecipar conflitos que tentam evitar possíveis falhas (GANEK; CORBI, 2003) .

O motivo para melhorar um sistema com propriedades de autocura é obter disponibilidade contínua que inclui a resiliência contra as adaptações pretendidas e

Capítulo 2. FUNDAMENTAÇÃO TEÓRICA 35

necessárias e o comportamento não intencional e arbitrário. As implementações de autocura funcionam através da detecção de interrupções, o diagnóstico de falha na raiz e a obtenção de um “remédio” com uma estratégia de recuperação. Além disso, a precisão da infraestrutura para sensores e atuadores depende da detecção temporária do mau comportamento do sistema. Isso só é possível analisando continuamente os dados detectados e observando os resultados das ações de adaptação necessárias. As políticas possíveis incluem conjuntos simples de instruções dependentes do evento, mas também estimativas ampliadas de IA(Inteligência Artificial) que suportam a re- solução de falhas anteriormente desconhecidas. Um consenso da pesquisa sobre propriedades de autocura é mostrado na Figura 4. Na parte esquerda, as origens das ideias e algumas pesquisas baseadas na autocura são ilustradas e na direita, as propriedades da autocura. (SCHNEIDER; BARKER; DOBSON, 2013).

Figura 4 – Relações e propriedades da pesquisa de autocura

Fonte: Schneider; Barker; Dobson (pag. 5, 2013).

De um modo mais geral, para alcançar a autocura em sistemas de software um estilo arquitetural precisa atender a certos requisitos (MIKIC-RAKIC; MEHTA; MEDVI- DOVIC, 2002), que incluem adaptabilidade, dinamicidade, conscientização, autonomia, robustez, mobilidade e rastreabilidade. Esses requisitos suportam as quatro fases de um ciclo de vida de software autoadaptativo, que consiste em monitorar, planejar

as mudanças necessárias, implementar descrições de mudanças e implementar as mudanças. Quão bem um estilo arquitetural atende aos requisitos de autocura pode ser medido ao longo de cinco características das arquiteturas de software: estrutura externa, regras de topologia, comportamento, interação e fluxo de dados (FREI et al., 2013).

Documentos relacionados