Projektowanie systemu wind

wrz 29, 2021
admin
Nishant Sharma

Follow

Jun 9, 2018 – 6 min read

.

Projekt oprogramowania dla systemu windy

Jako, że większość programistów pracowała na niektórych modułach przez całą swoją karierę, trudno jest im zrozumieć i wdrożyć kompletny projekt oprogramowania, ale wierzę, że każdy może się tego nauczyć!!

Uwaga: Dla pytań wywiadu iOS , sprawdź ten link – Top iOS Interview Questions You Must Prepare In 2018

Panel: Please tell me design for an elevator system.

You: Follow below approach to identify whether panel is interested in class design and its relation or interested in backend as it seems This is a pretty broad question.

From the application developer perspective, we should be telling the classes and its relation, class diagrams & Sequence flow. Wszyscy znamy deficyt czasu podczas dyskusji technicznej i czasami trudno jest określić czego oczekuje od nas drugi facet.

W ogólnym ujęciu, może się zdarzyć, że Twój panel jest zainteresowany projektowaniem backendu, więc musisz z nim wyjaśnić, czego oczekują od Ciebie?

Zrzut z systemu sterowania windą

Nasza winda posiada podstawowe funkcje, które posiadają wszystkie systemy windowe, takie jak poruszanie się w górę i w dół, otwieranie i zamykanie drzwi oraz oczywiście podnoszenie pasażerów.

Winda ma być używana w budynku posiadającym piętra ponumerowane od 1 do MaxFloor, gdzie pierwsze piętro to lobby. W wagonie znajdują się przyciski wywoławcze odpowiadające poszczególnym piętrom. Na każdym piętrze, z wyjątkiem najwyższego piętra i holu, znajdują się dwa przyciski wezwania do hali, za pomocą których pasażerowie mogą wjechać na górę lub zjechać w dół. Na ostatnim piętrze znajduje się tylko jeden przycisk wywoływania z hali w dół, a w holu jeden przycisk wywoływania z hali w górę. Kiedy wagon zatrzymuje się na którymś z pięter, drzwi są otwierane, a latarnia wskazująca aktualny kierunek jazdy jest podświetlana, dzięki czemu pasażerowie mogą poznać aktualny kierunek jazdy wagonu. Wagon porusza się szybko pomiędzy piętrami, ale powinien być w stanie zwolnić wystarczająco wcześnie, aby zatrzymać się na wybranym piętrze. W celu zapewnienia bezpieczeństwa systemu, hamulec bezpieczeństwa zostanie uruchomiony i samochód zostanie zmuszony do zatrzymania się w jakichkolwiek niebezpiecznych warunkach.

Wszystkie systemy wchodzą w interakcję z ludzkimi lub zautomatyzowanymi aktorami, którzy używają systemu w jakimś celu, i zarówno ludzie jak i aktorzy oczekują, że system będzie zachowywał się w przewidywalny sposób.

Rysunek 1: Diagram przypadków użycia systemu windy

Istnieje siedem przypadków użycia opartych na bieżących wymaganiach systemu windy, jak pokazano na rysunku 1:

  • Przetwarzanie wywołań samochodu/windy: Ten przypadek użycia obejmuje kilka scenariuszy, które zostaną szczegółowo opisane w dalszych częściach niniejszego dokumentu. Scenariusze te obejmują odbieranie przez windę wywołań windy/samochodu od pasażerów, włączanie lub wyłączanie podświetlenia przycisków wywołań windy/samochodu, aktualizację zapisów wywołań windy/samochodu przechowywanych w częściach sterujących systemu, itp: Podobny do przetwarzania wywołań z windy/samochodu, ten przypadek użycia obejmuje odbieranie przez windę wywołań z hali od pasażerów, włączanie lub wyłączanie światła przycisków wywołań z hali, aktualizację zapisu wywołań z hali w częściach sterujących systemu, itp: Główna funkcja windy będzie obejmować zmianę prędkości jazdy, sposób podejmowania decyzji o zatrzymaniu oraz kierunki jazdy samochodu.
  • Wskazywanie kierunku ruchu: Winda powinna być wyposażona w mechanizm pozwalający pasażerom poznać aktualny kierunek ruchu samochodu, tak aby pasażer mógł zdecydować, czy chce wejść do samochodu, czy nie.
  • Wskazanie pozycji samochodu: Podobnie, winda powinna informować pasażerów, czy jego/jej piętro docelowe zostało osiągnięte, tak aby pasażer mógł podjąć decyzję o opuszczeniu pojazdu.
  • Otwieranie/zamykanie drzwi: Winda powinna być w stanie otwierać i zamykać drzwi, aby pasażerowie mogli wsiadać i wysiadać z pojazdu. Obszary funkcjonalne tego przypadku użycia powinny również umożliwiać pasażerom wykonanie cofnięcia drzwi, gdy drzwi się zamykają, a pasażer chce wsiąść do samochodu.
  • Wyzwalanie hamulca awaryjnego: Istnieje mechanizm bezpieczeństwa w samochodzie, aby upewnić się, że stan niebezpieczny nie jest przejściowo generowany.

Z takim zrozumieniem systemu windy, możemy rozpocząć identyfikację klas wymaganych do zaprojektowania systemu.

Identyfikacja klas/obiektów:

  • ElevatorControl: Centralny obiekt sterujący w systemie windowym. ElevatorControl komunikuje się i kontroluje wszystkie inne obiekty w systemie.
  • Drzwi: W systemie znajduje się dwoje drzwi, obiekt „bóg” – ElevatorControl – nakazuje drzwiom otwierać i zamykać.
  • Car/Lift: Samochód jest sterowany, aby poruszać się w górę i w dół (z różnymi prędkościami), aby w razie potrzeby zatrzymywać się na piętrach.
  • Przycisk: Klasa ElevatorControl kontroluje również klasę Button, która dalej generalizuje dwie podklasy CarCallButton i HallCallButton. Obiekt Control komunikuje się z obiektami Button, uzyskuje informację czy przycisk jest wciśnięty i z kolei steruje podświetleniem kontrolek Button.
  • Wskaźnik: W systemie występują dwa rodzaje wskaźników, CarPositionIndicator oraz CarDirectionIndicator (czyli CarLantern). Wskaźniki są sterowane tak, aby pokazywały informacje o aktualnej pozycji i kierunku ruchu samochodu.
  • Bezpieczeństwo: Kiedykolwiek zdarzy się sytuacja awaryjna, ElevatorControl rozkazuje klasom Safety

Controller:

  • DoorControl kontroluje działanie DoorMotor. DoorMotor może być polecony do otwarcia, zamknięcia lub cofnięcia drzwi.
  • DriveControl kontroluje napęd windy, który działa jako główny silnik poruszający samochód w górę i w dół oraz zatrzymujący się na piętrach, gdy jest to konieczne.
  • LanternControl są w liczbie dwóch, CarPositionIndicator i CarDirectionIndicator.
  • HallButtonControl istnieje w parze na każdym piętrze, gdzie jeden kontroluje przycisk HallCallButton Up, a drugi Down. Sterownik HallButtonControl akceptuje naciśnięcia przycisków wezwania do hali, jak również przekazuje informację zwrotną do świateł wezwania do hali.
  • CarButtonControl jest jeden na każdym piętrze i wszystkie znajdują się w windzie/wagonie. CarButtonControl przyjmuje wywołania CarCallButton i jest odpowiedzialny za włączanie/wyłączanie odpowiednich świateł wywoławczych windy/wagonu.
  • CarPositionIndicator nadaje wartość wskaźnikowi CarPositionIndicator, aby pasażerowie znali aktualne położenie windy/wagonu.
  • Dyspozytor nie kontroluje rzeczywistych elementów windy, ale jest ważny w systemie oprogramowania. Dla każdej windy/wagonu jest jeden dyspozytor, którego główną funkcją jest obliczanie docelowego kierunku ruchu i miejsca docelowego dla windy/wagonu, jak również utrzymywanie czasu otwarcia drzwi. Dyspozytor wchodzi w interakcję z prawie wszystkimi obiektami sterującymi w systemie z wyjątkiem LanternControl.

Rysunek 2: Diagram klas – widok architektury oprogramowania

Mając nadzieję, że do tej pory wszystko idzie dobrze, zrozumiejmy wszystko dzięki diagramom sekwencji.

Przepływ sekwencji

Może być trudno wyjaśnić to werbalnie, ale jeśli jasno rozumiesz, jak to będzie działać, możesz narysować kilka diagramów sekwencji i spróbować wyjaśnić przepływ z kilkoma przykładami równolegle.

  1. Wywołania hal procesowych : Istnieją dwa scenariusze dla tego przypadku użycia:
    1.1 winda porusza się w tym samym kierunku co miejsce docelowe pasażera.
    1.2 winda porusza się w kierunku przeciwnym niż miejsce docelowe pasażera.

Rysunek 3: 1.1&1.2 – Usługa wezwania do hali

2. Przesunąć/zatrzymać samochód:

Rysunek 4: Przesunięcie samochodu z szybkiego do wolnego a następnie do zatrzymania

3. Wskazywanie kierunku jazdy:

Rysunek 5: Wskazywanie kierunku jazdy

4. Wyzwalanie hamulca awaryjnego:Istnieje pięć scenariuszy dla tego przypadku użycia:

1. Jeśli samochód otrzyma polecenie zatrzymania się, ale nie zatrzyma się na żądanym piętrze, zostanie uruchomiony hamulec bezpieczeństwa.

2. Jeśli samochód otrzyma polecenie ruszenia, ale się nie poruszy, zostanie uruchomiony hamulec bezpieczeństwa.

3. Jeżeli drzwi zostaną nakazane do otwarcia, gdy samochód zatrzyma się na piętrze, ale drzwi nie otworzą się, zostanie uruchomiony hamulec bezpieczeństwa.

4. Jeżeli drzwi otworzą się, gdy samochód jest w ruchu, zostanie uruchomiony hamulec bezpieczeństwa.

5. Jeśli samochód nadal jedzie po osiągnięciu limitu drogi dźwigu, zostanie uruchomiony hamulec bezpieczeństwa.

Pokażę tylko jeden schemat sekwencji dla przypadku 5.

Rysunek 6: Hamulec awaryjny – winda jedzie dalej, gdy osiągnięty zostanie limit drogi dźwigu

Spodziewam się, że większość z tych rzeczy stanie się obrazem w Państwa umyśle i będzie łatwa do zapamiętania, jak również do wyjaśnienia. Dla backend projektowania , proszę śledzić System Design serii

Mam nadzieję, że podoba Ci się wyjaśnienie. Na więcej pytań związanych z projektowaniem, proszę czekać i śledzić mnie.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.