Documentación completa
ejecutables win32
Es una aplicación de escritorio en Visual Basic 6 que le permite describir la estructura de un objeto peligroso en forma de red GERT y calcular estimaciones de factores de riesgo para cada nodo. El sistema se basa en un motor basado en objetos COM implementado en Visual C++/ATL, y existe un sistema de complementos para la evaluación de peligros. Cada complemento es un objeto COM. Además, hay una fachada del sistema en forma de objeto COM para la integración en Mathcad.
La escala de calificación de peligros utilizada es demasiado grande (11 puntos) para que las calificaciones puedan realizarse fácilmente de forma manual. Por tanto, una parte esencial del sistema es el componente de automatización de su cálculo (ver Fig. 5.1). Para ello, se propone e implementa una técnica especial, que se describe en el siguiente párrafo. Resulta que muchos de los peligros identificados se superponen con los utilizados por los ingenieros de seguridad. Esto implica una ventaja significativa del modelo desarrollado, que se expresa en el hecho de que los métodos para evaluar las condiciones, la salud y la seguridad en el trabajo pueden adaptarse con relativa facilidad a nuestros numerosos factores de peligro. Es importante que los métodos existentes permitan, sobre la base de GOST, regulaciones y documentación para instalaciones de producción peligrosas, determinar diversas características cuantitativas de un objeto, convirtiéndolas en escalas universales (puntuación). La mera presencia y prueba de estos métodos es esencial, ya que simplifica el proceso muy laborioso de desarrollar una metodología para calcular estimaciones. La metodología propuesta se puede utilizar en muchos casos, pero no siempre, y no todos los expertos quedarán satisfechos con este enfoque. Por tanto, se requiere una mayor flexibilidad. Es por esto que se desarrolló una arquitectura basada en la implementación del módulo de evaluación como componente externo en relación a Hazard. Para brindar esta flexibilidad, es necesario brindar al usuario (generalmente un experto) la capacidad de implementar sus propios algoritmos de estimación de valor y utilizar sus propias estructuras y bases de datos. Dado que el tipo de conexión entre dicho módulo y el sistema Hazard es simple, no es aconsejable cargar el producto con Visual Basic para Aplicaciones. Las características específicas del desarrollo de dichos algoritmos están determinadas por la necesidad de trabajar con estructuras de datos complejas. Por lo tanto, el script de Hosting tampoco es adecuado y hace que el producto sea injustificadamente más pesado, ya que está diseñado para implementar algoritmos para gestionar objetos, en lugar de procesar datos estructurados. El concepto óptimo aquí es el de módulos de ampliación (plugins), que se implementó mediante tecnología COM. Estos módulos suelen ser muy compactos (de tamaño pequeño, dependen poco de diversas bibliotecas y componentes y consumen pocos recursos). Se pueden implementar en cualquier lenguaje para el que exista una herramienta que permita el desarrollo de componentes mediante tecnología COM. Esto proporciona una mayor flexibilidad de implementación, pero, en sí mismo, no introduce una complejidad tecnológica significativa a la tarea. La intensidad del trabajo y la complejidad aumentan significativamente cuando se implementa este componente en herramientas y lenguajes de bajo nivel, por ejemplo, usando Visual C++. Sin embargo, como método accesible a programadores no cualificados, el menos laborioso y muy eficaz, se propone una implementación en Visual Basic. El tipo de comunicación con Hazard es muy simple y solo se requiere que el componente sea un servidor COM en proceso que implemente la interfaz IFactorAssign y pueda actuar como un cliente COM usando la interfaz IDispatch y la interfaz dual MGertNet. Crear dichos objetos COM, implementados por un servidor COM en proceso, usando Visual Basic 6 es trivial y puede ser realizado fácilmente por programadores no calificados, ya que está esencialmente automatizado. La esencia formulada del desarrollo de una extensión determina el contenido de la especificación de la misma. Para que Hazard reconozca el componente, lo conecte y pueda interactuar con él, se requiere lo siguiente:
Como ejemplo, se implementó una extensión universal (en Visual Basic 6), que es un producto muy complejo e implementa la técnica del promedio ponderado. El módulo de evaluación implementado que utiliza el método de promedio ponderado es universal, por lo que utiliza una interfaz gráfica sofisticada, estructuras de datos dinámicas complejas y editores para ellos, lo que le permite describir de manera efectiva una amplia gama de OPO. Por tanto, no es un ejemplo típico. Sin embargo, como ya se indicó, todas estas dificultades no se relacionan con el mecanismo de interacción con Hazard, sino que son características de esta implementación, ciertos requisitos para ella (como producto comercial universal). Para casos especiales (uso oficial), se propone crear módulos simples con una estructura estática que puedan ser desarrollados efectivamente por programadores no capacitados que utilicen Visual Basic.
Hazard se implementa como un servidor COM fuera de proceso (ActiveX EXE) usando Visual Basic 6 y está representado por la clase COM Hazard.HazardApp. El núcleo Hazard, que contiene códigos para un modelo del desarrollo de un incidente en una instalación de producción peligrosa, códigos para la ejecución del modelo y algoritmos de optimización, se implementa como un servidor COM en proceso (ActiveX DLL), utilizando Visual C++ 6.0 (ATL ) y está representado por la clase COM GERTNETLib.MGertNet. Hazard puede ser utilizado por clientes de OLE Automation, para lo cual brinda la capacidad de crear sus propias instancias mediante la creación de Hazard.HazardApp. La clase HazardApp tiene una serie de propiedades y métodos públicos que brindan acceso limitado a las capacidades de Hazard, para lo cual se implementó una capa especial (aunque bastante "tosca"), teniendo en cuenta las peculiaridades de trabajar en modo de servidor de automatización OLE. La capa garantiza no sólo la correcta ejecución de las funciones, sino también el acceso al núcleo de Hazard. Este último también se puede utilizar directamente, creando una instancia de MGertNet sin ejecutar Hazard. La mayoría de las interfaces y clases de la biblioteca GERTNETLib están abiertas y creadas (públicas, creables), pero su implementación impone en gran medida restricciones a la implementación de las interfaces allí descritas, ya que una creciente conversión de punteros a interfaces a los tipos de implementación de objetos C++ se lleva a cabo. Por lo tanto, el uso directo del núcleo de Hazard debe seguir reglas estrictas: Creación de una instancia de Hazard:
Dim m_haApp As HazardApp
Set m_haApp = CreateObject( "Hazard.HazardApp" )
Para notificar a los clientes sobre el progreso de las operaciones asincrónicas, HazardApp y MGertNet proporcionan un punto de conexión para el receptor con la interfaz ICallBack. Veamos los objetos incluidos en una instancia de HazardApp. GertNetMain (solo lectura): modelo de desarrollo de incidentes. Si no hay ningún modelo (no se cargó o se creó uno nuevo), entonces vacíe (Nada). GertNetMainDsp (solo lectura): interfaz IDispatch del modelo de desarrollo de incidentes. Si no hay ningún modelo (no se cargó o se creó uno nuevo), entonces vacíe (Nada).
GN_Opt (solo lectura): una copia del modelo utilizado para la optimización. Establezca solo mientras se ejecuta la optimización.
GN_Rang (solo lectura): una copia del modelo utilizado para la clasificación. Establecer sólo mientras la clasificación está en progreso.
GN_Run (solo lectura): una copia del modelo utilizado durante la ejecución. Se establece solo durante la ejecución de la ejecución.
Rep1 (solo lectura): una colección de informes sobre el modelo (ejecuciones, modelo).
Rep2 (solo lectura): una colección de informes sobre conjuntos de medidas (optimización, complejos, aplicación de prueba de conjuntos de medidas).
XCollection (solo lectura): una colección de medidas de mejora de seguridad. Cada complejo se describe mediante una colección de actividades (CollSF). Cada evento (SafetyPrecaution) contiene una colección de impactos (FChange) en el modelo. Para acceder a complejos de medidas, existe una propiedad pública más: SFnn(n). Está indexado y es de solo lectura.
Enumeradores (solo lectura): una colección de enumeradores.
Factores (solo lectura): una colección de factores de peligro. A cada factor de esta colección se le asigna un enumerador de la colección Enumeradores.
OptimizResultsGetAndClear (solo lectura) – SAFEARRAY(IDispatch). Se utiliza después de realizar la optimización. Cuando se llama a esta propiedad, se devuelve una matriz de punteros a la interfaz IDispatch de colecciones de medidas de mejora de seguridad. En este caso, el cliente que llama se convierte en el propietario de las colecciones y el núcleo de Hazard publica referencias a ellas. Por lo tanto, sólo se puede llamar una vez. Cada colección contiene una selección de actividades: una posible solución al problema de optimización.
editor de modelos | Editor de tablas de puntuación |
Editor de mejoras de seguridad | Monitor de paquete de medidas |