ETS PPL A
Nama : Yohanes Teguh Ukur Ginting
NRP : 5025211179
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
Soal
1. Apakah perbedaan model analysis dengan model desain?
Secara garis besar, perbedaan utama dari model analysis dan model desain adalah karena Model analysis memiliki fokus mendalam pada bidang pengidentifikasian dan pemahaman masalah serta kebutuhan sedangkan model desain lebih fokus kepada merancang solusi yang memenuhi persyaratan yang telah ditetapkan dalam analysis.
Berikut merupakan point-point perbedaan antara model analysis dan model desain:
Model Analisis:
Model analisis berkaitan dengan memahami masalah, kebutuhan, dan persyaratan dari produk atau sistem yang akan dikembangkan.
Tujuan utama dari model analisis adalah untuk mengidentifikasi masalah, mendefinisikan kebutuhan pengguna, memahami batasan-batasan, dan menentukan solusi yang memenuhi persyaratan.
Proses analisis ini melibatkan pengumpulan informasi, pemodelan konsep, identifikasi alternatif solusi, dan evaluasi risiko.
Output dari model analisis berupa spesifikasi kebutuhan, skenario pengguna, dan pemahaman yang mendalam tentang masalah yang akan dipecahkan.
Model Desain:
Model desain berkaitan dengan merancang solusi yang memenuhi persyaratan yang telah ditetapkan dalam tahap analisis.
Tujuan utama dari model desain adalah mengembangkan rancangan yang jelas dan terperinci dari produk atau sistem, yang mencakup struktur, fungsi, antarmuka, dan fitur-fitur teknis.
Proses desain ini melibatkan pembuatan diagram, prototipe, simulasi, dan spesifikasi teknis yang lebih rinci.
Output dari model desain berupa desain produk atau sistem yang siap untuk implementasi, termasuk blueprint, diagram desain, dan dokumen teknis yang mendetail.
2. Jelaskan output proses Desain Aplikasi?
Terdapat beberapa output dalam proses desain aplikasi, seperti:
Wireframes dan Mockups:
Wireframes adalah representasi visual sederhana dari antarmuka pengguna (UI) yang menunjukkan tata letak elemen-elemen utama dalam aplikasi tanpa detail visual. Mockups adalah versi lebih rinci dari wireframes yang mencakup elemen-elemen visual seperti warna, font, dan gambar, memberikan representasi yang lebih mendekati tampilan akhir aplikasi.
Prototipe Interaktif:
Prototipe interaktif adalah versi fungsional sederhana dari aplikasi yang memungkinkan pengguna untuk menjelajahi dan berinteraksi dengan antarmuka pengguna serta fitur-fitur utama. Prototipe ini membantu dalam memvalidasi desain dan mengumpulkan umpan balik dari pengguna sebelum pengembangan sebenarnya dimulai.
Diagram Arsitektur:
Diagram arsitektur menjelaskan struktur keseluruhan aplikasi, termasuk komponen-komponen utama, aliran data, dan interaksi antara komponen-komponen tersebut. Ini membantu pengembang memahami bagaimana aplikasi akan dibangun dan diimplementasikan.
Spesifikasi Fungsional dan Teknis:
Dokumen spesifikasi fungsional menggambarkan fitur-fitur dan fungsionalitas yang akan disertakan dalam aplikasi, sering kali dalam bentuk daftar kebutuhan.Spesifikasi teknis merinci teknologi, platform, bahasa pemrograman, dan alat-alat yang akan digunakan dalam pengembangan aplikasi.
Desain Basis Data:
Desain basis data mendefinisikan struktur database aplikasi, termasuk tabel, kolom, hubungan antar tabel, dan kunci primer dan asing. Ini penting untuk memastikan penyimpanan dan pengelolaan data yang efisien dan efektif.
Guidelines Desain:
Guidelines desain adalah panduan yang merinci prinsip-prinsip desain, pola-pola desain, dan standar UI/UX yang harus diikuti dalam pengembangan aplikasi.Hal ini membantu memastikan konsistensi dan keseragaman antarmuka pengguna di seluruh aplikasi.
3. Visualisasikan Deskripsi dari apclikasi parkir berikut (Studi Kasus)
4. Buat HLD dan LLD dari rancangan desain aplikasi parkir (Studi Kasus)
High-Level Design (HLD)
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
Estimasi Kapasitas
Dengan menganalisis seluruh data, kita dapat menghitung kapasitas penyimpanan yang dibutuhkan sepanjang tahun. Berikut adalah perhitungan sederhana yang dapat kita lakukan.
Kita asumsikan bahwa setiap entri pengguna dalam basis data dianggap sebesar dan juga setiap transaksi memerlukan ruang sebesar
. Setiap tempat parkir memerlukan ruang sebesar
(untuk menyimpan detail tempat parkir, tarif parkir, dan sebagainya). Maka, total penyimpanan yang diperlukan adalah sebagai berikut.
Jika transaksi dipertahankan dalam basis data selama 1 tahun, maka total estimasi total penyimpanan yang diperlukan selama 1 tahun sebagai berikut.
Arsitektur Sistem
Kita akan menggunakan arsitektur microservices untuk membangun sistem aplikasi reservasi tempat parkir. Arsitektur microservices merupakan pendekatan pengembangan perangkat lunak yang membagi aplikasi menjadi beberapa layanan kecil yang berdiri sendiri dan berkomunikasi satu sama lain melalui antarmuka yang didefinisikan. Setiap layanan memiliki tanggung jawab yang terbatas dan dapat dikembangkan, dideploy, dan diukur secara independen. Kita dapat membagi layanan pada sistem aplikasi sebagai berikut.
- User Management Service
- Registrasi Pengguna: Mengelola sistem registrasi pengguna, menyimpan informasi penting yang meliputi nama pengguna, email, kata sandi, dan data nomor registrasi dengan aman.
- Otentikasi: Memvalidasi kredensial pengguna selama durasi prosedur login dengan menggunakan strategi yang stabil.
- Manajemen Profil: Memungkinkan pengguna untuk memperbarui dan mengelola profil mereka, dan nomor kontak mereka.
- Reservation Microservice
- Penanganan Reservasi: Mengelola cara membuat reservasi area parkir, serta memeriksa ketersediaan dan menetapkan area.
- Detail Reservasi: Menyimpan informasi yang mencakup waktu reservasi, durasi, dan pengguna terkait.
- Pengambilan Riwayat: Menyediakan kemampuan untuk mengambil riwayat reservasi pengguna.
- Payment Microservice:
- Pemrosesan Pembayaran: Memulai dan memproses pembayaran untuk layanan parkir terutama berdasarkan reservasi.
- Catatan Transaksi: Menyimpan informasi transaksi pembayaran, termasuk jumlah, pengguna, dan reservasi terkait.
Desain Basis Data
Berikut adalah desain basis data pada aplikasi sistem parkir.
Basis data terdiri dari 5 tabel, yakni tabel user, transaksi, tempat parkir, kendaraan, dan pelanggaran. Dari 5 tabel tersebut, sistem dapat melakukan manajemen user, tempat parkir, dan kendaraan, dapat merekapitulasi laporan pendapatan akhir, hingga menangani pelanggaran yang mungkin dilakukan oleh beberapa pengguna.
Desain Antarmuka
Berikut adalah desain antarmuka yang mungkin bisa diterapkan dalam aplikasi sistem manajemen parkir.
Aplikasi dapat memperbesar foto kendaraan saat masuk ke tempat parkir
Aplikasi dapat men-generate tiket parkir yang hilang
Iuran member per hari atau per bulan
(Sumber gambar: https://sistemparkir.com/software-parkir)
Teknologi yang Digunakan
- Lingkungan Pengembangan
- Sistem operasi: Linux (Ubuntu), Windows
- IDE: Visual Studio Code, IntelliJ IDEA
- Bahasa Pemrograman
- Back-End
- Java dengan framework Spring Boot atau Jakarta EE (untuk aplikasi berbasis Java)
- Python dengan framework Django atau Flask (untuk aplikasi berbasis Python)
- Node.js dengan framework Express.js (untuk aplikasi berbasis JavaScript)
- PHP dengan framework Laravel atau CodeIgniter (opsional, tergantung preferensi)
- Front-End
- HTML, CSS, JavaScript
- Framework JavaScript: React.js, Angular, Vue.js
- Basis Data
- MySQL atau PostgreSQL untuk basis data relasional
- MongoDB untuk basis data NoSQL (jika diperlukan fleksibilitas skema)
- Server
- Apache HTTP Server atau Nginx untuk server web
- Apache Tomcat atau Jetty (opsional, untuk aplikasi Java)
- Express.js (opsional, untuk aplikasi Node.js)
Low-Level Design (LLD)
Komponen
Berikut adalah komponen dari aplikasi sistem parkir.
Algoritma
Algoritma yang digunakan dalam mengalokasikan slot parkir sebagai berikut.
Implementasi
Implementasi pembuatan tabel pada basis data yang telah dibuat model datanya sebelumnya menggunakan SQL sebagai berikut.
Tabel tempat_parkir
CREATE TABLE tempat_parkir (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_tempat_parkir VARCHAR(100) NOT NULL,
jenis_tempat VARCHAR(5) NOT NULL,
tarif NUMBER(10, 2) NOT NULL
);
Tabel transaksi
CREATE TABLE transaksi (
id INT AUTO_INCREMENT PRIMARY KEY,
waktu_transaksi TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
jenis_transaksi SMALLINT NOT NULL,
FOREIGN KEY (kendaraan_id) REFERENCES kendaraan(id),
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (tempat_parkir_id) REFERENCES tempat_parkir(id)
);
Tabel user
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_user VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
kata_sandi VARCHAR(100) NOT NULL,
role VARCHAR(5) NOT NULL
);
Tabel kendaraan
CREATE TABLE kendaraan (
id INT AUTO_INCREMENT PRIMARY KEY,
plat_nomor VARCHAR(20) NOT NULL,
jenis_kendaraan VARCHAR(10) NOT NULL,
waktu_masuk DATE NOT NULL,
waktu_keluar DATE NOT NULL,
biaya NUMBER(10, 2) NOT NULL
);
Tabel pelanggaran
CREATE TABLE pelanggaran (
id INT AUTO_INCREMENT PRIMARY KEY,
waktu_pelanggaran DATE NOT NULL,
jenis_pelanggaran VARCHAR(256) NOT NULL,
FOREIGN KEY (user_id) REFERENCES user(id)
);
Sedangkan implementasi kode API sebagai berikut.
- User Registration (POST)
- Endpoint: /api/user/register
- Deskripsi: Memungkinkan pengguna membuat akun dengan aman
Request:
{
"username": "username",
"password": "password",
"email": "user@example.com",
"address": "123 Main St, City",
"phone": "+1234567890"
}
Response:
{
"message": "User registered successfully",
"userId": "12345",
"token": "authentication_token"
}
- User Login (POST)
- Endpoint: /api/user/login
- Deskripsi: Memungkinkan pengguna login dengan akun yang telah dibuat
Request:
{
"username": "username",
"password": "password"
}
Response:
{
"message": "Login successful",
"userId": "12345",
"token": "authentication_token"
}
- Parking Lot Searching (GET)
- Endpoint: /api/parking/search?location=City&availability=available&type=car
- Deskripsi: memungkin pencarian sebuah tempat parkir
Response:
[
{
"parkingId": "abc123",
"location": "123 Main St, City",
"type": "car",
"availability": true
},
{
"parkingId": "def456",
"location": "456 Elm St, City",
"type": "car",
"availability": false
}
]
- Parking Lot Reservation (GET)
- Endpoint: /api/parking/reserve
- Deskripsi: memungkinkan pengguna melakukan reservasi di sebuah slot parkir
Request:
{
"userId": "12345",
"parkingId": "abc123",
"duration": "2 hours"
}
Response:
{
"message": "Parking reserved successfully",
"reservationId": "res123",
"parkingId": "abc123"
}
- Payment (POST)
- Endpoint: /api/parking/pay
- Deskripsi: memungkinkan pengguna melakukan pembayaran atas sebuah transaksi
Request:
{
"reservationId": "res123",
"amount": 10.50,
"paymentMethod": "credit_card"
}
Response:
{
"message": "Payment successful",
"reservationId": "res123",
"amount": 10.50
}
5. Gambarkan Arsitektur dari Aplikasi Parkir yang akan dibangun (Studi Kasus)
Berikut adalah skema arsitektur dari aplikasi parkir yang akan dibangun.
Berdasarkan diagram di atas, sistem ini mampu mengalokasikan tempat parkir yang kosong kepada pengemudi berdasarkan permintaan melalui ponsel mereka. Berikut adalah prosesnya.
- Proses ini melibatkan pendaftaran akun pengguna melalui aplikasi mobile.
- Selanjutnya, untuk memesan tempat parkir yang tersedia, pengguna dapat mencari tempat parkir kosong yang paling dekat dengan tujuan yang diinginkan dengan memasukkan tujuan ke dalam aplikasi mobile.
- Permintaan tersebut dikirim ke layanan web back-end yang mencari tempat parkir kosong berdasarkan informasi sensor yang diterima dan mengirimkan pesan instruksi yang diperlukan kepada pengemudi, yang menyatakan tempat parkir serta rute yang direkomendasikan.
Perancangan sistem dibagi menjadi dua segmen, yaitu:
- Perancangan rangkaian perangkat keras dan pertimbangan teknik penginderaan melalui sensor yang telah dipasang
- Perancangan dan pengembangan perangkat lunak: API dan aplikasi mobile
6. Dokumentasikan dan Demokan dalam Video Youtube dari rancangan aplikasi yang telah dibangun
Comments
Post a Comment