Evaluasi Akhir Semester - Perancangan Perangkat Lunak
Nama | Akmal Sulthon Fathulloh |
---|---|
NRP | 5025211047 |
Kelas | Perancangan Perangkat Lunak - A |
Pertanyaan
- Deskripsikan model bisnis yang dipilih!
- Identifikasi perangkat lunak apa saja yang diperlukan, kemudian jelaskan alasannya!
- Buatkan rancangan perangkat lunaknya!
- Lengkapi dengan desain database dan desain UI!
- Buat presentasi dan demo hasil rancangan perangkat lunak, kemudian upload di Youtube dan isi lembar monitoring!
Jawaban
1. Deskripsi Model Bisnis
Model bisnis yang saya pilih adalah bisnis jaringan kedai kopi Starbucks yang mengadopsi model bisnis berbasis layanan take-out dengan memanfaatkan teknologi digital untuk meminimalisasi kontak fisik antara pembeli dan staf Starbucks selama pandemi COVID-19. Berikut adalah user journey bagi pengguna layanan take-out Starbucks berdasarkan ilustrasi model bisnis di atas.
- Pelanggan menggunakan Google Maps di smartphone mereka untuk menentukan tujuan ke Starbucks terdekat.
- Pelanggan kemudian mengemudi atau berjalan ke Starbucks.
- Sesampainya di Starbucks, mereka melihat arsitektur toko dan logo Starbucks.
- Pelanggan melihat instruksi di pintu masuk mengenai prosedur saat ini.
- Pelanggan disarankan untuk memesan secara online melalui aplikasi Starbucks untuk mendapatkan poin ekstra.
- Pelanggan dapat melihat estimasi waktu pengambilan pesanan di aplikasi.
- Pelanggan menuju jendela pengambilan untuk menerima pesanan mereka dari staf Starbucks.
- Pelanggan menerima minuman dari staf melalui kotak pengambilan khusus untuk menghindari kontak langsung.
- Pelanggan meninggalkan Starbucks.
Beberapa komponen utama yang bisa kita garis bawahi dari model bisnis ini adalah:
- Starbucks hanya melayani take-out untuk meminimalisasi kontak fisik.
- Pelanggan disarankan untuk memesan secara online melalui aplikasi Starbucks untuk menghindari antrian dan kontak fisik, serta juga akan mendapatkan bonus ekstra
- Pelanggan dapat melihat estimasi waktu pengambilan pesanan di aplikasi.
2. Identifikasi Perangkat Lunak yang Diperlukan
Berdasarkan deskripsi model bisnis di atas, beberapa perangkat lunak yang diperlukan adalah sebagai berikut.
- Google Maps: Aplikasi ini digunakan oleh pelanggan untuk menemukan lokasi kedai Starbucks terdekat. Google Maps menyediakan navigasi dan petunjuk arah yang akurat untuk membantu pelanggan sampai ke tujuan mereka. Dengan menggunakan Google Maps, pelanggan akan lebih mudah dalam menentukan rute tercepat dan paling efisien ke Starbucks terdekat.
- Aplikasi Mobile Starbucks: Aplikasi ini digunakan oleh pelanggan untuk memesan minuman mereka di kedai Starbucks. Pelanggan dapat melihat menu, harga, dan estimasi waktu pengambilan di aplikasi ini. Dengan memesan secara online melalui aplikasi, pelanggan dapat menghindari antrian dan kontak fisik dengan staf Starbucks.
- Sistem Pembayaran Digital: Starbucks harus memiliki sistem pembayaran digital yang aman dan mudah digunakan untuk memproses pembayaran pelanggan secara online. Sistem ini juga harus terintegrasi dengan aplikasi mobile Starbucks.
- Sistem Manajemen Pesanan: Sistem ini digunakan oleh staf Starbucks untuk mengelola pesanan pelanggan yang masuk melalui aplikasi mobile. Sistem ini harus dapat menampilkan pesanan, status pesanan, dan estimasi waktu pengambilan.
- Sistem Manajemen Antrian: Sistem ini digunakan untuk mengatur antrian pelanggan yang datang ke jendela pengambilan. Sistem ini harus dapat menampilkan nomor antrian, estimasi waktu pengambilan, dan status pesanan pelanggan.
- Sistem Manajemen Stok: Sistem ini digunakan untuk mengelola stok bahan baku dan inventaris di kedai Starbucks. Sistem ini harus dapat memberikan informasi real-time tentang stok yang tersedia dan mengirimkan notifikasi jika stok mencapai batas minimum.
- Sistem Loyalitas Pelanggan: Sistem ini digunakan untuk memberikan poin/bonus ekstra kepada pelanggan yang memesan secara online melalui aplikasi mobile. Sistem ini juga dapat digunakan untuk mengirimkan promo dan penawaran khusus kepada pelanggan yang terdaftar.
3. Rancangan Perangkat Lunak
Spesifikasi Kebutuhan
Berdasarkan, model bisnis yang telah dijelaskan sebelumnya, berikut adalah spesifikasi kebutuhan perangkat lunak untuk aplikasi Starbucks.
Kebutuhan Fungsional
- Pelanggan dapat mencari lokasi kedai Starbucks terdekat dengan bantuan Google Maps.
- Pelanggan dapat memesan minuman mereka melalui aplikasi mobile.
- Pelanggan dapat melihat menu, harga, dan estimasi waktu pengambilan di aplikasi mobile.
- Pelanggan mendapat bonus ekstra jika memesan secara online melalui aplikasi.
- Staf Starbucks dapat melihat pesanan pelanggan dan status pesanan melalui sistem manajemen pesanan.
- Staf Starbucks dapat mengatur antrian pelanggan yang datang ke jendela pengambilan melalui sistem manajemen antrian.
- Staf Starbucks dapat melihat stok bahan baku dan invent
- Staf Starbucks dapat memberikan poin dan bonus kepada pelanggan yang memesan secara online melalui aplikasi mobile.
- Sistem dapat mengirimkan notifikasi kepada pelanggan tentang promo dan penawaran khusus.
Kebutuhan Non-Fungsional
- Sistem harus responsif dan cepat dalam menampilkan informasi pesanan dan antrian.
- Sistem harus aman dan terenkripsi untuk melindungi data pelanggan dan transaksi pembayaran.
- Sistem harus dapat diakses dari berbagai perangkat, termasuk smartphone, tablet, dan komputer.
- Sistem harus memiliki antarmuka pengguna yang intuitif dan mudah digunakan oleh pelanggan dan staf Starbucks.
- Sistem harus dapat menangani jumlah pengguna yang besar tanpa mengalami penurunan kinerja.
Estimasi Kapasitas
Untuk membuat estimasi trafik, penyimpanan, dan bandwidth untuk aplikasi Starbucks, kita perlu mempertimbangkan beberapa faktor kunci yang akan mempengaruhi penggunaan sumber daya tersebut. Berikut adalah analisis dan estimasi berdasarkan spesifikasi kebutuhan yang diberikan:
Estimasi Trafik
-
Jumlah Pengguna
- Misalkan ada 1 juta pengguna aktif bulanan (monthly active users).
- Asumsikan 10% dari pengguna aktif harian (daily active users), sehingga sekitar 100.000 pengguna aktif harian.
-
Frekuensi Penggunaan
- Rata-rata pengguna membuka aplikasi 2 kali sehari.
- Total akses aplikasi per hari = 100.000 * 2 = 200.000 kali.
-
Pencarian Lokasi
- 30% dari pengguna harian mencari lokasi kedai Starbucks.
- Total pencarian lokasi per hari = 100.000 * 0.3 = 30.000 pencarian.
-
Pemesanan Minuman
- 20% dari pengguna harian memesan minuman melalui aplikasi.
- Total pemesanan minuman per hari = 100.000 * 0.2 = 20.000 pemesanan.
-
Notifikasi
- Setiap pengguna menerima 2 notifikasi per minggu.
- Total notifikasi per hari = 1.000.000 * 2 / 7 ≈ 285.714 notifikasi.
Estimasi Penyimpanan
-
Data Pengguna
- Rata-rata data pengguna (profil, preferensi, riwayat pemesanan) = 1 MB.
- Total penyimpanan data pengguna = 1.000.000 * 1 MB = 1 TB.
-
Data Pemesanan
- Rata-rata data per pesanan (detail pesanan, waktu, lokasi) = 0.1 MB.
- Total pesanan per bulan = 20.000 * 30 = 600.000 pesanan.
- Total penyimpanan data pesanan = 600.000 * 0.1 MB = 60 GB per bulan.
-
Data Menu dan Stok
- Rata-rata data menu dan stok = 500 MB (dengan asumsi data ini sering diperbarui dan tidak terlalu besar).
-
Data Notifikasi
- Rata-rata data notifikasi = 0.1 KB.
- Total notifikasi per hari = 285.714 notifikasi.
- Total penyimpanan data notifikasi = 8.571.420 * 0.01 MB ≈ 86 GB per bulan.
Total penyimpanan:
- Pengguna: 1 TB
- Pesanan: 60 GB per bulan
- Menu dan Stok: 500 MB
- Notifikasi: 86 GB per bulan
- Estimasi Total Penyimpanan awal: ≈ 1.15 TB (dengan asumsi data lama diarsipkan).
Estimasi Bandwith
-
Pencarian Lokasi
- Rata-rata ukuran data per pencarian lokasi (dengan Google Maps API) = 0.2 MB.
- Total bandwidth pencarian lokasi per hari = 30.000 * 0.2 MB = 6 GB.
-
Pemesanan Minuman
- Rata-rata ukuran data per pemesanan = 0.5 MB.
- Total bandwidth pemesanan per hari = 20.000 * 0.5 MB = 10 GB.
-
Melihat Menu
- Rata-rata ukuran data per tampilan menu = 1 MB.
- Asumsikan 50% dari pengguna harian melihat menu.
- Total bandwidth tampilan menu per hari = 100.000 * 0.5 * 1 MB = 50 GB.
-
Notifikasi
- Rata-rata ukuran data per notifikasi = 0.1 KB.
- Total bandwidth notifikasi per hari = 285.714 * 0.1 KB ≈ 28.6 GB.
Total bandwidth per hari:
- Pencarian Lokasi: 6 GB
- Pemesanan Minuman: 10 GB
- Melihat Menu: 50 GB
- Notifikasi: 28.6 GB
- Estimasi Total Bandwidth per Hari: ≈ 68.86 GB.
Use Case Diagram
Use case diagram adalah diagram yang menggambarkan interaksi antara pengguna dan sistem, serta fungsionalitas yang disediakan oleh sistem. Berikut adalah use case diagram untuk aplikasi Starbucks berbasis layanan take-out.
Use case diagram di atas menggambarkan interaksi antara berbagai aktor dengan sistem di Starbucks. Diagram ini menunjukkan proses pemesanan dan pembayaran oleh pelanggan, serta persiapan pesanan oleh staf Starbucks. Berikut adalah penjelasan rinci tentang setiap elemen dalam diagram tersebut.
- Pelanggan: Aktor ini mewakili pengguna yang menggunakan aplikasi Starbucks untuk memesan minuman dan melakukan pembayaran.
- Staf: Aktor ini mewakili staf restoran yang menerima pesanan, menyiapkan minuman, dan memberikan pesanan kepada pelanggan.
- Sistem Pembayaran: Sistem pembayaran digital yang digunakan oleh pelanggan untuk melakukan pembayaran atas pesanan mereka.
- Sistem Manajemen Pesanan: Sistem manajemen pesanan yang digunakan oleh staf Starbucks untuk mengelola pesanan pelanggan.
- Sistem Loyalitas Pelanggan: Sistem loyalitas pelanggan yang digunakan untuk memberikan poin/bonus ekstra kepada pelanggan yang memesan secara online.
High-Level Design
Arsitektur Sistem
Arsitektur sistem adalah struktur sistem yang menggambarkan komponen-komponen utama, hubungan antara komponen-komponen tersebut, dan cara komponen-komponen tersebut berinteraksi satu sama lain. Berikut adalah arsitektur sistem untuk aplikasi Starbucks berbasis layanan take-out.
Berikut adalah detail aplikasi Starbucks yang diterapkan menggunakan arsitektur serverless:
- Mobile app atau website: Pengguna mengakses aplikasi Starbucks melalui perangkat mobile atau web browser dan melakukan pemesanan.
- API Gateway: Komponen serverless ini menerima permintaan pesanan dan merutekannya ke order service.
- Order service: Fungsi lambda ini memvalidasi detail pesanan, dan berkomunikasi dengan inventory service untuk memeriksa tingkat inventaris dan memasukkan pesanan ke dalam layanan antrian.
- Inventory service: Fungsi lambda ini memeriksa tingkat inventaris dalam sistem bahwa kita memiliki cukup produk dan bahan untuk membuat pesanan ini.
- Payment service: Fungsi lambda ini menangani otorisasi pembayaran dan berinteraksi dengan PSP (Penyedia Layanan Pembayaran) pihak ketiga, seperti QRIS, OVO, GoPay, dan lainnya.
- Notification service: Fungsi pembayaran berbicara ke notification service dan pelanggan menerima notifikasi melalui aplikasi atau melalui pesan teks.
- Analytical platform: Fungsi pembayaran mengirimkan detail transaksi ke platform analitik.
Interaksi Pengguna
Berikut adalah diagram interaksi pengguna untuk aplikasi Starbucks berbasis layanan take-out.
-
Pengguna melakukan pemesanan
- Pengguna menggunakan aplikasi untuk memesan minuman atau makanan.
- Pesanan dikirim ke sistem order service.
-
Pembayaran dan sistem loyalitas
- Pengguna melakukan pembayaran melalui integrasi gateway pembayaran.
- Poin bintang dari program loyalitas ditambahkan ke akun pengguna jika memenuhi syarat.
-
Notifikasi dan konfirmasi
- Sistem mengirimkan notifikasi kepada pengguna tentang konfirmasi pesanan dan estimasi waktu pengambilan.
-
Pemenuhan pesanan
- Tim di toko mempersiapkan pesanan sesuai dengan spesifikasi pengguna.
- Pengguna diinformasikan melalui aplikasi ketika pesanan siap diambil.
-
Umpan balik pengguna
- Pengguna diberi kesempatan untuk memberikan ulasan dan feedback tentang pengalaman mereka.
- Sistem mengelola interaksi ini untuk meningkatkan layanan dan pengalaman pelanggan.
Low-Level Design
LLD (Low-Level Design) adalah tahap desain yang lebih rinci dan spesifik dari arsitektur sistem. Pada tahap ini, kita akan merancang komponen-komponen sistem secara terperinci, termasuk desain database, desain UI, dan desain alur kerja. Berikut adalah contoh desain database untuk aplikasi Starbucks berbasis layanan take-out.
-
User Service
Fungsi:
- Mengelola pendaftaran pengguna, login, autentikasi, dan manajemen profil.
- Menyimpan data pengguna seperti nama pengguna, email, preferensi notifikasi, dan informasi profil lainnya.
- Terintegrasi dengan penyedia autentikasi eksternal seperti Google atau Facebook untuk login yang aman dan mudah.
Implementasi:
- Menggunakan layanan autentikasi seperti OAuth 2.0 untuk integrasi dengan penyedia autentikasi eksternal.
- Menggunakan database SQL atau NoSQL untuk menyimpan data pengguna.
- Menggunakan enkripsi data untuk melindungi informasi sensitif pengguna.
- Sesi pengguna yang dikelola dengan token akses dan refresh token.
-
Order Service
Fungsi:
- Menerima pesanan dari pengguna dan memvalidasi detail pesanan.
- Memeriksa inventaris untuk memastikan produk tersedia.
- Menyimpan detail pesanan dan status pesanan.
- Mengirim notifikasi ke pengguna tentang status pesanan.
Implementasi:
- Menggunakan fungsi lambda untuk menangani pesanan dan validasi.
- Menggunakan database NoSQL untuk menyimpan detail pesanan.
- Menggunakan layanan notifikasi seperti Firebase Cloud Messaging untuk mengirim notifikasi ke pengguna.
-
Inventory Service
Fungsi:
- Memeriksa inventaris untuk memastikan produk dan bahan tersedia.
- Memberikan notifikasi jika stok mencapai batas minimum.
- Melacak perubahan stok dan inventaris.
Implementasi:
- Menggunakan fungsi lambda untuk memeriksa inventaris.
- Menggunakan database NoSQL untuk menyimpan data inventaris.
- Menggunakan layanan notifikasi untuk memberikan pemberitahuan stok.
-
Payment Service
Fungsi:
- Memproses pembayaran pelanggan secara aman dan andal.
- Integrasi dengan penyedia layanan pembayaran eksternal seperti QRIS, OVO, GoPay, dan lainnya.
- Menyimpan riwayat transaksi dan detail pembayaran.
Implementasi:
- Menggunakan layanan pembayaran seperti Stripe atau PayPal untuk integrasi pembayaran.
- Menggunakan enkripsi data untuk melindungi informasi pembayaran pelanggan.
- Menggunakan database NoSQL untuk menyimpan riwayat transaksi dan detail pembayaran.
-
Notification Service
Fungsi:
- Mengirim notifikasi kepada pengguna tentang status pesanan, promo, dan penawaran khusus.
- Menyimpan riwayat notifikasi dan preferensi notifikasi pengguna.
Implementasi:
- Menggunakan layanan notifikasi seperti Firebase Cloud Messaging atau Twilio untuk mengirim notifikasi.
- Menggunakan database NoSQL untuk menyimpan riwayat notifikasi dan preferensi pengguna.
-
Analytics Platform
Fungsi:
- Menganalisis data transaksi dan perilaku pengguna untuk mendapatkan wawasan bisnis dan meningkatkan layanan.
- Menyediakan laporan dan visual analytics untuk manajemen dan tim operasional.
Implementasi:
- Menggunakan layanan analitik seperti Google Analytics atau Mixpanel untuk menganalisis data.
- Menggunakan database analitik seperti Amazon Redshift atau Google BigQuery untuk menyimpan data transaksi.
4. Desain Database dan UI
Berikut adalah desain database dan desain UI untuk aplikasi Starbucks berbasis layanan take-out.
Desain Database
Desain database adalah struktur data yang digunakan untuk menyimpan informasi pengguna, pesanan, inventaris, dan data lainnya dalam aplikasi. Berikut adalah desain database untuk aplikasi Starbucks.
Tabel users
Kolom | Tipe Data | Deskripsi |
---|---|---|
user_id | INT | Primary key, auto-increment |
username | VARCHAR | Nama pengguna, unik |
VARCHAR | Email pengguna, unik | |
password | VARCHAR | Kata sandi pengguna, terenkripsi |
full_name | VARCHAR | Nama lengkap pengguna |
bio | VARCHAR | Biografi pengguna |
profile_image | VARCHAR | URL gambar profil |
created_at | TIMESTAMP | Waktu pembuatan akun |
updated_at | TIMESTAMP | Waktu pembaruan terakhir |
Tabel orders
Kolom | Tipe Data | Deskripsi |
---|---|---|
order_id | INT | Primary key, auto-increment |
user_id | INT | Foreign key ke tabel users |
total_amount | DECIMAL | Total harga pesanan |
status | VARCHAR | Status pesanan (pending, completed, cancelled) |
created_at | TIMESTAMP | Waktu pembuatan pesanan |
updated_at | TIMESTAMP | Waktu pembaruan terakhir |
Tabel order_items
Kolom | Tipe Data | Deskripsi |
---|---|---|
item_id | INT | Primary key, auto-increment |
order_id | INT | Foreign key ke tabel orders |
product_id | INT | Foreign key ke tabel products |
quantity | INT | Jumlah produk dalam pesanan |
price | DECIMAL | Harga produk per item |
Tabel products
Kolom | Tipe Data | Deskripsi |
---|---|---|
product_id | INT | Primary key, auto-increment |
name | VARCHAR | Nama produk |
price | DECIMAL | Harga produk |
stock | INT | Jumlah stok produk |
created_at | TIMESTAMP | Waktu pembuatan produk |
updated_at | TIMESTAMP | Waktu pembaruan terakhir |
Tabel store
Kolom | Tipe Data | Deskripsi |
---|---|---|
store_id | INT | Primary key, auto-increment |
name | VARCHAR | Nama toko |
location | VARCHAR | Lokasi toko |
created_at | TIMESTAMP | Waktu pembuatan toko |
updated_at | TIMESTAMP | Waktu pembaruan terakhir |
Tabel notifications
Kolom | Tipe Data | Deskripsi |
---|---|---|
notification_id | INT | Primary key, auto-increment |
user_id | INT | Foreign key ke tabel users |
message | VARCHAR | Pesan notifikasi |
created_at | TIMESTAMP | Waktu pembuatan notifikasi |
Tabel loyalty_points
Kolom | Tipe Data | Deskripsi |
---|---|---|
point_id | INT | Primary key, auto-increment |
user_id | INT | Foreign key ke tabel users |
points | INT | Jumlah poin yang dimiliki pengguna |
created_at | TIMESTAMP | Waktu pembuatan poin |
Berikut adalah implementasi SQL untuk membuat tabel-tabel di atas:
Desain UI
Desain UI (User Interface) adalah tata letak dan tampilan antarmuka pengguna yang digunakan dalam aplikasi. Berikut adalah desain UI untuk aplikasi Starbucks berbasis layanan take-out.
Komentar
Posting Komentar