Evaluasi Tengah Semester (ETS)

 

Nama  : Fathin Muhashibi Putra
NRP    : 5025211229
Kelas  : PPL - A


ETS

     Berikut merupakan dokumentasi Evaluasi Tengah Semester (ETS) mata kuliah Perancangan Perangkat Lunak :

1. Apakah perbedaan model analysis dengan model desain?

Jawab :

Berikut merupakan perbedaan model analysis dengan model desain :


A. Model Analisis

    Model analisis adalah tahap awal dalam pengembangan perangkat lunak di mana fokus utamanya adalah untuk memahami masalah yang harus diselesaikan dan kebutuhan pengguna. Di sini, tim pengembang berusaha untuk:

a. Memahami Kebutuhan Pengguna: Identifikasi apa yang pengguna butuhkan dari perangkat lunak.

b. Mengidentifikasi Masalah: Analisis menyeluruh dilakukan untuk memahami masalah yang ingin dipecahkan oleh perangkat lunak.

c. Menentukan Kebutuhan Fungsional dan Non-Fungsional: Spesifikasi kebutuhan fungsional (apa yang sistem lakukan) dan non-fungsional (bagaimana sistem melakukannya) dikumpulkan.

d. Memodelkan Sistem: Model konseptual dari sistem dibuat, sering menggunakan alat seperti Use Case Diagrams, Sequence Diagrams, dll.

e. Validasi Kebutuhan: Kebutuhan dikonfirmasi dengan pemangku kepentingan untuk memastikan pemahaman yang benar.


B. Model Desain

    Model desain adalah langkah selanjutnya setelah analisis selesai. Di sini, berbagai aspek desain perangkat lunak diperhatikan, termasuk:


a. Arsitektur Sistem: Desain struktur keseluruhan sistem, termasuk bagaimana komponen perangkat lunak akan berinteraksi satu sama lain.

b. Desain Rinci: Merinci desain arsitektur menjadi komponen perangkat lunak yang lebih kecil, sering menggunakan diagram kelas, diagram urutan, dll.

c. Desain Antarmuka Pengguna: Membuat tata letak antarmuka pengguna, desain grafis, dll.

d. Desain Database: Merancang struktur database, tabel, dan hubungan antara entitas.

e. Desain Algoritma dan Logika Bisnis: Merancang algoritma dan logika yang akan digunakan dalam aplikasi.


C. Perbedaan Utama

a. Fokus: Model analisis berkaitan dengan memahami kebutuhan dan masalah, sementara model desain berkaitan dengan merancang solusi untuk masalah tersebut.

b. Abstraksi: Model analisis cenderung lebih abstrak dan konseptual, sedangkan model desain lebih detail dan konkret.

c. Tujuan: Tujuan analisis adalah mendapatkan pemahaman yang baik tentang masalah, sementara tujuan desain adalah merancang solusi yang dapat diimplementasikan.

d. Output (Keluaran): Hasil analisis adalah spesifikasi kebutuhan, model konseptual, dll., sementara hasil desain adalah desain sistem yang rinci, termasuk arsitektur, desain antarmuka pengguna, dll.



2. Jelaskan output proses Desain Aplikasi?

Jawab : 

    Output dari proses desain aplikasi adalah serangkaian dokumen yang merinci bagaimana aplikasi akan dibangun dan beroperasi. Hal ini mencakup berbagai elemen desain yang diperlukan untuk mengembangkan perangkat lunak yang sesuai dengan kebutuhan pengguna dan spesifikasi yang telah ditetapkan. Berikut merupakan beberapa output yang umum dari proses desain aplikasi:


1. Spesifikasi Desain:

  • Dokumen yang merinci desain keseluruhan aplikasi, termasuk deskripsi umum, tujuan, dan lingkup sistem.
  • Detail arsitektur sistem, termasuk komponen-komponen utama, hubungan antara komponen, dan aliran data.
  • Diagram aliran data (DFD) atau model lainnya yang menggambarkan aliran informasi dalam sistem.
  • Deskripsi kebutuhan fungsional dan non-fungsional yang akan dipenuhi oleh desain.

2. Desain Arsitektur:

  • Diagram arsitektur sistem yang menunjukkan komponen utama, lapisan aplikasi, dan interaksi antar mereka.
  • Rancangan sistem distribusi jika aplikasi akan diimplementasikan dalam lingkungan yang terdistribusi.
  • Detail tentang infrastruktur teknologi yang akan digunakan, seperti platform, database, dan alat pengembangan.

3. Desain Antarmuka Pengguna:

  • Wireframe atau prototipe antarmuka pengguna yang menunjukkan tata letak elemen-elemen antarmuka dan aliran navigasi.
  • Desain grafis, termasuk warna, jenis huruf, ikon, dan elemen desain visual lainnya.
  • Spesifikasi interaksi pengguna, seperti animasi, efek transisi, dan perilaku responsif.

4. Desain Database:

  • Skema database yang merinci struktur tabel, atribut, dan hubungan antara entitas.
  • Desain indeks, kunci, dan constraint database yang diperlukan untuk performa dan integritas data.
  • Model entitas-relasi (ER) atau diagram lain yang menggambarkan struktur dan hubungan dalam database.

5. Desain Komponen dan Logika Bisnis:

  • Rancangan komponen perangkat lunak, termasuk kelas, modul, atau layanan yang akan dibuat.
  • Detail logika bisnis atau algoritma yang akan digunakan dalam aplikasi, seperti algoritma pencarian, pengolahan data, dll.
  • Diagram aktivitas, diagram urutan, atau diagram lain yang menjelaskan alur logika aplikasi.

6. Dokumentasi Teknis:

  • Dokumentasi teknis yang merinci cara menggunakan, mengelola, dan memelihara aplikasi.
  • Petunjuk instalasi dan konfigurasi yang diperlukan untuk mengimplementasikan aplikasi.
  • Dokumentasi API (Application Programming Interface) jika aplikasi menawarkan antarmuka pemrograman untuk integrasi dengan sistem lain.


3. Visualisasikan Deskripsi dari aplikasi parkir berikut (Studi Kasus)

Jawab : 

    Berikut merupakan visualisasi dari aplikasi parkir :




4. Buat HLD dan LLD dari rancangan desain aplikasi parkir (Studi Kasus)

Jawab : 


    Aplikasi sistem parkir adalah perangkat lunak yang dirancang untuk mengelola dan mengoptimalkan penggunaan tempat parkir di berbagai lokasi seperti mal, gedung perkantoran, rumah sakit, bandara, tempat wisata, dan universitas. Fitur utamanya mencakup manajemen tempat parkir, kendaraan, dan pengguna, serta pelaporan pendapatan, penggunaan, dan pelanggaran parkir. Berikut merupakan high level design dan low level design dari aplikasi sistem parkir :

High Level Design (HLD)

A. Requirements (Kebutuhan)

Kebutuhan Fungsional

a. 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

b. Manajemen kendaraan:
  • Mendaftarkan kendaraan yang masuk dan keluar area parkir
  • Menerbitkan tiket parkir
  • Memproses pembayaran parkir
  • Menangani pelanggaran parkir

c. Manajemen pengguna:
  • Menambahkan, menghapus, dan memodifikasi informasi pengguna
  • Menetapkan peran dan akses pengguna
  • Melacak aktivitas pengguna

d. Pelaporan:
  • Menghasilkan laporan pendapatan parkir
  • Menghasilkan laporan penggunaan parkir
  • Menghasilkan laporan pelanggaran parkir

Kebutuhan Non-fungsional

a. Keamanan:
  • Melindungi data pengguna dari akses yang tidak sah
  • Mencegah penipuan dan pencurian

b. Ketersediaan:
  • Sistem harus tersedia 24/7
  • Sistem harus dapat diakses dari berbagai perangkat

c. Skalabilitas:
  • Sistem harus dapat menampung jumlah pengguna dan kendaraan yang besar
  • Sistem harus dapat diubah untuk memenuhi kebutuhan yang berubah

d. Kinerja:
  • Sistem harus responsif dan efisien
  • Sistem harus dapat menangani beban puncak

Persyaratan Tambahan

a. Integrasi dengan sistem lain:
  • Sistem harus dapat diintegrasikan dengan sistem kontrol akses
  • Sistem harus dapat diintegrasikan dengan sistem pembayaran elektronik

b. Dukungan multi-bahasa:
  • Sistem harus mendukung beberapa bahasa

c. Aksesibilitas:
  • Sistem harus dapat diakses oleh penyandang disabilitas

B. Capacity Assumptions

Untuk memperkirakan skala sistem dan mendapatkan gambaran tentang kebutuhan penyimpanan, perlu dibuat beberapa asumsi tentang data yang disimpan dan lalu lintas (traffic).

Berikut adalah beberapa asumsi untuk desain yang diberikan, dengan fokus pada satu tempat parkir:
  • Satu tempat parkir
  • Pengguna aktif harian = 1000
  • Pengguna aktif per detik = 0,01 pengguna/detik (sekitar)
  • Rata-rata Kendaraan Masuk per Menit = 100
  • Rata-rata Kendaraan Keluar per Menit = 100
  • Rata-rata Transaksi Pembayaran per Menit = 50
Estimasi Penyimpanan

Jika diasumsikan secara rata-rata:
  • Setiap entri pengguna dalam basis data adalah 1 KB (dengan alamat, informasi profil, dll.)
  • Setiap tempat parkir memerlukan ruang penyimpanan yang minimal, misalnya 100 MB untuk detail tempat parkir, pengaturan tarif, dll.
  • Setiap transaksi pembayaran memerlukan sekitar 1 KB ruang penyimpanan.
Total penyimpanan yang diperlukan:
  • 1000 pengguna x 1 KB per pengguna = 1 MB
  • 1 tempat parkir x 100 MB = 100 MB
  • 100 transaksi pembayaran per menit = 144.000 transaksi per hari (sekitar)
  • 144.000 transaksi per hari x 1 KB per transaksi = 144 MB per hari
Dengan asumsi kita mempertahankan data transaksi pembayaran selama 1 tahun:
  • 144 MB per hari x 365 hari = 52,56 GB per tahun


C. Necessary Components

    Berikut necessary components dari sistem aplikasi parkir :

a. Antarmuka Pengguna (User Interface) : Pengguna berinteraksi dengan sistem melalui aplikasi seluler, situs web, atau kios parkir.

b. Pemantauan Ketersediaan Tempat Parkir (Parking Availability Monitoring) : Layanan ini melacak ketersediaan tempat parkir secara real-time dan memberikan informasi kepada pengguna tentang tempat parkir yang tersedia di area yang diinginkan.

c. Layanan Pendaftaran Kendaraan (Vehicle Registration Service) : Bertanggung jawab untuk mendaftarkan kendaraan yang masuk dan keluar dari area parkir, menghasilkan tiket parkir, dan memasukkan data ke dalam basis data.

d. Sistem Pembayaran (Payment System) : Layanan ini memproses pembayaran parkir dari pengguna, baik melalui pembayaran tunai, kartu kredit, atau metode pembayaran elektronik lainnya.

e. Manajemen Pelanggaran Parkir (Parking Violation Management) : Mengelola pelanggaran parkir seperti kendaraan yang parkir di tempat yang tidak sesuai atau melebihi batas waktu parkir yang ditentukan.

f. Layanan Administrasi (Administration Services) : Memungkinkan admin untuk mengelola informasi tempat parkir, pengguna, dan aktivitas pengguna. Ini juga dapat mencakup pembuatan laporan dan analisis data.

g. Layanan Keamanan (Security Services) : Bertanggung jawab atas perlindungan data pengguna dari akses yang tidak sah dan mencegah penipuan atau pencurian di area parkir.

h. Integrasi Sistem (System Integration) : Memungkinkan integrasi dengan sistem kontrol akses dan sistem pembayaran elektronik untuk meningkatkan keamanan dan kenyamanan pengguna.

i. Layanan Pemantauan Kinerja (Performance Monitoring Service) : Memantau kinerja sistem secara keseluruhan untuk memastikan responsif dan efisiennya sistem, serta mengidentifikasi dan menangani beban puncak.

j. Layanan Pelaporan (Reporting Service) : Menghasilkan laporan pendapatan parkir, penggunaan parkir, dan pelanggaran parkir untuk memberikan wawasan kepada administrator dan pemangku kepentingan lainnya.


Low Level Design (LLD)

A. Teknologi

a. Lingkungan Pengembangan:
  • Sistem Operasi: Linux (Ubuntu) atau Windows 10/11
  • IDE (Integrated Development Environment): Visual Studio Code, IntelliJ IDEA, atau Eclipse
b. Bahasa Pemrograman:
Backend:
  • 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)
Frontend:
  • HTML, CSS, JavaScript (ES6+)
  • Framework JavaScript: React.js, Angular, atau Vue.js
c. Basis Data:
  • MySQL atau PostgreSQL untuk basis data relasional
  • MongoDB untuk basis data NoSQL (jika diperlukan fleksibilitas skema)

d. Server:
  • Apache HTTP Server atau Nginx untuk server web
  • Apache Tomcat atau Jetty (opsional, untuk aplikasi Java)
  • Express.js (opsional, untuk aplikasi Node.js)

e. Framework dan Library Tambahan:
Backend:
  • Spring Security (untuk keamanan)
  • Hibernate atau Spring Data JPA (untuk akses basis data)
  • JWT (JSON Web Tokens) untuk otentikasi API
Frontend:
  • Redux atau Context API untuk manajemen keadaan
  • Axios atau Fetch API untuk melakukan permintaan HTTP
  • Bootstrap, Material-UI, atau Tailwind CSS untuk desain responsif
f. Alat Pengembangan Tambahan:
  • Git untuk kontrol versi
  • Postman atau Insomnia untuk menguji API
  • Docker untuk kontainerisasi aplikasi
  • JUnit atau TestNG untuk pengujian otomatis (Java)
  • PyTest atau unittest untuk pengujian otomatis (Python)

B. Database

a. Model Database
    Berikut merupakan design model database yang digunakan dalam sistem aplikasi parkir :


b. SQL Code
    Berikut SQL code yang digunakan untuk design model database di atas : 

```
-- Tabel Tempat Parkir
CREATE TABLE TempatParkir (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama_tempat VARCHAR(100) NOT NULL,
    jenis_tempat ENUM('mobil', 'motor', 'VIP') NOT NULL,
    tarif DECIMAL(10, 2) NOT NULL
);

-- Tabel Pengguna
CREATE TABLE Pengguna (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama_pengguna VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    kata_sandi VARCHAR(100) NOT NULL,
    peran ENUM('admin', 'pengguna') NOT NULL,
    tempat_parkir_id INT,
    FOREIGN KEY (tempat_parkir_id) REFERENCES TempatParkir(id)
);

-- Tabel Kendaraan
CREATE TABLE Kendaraan (
    id INT AUTO_INCREMENT PRIMARY KEY,
    plat_nomor VARCHAR(20) NOT NULL,
    jenis_kendaraan ENUM('mobil', 'motor') NOT NULL,
    waktu_masuk DATETIME NOT NULL,
    waktu_keluar DATETIME,
    biaya DECIMAL(10, 2),
    tempat_parkir_id INT,
    FOREIGN KEY (tempat_parkir_id) REFERENCES TempatParkir(id)
);

-- Tabel Transaksi Parkir
CREATE TABLE TransaksiParkir (
    id INT AUTO_INCREMENT PRIMARY KEY,
    waktu_transaksi DATETIME NOT NULL,
    jenis_transaksi ENUM('masuk', 'keluar') NOT NULL,
    kendaraan_id INT NOT NULL,
    FOREIGN KEY (kendaraan_id) REFERENCES Kendaraan(id)
);

-- Tabel Pelanggaran Parkir
CREATE TABLE PelanggaranParkir (
    id INT AUTO_INCREMENT PRIMARY KEY,
    waktu_pelanggaran DATETIME NOT NULL,
    keterangan VARCHAR(255),
    kendaraan_id INT NOT NULL,
    FOREIGN KEY (kendaraan_id) REFERENCES Kendaraan(id)
);

-- Tabel Aktivitas Pengguna
CREATE TABLE AktivitasPengguna (
    id INT AUTO_INCREMENT PRIMARY KEY,
    waktu_aktivitas DATETIME NOT NULL,
    aktivitas VARCHAR(255) NOT NULL,
    pengguna_id INT NOT NULL,
    FOREIGN KEY (pengguna_id) REFERENCES Pengguna(id)
);

```

c. Communicating with The Server 

Berikut adalah kode untuk komunikasi dengan server dalam konteks sistem aplikasi parkir:

1. Pendaftaran Pengguna

Endpoint:
POST /api/users/register

Request:
```json
{
    "username": "username",
    "password": "password",
    "email": "user@example.com",
    "address": "123 Main St, City",
    "phone": "+1234567890"
}
```

Response:
```json
{
    "message": "User registered successfully",
    "userId": "12345",
    "token": "authentication_token"
}
```

2. Masuk Pengguna

Endpoint:
POST /api/users/login

Request:
```json
{
    "username": "username",
    "password": "password"
}
```

Response:
```json
{
    "message": "Login successful",
    "userId": "12345",
    "token": "authentication_token"
}
```

3. Pencarian Tempat Parkir

Endpoint:
GET /api/parking/search?location=City&availability=available&type=car

Response:
```json
[
    {
        "parkingId": "abc123",
        "location": "123 Main St, City",
        "type": "car",
        "availability": true
    },
    {
        "parkingId": "def456",
        "location": "456 Elm St, City",
        "type": "car",
        "availability": false
    }
]
```

4. Tempat Parkir Reservasi

Endpoint:
POST /api/parking/reserve

Request:
```json
{
    "userId": "12345",
    "parkingId": "abc123",
    "duration": "2 hours"
}
```

Response:
```json
{
    "message": "Parking reserved successfully",
    "reservationId": "res123",
    "parkingId": "abc123"
}
```

5. Pembayaran Parkir

Endpoint:
POST /api/parking/pay

Request:
```json
{
    "reservationId": "res123",
    "amount": 10.50,
    "paymentMethod": "credit_card"
}
```

Response:
```json
{
    "message": "Payment successful",
    "reservationId": "res123",
    "amount": 10.50
}
```

B. Design Interface

    Berikut merupakan design interface dari sistem aplikasi parkir :

a. Iuran member per-hari atau per-bulan



b. Men-generate tiket parkir hilang


c. Memperbesar Foto Kendaraan saat Masuk ke Area Parkir




5. Gambarkan Arsitektur dari Aplikasi Parkir yang akan dibangun (Studi Kasus)

Jawab : 


Berikut merupakan arsitektur dari aplikasi parkir yang akan dibangun :


a. Web Server: 

  • Sistem Operasi: Linux (Ubuntu) atau Windows 10/11
  • Web Server: Apache HTTP 
  • Server Basis Data: MySQL


b. Backend:

  • Bahasa Pemrograman: Java dengan framework Spring Boot
  • Keamanan: Spring Security
  • Akses Basis Data: Spring Data JPA
  • Otentikasi API: JSON Web Tokens (JWT)


c. Frontend:

  • Bahasa Pemrograman: HTML, CSS, JavaScript (ES6+)
  • Framework JavaScript: React.js
  • Manajemen Keadaan: Redux
  • Permintaan HTTP: Axios


d. Alat Pengembangan Tambahan:

  • Kontrol Versi: Git
  • Pengujian API: Postman atau Insomnia
  • Kontainerisasi: Docker
  • Pengujian Otomatis (opsional): JUnit untuk pengujian backend, React Testing Library untuk pengujian frontend





6. Dokumentasikan dan Demokan dalam Video Youtube dari rancangan aplikasi yang telah dibangun 

Jawab : 

    Berikut merupakan video demo dari rancangan aplikasi yang telah saya bangun : 



Referensi : 

https://sistemparkir.com/software-parkir/

https://kuliahppl.blogspot.com/2024/03/high-level-design.html

https://kuliahppl.blogspot.com/2024/04/low-level-design.html

https://kuliahppl.blogspot.com/2024/03/software-architecture.html

http://jurnalsyntaxadmiration.com/index.php/jurnal/article/download/238/385



Comments

Popular posts from this blog

Tugas 2: Membuat Aplikasi Hello World menggunakan Jetpack Compose (PPB - A)

Tugas 1: Review Perkembangan Teknologi Perangkat Bergerak (PPB - A)

ETS - Evaluasi Tengah Semester: Proyek - Mobile Front End