EAS PPL A - ARIF NUGRAHA SANTOSA

Nama:      Arif Nugraha Santosa

NRP:        5025211048

Kelas:       Perancangan Perangkat Lunak (A)


EAS PERANCANGAN PERANGKAT LUNAK (A)


Service Blueprint of Overnight Hotel Stay

Frontstage (Interaksi dengan Pelanggan)

  • Reservasi: Pelanggan memesan kamar melalui situs web, aplikasi, atau telepon.
  • Check-in: Pelanggan datang ke hotel dan check-in di resepsionis.
  • Penginapan: Pelanggan menggunakan fasilitas hotel seperti kamar, restoran, dan layanan kamar.
  • Check-out: Pelanggan check-out dan menyelesaikan pembayaran.

Backstage (Proses Internal)

  • Pembersihan Kamar: Housekeeping membersihkan dan menyiapkan kamar sebelum tamu datang.
  • Persiapan Layanan: Persiapan makanan di restoran, pengaturan fasilitas seperti gym dan kolam renang.
  • Manajemen Pemesanan: Mengelola reservasi kamar dan memastikan ketersediaan sesuai permintaan.

Support Processes (Dukungan)

  • Sistem Teknologi: Sistem manajemen properti untuk mengelola reservasi dan operasional.
  • Pelatihan Staf: Pelatihan berkala untuk memastikan kualitas layanan yang tinggi.
  • Pengelolaan Bahan Baku: Pemesanan dan pengelolaan bahan baku untuk restoran dan kebutuhan hotel lainnya.

Model Bisnis Hotel

1. Proposisi Nilai

  • Penginapan Nyaman: Menyediakan kamar yang bersih, nyaman, dan aman untuk tamu yang menginap semalam.
  • Pelayanan Pelanggan Berkualitas: Pelayanan ramah, cepat, dan profesional oleh staf hotel untuk memastikan pengalaman menginap yang menyenangkan.
  • Fasilitas Lengkap: Menawarkan fasilitas seperti restoran, gym, kolam renang, layanan kamar, dan akses internet untuk memenuhi kebutuhan tamu.

2. Segmen Pelanggan

  • Wisatawan: Baik wisatawan lokal maupun internasional yang mencari tempat menginap sementara.
  • Pelancong Bisnis: Individu yang melakukan perjalanan bisnis dan memerlukan akomodasi yang nyaman serta fasilitas penunjang kerja.
  • Keluarga: Keluarga yang berlibur dan membutuhkan tempat menginap yang nyaman dan aman.

3. Saluran Distribusi

  • Online: Melalui situs web hotel, aplikasi seluler, dan platform pemesanan online seperti Booking.com, Agoda, dan Expedia.
  • Offline: Reservasi melalui telepon atau kunjungan langsung ke hotel.

4. Hubungan Pelanggan

  • Personal: Pelayanan langsung oleh staf hotel untuk check-in, check-out, dan permintaan khusus.
  • Digital: Komunikasi melalui email, aplikasi pesan, dan media sosial untuk layanan dan promosi.

5. Aliran Pendapatan

  • Sewa Kamar: Pendapatan utama dari tarif sewa kamar.
  • Layanan Tambahan: Pendapatan dari restoran, bar, spa, laundry, dan fasilitas lainnya.

6. Sumber Daya Utama

  • Properti: Bangunan hotel, kamar, dan fasilitas pendukung.
  • Staf: Karyawan yang terlatih termasuk resepsionis, housekeeping, koki, dan manajer.
  • Teknologi: Sistem manajemen properti (PMS), platform pemesanan online, dan sistem pembayaran.

7. Kegiatan Kunci

  • Operasional Harian: Pembersihan dan perawatan kamar, penerimaan tamu, dan layanan kamar.
  • Pemasaran dan Promosi: Kampanye iklan, promosi online, dan program loyalitas pelanggan.
  • Manajemen Layanan: Pelatihan staf, pengelolaan feedback pelanggan, dan peningkatan kualitas layanan.

8. Mitra Kunci

  • Agen Perjalanan Online (OTA): Booking.com, Expedia, Agoda, dan lainnya.
  • Pemasok: Pemasok makanan dan minuman, perlengkapan hotel, dan produk kebersihan.
  • Penyedia Layanan Teknologi: Penyedia sistem manajemen properti dan solusi TI lainnya.

9. Struktur Biaya

  • Biaya Operasional: Gaji staf, utilitas (listrik, air, internet), pemeliharaan bangunan, dan bahan baku.
  • Pemasaran: Biaya iklan, promosi, dan komisi untuk agen perjalanan online.
  • Investasi Teknologi: Pengembangan dan pemeliharaan sistem manajemen properti dan infrastruktur TI.

Model bisnis hotel ini fokus pada penyediaan layanan yang optimal bagi tamu dengan memastikan kualitas layanan yang konsisten melalui proses operasional yang efisien dan efektif.


Perangkat Lunak Yang Dibutuhkan

  1. Sistem Manajemen Hotel (Hotel Management System)

    • Pentingnya: Mengelola operasi hotel termasuk reservasi kamar, check-in/check-out, dan layanan tamu.
    • Fitur: Manajemen inventori kamar, pemesanan, pelacakan housekeeping, penanganan pembayaran, dan integrasi layanan tamu​.
  2. Sistem Reservasi Online (Online Booking System)

    • Pentingnya: Memungkinkan tamu untuk memesan kamar secara online melalui situs web hotel atau platform pihak ketiga.
    • Fitur: Pencarian ketersediaan kamar, pemesanan, pembatalan, dan modifikasi reservasi secara real-time​.
  3. Sistem Manajemen Properti (Property Management System - PMS)

    • Pentingnya: Mengotomatiskan tugas administratif di hotel seperti pengelolaan reservasi, profil tamu, informasi penagihan, dan status kamar.
    • Fitur: Integrasi dengan sistem lain seperti sistem reservasi dan sistem manajemen pendapatan​.
  4. Gateway Pembayaran (Payment Gateway)

    • Pentingnya: Memproses pembayaran online dengan aman.
    • Fitur: Mendukung berbagai metode pembayaran seperti kartu kredit, dompet digital, dan transfer bank​.
  5. Sistem Otentikasi dan Otorisasi (Authentication and Authorization System)

    • Pentingnya: Menjamin keamanan akses ke sistem dengan menggunakan protokol otentikasi standar seperti OAuth dan JWT.
    • Fitur: Kontrol akses berbasis peran (RBAC) untuk membatasi akses berdasarkan peran pengguna (misalnya tamu, administrator)​​.
  6. Sistem Pelaporan dan Analitik (Reporting and Analytics System)

    • Pentingnya: Menghasilkan laporan untuk membantu pengelolaan hotel dalam pengambilan keputusan berbasis data.
    • Fitur: Pelacakan tingkat okupansi, analisis pendapatan, dan tren perilaku pengguna​.
  7. Sistem Notifikasi dan Komunikasi (Notification and Communication System)

    • Pentingnya: Mengirim pemberitahuan otomatis terkait konfirmasi pemesanan, pengingat, dan informasi penting lainnya kepada tamu.
    • Fitur: Saluran komunikasi seperti email dan chat untuk mendukung layanan pelanggan​.

Dengan menggunakan perangkat lunak ini, hotel dapat mengotomatiskan dan mengoptimalkan operasional mereka, meningkatkan pengalaman tamu, serta memastikan keamanan dan efisiensi dalam manajemen hotel secara keseluruhan.


Rancangan Perangkat Lunak untuk Sistem Manajemen Hotel (Desain System)

1. Spesifikasi Kebutuhan

Kebutuhan Fungsional:

  1. Manajemen Reservasi Kamar

    • Pencarian ketersediaan kamar berdasarkan tipe dan tanggal.
    • Pemesanan kamar secara real-time.
    • Pembatalan dan modifikasi reservasi.
    • Pengelolaan daftar tamu dan informasi reservasi.
  2. Manajemen Check-in dan Check-out

    • Proses check-in tamu.
    • Proses check-out tamu.
    • Pembuatan dan pengelolaan kunci kamar elektronik.
  3. Manajemen Layanan Tamu

    • Pemesanan layanan kamar dan makanan.
    • Pelacakan permintaan tamu.
    • Pengelolaan log housekeeping.
  4. Pembayaran dan Faktur

    • Proses pembayaran melalui berbagai metode (kartu kredit, e-wallet, transfer bank).
    • Pembuatan dan pengiriman faktur digital.
    • Pengembalian dana untuk pembatalan sesuai kebijakan.
  5. Manajemen Pengguna dan Akses

    • Otentikasi pengguna (OAuth, JWT).
    • Otorisasi berbasis peran (RBAC) untuk tamu, staf, dan administrator.
  6. Notifikasi dan Komunikasi

    • Pemberitahuan otomatis untuk konfirmasi reservasi, pengingat check-in/check-out.
    • Saluran komunikasi seperti email dan chat.
  7. Pelaporan dan Analitik

    • Laporan tingkat okupansi kamar.
    • Analisis pendapatan.
    • Pelacakan tren perilaku pengguna.

Kebutuhan Non-Fungsional:

  1. Keamanan

    • Enkripsi data dalam transit (HTTPS) dan di penyimpanan.
    • Firewall dan sistem deteksi intrusi.
    • Audit keamanan secara berkala.
  2. Kinerja

    • Latency rendah untuk pencarian dan pemesanan kamar.
    • Dukungan untuk jumlah transaksi tinggi.
  3. Skalabilitas

    • Dukungan untuk penambahan server secara horizontal.
    • Load balancing untuk distribusi trafik.
  4. Reliabilitas

    • Redundansi dan pemulihan bencana.
    • Ketersediaan sistem tinggi (uptime 99.9%).
  5. Usability

    • Antarmuka pengguna yang intuitif dan responsif.
    • Dokumentasi dan panduan penggunaan yang jelas.

2. Estimasi Kapasitas Sistem

  • Jumlah Pengguna Aktif Harian: 1000 - 5000 pengguna.
  • Jumlah Transaksi Pemesanan Harian: 200 - 1000 transaksi.
  • Data yang Disimpan: 1 TB - 5 TB untuk data reservasi, pengguna, dan log.
  • Ketersediaan Layanan: 24/7 dengan downtime minimal.

3. High Level Design

Komponen Utama:

  1. User Interface Layer

    • Web dan Mobile Application untuk akses pengguna.
    • Antarmuka untuk staf dan administrator.
  2. Application Layer

    • Service Layer: Menangani logika bisnis untuk pemesanan, pembayaran, dan manajemen layanan tamu.
    • API Gateway: Menyediakan endpoint untuk integrasi layanan eksternal dan aplikasi pihak ketiga.
  3. Data Layer

    • Database Relasional: MySQL/PostgreSQL untuk data reservasi dan pengguna.
    • Database NoSQL: MongoDB untuk data log dan analitik.
    • Cache: Redis untuk peningkatan kecepatan akses data.
  4. Integration Layer

    • Payment Gateway Integration: Stripe, PayPal untuk pemrosesan pembayaran.
    • Notification Service: Twilio, SendGrid untuk komunikasi dan notifikasi.
  5. Security Layer

    • Authentication and Authorization: OAuth 2.0, JWT untuk otentikasi dan otorisasi.
    • Data Encryption: SSL/TLS untuk enkripsi data.
  6. Monitoring and Logging

    • Monitoring Tools: Prometheus, Grafana untuk pemantauan kinerja sistem.
    • Logging Mechanisms: ELK Stack (Elasticsearch, Logstash, Kibana) untuk pelacakan dan analisis log.

4. Low Level Design

Komponen Detail:

  1. Booking Service

    • Pencarian Kamar: Menggunakan indeks pencarian untuk mempercepat pencarian ketersediaan kamar.
    • Pemesanan: Proses transaksi atomik untuk memastikan konsistensi data.
  2. Payment Service

    • Pembayaran: Integrasi dengan gateway pembayaran melalui API.
    • Pengembalian Dana: Logika untuk pengembalian dana sesuai kebijakan pembatalan.
  3. Notification Service

    • Email Notification: Integrasi dengan SMTP server untuk pengiriman email.
    • SMS Notification: Integrasi dengan Twilio untuk pengiriman SMS.
  4. User Management Service

    • Registrasi dan Otentikasi: Proses registrasi dengan verifikasi email, otentikasi menggunakan OAuth.
    • Manajemen Profil: CRUD operasi untuk profil pengguna.
       5. Komponen Tambahan
    • Load Balancer: Menyebarkan lalu lintas ke instance-instance dari setiap service (Booking Service, Payment Service, Notification Service, dan User Management Service) untuk memastikan distribusi beban kerja yang seimbang.
    • API Gateway: Pintu gerbang tunggal untuk semua permintaan API ke backend services (Booking Service, Payment Service, Notification Service, dan User Management Service), mengelola autentikasi, kontrol akses, dan manajemen lalu lintas.
    • Service Instances: Merepresentasikan instance-instance dari masing-masing service yang bekerja di balik Load Balancer.
    • Database Cluster: Kumpulan database yang menyimpan data seperti informasi pemesanan, pengguna, dan transaksi.
    • CDN (Content Delivery Network): Mempercepat pengiriman konten statis seperti gambar, dokumen, dll., kepada pengguna akhir melalui server-server di seluruh dunia.

Diagram Use Case

Berikut adalah Aktor utama dalam sistem:

  1. Tamu (Guest): Semua tamu dapat mencari kamar yang tersedia serta melakukan pemesanan.
  2. Resepsionis (Receptionist): Bertanggung jawab untuk menambahkan dan mengubah kamar, membuat reservasi kamar, check-in, dan check-out pelanggan.
  3. Sistem (System): Bertanggung jawab untuk mengirim notifikasi terkait pemesanan kamar, pembatalan, dan lain-lain.
  4. Manajer (Manager): Bertanggung jawab untuk menambahkan pekerja baru.
  5. Petugas Kebersihan (Housekeeper): Untuk menambahkan/mengubah catatan kebersihan kamar.
  6. Pelayan (Server): Untuk menambahkan/mengubah catatan layanan kamar.

Berikut adalah use case utama dari Sistem Manajemen Hotel:

  1. Tambah/Hapus/Ubah Kamar (Add/Remove/Edit Room): Untuk menambah, menghapus, atau mengubah kamar dalam sistem.
  2. Cari Kamar (Search Room): Untuk mencari kamar berdasarkan tipe dan ketersediaan.
  3. Daftar atau Batalkan Akun (Register or Cancel an Account): Untuk menambahkan anggota baru atau membatalkan keanggotaan anggota yang sudah ada.
  4. Pesan Kamar (Book Room): Untuk memesan kamar.
  5. Check-in (Check-in): Untuk membiarkan tamu check-in untuk pemesanan mereka.
  6. Check-out (Check-out): Untuk melacak akhir dari pemesanan dan pengembalian kunci kamar.
  7. Tambah Biaya Kamar (Add Room Charge): Untuk menambahkan biaya layanan kamar ke tagihan pelanggan.
  8. Perbarui Catatan Kebersihan (Update Housekeeping Log): Untuk menambahkan atau memperbarui entri kebersihan kamar.

Diagram Kelas

Berikut adalah kelas utama dari Sistem Manajemen Hotel:

  1. Hotel dan HotelLocation

    • Sistem kita akan mendukung beberapa lokasi hotel.
  2. Room (Kamar)

    • Kelas dasar dari sistem. Setiap kamar akan diidentifikasi secara unik oleh nomor kamar.
    • Atribut: Room Style, Booking Price, dll.
  3. Account (Akun)

    • Kita akan memiliki berbagai jenis akun dalam sistem:
      • Guest (Tamu): Untuk mencari dan memesan kamar.
      • Receptionist (Resepsionis): Untuk mengelola kamar dan reservasi.
      • Housekeeper (Petugas Kebersihan): Untuk mencatat catatan kebersihan kamar.
      • Server (Pelayan): Untuk mengelola layanan kamar.
  4. RoomBooking (Pemesanan Kamar)

    • Kelas ini akan bertanggung jawab untuk mengelola pemesanan kamar.
  5. Notification (Notifikasi)

    • Akan mengurus pengiriman notifikasi kepada tamu.
  6. RoomHouseKeeping (Kebersihan Kamar)

    • Untuk mencatat semua catatan kebersihan kamar.
  7. RoomCharge (Biaya Kamar)

    • Mengenkapsulasi detail tentang berbagai jenis layanan kamar yang diminta oleh tamu.
  8. Invoice (Faktur)

    • Berisi berbagai item faktur untuk setiap biaya terhadap kamar.
  9. RoomKey (Kunci Kamar)

    • Setiap kamar dapat diberi kartu kunci elektronik. Kunci akan memiliki barcode dan diidentifikasi secara unik oleh ID kunci.

Desain Database

SQL Script (MySQL)

CREATE TABLE Address (
    id SERIAL PRIMARY KEY,
    street VARCHAR(255),
    city VARCHAR(255),
    state VARCHAR(255),
    zip_code VARCHAR(10),
    country VARCHAR(255)
);

CREATE TABLE Account (
    id SERIAL PRIMARY KEY,
    password VARCHAR(255),
    status ENUM('ACTIVE', 'CLOSED', 'CANCELED', 'BLACKLISTED', 'BLOCKED') DEFAULT 'ACTIVE',
    account_type ENUM('MEMBER', 'GUEST', 'MANAGER', 'RECEPTIONIST'),
    name VARCHAR(255),
    address_id INT,
    email VARCHAR(255),
    phone VARCHAR(20),
    FOREIGN KEY (address_id) REFERENCES Address(id)
);

CREATE TABLE Hotel (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255)
);

CREATE TABLE HotelLocation (
    id SERIAL PRIMARY KEY,
    hotel_id INT,
    name VARCHAR(255),
    address_id INT,
    FOREIGN KEY (hotel_id) REFERENCES Hotel(id),
    FOREIGN KEY (address_id) REFERENCES Address(id)
);

CREATE TABLE Room (
    id SERIAL PRIMARY KEY,
    hotel_location_id INT,
    room_number INT UNIQUE,
    room_style ENUM('STANDARD', 'DELUXE', 'FAMILY_SUITE', 'BUSINESS_SUITE'),
    status ENUM('AVAILABLE', 'RESERVED', 'OCCUPIED', 'NOT_AVAILABLE', 'BEING_SERVICED', 'OTHER'),
    booking_price DECIMAL(10, 2),
    is_smoking BOOLEAN,
    FOREIGN KEY (hotel_location_id) REFERENCES HotelLocation(id)
);

CREATE TABLE RoomKey (
    id SERIAL PRIMARY KEY,
    key_id VARCHAR(255) UNIQUE,
    barcode VARCHAR(255),
    issued_at DATE DEFAULT CURRENT_DATE,
    is_active BOOLEAN,
    is_master BOOLEAN,
    room_id INT,
    FOREIGN KEY (room_id) REFERENCES Room(id)
);

CREATE TABLE RoomHouseKeeping (
    id SERIAL PRIMARY KEY,
    description TEXT,
    start_datetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    duration INTERVAL,
    house_keeper_id INT,
    room_id INT,
    FOREIGN KEY (house_keeper_id) REFERENCES Account(id),
    FOREIGN KEY (room_id) REFERENCES Room(id)
);

CREATE TABLE RoomBooking (
    id SERIAL PRIMARY KEY,
    reservation_number VARCHAR(255) UNIQUE,
    start_date DATE,
    duration_in_days INT,
    status ENUM('REQUESTED', 'PENDING', 'CONFIRMED', 'CHECKED_IN', 'CHECKED_OUT', 'CANCELLED', 'ABANDONED'),
    checkin DATE,
    checkout DATE,
    guest_id INT,
    room_id INT,
    FOREIGN KEY (guest_id) REFERENCES Account(id),
    FOREIGN KEY (room_id) REFERENCES Room(id)
);

CREATE TABLE Notification (
    id SERIAL PRIMARY KEY,
    user_id INT,
    message TEXT,
    date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES Account(id)
);

CREATE TABLE RoomCharge (
    id SERIAL PRIMARY KEY,
    issue_at DATE DEFAULT CURRENT_DATE,
    description TEXT,
    amount DECIMAL(10, 2),
    room_id INT,
    FOREIGN KEY (room_id) REFERENCES Room(id)
);

CREATE TABLE Invoice (
    id SERIAL PRIMARY KEY,
    booking_id INT,
    total_amount DECIMAL(10, 2),
    FOREIGN KEY (booking_id) REFERENCES RoomBooking(id)
);

CREATE TABLE InvoiceItem (
    id SERIAL PRIMARY KEY,
    invoice_id INT,
    room_charge_id INT,
    amount DECIMAL(10, 2),
    FOREIGN KEY (invoice_id) REFERENCES Invoice(id),
    FOREIGN KEY (room_charge_id) REFERENCES RoomCharge(id)
);

Physical Data Model



Design UI


Demo Video


Referensi

(GitHub)​​ 
(Medium.com part 1-3)

Comments

Popular posts from this blog

TUGAS PERTEMUAN 13 PPL - DESAIN SYSTEM APLIKASI INSTAGRAM

TUGAS PERTEMUAN 14 PPL - DESAIN DATABASE