Vollständige Dokumentation
Ausführbare Win32-Dateien
Es handelt sich um eine Desktop-Anwendung in Visual Basic 6, mit der Sie die Struktur eines gefährlichen Objekts in Form eines GERT-Netzwerks beschreiben und Risikofaktorschätzungen für jeden Knoten berechnen können. Das System basiert auf einer Engine, die auf COM-Objekten basiert, die in Visual C++ / ATL implementiert sind, und es gibt ein System von Plugins zur Bewertung von Gefahren. Jedes Plugin ist ein COM-Objekt. Außerdem gibt es eine Systemfassade in Form eines COM-Objekts zur Integration in Mathcad.
Die verwendete Gefährdungsbewertungsskala ist zu groß (11 Punkte), als dass Bewertungen einfach manuell vorgenommen werden könnten. Ein wesentlicher Bestandteil des Systems ist daher die Automatisierungskomponente ihrer Berechnung (siehe Abb. 5.1). Zu diesem Zweck wird eine spezielle Technik vorgeschlagen und implementiert, die im nächsten Absatz beschrieben wird. Es zeigt sich, dass sich viele der identifizierten Gefahren mit denen der Sicherheitsingenieure überschneiden. Dies impliziert einen wesentlichen Vorteil des entwickelten Modells, der darin zum Ausdruck kommt, dass Methoden zur Beurteilung von Bedingungen, Gesundheit und Sicherheit am Arbeitsplatz relativ einfach an unsere zahlreichen Gefahrenfaktoren angepasst werden können. Es ist wichtig, dass bestehende Methoden es ermöglichen, auf der Grundlage von GOSTs, Vorschriften und Dokumentationen für gefährliche Produktionsanlagen verschiedene quantitative Merkmale eines Objekts zu bestimmen und diese in universelle Skalen (Scoring) umzuwandeln. Das bloße Vorhandensein und Testen dieser Methoden ist von wesentlicher Bedeutung und vereinfacht den sehr arbeitsintensiven Prozess der Entwicklung einer Methodik zur Berechnung von Schätzungen. Die vorgeschlagene Methodik kann in vielen Fällen eingesetzt werden, jedoch nicht immer, und nicht jeder Experte wird mit diesem Ansatz zufrieden sein. Daher ist eine größere Flexibilität erforderlich. Aus diesem Grund wurde eine Architektur entwickelt, die auf der Implementierung des Bewertungsmoduls als externe Komponente in Bezug auf Hazard basiert. Um diese Flexibilität bereitzustellen, ist es notwendig, dem Benutzer (in der Regel ein Experte) die Möglichkeit zu geben, eigene Wertschätzungsalgorithmen zu implementieren und eigene Strukturen und Datenbanken zu verwenden. Da die Art der Verbindung zwischen einem solchen Modul und dem Hazard-System einfach ist, ist es nicht ratsam, das Produkt mit Visual Basic for Applications zu belasten. Die Besonderheiten der Entwicklung solcher Algorithmen werden durch die Notwendigkeit bestimmt, mit komplexen Datenstrukturen zu arbeiten. Daher ist auch das Hosting-Skript ungeeignet und macht das Produkt ungerechtfertigt schwerer, da es darauf ausgelegt ist, Algorithmen zur Verwaltung von Objekten zu implementieren und nicht strukturierte Daten zu verarbeiten. Das optimale Konzept ist hier das Konzept der Erweiterungsmodule (Plugins), das mithilfe der COM-Technologie umgesetzt wurde. Solche Module sind normalerweise sehr kompakt (klein, wenig abhängig von verschiedenen Bibliotheken und Komponenten und verbrauchen wenig Ressourcen). Sie können in jeder Sprache implementiert werden, für die es ein Tool gibt, das die Entwicklung von Komponenten mithilfe der COM-Technologie ermöglicht. Dies bietet eine größere Flexibilität bei der Implementierung, führt jedoch an sich nicht zu einer nennenswerten technologischen Komplexität der Aufgabe. Arbeitsintensität und Komplexität nehmen erheblich zu, wenn diese Komponente in Tools und Sprachen auf niedriger Ebene, beispielsweise mit Visual C++, implementiert wird. Als für ungeübte Programmierer zugängliche, am wenigsten arbeitsintensive und sehr effektive Methode wird jedoch eine Implementierung in Visual Basic vorgeschlagen. Die Art der Kommunikation mit Hazard ist sehr einfach und die Komponente muss lediglich ein In-Process-COM-Server sein, der die IFactorAssign-Schnittstelle implementiert und über die IDispatch-Schnittstelle und die MGertNet-Dualschnittstelle als COM-Client fungieren kann. Das Erstellen solcher COM-Objekte, die von einem In-Process-COM-Server implementiert werden, mit Visual Basic 6 ist trivial und kann von ungeübten Programmierern leicht durchgeführt werden, da es im Wesentlichen automatisiert ist. Der formulierte Kern der Entwicklung einer Erweiterung bestimmt den Inhalt der Spezifikation dafür. Damit die Komponente von Hazard erkannt, verbunden und mit ihr interagieren kann, ist Folgendes erforderlich:
Als Beispiel wurde eine universelle Erweiterung (in Visual Basic 6) implementiert, die ein sehr komplexes Produkt ist und die gewichtete Durchschnittstechnik implementiert. Das implementierte Bewertungsmodul nach der Methode des gewichteten Durchschnitts ist universell und verwendet daher eine ausgefeilte grafische Oberfläche, komplexe dynamische Datenstrukturen und Editoren dafür, mit denen Sie ein breites Spektrum von OPO effektiv beschreiben können. Daher handelt es sich nicht um ein typisches Beispiel. Wie bereits erwähnt, beziehen sich alle diese Schwierigkeiten jedoch nicht auf den Mechanismus der Interaktion mit Hazard, sondern sind Merkmale dieser Implementierung und bestimmte Anforderungen an sie (als universelles kommerzielles Produkt). Für Sonderfälle (offizielle Nutzung) wird vorgeschlagen, einfache Module mit statischer Struktur zu erstellen, die auch von ungeübten Programmierern mit Visual Basic effektiv entwickelt werden können.
Hazard wird als Out-of-Process-COM-Server (ActiveX EXE) mit Visual Basic 6 implementiert und durch die COM-Klasse Hazard.HazardApp dargestellt. Der Hazard-Kern, der Codes für ein Modell der Entwicklung eines Vorfalls in einer gefährlichen Produktionsanlage, Codes für die Modellausführung und Optimierungsalgorithmen enthält, wird als prozessinterner COM-Server (ActiveX-DLL) unter Verwendung von Visual C++ 6.0 (ATL) implementiert ) und wird durch die COM-Klasse GERTNETLib.MGertNet dargestellt. Hazard kann von OLE-Automatisierungsclients verwendet werden, für die es die Möglichkeit bietet, durch die Erstellung von Hazard.HazardApp eigene Instanzen zu erstellen. Die HazardApp-Klasse verfügt über eine Reihe öffentlicher Eigenschaften und Methoden, die einen eingeschränkten Zugriff auf die Funktionen von Hazard ermöglichen, für die eine spezielle Ebene (wenn auch recht „roh“) implementiert wurde, die die Besonderheiten der Arbeit im OLE-Automatisierungsservermodus berücksichtigt. Der Layer gewährleistet nicht nur die korrekte Ausführung von Funktionen, sondern auch den Zugriff auf den Hazard-Kern. Letzteres kann auch direkt genutzt werden – indem eine Instanz von MGertNet erstellt wird, ohne Hazard auszuführen. Die meisten Schnittstellen und Klassen der GERTNETLib-Bibliothek sind offen und erstellt (öffentlich, erstellbar), ihre Implementierung führt jedoch weitgehend zu Einschränkungen bei der Implementierung der dort beschriebenen Schnittstellen, da eine zunehmende Konvertierung von Zeigern auf Schnittstellen zu den Typen implementierter C++-Objekte erfolgt durchgeführt wird. Daher muss die direkte Nutzung des Hazard-Kerns strengen Regeln folgen: Erstellen einer Hazard-Instanz:
Dim m_haApp As HazardApp
Set m_haApp = CreateObject( "Hazard.HazardApp" )
Um Clients über den Fortschritt asynchroner Vorgänge zu benachrichtigen, stellen HazardApp und MGertNet einen Verbindungspunkt für die Senke mit der ICallBack-Schnittstelle bereit. Schauen wir uns die von einer HazardApp-Instanz enthaltenen Objekte an. GertNetMain (schreibgeschützt) – Vorfallentwicklungsmodell. Wenn kein Modell vorhanden ist (es wurde nicht geladen oder ein neues erstellt), dann leer (Nichts). GertNetMainDsp (schreibgeschützt) – IDispatch-Schnittstelle des Incident-Entwicklungsmodells. Wenn kein Modell vorhanden ist (es wurde nicht geladen oder ein neues erstellt), dann leer (Nichts).
GN_Opt (schreibgeschützt) – eine Kopie des zur Optimierung verwendeten Modells. Wird nur gesetzt, während die Optimierung läuft.
GN_Rang (schreibgeschützt) – eine Kopie des für die Rangfolge verwendeten Modells. Wird nur gesetzt, während das Ranking läuft.
GN_Run (schreibgeschützt) – eine Kopie des während des Laufs verwendeten Modells. Wird nur während der Laufausführung festgelegt.
Rep1 (schreibgeschützt) – eine Sammlung von Berichten zum Modell (Läufe, Modell).
Rep2 (schreibgeschützt) – eine Sammlung von Berichten zu Maßnahmenpaketen (Optimierung, Komplexe, Probeanwendung von Maßnahmenpaketen).
XCollection (schreibgeschützt) – eine Sammlung von Sicherheitsverbesserungsmaßnahmen. Jeder Komplex wird durch eine Sammlung von Aktivitäten (CollSF) beschrieben. Jedes Ereignis (SafetyPrecaution) enthält eine Sammlung von Auswirkungen (FChange) auf das Modell. Für den Zugriff auf Maßnahmenkomplexe gibt es eine weitere öffentliche Eigenschaft: SFnn(n). Es ist indiziert und schreibgeschützt.
Enumeratoren (schreibgeschützt) – eine Sammlung von Enumeratoren.
Faktoren (schreibgeschützt) – eine Sammlung von Gefahrenfaktoren. Jedem Faktor in dieser Sammlung wird ein Enumerator aus der Enumerators-Sammlung zugewiesen.
OptimizResultsGetAndClear (schreibgeschützt) – SAFEARRAY(IDispatch). Wird verwendet, nachdem die Optimierung durchgeführt wurde. Wenn diese Eigenschaft aufgerufen wird, wird ein Array von Zeigern auf die IDispatch-Schnittstelle mit Sammlungen von Sicherheitsverbesserungsmaßnahmen zurückgegeben. In diesem Fall wird der aufrufende Client Eigentümer der Sammlungen und der Hazard-Kern gibt Verweise darauf frei. Daher kann es nur einmal aufgerufen werden. Jede Sammlung enthält eine Auswahl von Aktivitäten – eine mögliche Lösung des Optimierungsproblems.
Modelleditor | Bewertungstabellen-Editor |
Editor für Sicherheitsverbesserungen | Paketmonitor messen |