Nama: Rafie Zaidan Umara
NRP: 5025231245
Mata Kuliah: KPPL E
EAS KPPL
1. Dalam Pengembangan Perangkat Lunak ada fase Analisis dan Desain.
- Terangkan aktivitas yang dilakukan dalam fase Analisis dan Desain
- Apa Output dari aktivitas tersebut untuk mendukung pengembangan perangkat lunak.
1. Understand the Requirements Model
- Tujuan: Memastikan bahwa kebutuhan yang telah dirinci dalam requirements model dipahami dengan baik
- Aktivitas:
- Meninjau ulang dokumen kebutuhan (requirement specification)
- Mengindentifikasi elemen penting seperti fitur, fungsi, dan batasan sistem
2. Choose a Design Strategy
- Tujuan: Memilih pendekatan desain yang sesuai berdasarkan kebutuhan sistem
- Pilihan Strategi:
- Top-Down-Design: Memulai dari abstraksi tingkat tinggi, lalu memecah menjadi komponen yang lebih kecil
- Bottop-Up Design: Membangun sistem dari komponen tingkat rendah dan menyusunnya menjadi sistem lengkap
- Hybrid Approach: Kombinasi dari kedua pendekatan diatas
3. Map to Requirements to Design Elements
- Tujuan: Mentranslasikan elemen requirements model ke kompnen desain
- Aktivitas:
- Functional Requirements: diterjemahkan menjadi modul, fungsi, atau layanan dalam desain.
- Non-Functional Requirements: diterjemahkan menjadi atribut sistem seperti kinerja, keamanan, dan skalabilitas.
- Actors and Use Cases: diterjemahkan menjadi antarmuka pengguna atau interaksi antar modul.
4. Define the System Architecture
- Tujuan: Merancang struktur sistem tingkat tinggi
- Aktivitas:
- Menentukan pola arsitektur
- Membuat diagram arsitektur yang menunjukkan komponen utama dan hubungan antar komponen
5. Design Data Structures
- Tujuan: Merancang sturktur data yang digunakan oleh sistem
- Aktivitas:
- Menentukan model data
- Menentukan format penyimapanan data, skema database, atau API untuk data akses
6. Develop the Interface Design
- Tujuan: Merancang interaksi antara pengguna dan sistem serta antar komponen sistem
- Aktivitas:
- Merancang User Interface
- Mendefinisikan spesifikasi API untuk komunikasi antar modul
7. Define Component-Level Design
- Tujuan: Merinci komponen individual yang membentuk sistem
- Aktivitas:
- Menentukan kelas, metode, dan atribut jika menggukan paradigma berorientasi objek
- Mendesain algoritma untuk operasi fungsi spesifik
8. Evaluate and Refine the Design
- Tujuan: Memastikan bahwa model sesain memenuhi semua kebutuhan dan batasan
- Aktivitas:
- Melakukan tinjauan desain dengan tim pengembang dan pemangku kepentingan
- Memperbaiki elemen desain berdasarkan umpan balik.
2. Dalam metode 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.
Tahap Utama dalam Metode Waterfall:
Requirement Analysis (Analisis Kebutuhan):
- Fungsi: Mengumpulkan dan mendokumentasikan semua kebutuhan proyek secara detail. Hasil tahap ini adalah dokumen spesifikasi kebutuhan (SRS, Software Requirements Specification).
- Fokus pada pemahaman penuh terhadap apa yang diinginkan pengguna.
System Design (Desain Sistem):
- Fungsi: Merancang arsitektur sistem berdasarkan kebutuhan yang telah dianalisis. Tahap ini mencakup desain perangkat lunak, antarmuka, database, dan sebagainya.
- Menghasilkan dokumen desain yang menjadi acuan bagi pengembangan.
Implementation (Implementasi):
- Fungsi: Menerjemahkan desain sistem menjadi kode program. Pengembang melakukan coding sesuai spesifikasi desain.
- Hasilnya adalah perangkat lunak yang sudah dapat diuji.
Testing (Pengujian):
- Fungsi: Memastikan perangkat lunak bebas dari bug dan memenuhi semua kebutuhan yang telah ditentukan. Melibatkan berbagai jenis pengujian seperti unit testing, integration testing, dan system testing.
- Fokus pada validasi dan verifikasi sistem.
Deployment and Maintenance (Penerapan dan Pemeliharaan):
- Fungsi: Mengimplementasikan perangkat lunak di lingkungan pengguna. Setelah diimplementasikan, perangkat lunak dipelihara untuk memperbaiki bug dan meningkatkan performa.
- Tahap ini adalah siklus berkelanjutan berdasarkan kebutuhan pengguna di masa depan.
Kelebihan Model Waterfall: Struktur yang jelas, dokumentasi lengkap, cocok untuk proyek dengan persyaratan tetap, dan juga pengendalian yang mudah
Kekurangan Metode Waterfall: Kurang fleksibel, keterlibatan pengguna terbatas, tidak efisien untuk proyek besar dan persyaratan tetap
3. Jelaskan perbedaan antara architectural design dan detailed design. Mengapa kedua jenis desain tersebut diperlukan dalam proses pengembangan perangkat lunak?
Architectural Design (Desain Arsitektur):
- Fokus: Menentukan kerangka kerja dan struktur tinggi perangkat lunak, termasuk bagaimana komponen utama sistem saling berinteraksi.
- Tingkat Abstraksi: Tinggi, karena hanya menjelaskan gambaran besar tanpa masuk ke detail implementasi.
- Tujuan: Mengidentifikasi komponen utama, hubungan antar komponen, dan pola desain (misalnya, client-server, MVC, atau microservices).
- Hasil: Diagram arsitektur seperti diagram komponen atau diagram deployment.
Detailed Design (Desain Rinci):
- Fokus: Menjabarkan rincian implementasi setiap komponen atau modul yang ditentukan dalam desain arsitektur.
- Tingkat Abstraksi: Rendah, karena berisi spesifikasi teknis yang mendetail, seperti struktur data, algoritma, dan logika pemrograman.
- Tujuan: Memastikan pengembang memiliki panduan konkret untuk membangun setiap modul.
- Hasil: Diagram dan spesifikasi detail seperti diagram kelas (UML), diagram alur, atau pseudocode.
Mengapa Kedua Jenis Desain Diperlukan?
Mengelola Kompleksitas:
- Desain Arsitektur memberikan gambaran besar sistem, membantu tim memahami bagaimana semua bagian saling terhubung.
- Desain Rinci mengatasi detail teknis untuk setiap komponen, memastikan tidak ada ambiguitas dalam implementasi.
Memfasilitasi Kolaborasi Tim:
- Dengan desain arsitektur, tim dapat bekerja dengan panduan yang sama tentang struktur sistem.
- Desain rinci memungkinkan setiap anggota tim memahami tanggung jawab teknis mereka dalam modul tertentu.
Mengurangi Risiko Kesalahan:
- Desain arsitektur memastikan keputusan strategis tentang struktur sistem dibuat lebih awal.
- Desain rinci memastikan pengembang memiliki panduan yang jelas untuk menghindari kesalahan implementasi.
Memudahkan Pemeliharaan:
- Dokumentasi desain arsitektur membantu memahami struktur sistem saat melakukan perbaikan atau penambahan fitur.
- Dokumentasi desain rinci memberikan informasi teknis untuk debugging atau peningkatan performa.
Meningkatkan Efisiensi dan Skalabilitas:
- Desain arsitektur memastikan sistem dirancang untuk mendukung perubahan atau pertumbuhan.
- Desain rinci memastikan setiap modul dioptimalkan untuk efisiensi operasional.
4. Sebuah perusahaan membutuhkan sistem e-commerce untuk menjual produk digital seperti foto, video, desain poster, ebook. Saat ini transaksi dihandle dengan WhatsApp. Namun seiirng 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 ada gunakan untuk merancang, membangun, dan menguji sistem tersebut agar memenuhi kebutuhan klien (Jawaban tertulis dan terangkan dalam video presentasi yang di upload di Youtube)
1. Tahap Perancangan
Untuk sistem e-commerce yang dapat menangani lonjakan transaksi, pendekatan Agile Development akan digunakan karena fleksibilitasnya untuk beradaptasi dengan kebutuhan bisnis yang mungkin berkembang seiring waktu.
Langkah-Langkah dalam Perancangan:
-
Analisis Kebutuhan:
- Identifikasi kebutuhan fungsional: katalog produk digital, sistem checkout, pembayaran digital, manajemen stok produk digital, dan pengiriman email otomatis setelah pembelian.
- Identifikasi kebutuhan non-fungsional: kemampuan menangani lonjakan lalu lintas (scalability), waktu respons cepat (performance), dan keamanan transaksi.
-
Desain Arsitektur:
- Gunakan arsitektur berbasis microservices untuk mendukung skalabilitas dan pengelolaan komponen yang terpisah (misalnya, layanan untuk katalog produk, pembayaran, dan notifikasi).
- Gunakan cloud computing untuk mendukung penskalaan otomatis (misalnya, AWS, Google Cloud, atau Azure).
-
Desain Database:
- Pilih kombinasi database relasional dan non-relasional (contoh: MySQL/PostgreSQL untuk data transaksi, MongoDB untuk katalog produk).
- Optimalkan query untuk data yang sering diakses selama musim puncak.
-
Desain Frontend:
- Gunakan framework modern seperti React.js atau Next.js untuk antarmuka pengguna yang responsif dan cepat.
- Buat desain user-friendly dengan fokus pada navigasi intuitif.
-
Desain Backend:
- Gunakan framework seperti Express.js (Node.js) atau Spring Boot (Java) untuk mendukung layanan REST API.
- Integrasikan gateway pembayaran seperti Midtrans atau Stripe.
2. Tahap Pengembangan
Langkah-Langkah dalam Pengembangan:
-
Iterasi Pendek:
- Kembangkan fitur dalam siklus pendek dengan pendekatan Scrum atau Kanban.
- Prioritaskan fitur utama seperti katalog produk dan sistem pembayaran di iterasi awal.
-
Automasi DevOps:
- Gunakan CI/CD pipeline untuk mempercepat pengujian dan penerapan kode.
- Automasi infrastruktur dengan IaC (Infrastructure as Code) menggunakan Terraform atau AWS CloudFormation.
-
Penggunaan Container:
- Gunakan Docker untuk mengisolasi layanan microservices.
- Orkestrasi layanan menggunakan Kubernetes untuk memastikan penskalaan otomatis.
3. Tahap Pengujian
Strategi Pengujian:
-
Unit Testing:
- Uji setiap modul backend secara terpisah (contoh: validasi input pada API pembayaran).
-
Integration Testing:
- Pastikan layanan microservices berinteraksi dengan benar, terutama antara layanan pembayaran dan notifikasi.
-
Performance Testing:
- Simulasikan lonjakan lalu lintas menggunakan alat seperti Apache JMeter atau Gatling untuk mengidentifikasi batas sistem.
-
Security Testing:
- Pastikan aplikasi aman terhadap ancaman umum seperti SQL Injection, Cross-Site Scripting (XSS), atau Cross-Site Request Forgery (CSRF).
-
User Acceptance Testing (UAT):
- Libatkan perwakilan klien untuk menguji sistem dalam skenario nyata.
4. Tahap Implementasi
Strategi Penerapan:
- Gunakan metode Blue-Green Deployment untuk meminimalkan downtime saat meluncurkan fitur baru.
- Aktifkan penskalaan otomatis pada infrastruktur cloud untuk memastikan sistem dapat menangani lonjakan transaksi selama musim puncak.
5. Tahap Pemeliharaan
Strategi Pemeliharaan:
- Monitor kinerja sistem menggunakan tools observability seperti Grafana atau AWS CloudWatch.
- Terapkan pembaruan rutin untuk meningkatkan fitur dan keamanan.
Mengapa Pendekatan Ini Dipilih?
- Agile Development memungkinkan pengembangan sistem yang fleksibel dan cepat sesuai dengan kebutuhan klien.
- Microservices Architecture mendukung skalabilitas dan isolasi layanan untuk menangani lonjakan transaksi.
- CI/CD dan DevOps Practices mempercepat siklus pengembangan dan memastikan kualitas sistem.
- Fokus pada pengujian performa dan keamanan menjamin keandalan sistem, terutama selama musim puncak.
Comments
Post a Comment