Simio Whitepapers

Wie sich Simio-Objekte von anderen objektorientierten Modellierungswerkzeugen unterscheiden

Geschrieben von Simio Staff | 03.02.2026 05:00:00
PDF-Version herunterladen

Simio macht die Modellierung dramatisch einfacher und schneller, indem es ein neues objektbasiertes Paradigma bereitstellt, das die Art und Weise, wie Objekte erstellt und verwendet werden, radikal verändert. Der Zweck dieses Papiers ist es, zu beschreiben, wie sich der objektorientierte Modellierungsrahmen von Simio von anderen objektorientierten Modellierungswerkzeugen unterscheidet.

Die allgemeine Idee der objektorientierten Modellierung ist nicht neu - in der Tat wurde das erste objektorientierte Modellierungswerkzeug - Simula - vor über 50 Jahren eingeführt und lieferte die Kernideen, die heute in objektorientierten Modellierungswerkzeugen verwendet werden. Heute gibt es eine Reihe von objektorientierten Modellierungswerkzeugen auf dem Markt. Bei der Verwendung dieser Werkzeuge wählt der Benutzer Objekte aus einer Bibliothek aus und platziert sie in einem Modell. Der allgemeine Konsens vieler Benutzer dieser Werkzeuge ist, dass sie bei einfachen Modellen gut funktionieren, aber für komplexe Anwendungen nur schwer zu verwenden sind, weil es ihnen entweder an Flexibilität mangelt (der Benutzer kann keine Objekte hinzufügen oder ändern), oder die Flexibilität dadurch erreicht wird, dass der Benutzer komplexen Code in einer Programmiersprache wie C++ oder Java schreiben muss. Beide Optionen stellen ein Hindernis für den Benutzer dar, wenn es um die schnelle Modellierung komplexer Systeme geht. Dies war ein wesentliches Hindernis für die breite Akzeptanz objektorientierter Modellierungswerkzeuge.

Simio unterscheidet sich von anderen objektorientierten Modellierungswerkzeugen dadurch, dass Simio-Objekte prozess- und nicht codebasiert sind. Ein Simio-Objekt wird durch die Erstellung einer Reihe von grafischen Prozessabläufen definiert, die das Verhalten des Objekts beschreiben. Ein Prozess ist ein Flussdiagramm, das eine Abfolge von Aktivitäten und Entscheidungen beschreibt, die von dem Objekt getroffen werden. Ein Prozess kann sich über einen längeren Zeitraum erstrecken und kann durch begrenzte Ressourcen eingeschränkt sein. Ein einfaches Beispiel für einen Prozess, das vielen Benutzern von prozessorientierten Modellierungswerkzeugen vertraut ist, ist: ERGREIFEN-VERZÖGERN-FREIGEBEN. In diesem Prozess wartet das Objekt darauf, eine Ressource zu ergreifen, verzögert sich um eine Aktivitätszeit und gibt die Ressource dann frei. Beachten Sie, dass sich diese Aktivität über die Zeit erstreckt und die Zeit zur Ausführung des Prozesses sowohl von der Verfügbarkeit der Ressource als auch von der angegebenen Verzögerungszeit abhängt.

In anderen Tools sind die Objekte codebasiert und in einer Programmiersprache implementiert. Wenn das Werkzeug benutzerdefinierte Objekte unterstützt, muss der Benutzer alle neuen Objekte in derselben Programmiersprache implementieren. Der Benutzer muss die grundlegenden Konzepte der Objektorientierung (z. B. Kapselung, Vererbung, Polymorphismus usw.) beherrschen und sich auch in der gewünschten Programmiersprache auskennen. Folglich erfordert die Erstellung eines neuen Objekts einen erfahrenen Programmierer in einer bestimmten Programmiersprache. Die prozessbasierten Objekte in Simio haben eine Reihe von wichtigen Vorteilen gegenüber den codebasierten Objekten in anderen Werkzeugen. Der erste und offensichtlichste Vorteil ist, dass die Objekte viel einfacher zu erstellen sind, da sie keine Programmierkenntnisse in einer bestimmten Sprache erfordern. Da die Logik eines Simio-Objekts durch grafische Prozessabläufe definiert wird und für den Benutzer sichtbar ist, sind sie außerdem leichter zu verstehen und zu ändern. Am wichtigsten ist jedoch, dass das Objektverhalten in Simio mit Hilfe von High-Level-Prozessmodellierungskonstrukten definiert wird, die sich über die Zeit erstrecken. Dies vereinfacht die Aufgabe, Objekte zu erstellen, erheblich.

In den meisten objektorientierten Modellierungswerkzeugen kann der Benutzer die bereitgestellten Objekte mit benutzerdefinierter Logik für eine bestimmte Anwendung ausstatten. So könnte es beispielsweise notwendig sein, die Anzahl der Kunden zu zählen, die einen Service auf einem bestimmten Server in Anspruch nehmen, und diese Zählung dann in irgendeiner Weise innerhalb der Modelllogik zu verwenden. Diese Art der vom Benutzer hinzugefügten Logik ist sehr wichtig, um eine breite Palette von Systemen flexibel modellieren zu können. Werkzeuge bieten in der Regel eine Möglichkeit, solche Logik an vordefinierten Stellen in den Objekten hinzuzufügen, die in ihrer Standardbibliothek enthalten sind.

Die prozessbasierten Objekte in Simio haben wiederum einige einzigartige und wichtige Vorteile gegenüber codebasierten Objekten, wenn es darum geht, kundenspezifische Logik zu bestehenden Objekten hinzuzufügen. Ein codebasiertes Objekt hat logische "Haken", um eine vom Benutzer bereitgestellte Funktion aufzurufen, die an ausgewählten Punkten im Objekt ausgeführt wird. Der Benutzer muss diese Funktion in der angegebenen Programmiersprache (z. B. C++ oder Java) codieren. In einigen Fällen wird ein vereinfachtes Skripting-Tool als Alternative angeboten, um einfache Dinge wie Zuweisungen ohne Kodierung zu erledigen, allerdings sind die Flexibilität und die Leistungsfähigkeit der Skripting-Tools sehr begrenzt. In jedem Fall muss die eingefügte Logik zu einem bestimmten Zeitpunkt in der simulierten Zeit vollständig ausgeführt werden. Die Logik kann nicht für eine bestimmte Zeit verzögern, darauf warten, dass eine Ressource verfügbar wird oder sich verlagert, darauf warten, dass ein Tank einen bestimmten Füllstand erreicht, oder andere Arten von komplexer Logik ausführen, die sich über die simulierte Zeit erstreckt. Im Gegensatz dazu bieten die prozessbasierten Objekte in Simio eine Funktion namens "Add-on"-Prozesse, die an bestimmten logischen Punkten im Objekt ausgeführt werden. Diese sind das Gegenstück zu den Funktionsaufrufen in codebasierten Objekten, sind aber viel leistungsfähiger, da sie die volle Leistungsfähigkeit der Simio-Prozesse haben und sich bei Bedarf über die Zeit erstrecken können. So gibt es zum Beispiel einen Add-on-Prozess für das Server-Objekt in Simio, der immer dann ausgeführt wird, wenn der Server ausfällt. Dieser Prozess kann vom Benutzer mit einer Logik versehen werden, die darauf wartet, den Mechaniker zu rufen, und auch darauf wartet, dass der Mechaniker beim Server eintrifft, bevor er die Kontrolle wieder an das Objekt zurückgibt. Dies ist eine äußerst leistungsfähige Funktion.

Zusammenfassend lässt sich sagen, dass die prozessbasierten Objekte in Simio eine Reihe von wichtigen Vorteilen gegenüber den traditionelleren codebasierten Objekten bieten, die in anderen objektorientierten Modellierungswerkzeugen zu finden sind. Zu diesen Vorteilen gehört sowohl die Benutzerfreundlichkeit, da man kein erfahrener Programmierer sein muss, als auch die Flexibilität bei der Modellierung, da die Objekte mit Hilfe von Prozessen definiert und verschönert werden können, die sich über die Zeit erstrecken, im Gegensatz zu kodierten Funktionen, die ohne simulierten Zeitvorlauf ausgeführt werden müssen. Kurz gesagt, die prozessbasierten Objekte in Simio sind sowohl einfacher als auch leistungsfähiger als die codebasierten Objekte in anderen Modellierungswerkzeugen.

PDF-Version herunterladen