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
Post a Comment