SOAL EVALUASI AKHIR SEMESTER KPPL (E) - 11/12/2024
Nama : Tarisha Falah Basuki
NRP : 5025231043
Kelas : KPPL (E)
1. Dalam Pengembangan Perangkat Lunak ada fase Analisis dan Desain.
- Terangkan aktivitas yang dilakukan dalam fase Analisis dan Desain.
Jawab :
Fase Analisis dan Desain adalah dua fase penting dalam proses pengembangan Perangkat Lunak. Sebuah perangkat lunak pasti memiliki model awal sebelum benar - benar dikembangkan. Maka dari itu, fase analisis model dan desain model adalah fase yang perlu dilakukan tanpa ada satupun yang abaikan. Proses transformasi analisis model ke dalam desain model sangat berpengaruh terhadap keberhasilan implementasi perangkat lunak, memastikan bahwa kebutuhan yang diinginkan selama melalui proses analisis benar - benar diimplementasikan dalam representasi di model desain.
Berikut adalah berbagai aktivitas yang perlu dilakukan dalam fase Analisis dan Desain.
1. Memastikan bahwa kebutuhan yang telah dirinci dalam requirements model dipahami dengan baik. Aktivitas yang dilakukan yaitu meninjau ulang dokumen kebutuhan dan mengidentifikasi elemen penting seperti fitur, fungsi, dan batasan sistem.
Contoh: Dalam pengembangan perangkat lunak untuk Smart Home, kebutuhan yang telah dirinci dalam requirements model harus dipahami dengan baik terutama mengidentifikasi elemen penting seperti fitur utama kontrol perangkat, notifikasi keamanan, otomatisasi, dsb. Lalu fungsi utama seperti perintah suara, konrol manual dari aplikasi, jadwal otomatis. Yang terakhir yaitu batasan sistem, seperti hanya harus dapat berjalan di perangkat android/OS dan terhubung dengan Wi-Fi.
2. Memilih pendekatan desain yang sesuai berdasarkan kebutuhan sistem. Pemilihan strategi ada 3 pilihan, yaitu Top-Down Designn(memulai dari abstraksi tingkat tinggi lalu dipecah menjadi komponen lebih kecil), Bottom-Up Design (membangun sistem dari komponen tingkat rendah dan menyusunnya menjadi lebih kecil), dan Hybrid Approach (kombinasi dari kedua pendekatan di atas).
Contoh: Dalam pengembangan perangkat lunak untuk Smart Home, memilih strategi Top-Down Design karena dimulai dari abstraksi tinggi (mengelola keseluruhan sistem rumah) yang nantinya dipecah menjadi kontrol - kontrol perangkat, jadwal, keamanan yang lebih spesifik sesuai konteks.
3. Mentranslasikan elemen dalam requirements model ke komponen desain. Proses pentranslasian dapat melalui 3 pilihan, yaitu Functional Requirements (diterjemahkan menjadi modul, fungsi, atau layanan dalam desain), Non-Functional Requirements (diterjemahkan menjadi atribut sistem seperti kinerja, keamanan, dan skalabilitas), dan Actors and Use Cases (diterjemahkan menjadi antarmuka pengguna atau interaksi antar modul).
Contoh: Dalam pengembangan perangkat lunak untuk Smart Home, jika memilih proses pentranslasian Functional Requirements, kebutuhan - kebutuhan tersebut diterjemahkan menjadi modul, fungsi, atau layanan dalam desain. Misal kontrol perangkat masuk ke dalam modul Device Control, notifikasi keamanan masuk ke modul Security Notification, perintah suara masuk ke modul Voice Command.
4.Merancang struktur sistem tingkat tinggi. Menentukan pola arsitektur (seperti MVC, Layered Architecture, atau Microservices). Membuat diagram arsitektur yang menunjukkan komponen utama dan hubungan antar komponen.
Contoh: Dalam pengembangan perangkat lunak untuk Smart Home, menggunakan pola Layered Architecture dengan 3 lapisan utama: Presentation Layer: Antarmuka aplikasi (mobile app), Application Layer: Logika bisnis (mengelola jadwal, perintah suara), Data Layer: Penyimpanan data jadwal dan status perangkat. Lalu membuat diagram arsitektur:Aplikasi mobile ↔ Server backend ↔ Perangkat IoT.
5. Merancang struktur data yang digunakan oleh sistem. Membuat model data (Entity-Relationship Diagram atau Class Diagram), lalu menentukan format penyimpanan data, skema database, atau API untuk data akses.
Contoh: Dalam pengembangan perangkat lunak untuk Smart Home, Membuat Entity-Relationship Diagram (ERD). Entitas: Device (ID, Nama, Status, Lokasi). User (ID, Nama, Email). Schedule (ID, Waktu, Aksi, TargetDevice). Selanjutnya menentukan skema database: Tabel utama: Users, Devices, Schedules.
6. Merancang interaksi antara pengguna dan sistem serta antar komponen sistem. Merancang User Interface (antarmuka pengguna) berdasarkan kebutuhan pengguna. Mendefinisikan spesifikasi API untuk komunikasi antar modul.
Contoh: Dalam pengembangan perangkat lunak untuk Smart Home, User Interface (UI): Tampilan utama aplikasi: Tombol untuk mengontrol perangkat (On/Off). Halaman jadwal untuk menambah atau menghapus otomatisasi. Notifikasi pop-up untuk peringatan keamanan. API Spesifikasi: API untuk komunikasi antar modul: Endpoint: /devices/{id}/control untuk mengubah status perangkat. Endpoint: /schedule untuk menambah jadwal.
7. Merinci komponen individual yang membentuk sistem. Menentukan kelas, metode, dan atribut jika menggunakan paradigma berorientasi objek. Mendesain algoritma untuk operasi atau fungsi spesifik.
Contoh: Dalam pengembangan perangkat lunak untuk Smart Home, Modul Device Control: Kelas: DeviceController.Metode: turnOn(deviceId): Menyalakan perangkat, turnOff(deviceId): Mematikan perangkat. Lalu Modul Schedule Manager: Kelas: ScheduleManager. Metode:addSchedule(scheduleDetails): Menambahkan jadwal.executeSchedule(scheduleId): Menjalankan jadwal otomatis.
8. Memastikan bahwa model desain memenuhi semua kebutuhan dan batasan. Melakukan tinjauan desain dengan tim pengembang dan pemangku kepentingan. Memperbaiki elemen desain berdasarkan umpan balik.
Contoh: Dalam pengembangan perangkat lunak untuk Smart Home, Tinjauan desain: Mengadakan pertemuan dengan tim pengembang untuk memvalidasi: Apakah arsitektur mendukung latensi rendah? Apakah API sudah sesuai dengan kebutuhan?Apakah desain UI mudah digunakan oleh pengguna awam? Perbaikan: Menambahkan cache pada backend untuk mempercepat respon API.Memodifikasi UI agar lebih ramah pengguna dengan ikon yang lebih intuitif.
- Apa Output dari aktivitas tersebut untuk mendukung pengembangan perangkat lunak.
Output dari aktivitas dalam fase analisis dan desain model yang dilalui sebelumnya akan menghasilkan persiapan yang lengkap untuk mendukung pengembangan perangkat lunak. Jika diambil dari contoh yang disebutkan yaitu fase analisis dan desain untuk pengembangan perangkat lunak Smart Home, aktivitas - aktivitas tersebut yang telah menganalisis berbagai kebutuhan yang diinginkan seperti elemen penting fitur utama kontrol perangkat, notifikasi keamanan, otomatisasi, dsb. Lalu fungsi utama seperti perintah suara, konrol manual dari aplikasi, jadwal otomatis. Yang terakhir yaitu batasan sistem, seperti hanya harus dapat berjalan di perangkat android/OS dan terhubung dengan Wi-Fi, bisa dengan sempurna diimplementasikan ke dalam perangkat lunak yang akan dikembangkan.
2. Dalam model Waterfall, setiap tahap memiliki fungsi spesifik. Jelaskan lima tahap utama dalam model ini, serta sebutkan kelebihan dan kekurangan dari model tersebut dalam konteks proyek besar yang memiliki persyaratan tetap.
Jawab:
Berikut adalah lima tahapan model Waterfall.
1) Requirements analysis : tahapan ini melakukan identifikasi lebuh lanjut terhadap kebutuhan pengguna dan pemilik kepentingan. Tujuan dari tahapan ini adalah mengumpulkan segala requirements baik fungsional maupun tidak yang akan menjadi dasar dari pengembangan perangkat lunak yang diinginkan.
2) Desain: tahapan ini melakukan translasi berbagai kebutuhan dan persyaratan yang ada menjadi bentuk model desain perangkat lunak yang spesifik. Desain yang dibutuhkan mencakup desain antarmuka pengguna, desain basis data, dan desain modul perangkat lunak. Tujuan dari tahapan ini adalah menciptakan panduan yang jelas bagi tim pengembang perangkat lunak.
3) Implementation: tahapan ini sudah memasuki proses pengkodean atau implementasi sesungguhnya dari perangkat lunak berdasarkan desain yang sebelumnya telah dibuat.
4) Testing: tahapan ini melakukan uji coba perangkat lunak yang sudah diimplementasikan apakah telah berfungsi sesuai dengan persyaratan yang ditentukan sebelumnya.Tujuan tahapan ini adalah untuk menemukan dan memperbaiki kesalahan yang mungkin ada sebelum perangkat lunak diperkenalkan kepada pengguna akhir.
5) Deployment and Maintenance: tahapan ini melakukan pemeliharaan perangkat lunak yang telah diluncurkan dan digunakan para pengguna. Tujuan tahapan ini adalah untuk memperbaiki bug atau kesalahan jika mungkin ada ketika seiring berjalannya waktu perangkat lunak digunakan oleh pengguna.
Berikut adalah kelebihan dan kekurangan dari model Waterfall.
Kelebihan: karena model Waterfall dilakukan dengan secara berurutan, berbagai kesalahan yang mungkin akan terjadi lebih sedikit. Contohnya dari pengembangan perangkat lunak untuk Smart Home, setiap fase (analisis kebutuhan, desain, implementasi, dll.) dilakukan secara berurutan sehingga memungkinkan kontrol yang lebih baik pada setiap tahap. Misalnya, kebutuhan keamanan (notifikasi pintu dibuka tanpa izin) dapat dirinci dengan jelas sebelum masuk ke tahap desain.
Kekurangan: karena model Waterfall dilakukan dengan secara berurutan, model ini menjadi kurang fleksibel dan membutuhkan waktu yang lama. Terutama jika ada perubahan di tengah - tengah proses, misal muncul kebutuhan baru, seperti menambahkan fitur integrasi dengan perangkat tambahan (misalnya, kamera keamanan baru), sulit untuk mengakomodasi perubahan tersebut tanpa memulai kembali dari tahap awal.
3. Jelaskan perbedaan antara architectural design dan detailed design. Mengapa kedua jenis desain tersebut diperlukan dalam proses pengembangan perangkat lunak?
Jawab:
Berikut adalah perbedaan antara Architectural Design dan Detailed Design.
Architectural Design: Architectural Design berfokus pada struktur dan interaksi tingkat tinggi dari sistem perangkat lunak. Ini melibatkan penentuan komponen utama sistem dan bagaimana mereka berinteraksi satu sama lain. Biasanya diwakili dalam diagram yang menunjukkan hubungan antar komponen, subsistem, dan modul.
Tujuan:
Menyediakan kerangka kerja untuk seluruh sistem.
Memastikan integrasi yang mulus antara berbagai bagian dari sistem.
Memastikan bahwa sistem dapat menangani berbagai kebutuhan seperti skalabilitas, keandalan, dan performa.
Detailed Design: Detailed Design menyelam lebih dalam ke dalam setiap komponen atau modul yang ditentukan dalam desain arsitektural. Ini melibatkan penentuan algoritma, struktur data, antarmuka, dan rincian implementasi lainnya.
Tujuan:
Menyediakan panduan terperinci untuk pengembang tentang bagaimana membangun setiap komponen.
Mengurangi ambiguitas dengan memberikan spesifikasi yang jelas dan rinci.
Memastikan bahwa setiap bagian dari sistem bekerja sesuai dengan persyaratan dan tujuan yang telah ditetapkan.
Mengapa Kedua Desain Diperlukan?
Skalabilitas dan Keandalan: Architectural Design memastikan bahwa struktur sistem dapat menangani perubahan dan perluasan di masa depan, serta memenuhi kebutuhan performa dan keandalan.
Kejelasan dan Konsistensi: Detailed Design memberikan panduan terperinci bagi pengembang, yang mengurangi risiko kesalahan dan meningkatkan konsistensi dalam implementasi.
Pembagian Tugas: Dengan adanya desain yang jelas, tim dapat membagi tugas dengan lebih efisien, di mana arsitek sistem fokus pada gambar besar sementara pengembang berfokus pada detail implementasi.
Dokumentasi dan Pemeliharaan: Keduanya menyediakan dokumentasi penting yang memudahkan pemeliharaan dan pengembangan lebih lanjut.
Keduanya bekerja bersama-sama untuk memastikan bahwa perangkat lunak yang dibangun tidak hanya memenuhi kebutuhan spesifik, tetapi juga dapat beradaptasi dengan perubahan di masa depan.
4. Studi Kasus. Sebuah perusahaan membutuhkan sistem e-commerce untuk menjual produk digital seperti foto, video, desain poster, ebook. Saat ini transaksi dihandle dengan WhatsApp. Namun seiring dengan perkembangan bisnis tools tersebut tidak mampu menangani lonjakan transaksi. Buatkan sistem / aplikasi yang mampu menangani lonjakan transaksi pada musim tertentu. Jelaskan pendekatan rekayasa perangkat lunak yang akan Anda gunakan untuk merancang, membangun, dan menguji sistem tersebut agar memenuhi kebutuhan klien. (Jawaban tertulis dan terangkan dalam video presentasi yang diupload di Youtube.)
Jawab:
Di sini, pendekatan rekayasa perangkat lunak yang akan digunakan adalah Metode Waterfall. Berikut adalah tahapan - tahapannya.
1. Analisis Kebutuhan (Requirements Analysis):
Memahami kebutuhan klien untuk pengembangan sistem e-commerce digital. Kebutuhan dibagi menjadi:
Fungsional: Mendukung pembelian produk digital, proses checkout, metode pembayaran beragam, dan pengelolaan admin.
Non-Fungsional: Skalabilitas, keamanan data, uptime tinggi, responsif, dan kompatibel lintas perangkat.
2. Desain Sistem (System Design):
Merancang sistem dengan:
Arsitektur: Frontend menggunakan framework modern (React/Vue.js), backend berbasis RESTful API (Node.js/Django), database relasional (PostgreSQL/MySQL), dan caching (Redis).
Infrastruktur: Cloud hosting (AWS/GCP/Azure), CDN untuk konten statis, load balancer, dan protokol keamanan (HTTPS, OAuth 2.0).
UI/UX: Prototipe dengan Figma, fokus pada alur belanja sederhana.
3. Implementasi (Implementation):
Mengembangkan frontend (halaman produk, keranjang belanja, checkout, panel admin).
Membuat backend API untuk fitur utama dan integrasi payment gateway.
Mengintegrasikan frontend-backend untuk transaksi yang mulus.
4. Pengujian (Testing):
Unit Testing: Menguji fungsi individu.
Integration Testing: Menguji alur belanja lengkap.
Performance Testing: Mensimulasikan lonjakan transaksi.
Security Testing: Menjamin keamanan data pengguna.
UAT: Validasi sistem oleh pengguna akhir.
5. Deployment dan Pemeliharaan (Maintenance):
Deployment sistem ke produksi menggunakan CI/CD untuk otomatisasi.
Monitoring performa sistem dengan alat seperti Grafana.
Pemeliharaan meliputi perbaikan bug, optimasi performa, dan pengembangan fitur baru sesuai kebutuhan pengguna.
Comments
Post a Comment