TUGAS PERTEMUAN 6 PPL - LOW LEVEL DESIGN

Nama:      Arif Nugraha Santosa

NRP:        5025211048

Kelas:       Perancangan Perangkat Lunak (A) 


Tugas Pertemuan 6 PPL - Low Level Design


1. Layanan Restoran

Layanan Restoran menangani semua fungsi yang terkait dengan restoran. Ia hanya akan berinteraksi dengan Data Restoran. Layanan ini akan menampilkan halaman pertama aplikasi, yaitu daftar semua restoran atau hasil pencarian restoran. Layanan ini juga memungkinkan restoran untuk mendaftar dan Admin untuk mengelolanya.

  • Fitur:

    • Restoran dapat mendaftar sendiri - tambahRestoran

    • Pelanggan dapat melihat daftar semua restoran - getAllRestoran

    • Admin dapat mencari restoran menggunakan ID - getRestoranById

    • Pelanggan dapat mencari restoran menggunakan nama - getRestoranByName

    • Pelanggan dapat mencari restoran menggunakan kota - getRestoranByKota

2. Layanan Pengguna

Layanan Pengguna menyediakan fitur terkait profil pengguna. Ia hanya akan berinteraksi dengan Data Pengguna. Layanan ini memungkinkan Pelanggan dan Kurir untuk mendaftar dan memperbarui profil mereka.

  • Fitur:

    • Pengguna dapat mendaftar sendiri - tambahPengguna

    • Pengguna dapat menghapus profil mereka - hapusPengguna

    • Pengguna dapat memperbarui profil mereka - perbaruiPengguna

    • Pengguna dapat melihat info profil mereka - getPengguna

3. Layanan Menu Makanan

Setelah pelanggan memilih restoran, halaman kedua aplikasi, yaitu menu makanan, akan ditampilkan oleh Layanan Menu Makanan. Layanan ini juga memungkinkan pelanggan untuk mencari item pada menu berdasarkan kategori tertentu. Ia hanya akan berinteraksi dengan Data Menu Makanan.

  • Fitur:

    • Restoran dapat menambahkan menu makanan - tambahMenuMenurutIdRestoran

    • Admin dapat mencari menu makanan menggunakan ID - getMenuById

    • Pelanggan dapat melihat menu - getMenuMenurutIdRestoran

    • Admin dapat menambahkan lebih banyak item dalam menu - tambahItemMenuMenurutIdMenu

    • Restoran dapat menambahkan lebih banyak item - tambahItemMenuMenurutIdRestoran

    • Pelanggan dapat mencari item menggunakan jenis masakan - getItemMenuMenurutIdRestoranDanMasakan

    • Pelanggan dapat mencari item menggunakan jenis makanan - getItemMenuMenurutIdRestoranDanJenisMakanan

    • Admin dapat mencari item menggunakan ID - getItemMenuById

4. Layanan Harga

Pada halaman keranjang, Layanan Harga akan memungkinkan Pelanggan untuk melihat detail tagihan. Layanan ini akan memanggil Layanan Keranjang untuk mendapatkan semua item keranjang guna menampilkan tagihan. Kita dapat menggunakan Pola Strategi dan memiliki berbagai jenis strategi - DiskonDuaPuluhPersen, DiskonLimaRatus, dll.

  • Fitur:

    • Pelanggan dapat melihat detail tagihan - getBill

5. Layanan Pesanan

Pelanggan dapat melakukan pemesanan atau membatalkan pesanan setelah keranjang selesai menggunakan Layanan Pesanan. Layanan ini hanya akan berinteraksi dengan Data Pesanan. Layanan ini juga memungkinkan pelanggan untuk melihat riwayat pesanan. Pelanggan dapat memilih riwayat berdasarkan restoran juga. Kita dapat menggunakan Pola Perintah untuk menangani perintah pemesanan dan pembatalan.

  • Fitur:

    • Pelanggan dapat melakukan atau membatalkan pesanan - perbaruiPesanan

    • Admin dapat mencari pesanan - getPesananById

    • Pelanggan dapat melihat riwayat pesanan mereka untuk sebuah restoran - getAllPesananMenurutIdRestoran

    • Pelanggan dapat melihat semua riwayat pesanan mereka - getAllPesanan

6. Layanan Pembayaran

Pembayaran dapat dilakukan ke restoran menggunakan Layanan Pembayaran. Layanan ini akan berinteraksi dengan Data Pembayaran dan juga memanggil Layanan Harga untuk memvalidasi pembayaran yang dilakukan & Layanan Pesanan untuk memperbarui status pesanan. Layanan ini memungkinkan Pelanggan untuk menambahkan Pembayaran ke pesanan mereka.

  • Fitur:

    • Pelanggan dapat membayar pesanan mereka - tambahPembayaran

    • Admin dapat mencari pembayaran menggunakan ID - getPembayaranById

    • Pelanggan dapat melihat pembayaran yang dilakukan - getPembayaranMenurutIdPesanan

    • Pembayaran harus sesuai dengan tagihan - validasiPembayaran

7. Layanan Pengiriman

Layanan Pengiriman akan menangani semua fungsi yang terkait dengan pengiriman pesanan. Layanan ini akan berinteraksi dengan Data Pengiriman dan juga memanggil Layanan Pesanan untuk mendapatkan pesanan yang akan dikirim.

  • Fitur:

    • Admin/Restoran dapat menambahkan pengiriman - tambahPengiriman

    • Admin dapat melihat pengiriman menggunakan ID - getPengirimanById

    • Kurir dapat melihat semua pengiriman yang dilakukan - getPengirimanMenurutIdKurir

    • Pelanggan dapat melacak status pesanan - getStatusPesanan

Sistem pengiriman makanan melibatkan beberapa algoritma untuk memastikan layanan yang lancar dan efisien.

1. Algoritma Personalisasi:

  • Tujuan: Menampilkan pilihan restoran yang paling relevan untuk pengguna.

  • Cara Kerja:

    • Algoritma ini mempertimbangkan lokasi pengguna, riwayat pesanan, dan preferensi.

    • Misalnya, jika pelanggan biasanya memesan masakan India, aplikasi akan memprioritaskan restoran India terdekat.

  • Struktur Data:

    • Data pengguna (lokasi, riwayat pesanan, preferensi)

    • Data restoran (jenis masakan, lokasi)

2. Algoritma Popularitas:

  • Tujuan: Memberikan visibilitas lebih besar pada restoran populer.

  • Cara Kerja:

    • Algoritma ini memperhitungkan popularitas restoran berdasarkan:

      • Jumlah pesanan

      • Peringkat restoran

    • Restoran yang sering dipesan dan memiliki peringkat tinggi akan diberi visibilitas lebih besar di aplikasi.

  • Struktur Data:

    • Data restoran (jumlah pesanan, peringkat)

3. Algoritma Jarak:

  • Tujuan: Memprioritaskan restoran terdekat dari pelanggan.

  • Cara Kerja:

    • Algoritma ini memperhitungkan jarak antara restoran dan pelanggan.

    • Restoran yang terletak lebih dekat dengan pelanggan akan muncul lebih tinggi dalam hasil pencarian.

    • Hal ini karena aplikasi berasumsi bahwa restoran terdekat memiliki waktu pengiriman yang lebih singkat.

  • Struktur Data:

    • Data restoran (lokasi)

    • Data pengguna (lokasi)

4. Algoritma Data Real-Time:

  • Tujuan: Meningkatkan akurasi algoritma lainnya dengan menggunakan data real-time.

  • Cara Kerja:

    • Aplikasi pengiriman makanan menggunakan data real-time untuk membuat algoritme mereka lebih akurat.

    • Misalnya, jika restoran sedang mengalami volume pesanan yang tinggi, aplikasi dapat menurunkan peringkatnya dalam hasil pencarian.

  • Struktur Data:

    • Data restoran (jumlah pesanan saat ini)

5. Sistem Rekomendasi:

  • Tujuan: Memberikan rekomendasi restoran kepada pengguna berdasarkan pola belanja serupa.

  • Cara Kerja:

    • Sistem rekomendasi ini dapat didasarkan pada jumlah pesanan yang tersimpan dalam aplikasi pengiriman makanan.

    • Sistem ini didasarkan pada teknik "nearest-neighbor" yang menghitung restoran favorit pelanggan dan menganalisis pelanggan lain dengan pola pembelian serupa.

  • Struktur Data:

    • Data pesanan (pelanggan, restoran)


DESAIN BASIS DATA


Tabel:

Restoran:

id_restoran (INT, Primary Key)

nama_restoran (VARCHAR(255))

kota (VARCHAR(255))

deskripsi (TEXT)

gambar (BLOB)

rating (DECIMAL(2,1))

status (ENUM('Aktif', 'Tidak Aktif'))


Pengguna:

id_pengguna (INT, Primary Key)

nama_pengguna (VARCHAR(255))

email (VARCHAR(255))

kata_sandi (VARCHAR(255))

tipe_pengguna (ENUM('Pelanggan', 'Admin', 'Kurir'))

nomor_telepon (VARCHAR(255))

alamat (TEXT)

Menu:

id_menu (INT, Primary Key)

id_restoran (INT, Foreign Key references Restoran(id_restoran))

nama_menu (VARCHAR(255))

deskripsi (TEXT)

harga (DECIMAL(10,2))

kategori (VARCHAR(255))

gambar (BLOB)

Item Menu:

id_item_menu (INT, Primary Key)

id_menu (INT, Foreign Key references Menu(id_menu))

jenis_masakan (VARCHAR(255))

jenis_makanan (VARCHAR(255))

Pesanan:

id_pesanan (INT, Primary Key)

id_pengguna (INT, Foreign Key references Pengguna(id_pengguna))

id_restoran (INT, Foreign Key references Restoran(id_restoran))

tanggal_pesanan (DATETIME)

status_pesanan (ENUM('Menunggu', 'Diproses', 'Sedang Dikirim', 'Selesai', 'Dibatalkan'))

total_bayar (DECIMAL(10,2))

Detail Pesanan:

id_detail_pesanan (INT, Primary Key)

id_pesanan (INT, Foreign Key references Pesanan(id_pesanan))

id_item_menu (INT, Foreign Key references Item Menu(id_item_menu))

jumlah (INT)

harga_satuan (DECIMAL(10,2))

Pembayaran:

id_pembayaran (INT, Primary Key)

id_pesanan (INT, Foreign Key references Pesanan(id_pesanan))

metode_pembayaran (ENUM('Tunai', 'Kartu Kredit', 'Transfer Bank'))

tanggal_pembayaran (DATETIME)

status_pembayaran (ENUM('Belum Dibayar', 'Dibayar'))

total_bayar (DECIMAL(10,2))

Pengiriman:

id_pengiriman (INT, Primary Key)

id_pesanan (INT, Foreign Key references Pesanan(id_pesanan))

id_kurir (INT, Foreign Key references Pengguna(id_pengguna))

tanggal_pengiriman (DATETIME)

status_pengiriman (ENUM('Belum Diambil', 'Sedang Diantar', 'Telah Diterima'))

Relasi:

  • Restoran memiliki banyak Menu (N:M)

  • Menu memiliki banyak Item Menu (N:M)

  • Pengguna dapat melakukan banyak Pesanan (N:M)

  • Restoran memiliki banyak Pesanan (N:M)

  • Pesanan memiliki banyak Detail Pesanan (N:M)

  • Pesanan memiliki satu Pembayaran (1:1)

  • Pesanan memiliki satu Pengiriman (1:1)

  • Kurir memiliki banyak Pengiriman (N:M)

Penjelasan:

  • Tabel Restoran menyimpan informasi tentang restoran, seperti nama, kota, deskripsi, gambar, rating, dan status.

  • Tabel Pengguna menyimpan informasi tentang pengguna, seperti nama, email, kata sandi, tipe pengguna, nomor telepon, dan alamat.

  • Tabel Menu menyimpan informasi tentang menu restoran, seperti nama, deskripsi, harga, kategori, dan gambar.

  • Tabel Item Menu menyimpan informasi tentang item menu, seperti jenis masakan dan jenis makanan.

  • Tabel Pesanan menyimpan informasi tentang pesanan, seperti


Teknologi untuk Mengimplementasikan Sistem Aplikasi Restoran

Bahasa Pemrograman:

  • Frontend:

    • JavaScript: Bahasa pemrograman yang populer untuk pengembangan web frontend. Digunakan untuk membangun antarmuka pengguna yang interaktif dan responsif.

    • ReactJS/VueJS/AngularJS: Pustaka JavaScript yang membantu membangun aplikasi web frontend yang kompleks dan terstruktur.

  • Backend:

    • Java: Bahasa pemrograman yang populer untuk pengembangan backend. Performa tinggi dan skalabel, cocok untuk aplikasi yang kompleks.

    • Go: Bahasa pemrograman yang relatif baru, tetapi semakin populer untuk pengembangan backend. Performa tinggi, skalabel, dan mudah dipelajari.

Framework:

  • Frontend:

    • Next.js: Framework JavaScript populer untuk membangun aplikasi web frontend statis dan dinamis.

  • Backend:

    • Spring Boot: Framework Java populer untuk membangun aplikasi web backend.

    • Gin-gonic: Framework Go populer untuk membangun aplikasi web backend.

Database:

  • MySQL: Database relasional populer yang mudah dipelajari dan digunakan.

  • PostgreSQL: Database relasional open-source yang kuat dan skalabel.

  • MongoDB: Database NoSQL populer yang cocok untuk data yang tidak terstruktur.

Server Web:

  • Nginx: Server web open-source yang populer dan berkinerja tinggi.

  • Apache: Server web open-source yang populer dan mudah dikonfigurasi.

Cloud Hosting:

  • Google Cloud Platform (GCP): Platform cloud computing yang populer dan menawarkan berbagai layanan, termasuk komputasi, penyimpanan, dan database.

Teknologi Lainnya:

  • Sistem Antrian Pesan: Sistem seperti RabbitMQ atau Kafka dapat digunakan untuk menangani asinkronisasi dan skalabilitas aplikasi.

  • Sistem Otentikasi dan Otorisasi: Sistem seperti OAuth 2.0 atau JWT dapat digunakan untuk mengamankan aplikasi dan mengelola akses pengguna.

  • Sistem Pembayaran: Sistem seperti Stripe atau PayPal dapat digunakan untuk memproses pembayaran online.


UI/UX



Comments

Popular posts from this blog

EAS PPL A - ARIF NUGRAHA SANTOSA

TUGAS PERTEMUAN 13 PPL - DESAIN SYSTEM APLIKASI INSTAGRAM

TUGAS PERTEMUAN 14 PPL - DESAIN DATABASE