Design a Elevator System

Sep 29, 2021
admin
Nishant Sharma

Follow

Jun 9, 2018 – 6 min read

Softwaredesign für ein Aufzugssystem

Da die meisten Entwickler im Laufe ihrer Karriere an einigen Modulen gearbeitet haben, ist es schwer für sie, ein komplettes Design für eine Software zu verstehen und zu implementieren, aber ich glaube, jeder kann es lernen!!

Hinweis: Für iOS Interview Fragen , überprüfen Sie diesen Link – Top iOS Interview Fragen, die Sie im Jahr 2018 vorbereiten müssen

Panel: Bitte nennen Sie mir den Entwurf für ein Aufzugssystem.

Sie: Befolgen Sie den folgenden Ansatz, um zu erkennen, ob das Panel am Klassendesign und seiner Beziehung oder am Backend interessiert ist, wie es scheint Dies ist eine ziemlich weit gefasste Frage.

Aus der Perspektive des Anwendungsentwicklers sollten wir die Klassen und ihre Beziehung, Klassendiagramme & Sequenzfluss erzählen. Wir alle kennen die Zeitknappheit während einer technischen Diskussion und manchmal ist es schwierig zu verstehen, was der andere von uns erwartet.

Allgemein gesehen, kann es sein, dass Ihr Gremium an Backend-Design interessiert ist, also müssen Sie mit ihm klären, was sie von Ihnen erwarten.

Eine Momentaufnahme des Aufzugssteuerungssystems

Unser Aufzug hat die Grundfunktionen, die alle Aufzugssysteme haben, wie Auf- und Abwärtsfahren, Türen öffnen und schließen und natürlich Fahrgäste aufnehmen.

Der Aufzug soll in einem Gebäude mit Etagen von 1 bis MaxFloor verwendet werden, wobei die erste Etage die Lobby ist. In der Kabine befinden sich Rufknöpfe für jedes Stockwerk. Für jede Etage außer der obersten Etage und der Lobby gibt es zwei Flurruftasten, mit denen die Fahrgäste nach oben und unten fahren können. In der obersten Etage gibt es nur eine Taste für den Abwärtsruf und in der Lobby eine Taste für den Aufwärtsruf. Wenn die Kabine in einem Stockwerk anhält, werden die Türen geöffnet und die Kabinenlaterne, die die aktuelle Fahrtrichtung der Kabine anzeigt, wird beleuchtet, so dass die Fahrgäste die aktuelle Fahrtrichtung der Kabine erfahren können. Der Fahrkorb bewegt sich schnell zwischen den Etagen, sollte aber in der Lage sein, früh genug abzubremsen, um in einer gewünschten Etage anzuhalten. Um die Sicherheit des Systems zu bescheinigen, wird eine Notbremse ausgelöst, und die Kabine wird gezwungen, unter unsicheren Bedingungen anzuhalten.

Alle Systeme interagieren mit menschlichen oder automatisierten Akteuren, die das System für einen bestimmten Zweck nutzen, und sowohl der Mensch als auch die Akteure erwarten, dass sich das System auf vorhersehbare Weise verhält.

Abbildung 1: Anwendungsfalldiagramm des Aufzugssystems

Es gibt sieben Anwendungsfälle, die auf den aktuellen Anforderungen des Aufzugssystems basieren, wie in Abbildung 1 dargestellt:

  • Kabinen-/Aufzugsrufe verarbeiten: Dieser Anwendungsfall umfasst mehrere Szenarien, die in späteren Abschnitten dieses Papiers detailliert beschrieben werden. Zu diesen Szenarien gehört, dass der Aufzug Aufzugs-/Kabinenrufe von den Fahrgästen empfängt, das Licht der Aufzugs-/Kabinenruftasten ein- oder ausschaltet, die Aufzeichnungen der Aufzugs-/Kabinenrufe aktualisiert, die in den Systemsteuerungsteilen gespeichert sind, usw.
  • Verarbeitung von Hallenrufen: Ähnlich wie bei der Verarbeitung von Aufzugs-/Kabinenrufen umfasst dieser Anwendungsfall, dass der Aufzug Hallenrufe von den Fahrgästen empfängt, das Licht der Hallenruftasten ein- oder ausschaltet, die Aufzeichnung der Hallenrufe in den Systemsteuerungsteilen aktualisiert, usw.
  • Bewegen/Halten der Kabine: Die Hauptfunktion eines Aufzugs umfasst die Änderung der Fahrgeschwindigkeit, die Entscheidung über das Anhalten und die Fahrtrichtung der Kabine.
  • Anzeige der Fahrtrichtung: Der Aufzug sollte über diesen Mechanismus verfügen, um den Fahrgästen die aktuelle Fahrtrichtung der Kabine mitzuteilen, damit der Fahrgast entscheiden kann, ob er in die Kabine einsteigen möchte oder nicht.
  • Anzeige der Kabinenposition: In ähnlicher Weise sollte der Aufzug den Fahrgästen mitteilen, ob sein/ihr Zielstockwerk erreicht ist, so dass der Fahrgast entscheiden kann, ob er die Kabine verlassen möchte.
  • Öffnen/Schließen der Türen: Der Aufzug sollte in der Lage sein, die Türen zu öffnen und zu schließen, damit die Fahrgäste in die Kabine ein- und aussteigen können. Die Funktionsbereiche dieses Anwendungsfalls sollten es den Fahrgästen auch ermöglichen, die Türen umzudrehen, wenn sich die Türen schließen und der Fahrgast in die Kabine einsteigen möchte.
  • Auslösen der Notbremse: Es gibt einen Sicherheitsmechanismus innerhalb der Kabine, der sicherstellt, dass ein unsicherer Zustand nicht vorübergehend erzeugt wird.

Mit diesem Verständnis des Aufzugssystems können wir beginnen, die benötigten Klassen zu identifizieren, um ein System zu entwerfen.

Identifizierung von Klassen/Objekten:

  • ElevatorControl: Das zentrale Steuerungsobjekt im Aufzugssystem. ElevatorControl kommuniziert und steuert alle anderen Objekte im System.
  • Tür: Es gibt zwei Türen im System, das „Gott“-Objekt – die ElevatorControl – befiehlt das Öffnen und Schließen der Türen.
  • Kabine/Aufzug: Die Kabine wird so gesteuert, dass sie sich auf- und abwärts bewegt (in verschiedenen Geschwindigkeiten), um bei Bedarf in den Etagen anzuhalten.
  • Button: Die Klasse ElevatorControl steuert auch die Klasse Button, die zwei Unterklassen CarCallButton und HallCallButton weiter verallgemeinert. Das Steuerungsobjekt kommuniziert mit den Button-Objekten, erhält die Information, ob ein Button gedrückt ist und steuert wiederum die Beleuchtung der Button-Lichter.
  • Indicator: Es gibt zwei Arten von Indikatoren im System, den CarPositionIndicator und den CarDirectionIndicator (d.h. die CarLantern). Die Indikatoren werden so gesteuert, dass sie Informationen über die aktuelle Position und Fahrtrichtung der Kabine anzeigen.
  • Sicherheit: Wann immer ein Notfall eintritt, befiehlt die ElevatorControl den Safety

Controller-Klassen:

  • DoorControl steuert die Aktion des DoorMotor. DoorMotor kann befohlen werden, zu öffnen, zu schließen oder eine Türumkehr vorzunehmen.
  • DriveControl steuert den Aufzugsantrieb, der als Hauptmotor fungiert, der die Kabine aufwärts und abwärts bewegt und bei Bedarf in den Etagen anhält.
  • LanternControl gibt es in der Anzahl von zwei, CarPositionIndicator und den CarDirectionIndicator.
  • HallButtonControl gibt es paarweise in jeder Etage, wobei einer den Up HallCallButton und der andere Down steuert. Das HallButtonControl akzeptiert das Drücken von HallCallButtons und gibt eine Rückmeldung an die HallCallLights.
  • CarButtonControl gibt es für jede Etage und alle Standorte im Aufzug/Kabine. Das CarButtonControl nimmt CarCallButton-Rufe entgegen und ist für das Ein- und Ausschalten der entsprechenden Aufzugs-/Kabinenrufleuchten zuständig.
  • CarPositionIndicator gibt Werte an die CarPositionIndicator, damit die Fahrgäste die aktuelle Position des Aufzugs/der Kabine erfahren können.
  • Dispatcher steuert nicht die eigentlichen Aufzugskomponenten, ist aber im Softwaresystem wichtig. Für jeden Aufzug/jede Kabine gibt es einen Dispatcher, dessen Hauptfunktion darin besteht, die Zielfahrtrichtung und das Ziel für den Aufzug/die Kabine zu berechnen sowie die Öffnungszeit für die Türen einzuhalten. Der Dispatcher interagiert mit fast allen Steuerungsobjekten im System, mit Ausnahme von LanternControl.

Abbildung 2: Klassendiagramm – die Sicht der Software-Architektur

Hoffentlich ist alles bis jetzt gut gelaufen, lassen Sie uns alles mit einigen Sequenzdiagrammen verstehen.

Sequenzfluss

Es mag schwer sein, das verbal zu erklären, aber wenn man klar versteht, wie es funktioniert, kann man einige Sequenzdiagramme zeichnen und versuchen, den Fluss mit einigen Beispielen parallel zu erklären.

  1. Prozesshallenaufrufe : Es gibt zwei Szenarien für diesen Anwendungsfall:
    1.1 der Aufzug fährt in dieselbe Richtung wie das Ziel des Fahrgastes.
    1.2 der Aufzug fährt in die entgegengesetzte Richtung wie das Ziel des Fahrgastes.

Abbildung 3: 1.1&1.2 – Hall Call Service

2. Bewegen/Stoppen der Kabine:

Abbildung 4: Bewegen der Kabine von Schnell auf Langsam und dann auf Stopp

3. Anzeige der Fahrtrichtung:

Abbildung 5: Anzeige der Fahrtrichtung

4. Auslösen der Notbremse : Es gibt fünf Szenarien für diesen Anwendungsfall:

1. Wenn die Kabine den Befehl zum Anhalten erhält, aber nicht in der gewünschten Etage anhält, wird die Notbremse ausgelöst.

2. Wenn die Kabine den Befehl zum Fahren erhält, sich aber nicht bewegt, wird die Notbremse ausgelöst.

3. Wenn die Türen geöffnet werden sollen, wenn die Kabine in einer Etage anhält, aber die Türen sich nicht öffnen, wird die Notbremse ausgelöst.

4. Wenn die Türen sich öffnen, während die Kabine fährt, wird die Notbremse ausgelöst.

5. Wenn der Fahrkorb weiterfährt, wenn die Hubweggrenze erreicht ist, wird die Notbremse ausgelöst.

Ich zeige nur ein Sequenzdiagramm für Fall 5.

Abbildung 6: Notbremse – Der Aufzug fährt weiter, wenn das Schachtlimit erreicht ist

Ich gehe davon aus, dass sich die meisten Dinge in Ihrem Kopf abbilden und leicht zu merken sowie zu erklären sind. Für das Backend-Design folgen Sie bitte der Serie System Design

Ich hoffe, die Erklärung gefällt Ihnen. Für weitere Design-Fragen , Bitte warten Sie und folgen Sie mir.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.