Nomeado de BR-IndustrialExpert, o principal objetivo da ferramenta proposta neste trabalho é fornecer informações valiosas para o projetista de sistemas/processos, permi-
4.3. BR-INDUSTRIALEXPERT 33
Algoritmo 2: Código de descrição da Árvore de Falha Fig. 3.1. event A repairFaultRate 1.0 2.0;
// Cria o evento A com taxa de falha 2.0 e taxa de reparo 1.0 1 event B repairFaultRate 1.0 2.0;
2 event C repairFaultRate 1.0 2.0; 3 event D repairFaultRate 1.0 2.0; 4 event E repairFaultRate 1.0 2.0; 5 and porta_and A B;
// Cria uma porta lógica chamada de porta_and que liga os eventos A e B
6 or porta_or D E;
7 and porta_and_1 C porta_or;
8 or porta_or_1 porta_and porta_and_1;
9 terminal porta_or_1 reliability 1.0 0.0 10.0;
// Define o topo da Árvore de Falha conectado a porta_or_1 e pede para analisar a confiabilidade do tempo 0 ao tempo 10 com passo 1
tindo o desenvolvimento de aplicações industriais tolerantes a falhas e a manutenção do sistema/processo de forma mais eficiente. Nas próximas subseções será mostrado como o usuário da ferramenta descreve uma infraestrutura genérica e os algoritmos de mapea- mento para uma Árvore de Falhas otimizada.
4.3.1 Editor de infraestruturas genéricas
O editor de infraestruturas genéricas define as abstrações da infraestrutura, uma das características mais importantes da ferramenta de análise da dependabilidade. Primeira- mente, o sistema/processo é organizado como um grafo G(V,E) com n vértices (V ) e k arestas (E). Os vértices representam dispositivos e as arestas do grafo representam as ligações (links) entre os dispositivos. A interface gráfica do usuário (GUI) é mostrada na Figura 5.5, cuja tela principal é onde o usuário edita a topologia do sistema/processo.
Nós consideramos falhas tanto em dispositivos quanto nas ligações entre eles. Ambos podem ser reparados após uma falha, se necessário. Depois de uma operação de reparo, o dispositivo ou ligação é considerado como novo. Nós assumimos que os processos de reparação de falhas são todos independentes e caracterizados por meio de uma função de distribuição cumulativa. Na interface gráfica o usuário deve informar as taxas de falha e de reparo do componentes do sistema.
34 CAPÍTULO 4. FRAMEWORK PARA ANÁLISE DA DEPENDABILIDADE
Figura 4.5: Interface de configuração para estruturas genéricas no Br-IndustrialExpert.
4.3.2 Gerador de Árvore de Falhas
Esta seção descreve os passos a serem seguidos para construir uma Árvore de Falha baseada em um sistema/processo mapeado como um grafo. O primeiro passo é determi- nar as condições que podem levar a um defeito no sistema/processo. São considerados três possibilidades para uma falha de dispositivo: (i) o hardware falha; (ii) um conjunto de linksfalham; (iii) não há nenhum caminho entre o dispositivo e o servidor/centralizador (problema de conectividade). Como descrito na Seção 1, as condições (i) e (ii) não podem ser acessadas simultaneamente porque falhas permanentes de link ocorrem mais frequen- temente que as de hardware. Por outro lado, a condição (iii) tem uma influência direta nas condições (i) e (ii). Então, isso deve ser avaliado pelos dois casos, um para condição (i) e outro para condição (ii).
Todos as condições de falhas do dispositivo são descritas na Figura 4.6. Para fa- lhas de hardware permanente, um dispositivo i é representado pelo evento devi. Para as
falhas de link permanente, um link j é representado pelo evento linkj. O evento cpi(pro-
blema de conectividade) representa condição de falhas (iii). Esse evento é apenas ativado quando todos caminhos entre o dispositivo i e o serveridor/centralizador tem falhado. Fi- nalmente, um caminho k é considerado falho se pelo menos um dispositivo (hardware) ou um link ao longo do caminho tem falhado. Este comportamento é representado pelo evento devi_Pathm. Para armazenar todas as condições de falha de dispositivo foi neces-
4.3. BR-INDUSTRIALEXPERT 35 sária a adoção de uma estrutura de dados com base em vetores dinâmicos (Fig. 4.6-iv). De acordo como o tamaho da rede, a estrutura cresce dinamicamente.
and
devi_Path1 ... devi_Pathn cpi or devi ... devj devi_Pathm (iii) (i) linkk ... linkp devi_Pathm (ii) or dev dev1 Path1 Path Pathn 1 2 3 4 5 1 8 5 (iv) cp1 dev k ... cpk
Figura 4.6: Condição de falha para uma rede de dispositivos i considerado: (i) falhas de hardware; (ii) falhas de link; (iii) ausência de camnhos entre o servidor/centralizador e o dispositivo; (iv) estrutura de dados adotada.
Note que algum esforço é necessário para encontrar todas as cominações que levam a o evento cpi. Para isso, é necessário que a pesquisa de todos os caminhos entre o ser-
vidor/centralizador e o dispositivo destino i (evento devi). Os caminhos são encontrados
realizando uma busca em profundidade (BP) na matriz de adjacência A do grafo G. Todos os passos para gerar o evento cpisão descritos no Algoritmo 3.
Algoritmo 3: Algoritmo para gerar o evento cp de um dispositivo destino. Algoritmo: gerar_cp(graph,dev)
Output: O evento cp para o dispositivo destino(dev).
// Encontrar todos caminhos entre o dispositivo destino e o servidor/centralizador do grafo
1 all_paths← DFS(graph,dev);
2 fori← 1;i<all_paths.size();i++do 3 dev.path[i] ←all_paths[i];
4 cp←dev; 5 returncp
O segundo passo para a geração da Árvore de falhas é definir quais combinações de dispositivos podem levar o sistema/processo a um defeito. Esta configuração é represen- tada pelo evento n f c (condição de falha do sistemas/processo) na Fig. 4.7. A ferramenta proposta nesta dissertação suporta qualquer combinação que possa ser expressada através de operadores booleanos (and, or). Uma combinação de dispositivos que levam a falha do sistema/processo é definido como n f c_andj, onde j é a identificação da combinação.
Este evento é representado pela porta lógica and da condição de falha dos dispositivos. Um dispositivo pode pertencer a mais de uma condição de falha. A condição de falha do
36 CAPÍTULO 4. FRAMEWORK PARA ANÁLISE DA DEPENDABILIDADE sistema/processo é representada pela porta lógica or de todas as cominações que levam a falha do sistema/processo. or nfc cpi
...
and ... nfc_and1 nfc_andn cpk and ... nfc cp1cp3 cpi ... cpk nfc_andn nfc_and1 (i) (ii)Figura 4.7: Condição de falha da rede (i) e sua estrutura de dados respectiva(ii). A geração do evento n f c é descrita no Algoritmo 4, onde a estrutura de dados é aná- loga à representada na Fig. 4.7-ii. Deve-se enfatizar que a condição de falha do sis- tema/processo é um parâmetro de entrada da ferramenta. Assim, o principal objetivo do Algoritmo 4 é ligar este parâmetro de entrada (n f c_input) ao dado gerado pelo método generate_cp (Algoritmo 3). n f c_input e n f c compartilham a mesma estrutura, a dife- rença é que a forma armazena apenas rótulos.
Algoritmo 4: Algoritmo para gerar o evento n f c. Algoritmo: generate_nfc(graph,nfc_input)
Output: O evento topo da Árvore de Falha (event n f c).
// Encontrar todos dispositivos que envolve a condição de falha do sistema/processo e seu evento espectivo cp
1 fori← 1;i<nfc_input.number_devices();i++do 2 device←nfc_input.get_device(i);
3 cp[i] ← generate_cp(graph,device);
// Realocar cada label i no nfc_input pelo seu respectivo evento cpi
4 forj← 1;j<nfc_input.number_combinations();j++do 5 fork← 1;nfc_input.combination[j].size();k++do 6 target←nfc_input.combination[j].at(k);
7 position← indexOf(cp,target);
8 nfc.combination[j].at(k) ←cp[position]; 9 return nfc
Para esclarecer a geração da Árvore de Falhas, considere o exemplo a seguir para o sis- tema/processo descrito na Fig. 4.8. Nesse cenário, assume-se que a condição de falha do
4.4. CONJUNTO DE CORTES MINIMAIS 37