Nama : Cindi Dwi Pramudita
NRP : 5025201042
Kelas : Perancangan Perangkat Lunak A
High & Low Level Design Campuspedia Academy
Pada pertemuan keempat di kelas PPL A, kita diminta untuk mengamati/mencari informasi sebuah aplikasi kemudian menggambarkan bagaimana bentuk Low Level Design dan High Level Designnya. Referensi dapat dicari dari paperwork, jurnal, maupun dokumentasi aplikasi.
A. Deskripsi Singkat
Campuspedia Academy adalah platform online yang memungkinkan siswa untuk mendaftar dan mengikuti kelas pelatihan, serta memungkinkan admin untuk mengelola kelas, memantau pendaftaran, dan mengelola transaksi pembayaran. Campuspedia Academy juga memiliki fitur chat online untuk komunikasi antara siswa dan admin.
B. System Requirements
a. Persyaratan Fungsional:
- Registrasi dan Login: Siswa dapat membuat akun baru dan login ke dalam sistem.
- Manajemen Profil: Siswa dapat mengelola informasi profil mereka.
- Manajemen Kelas: Admin dapat membuat, mengedit, dan menghapus kelas pelatihan.
- Pencarian Kelas: Siswa dapat mencari kelas pelatihan berdasarkan kata kunci.
- Pendaftaran Kelas: Siswa dapat mendaftar ke kelas pelatihan yang mereka pilih.
- Pembayaran: Siswa dapat melakukan pembayaran untuk pendaftaran kelas.
- Pembuatan dan Pengiriman Invoice: Sistem dapat membuat dan mengirimkan invoice pembayaran.
- Kode Kupon: Siswa dapat menggunakan kode kupon untuk diskon.
- Notifikasi: Sistem memberikan notifikasi terkait aktivitas penting.
- Chat Online: Siswa dapat berkomunikasi dengan admin melalui chat online.
b. Persyaratan Non Fungsional:
- Scalability: Sistem harus mampu menangani pertumbuhan jumlah pengguna dan data.
- Availability: Sistem harus tersedia 99.9% dari waktu.
- Performance: Latensi untuk memuat halaman tidak boleh lebih dari 2 detik.
- Security: Data pengguna harus dilindungi dari akses yang tidak sah.
- Data Consistency: Data harus konsisten di seluruh sistem.
c. Persyaratan yang Diperpanjang:
- Multilingual Support: Dukungan untuk berbagai bahasa.
- Analytics: Fitur analitik untuk pengguna dan administrator.
- API: API terbuka untuk memungkinkan integrasi pihak ketiga.
C. Estimasi Kapasitas Perancangan Sistem Campuspedia Academy
a. Estimasi Lalu Lintas
- Pengguna Aktif Harian (DAU): 50,000 pengguna.
- Pendaftaran Kelas per Detik: 500 pendaftaran per detik.
- Request per Detik: 5,000 request per detik (termasuk pendaftaran, pencarian, login, dll).
b. Estimasi Penyimpanan
- Ukuran Data Pengguna: 5 KB per pengguna.
- Ukuran Data Kelas: 50 KB per kelas.
- Penyimpanan Harian: 500 pendaftaran/detik * 5 KB * 86400 detik = 2.16 GB/hari.
- Penyimpanan Tahunan: 2.16 GB/hari * 365 hari = 788.4 GB/tahun.
c. Estimasi Bandwidth
- Ukuran Data per Request: Rata-rata 2 KB.
- Bandwidth per Detik: 5,000 request/detik * 2 KB = 10 MB/detik.
D. System Design
High-Level Design
- Load Balancer: Untuk mendistribusikan lalu lintas ke server.
- Web Servers: Menangani permintaan HTTP dari pengguna.
- Application Servers: Menjalankan logika aplikasi.
- Database Servers: Menyimpan data pengguna, kelas, pendaftaran, dan transaksi.
- Cache Servers: Menggunakan Redis atau Memcached untuk caching.
- Search Servers: Elasticsearch untuk mendukung pencarian.
- Message Queue: Untuk menangani tugas-tugas asynchronous.
- CDN (Content Delivery Network): Untuk mempercepat penyampaian konten ke pengguna.
Low-Level Design
- Database Sharding: Membagi data ke beberapa database untuk mengatasi beban tinggi.
- Indexing: Menggunakan indeks untuk mempercepat pencarian.
- Rate Limiting: Untuk mencegah penyalahgunaan API.
- Data Replication: Untuk memastikan data tersedia jika ada kegagalan.
- Security: Mengimplementasikan OAuth untuk otentikasi dan enkripsi SSL/TLS.
E. Data Model Design
Users Table: Menyimpan informasi pengguna.
ID
(Primary Key)Name
Email
Password
DOB
(Date of Birth)CreatedAt
UpdatedAt
Classes Table: Menyimpan informasi kelas.
ID
(Primary Key)Title
Description
Instructor
StartDate
EndDate
CreatedAt
UpdatedAt
Enrollments Table: Menyimpan pendaftaran kelas.
ID
(Primary Key)UserID
(Foreign Key)ClassID
(Foreign Key)EnrollmentDate
Payments Table: Menyimpan informasi pembayaran.
ID
(Primary Key)UserID
(Foreign Key)ClassID
(Foreign Key)Amount
PaymentDate
Invoices Table: Menyimpan informasi invoice.
ID
(Primary Key)UserID
(Foreign Key)ClassID
(Foreign Key)InvoiceDate
Amount
Coupons Table: Menyimpan informasi kode kupon.
ID
(Primary Key)Code
Discount
ExpiryDate
Chats Table: Menyimpan pesan chat.
ID
(Primary Key)SenderID
(Foreign Key)ReceiverID
(Foreign Key)Message
SentAt
F. Conclusion
Desain sistem Campuspedia Academy ini mencakup berbagai aspek dari kebutuhan fungsional dan non-fungsional hingga estimasi kapasitas dan desain sistem. Desain ini bertujuan untuk memastikan Campuspedia Academy dapat beroperasi secara efisien, aman, dan skalabel. Implementasi detail dan pengujian perlu dilakukan untuk memastikan semua persyaratan terpenuhi.
Arsitektur Sistem
a. Diagram Deployment
b. Diagram Komponen
Desain Basis Data a. CDM
b. PDMc. Data Flow Diagram (DFD) Konteks
Penjelasan :
- Antarmuka Pengguna: Pengguna berinteraksi dengan sistem melalui aplikasi seluler, antarmuka web, atau aplikasi desktop untuk mengakses kursus, materi pembelajaran, dan fitur lainnya.
- Layanan Otentikasi dan Registrasi: Layanan ini menangani proses otentikasi pengguna dan pendaftaran ke sistem. Semua pengguna, termasuk siswa, instruktur, dan administrator, menjalani proses otentikasi dan pendaftaran sebelum dapat mengakses kursus.
- Basis Data: Basis data digunakan untuk menyimpan informasi pengguna, detail kursus, materi pembelajaran, progres belajar, dan data lainnya yang diperlukan untuk sistem kursus online.
- Layanan Pembayaran: Bertanggung jawab atas pengelolaan pembayaran terkait langganan kursus, pembelian kursus individual, atau layanan tambahan lainnya yang tersedia dalam sistem.
- Layanan Kursus: Layanan ini menyediakan fungsionalitas untuk memperoleh dan mengakses kursus yang ditawarkan, termasuk navigasi kursus, materi pembelajaran, kuis, dan diskusi.
- Layanan Diskusi: Layanan ini memfasilitasi komunikasi antara siswa dan instruktur, serta antara sesama siswa, untuk berbagi pengetahuan, bertanya pertanyaan, dan mendiskusikan topik yang relevan dengan kursus.
- Layanan Pelacakan Progres: Layanan ini memungkinkan siswa untuk melacak progres mereka dalam kursus, termasuk penyelesaian modul, nilai kuis, dan kemajuan keseluruhan dalam kursus.
- Layanan Administrasi: Layanan ini diperuntukkan bagi administrator sistem untuk mengelola pengguna, kursus, materi pembelajaran, dan fitur lainnya, serta melacak statistik penggunaan sistem.
- Layanan Manajemen Materi Pembelajaran: Layanan ini memungkinkan instruktur untuk mengelola materi pembelajaran dalam kursus, termasuk mengunggah, mengedit, dan mengatur materi pembelajaran sesuai kebutuhan.
d. Diagram Use Case
e. Diagram Aktivitas
a. Melakukan Chat
b. Membeli Kelas
f. Desain Antarmuka Pengguna
a. Melakukan Chat
b. Membeli Kelas
g. Diagram Kelas
h. Diagram Sequence
a. Melakukan Chat
b. Membeli Kelas
Comments
Post a Comment