Documentação completa
Executáveis Win32
É um aplicativo de desktop em Visual Basic 6 que permite descrever a estrutura de um objeto perigoso na forma de uma rede GERT e calcular estimativas de fatores de risco para cada nó. O sistema é baseado em um motor baseado em objetos COM implementado em Visual C++/ATL, e existe um sistema de plugins para avaliação de perigos. Cada plugin é um objeto COM. Além disso, existe uma fachada do sistema na forma de um objeto COM para integração ao Mathcad.
A escala de classificação de perigo utilizada é demasiado grande (11 pontos) para que as classificações possam ser facilmente feitas manualmente. Portanto, uma parte essencial do sistema é o componente de automação do seu cálculo (ver Fig. 5.1). Para tanto, é proposta e implementada uma técnica especial, descrita no próximo parágrafo. Acontece que muitos dos perigos identificados se sobrepõem aos utilizados pelos engenheiros de segurança. Isto implica uma vantagem significativa do modelo desenvolvido, que se expressa no facto de os métodos de avaliação das condições, saúde e segurança no trabalho poderem ser adaptados com relativa facilidade aos nossos muitos factores de perigo. É importante que os métodos existentes permitam, com base em GOSTs, regulamentos e documentação para instalações de produção perigosas, determinar várias características quantitativas de um objeto, convertendo-as em escalas universais (pontuação). A própria presença e teste desses métodos é essencial, simplificando o processo muito trabalhoso de desenvolvimento de uma metodologia para cálculo de estimativas. A metodologia proposta pode ser utilizada em muitos casos, mas nem sempre, e nem todos os especialistas ficarão satisfeitos com esta abordagem. Portanto, é necessária maior flexibilidade. É por isso que foi desenvolvida uma arquitetura baseada na implementação do módulo de avaliação como componente externo em relação ao Perigo. Para proporcionar esta flexibilidade, é necessário proporcionar ao utilizador (normalmente um especialista) a capacidade de implementar os seus próprios algoritmos de estimativa de valor e utilizar as suas próprias estruturas e bases de dados. Como o tipo de conexão entre esse módulo e o sistema Hazard é simples, não é aconselhável sobrecarregar o produto com Visual Basic for Applications. As especificidades do desenvolvimento de tais algoritmos são determinadas pela necessidade de trabalhar com estruturas de dados complexas. Portanto, o script Hosting também é inadequado e torna o produto injustificadamente mais pesado, pois é projetado para implementar algoritmos de gerenciamento de objetos, ao invés de processar dados estruturados. O conceito ideal aqui é o conceito de módulos de expansão (plugins), que foi implementado usando tecnologia COM. Esses módulos geralmente são muito compactos (tamanho pequeno, dependem pouco de várias bibliotecas e componentes e consomem poucos recursos). Podem ser implementados em qualquer linguagem para a qual exista uma ferramenta que permita o desenvolvimento de componentes utilizando tecnologia COM. Isto proporciona maior flexibilidade de implementação, mas, por si só, não introduz complexidade tecnológica significativa na tarefa. A intensidade e a complexidade do trabalho aumentam significativamente ao implementar este componente em ferramentas e linguagens de baixo nível, por exemplo, usando Visual C++. Porém, como método acessível a programadores não qualificados, menos trabalhoso e muito eficaz, propõe-se uma implementação em Visual Basic. O tipo de comunicação com Hazard é muito simples e o componente só precisa ser um servidor COM em processo que implemente a interface IFactorAssign e possa atuar como um cliente COM usando a interface IDispatch e a interface dupla MGertNet. A criação de tais objetos COM, implementados por um servidor COM em processo, usando Visual Basic 6 é trivial e pode ser facilmente executada por programadores não qualificados, uma vez que é essencialmente automatizada. A essência formulada do desenvolvimento de uma extensão determina o conteúdo da especificação dela. Para que o componente seja reconhecido pelo Hazard, conectado e capaz de interagir com ele, é necessário o seguinte:
Como exemplo, foi implementada uma extensão universal (em Visual Basic 6), que é um produto bastante complexo e implementa a técnica da média ponderada. O módulo de avaliação implementado pelo método da média ponderada é universal, pois utiliza uma interface gráfica sofisticada, estruturas de dados dinâmicas complexas e editores para os mesmos, o que permite descrever com eficácia uma ampla gama de OPO. Portanto, não é um exemplo típico. Porém, como já foi indicado, todas estas dificuldades não dizem respeito ao mecanismo de interação com o Hazard, mas são características desta implementação, certos requisitos para a mesma (como produto comercial universal). Para casos especiais (uso oficial), propõe-se a criação de módulos simples com estrutura estática que possam ser efetivamente desenvolvidos por programadores não qualificados em Visual Basic.
Hazard é implementado como um servidor COM fora de processo (ActiveX EXE) usando Visual Basic 6 e é representado pela classe COM Hazard.HazardApp. O núcleo Hazard, que contém códigos para um modelo de desenvolvimento de um incidente em uma instalação de produção perigosa, códigos para execução de modelo e algoritmos de otimização, é implementado como um servidor COM em processo (DLL ActiveX), usando Visual C++ 6.0 (ATL ) e é representado pela classe COM GERTNETLib.MGertNet. Hazard pode ser usado por clientes de Automação OLE, para os quais fornece a capacidade de criar suas próprias instâncias criando Hazard.HazardApp. A classe HazardApp possui uma série de propriedades e métodos públicos que fornecem acesso limitado aos recursos do Hazard, para os quais foi implementada uma camada especial (embora bastante “bruta”), levando em consideração as peculiaridades de trabalhar no modo servidor de automação OLE. A camada garante não só a correta execução das funções, mas também o acesso ao núcleo Hazard. Este último também pode ser usado diretamente - criando uma instância do MGertNet sem executar o Hazard. A maioria das interfaces e classes da biblioteca GERTNETLib são abertas e criadas (públicas, criáveis), mas sua implementação impõe em grande parte restrições à implementação das interfaces ali descritas, desde uma conversão crescente de ponteiros para interfaces até os tipos de implementação de objetos C++ é realizado. Portanto, o uso direto do núcleo Hazard deve seguir regras estritas: Criação de uma instância Hazard:
Dim m_haApp As HazardApp
Set m_haApp = CreateObject( "Hazard.HazardApp" )
Para notificar os clientes sobre o progresso das operações assíncronas, HazardApp e MGertNet fornecem um ponto de conexão para o coletor com a interface ICallBack. Vejamos os objetos incluídos por uma instância HazardApp. GertNetMain (somente leitura) – modelo de desenvolvimento de incidentes. Se não houver modelo (não foi carregado ou um novo foi criado), então vazio (Nada). GertNetMainDsp (somente leitura) – Interface IDispatch do modelo de desenvolvimento de incidentes. Se não houver modelo (não foi carregado ou um novo foi criado), então vazio (Nada).
GN_Opt (somente leitura) – uma cópia do modelo usado para otimização. Defina apenas enquanto a otimização estiver em execução.
GN_Rang (somente leitura) – uma cópia do modelo usado para classificação. Defina apenas enquanto a classificação estiver em andamento.
GN_Run (somente leitura) – uma cópia do modelo usado durante a execução. Definido apenas durante a execução da execução.
Rep1 (somente leitura) – uma coleção de relatórios sobre o modelo (execuções, modelo).
Rep2 (somente leitura) – uma coleção de relatórios sobre conjuntos de medidas (otimização, complexos, aplicação experimental de conjuntos de medidas).
XCollection (somente leitura) – uma coleção de medidas de melhoria de segurança. Cada complexo é descrito por uma coleção de atividades (CollSF). Cada evento (SafetyPrecaution) contém uma coleção de impactos (FChange) no modelo. Para acessar complexos de medidas, existe mais uma propriedade pública: SFnn(n). É indexado e somente leitura.
Enumeradores (somente leitura) – uma coleção de enumeradores.
Fatores (somente leitura) – uma coleção de fatores de risco. Cada fator nesta coleção recebe um enumerador da coleção Enumeradores.
OptimizResultsGetAndClear (somente leitura) – SAFEARRAY(IDispatch). Usado após a otimização ter sido executada. Quando essa propriedade é chamada, é retornado um array de ponteiros para a interface IDispatch de coleções de medidas de melhoria de segurança. Nesse caso, o cliente chamador torna-se o proprietário das coleções e o núcleo Hazard libera referências a elas. Portanto, só pode ser chamado uma vez. Cada coleção contém uma seleção de atividades – uma possível solução para o problema de otimização.
Editor de modelo | Editor de tabela de pontuação |
Editor de aprimoramento de segurança | Medir monitor de pacote |