Nama: Arif Nugraha Santosa
NRP: 5025211048
Kelas: Perancangan Perangkat Lunak (A)
ETS PPL A
1. Apakah perbedaan model analysis dengan model desain?
Model Analisis
- Fokus: Memahami kebutuhan dan permasalahan yang akan diatasi oleh perangkat lunak.
- Tujuan: Menghasilkan spesifikasi perangkat lunak yang jelas dan lengkap, yang mencakup:
- Kebutuhan fungsional: Apa yang harus dilakukan perangkat lunak?
- Kebutuhan non-fungsional: Bagaimana perangkat lunak harus berperilaku? (misalnya: performa, keamanan, usability)
- Batasan dan asumsi: Apa saja batasan dan asumsi yang mendasari desain perangkat lunak?
- Aktivitas utama:
- Pengumpulan dan analisis kebutuhan: Memahami kebutuhan pengguna dan pemangku kepentingan lainnya.
- Pemodelan proses bisnis: Menentukan bagaimana proses bisnis akan dijalankan oleh perangkat lunak.
- Pemodelan data: Menentukan data apa yang dibutuhkan oleh perangkat lunak dan bagaimana data tersebut akan disimpan dan dimanipulasi.
Model Desain
- Fokus: Menerjemahkan spesifikasi perangkat lunak ke dalam solusi teknis yang konkret.
- Tujuan: Menghasilkan arsitektur perangkat lunak yang detail dan terdokumentasi dengan baik, yang mencakup:
- Komponen perangkat lunak: Apa saja komponen utama dari perangkat lunak?
- Antarmuka: Bagaimana komponen-komponen tersebut akan berinteraksi satu sama lain?
- Teknologi: Teknologi apa yang akan digunakan untuk membangun perangkat lunak?
- Aktivitas utama:
- Desain arsitektur: Menentukan struktur keseluruhan dari perangkat lunak.
- Desain detail: Merancang setiap komponen perangkat lunak secara detail.
- Pemilihan teknologi: Memilih teknologi yang tepat untuk membangun perangkat lunak.
PERBEDAAN UTAMA
Model analisis dan model desain saling berkaitan erat. Model analisis memberikan dasar bagi model desain, dan model desain menerjemahkan spesifikasi perangkat lunak ke dalam solusi teknis yang konkret. Dengan pemahaman yang baik tentang kedua model ini, pengembang perangkat lunak dapat merancang perangkat lunak yang memenuhi kebutuhan pengguna dan pemangku kepentingan lainnya.
2. Jelaskan output proses Desain Aplikasi?
STUDI KASUS
Aplikasi Sistem Parkir
Aplikasi sistem parkir adalah perangkat lunak yang dirancang untuk mengelola tempat parkir dan pergerakan kendaraan di area tertentu. Sistem ini dapat digunakan di berbagai tempat, seperti:
Mal
Gedung perkantoran
Rumah sakit
Bandara
Tempat wisata
Universitas
Aplikasi sistem parkir menawarkan berbagai fitur dan manfaat, antara lain:
Memudahkan pengendara untuk menemukan tempat parkir yang tersedia
Mempercepat proses pembayaran parkir
Meningkatkan keamanan kendaraan
Menganalisis data penggunaan parkir
Meningkatkan pendapatan dari parkir
Spesifikasi Kebutuhan Perangkat Lunak Sistem Parkir
Kebutuhan Fungsional
Manajemen tempat parkir:
Menambahkan, menghapus, dan memodifikasi informasi tempat parkir
Menentukan jenis tempat parkir (misalnya, mobil, motor, VIP)
Menentukan tarif parkir untuk setiap jenis tempat parkir
Melacak ketersediaan tempat parkir secara real-time
Manajemen kendaraan:
Mendaftarkan kendaraan yang masuk dan keluar area parkir
Menerbitkan tiket parkir
Memproses pembayaran parkir
Menangani pelanggaran parkir
Manajemen pengguna:
Menambahkan, menghapus, dan memodifikasi informasi pengguna
Menetapkan peran dan akses pengguna
Melacak aktivitas pengguna
Pelaporan:
Menghasilkan laporan pendapatan parkir
Menghasilkan laporan penggunaan parkir
Menghasilkan laporan pelanggaran parkir
Kebutuhan Non-fungsional
Keamanan:
Melindungi data pengguna dari akses yang tidak sah
Mencegah penipuan dan pencurian
Ketersediaan:
Sistem harus tersedia 24/7
Sistem harus dapat diakses dari berbagai perangkat
Skalabilitas:
Sistem harus dapat menampung jumlah pengguna dan kendaraan yang besar
Sistem harus dapat diubah untuk memenuhi kebutuhan yang berubah
Kinerja:
Sistem harus responsif dan efisien
Sistem harus dapat menangani beban puncak
Persyaratan Tambahan
Integrasi dengan sistem lain:
Sistem harus dapat diintegrasikan dengan sistem kontrol akses
Sistem harus dapat diintegrasikan dengan sistem pembayaran elektronik
Dukungan multi-bahasa:
Sistem harus mendukung beberapa bahasa
Aksesibilitas:
Sistem harus dapat diakses oleh penyandang disabilitas
3. Visualisasikan Deskripsi dari apclikasi parkir berikut
4. Buat HLD dan LLD dari rancangan desain aplikasi parkir (Studi Kasus)
High Level Design:
1. Arsitektur Sistem
- Arsitektur Client-Server:
- Server:
- Menyimpan data aplikasi, seperti informasi tempat parkir, kendaraan, pengguna, dan transaksi.
- Memproses logika bisnis, seperti manajemen tempat parkir, manajemen kendaraan, manajemen pengguna, dan pelaporan.
- Menyediakan API untuk client untuk berinteraksi dengan data dan logika bisnis.
- Client:
- Menampilkan antarmuka pengguna (UI) kepada pengguna.
- Berkomunikasi dengan server melalui API untuk mengambil data, mengirimkan permintaan, dan menerima respons.
- Client dapat berupa aplikasi web, aplikasi mobile, atau machine-to-machine (M2M) app.
- Server:
2. Teknologi
- Bahasa Pemrograman: Python, Java, atau C#
- Framework: Django, Spring Boot, atau ASP.NET
- Basis Data: PostgreSQL, MySQL, atau Oracle
- Cloud Platform: AWS, Azure, atau GCP
- Teknologi Lainnya:
- WebSocket untuk komunikasi real-time antara client dan server.
- Mobile SDK untuk pengembangan aplikasi mobile.
- Sistem pembayaran elektronik untuk integrasi dengan penyedia pembayaran.
3. Desain Antarmuka Pengguna (UI)
- UI yang mudah digunakan dan intuitif:
- Desain yang bersih dan modern.
- Navigasi yang mudah.
- Ikon dan tombol yang jelas.
- Teks yang mudah dibaca.
- UI yang responsif dan dapat diakses:
- Bekerja dengan baik di berbagai perangkat, seperti desktop, tablet, dan smartphone.
- Dapat diakses oleh penyandang disabilitas.
- UI yang mendukung multi-bahasa:
- Mendukung beberapa bahasa untuk mengakomodasi pengguna dari berbagai negara.
4. Keamanan
- Autentikasi dan otorisasi:
- Pengguna harus masuk dengan nama pengguna dan kata sandi yang aman.
- Pengguna hanya boleh mengakses data dan fungsionalitas yang diizinkan berdasarkan peran mereka.
- Enkripsi:
- Data yang sedang transit dan data yang disimpan harus dienkripsi.
- Pemantauan keamanan:
- Sistem harus secara teratur dipantau untuk mendeteksi dan mencegah pelanggaran keamanan.
5. Skalabilitas
- Sistem harus dapat menampung jumlah pengguna dan kendaraan yang besar.
- Sistem harus dapat diubah untuk memenuhi kebutuhan yang berubah.
- Arsitektur serverless atau microservices dapat digunakan untuk meningkatkan skalabilitas.
6. Kinerja
- Sistem harus responsif dan efisien.
- Sistem harus dapat menangani beban puncak.
- Teknologi caching dan load balancing dapat digunakan untuk meningkatkan kinerja.
7. Pengujian
- Sistem akan diuji secara menyeluruh untuk memastikan bahwa memenuhi semua persyaratan.
- Pengujian akan mencakup pengujian unit, pengujian integrasi, pengujian sistem, dan pengujian penerimaan pengguna.
8. Implementasi
- Pengembangan berulang:
- Sistem akan dikembangkan secara berulang.
- Setiap iterasi akan fokus pada pengembangan satu set fitur tertentu.
- Pengujian akan dilakukan setelah setiap iterasi.
- Metodologi pengembangan agile:
- Metodologi pengembangan agile, seperti Scrum atau Kanban, dapat digunakan untuk meningkatkan fleksibilitas dan kolaborasi.
9. Pemantauan dan Logging
- Sistem harus dimonitor secara real-time untuk mendeteksi dan menyelesaikan masalah.
- Log harus disimpan untuk tujuan debugging dan auditing.
10. Dokumentasi
- Dokumentasi yang komprehensif harus dibuat untuk semua aspek sistem.
- Dokumentasi harus mencakup:
- Arsitektur sistem.
- Desain UI.
- Kode sumber.
- Instruksi manual.
- Dokumentasi API.
- Dokumentasi harus mencakup:
Kesimpulan
High-level design ini memberikan gambaran menyeluruh tentang arsitektur, teknologi, UI, keamanan, skalabilitas, kinerja, pengujian, implementasi, pemantauan, logging, dan dokumentasi aplikasi parkir. Desain ini dapat digunakan sebagai panduan untuk pengembangan aplikasi yang komprehensif, mudah digunakan, aman, dan skalabel.
Low Level Design:
Protokol Komunikasi
- Aplikasi klien (aplikasi web, aplikasi seluler) dapat berkomunikasi dengan server menggunakan API RESTful.
- API harus ditentukan untuk fungsionalitas seperti:
- Menampilkan daftar tempat parkir yang tersedia.
- Memesan tempat parkir.
- Memproses pembayaran (berpotensi terintegrasi dengan API gateway pembayaran).
- Mengambil riwayat parkir.
Pertimbangan Keamanan
- Implemenkan autentikasi dan otorisasi pengguna untuk membatasi akses ke data sensitif dan fungsionalitas.
5. Gambarkan Arsitektur dari Aplikasi Parkir yang akan dibangun (Studi Kasus)
Arsitektur Client-Server:
-
Aplikasi Client:
- Dapat berupa aplikasi web yang diakses melalui browser, aplikasi mobile native untuk Android atau iOS, atau mesin-ke-mesin (M2M) app untuk perangkat IoT seperti sensor parkir.
- Bertanggung jawab untuk:
- Menampilkan antarmuka pengguna (UI) kepada pengguna.
- Mengirim permintaan ke server API untuk mengambil data, mengirimkan permintaan, dan menerima respons.
- Menangani interaksi pengguna, seperti login, pencarian tempat parkir, pemesanan, dan pembayaran.
-
Server Aplikasi:
- Dapat diimplementasikan menggunakan berbagai teknologi server seperti Java, Python, atau Node.js.
- Bertanggung jawab untuk:
- Menyimpan data aplikasi, seperti informasi tempat parkir, kendaraan, pengguna, dan transaksi.
- Memproses logika bisnis, seperti manajemen tempat parkir, manajemen kendaraan, manajemen pengguna, dan pelaporan.
- Menyediakan API untuk client untuk berinteraksi dengan data dan logika bisnis.
Komponen Utama:
-
Modul Manajemen Tempat Parkir:
- Mengelola informasi tempat parkir, seperti lokasi, jenis, kapasitas, dan ketersediaan.
- Memproses permintaan untuk mencari tempat parkir yang tersedia berdasarkan kriteria pengguna.
- Memperbarui informasi ketersediaan tempat parkir secara real-time.
-
Modul Manajemen Kendaraan:
- Mengelola informasi kendaraan, seperti plat nomor, jenis, dan waktu masuk/keluar.
- Memproses permintaan untuk memesan tempat parkir dan menerbitkan karcis parkir.
- Menangani pembayaran parkir dan mengintegrasikan dengan sistem pembayaran elektronik.
-
Modul Manajemen Pengguna:
- Mengelola informasi pengguna, seperti nama, email, dan kata sandi.
- Memproses pendaftaran dan autentikasi pengguna.
- Memberikan akses ke fungsionalitas aplikasi berdasarkan peran pengguna.
-
Modul Pelaporan:
- Menghasilkan laporan tentang penggunaan tempat parkir, pendapatan parkir, dan pelanggaran parkir.
- Menyediakan data untuk analisis dan pengambilan keputusan.
Integrasi Sistem:
-
Sistem Kontrol Akses:
- Aplikasi parkir dapat diintegrasikan dengan sistem kontrol akses untuk memungkinkan pengguna membuka pintu gerbang dan lift dengan kartu parkir mereka.
-
Sistem Pembayaran Elektronik:
- Aplikasi parkir dapat diintegrasikan dengan sistem pembayaran elektronik untuk memungkinkan pengguna membayar parkir dengan dompet digital.
Pertimbangan Skalabilitas:
-
Arsitektur serverless atau microservices:
- Arsitektur serverless atau microservices dapat digunakan untuk meningkatkan skalabilitas aplikasi dengan memungkinkan penambahan sumber daya secara horizontal sesuai kebutuhan.
-
Caching:
- Caching dapat digunakan untuk menyimpan data yang sering diakses, seperti informasi tempat parkir yang tersedia, untuk mengurangi beban pada database dan meningkatkan waktu respons.
-
Load balancing:
- Load balancing dapat digunakan untuk mendistribusikan lalu lintas antar beberapa server aplikasi untuk meningkatkan kinerja dan ketersediaan.
Keamanan:
-
Autentikasi dan otorisasi:
- Pengguna harus masuk dengan nama pengguna dan kata sandi yang aman.
- Pengguna hanya boleh mengakses data dan fungsionalitas yang diizinkan berdasarkan peran mereka.
-
Enkripsi:
- Data yang sedang transit dan data yang disimpan harus dienkripsi.
-
Pemantauan keamanan:
- Sistem harus secara teratur dipantau untuk mendeteksi dan mencegah pelanggaran keamanan.
Pemantauan dan Logging:
-
Pemantauan sistem:
- Sistem harus dimonitor secara real-time untuk mendeteksi dan menyelesaikan masalah.
-
Logging:
- Log harus disimpan untuk tujuan debugging dan auditing.
6. Dokumentasi dan Demo