EAS KPPL E
Nama: Fadaukas Daffa Tajuddin
NRP: 5025231149
Email: fadaukasdaffa04@gmail.com
Link Youtube: https://www.youtube.com/watch?v=RiC2PeMmlgcSOAL
1. Dalam Pengembangan Perangkat Lunak ada fase Analisis dan Desain.
a. Terangkan aktivitas yang dilakukan dalam fase Analisis dan Desain
b. Apa Output dari aktivitas tersebut untuk mendukung pengembangan perangkat lunak.
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.
3. Jelaskan perbedaan antara architectural design dan detailed design. Mengapa kedua jenis desain tersebut diperlukan dalam proses pengembangan perangkat lunak?
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
1. Berikut adalah Aktivitas yang dilakukan dalam fase analisis dan desain beserta outputnya.
· Understand the Requirements Model: Memastikan bahwa kebutuhan yang telah dirinci dalam requirement model dipahami dengan baik.
Aktivitas: Meninjau ulang dokumen kebutuhan.
Output: Kebutuhan dokumen yang dipahami dengan Jelas.
· Choose a Design Strategy: Menentukan Desain berdasarkan kebutuhan sistem.
Aktivitas: Memilih strategi Desain yang sesuai seperti, Top-Down Design, Bottom-Up Design, atau Hybrid Approach
Output: Penjelasan mengapa strategi ini sesuai dengan kompleksitas dan kebutuhan proyek.
· Map the Requirements to Design Elements: Mentranslasikan elemen dalam requirements model ke komponen desain.
Aktivitas: Menerjemahkan elemen menjadi modul, fungsi, atau layanan dalam desain, Menerjemahkan elemen menjadi atribut sistem seperti kinerja, keamanan, dan skalabilitas, dan Menerjemahkan elemen menjadi antarmuka pengguna (user interface) atau interaksi antar modul.
Output: Pemetaan kebutuhan terhadap desain menjadi jelas.
· Define the System Architecture: Merancang struktur sistem tingkat tinggi.
Aktivitas: Menentukan pola arsitektur (seperti MVC, Layered Architecture, atau Microservices).
Output: Mendapat pola arsitektur yang sesuai dengan kebutuhan struktur system.
· Design Data Structures: Merancang struktur data yang digunakan oleh sistem.
Aktivitas: Membuat model data (Entity-Relationship Diagram atau Class Diagram). Menentukan format penyimpanan data, skema database, atau API untuk akses data.
Output: Desain struktur data yang mendetail, seperti diagram entitas-relasi atau diagram kelas, serta skema database yang sesuai dengan kebutuhan sistem.
· Develop the Interface Design: Merancang interaksi antara pengguna dan sistem serta antar komponen sistem.
Aktivitas: Merancang User Interface (antarmuka pengguna) berdasarkan kebutuhan pengguna. Mendefinisikan spesifikasi API untuk komunikasi antar modul.
Output: Desain antarmuka pengguna yang sesuai dengan kebutuhan pengguna, serta spesifikasi API yang mendetail untuk komunikasi antar komponen.
· Define Component-Level Design: Merinci komponen individual yang membentuk sistem.
Aktivitas: Menentukan kelas, metode, dan atribut jika menggunakan paradigma berorientasi objek. Mendesain algoritma untuk operasi atau fungsi spesifik.
Output: Deskripsi komponen sistem yang terstruktur, termasuk daftar kelas, atribut, metode, serta algoritma yang akan diimplementasikan.
· Evaluate and Refine the Design: Memastikan bahwa model desain memenuhi semua kebutuhan dan batasan.
Aktivitas: Melakukan tinjauan desain dengan tim pengembang dan pemangku kepentingan. Memperbaiki elemen desain berdasarkan umpan balik.
Output: Desain yang diperbaiki berdasarkan hasil tinjauan, memastikan desain memenuhi semua kebutuhan dan batasan proyek.
2. Berikut adalah 5 tahapan dalam model waterfall beserta kelebihan dan kekurangan dari model waterfall dalam proyek besar.
· Requirement Analysis
Tahap awal ini melibatkan identifikasi dan pemahaman yang mendalam terhadap kebutuhan pengguna dan pemangku kepentingan. Tujuan utamanya adalah mengumpulkan persyaratan fungsional dan non-fungsional yang akan menjadi dasar dari pengembangan software.
· Design
Pada tahap ini, persyaratan yang telah dikumpulkan diterjemahkan menjadi desain perangkat lunak yang spesifik. Perancangan mencakup desain arsitektur sistem, desain user interface atau antarmuka pengguna, desain basis data, dan desain modul perangkat lunak. Tujuannya adalah menciptakan panduan yang jelas bagi tim pengembang dalam mengimplementasikan software.
· Implementation
Tahap ini melibatkan proses pengkodean atau implementasi aktual dari software berdasarkan desain yang telah ditentukan sebelumnya. Tim developer menggunakan bahasa pemrograman dan alat pengembangan untuk menghasilkan software yang sesuai dengan spesifikasi desain.· Testing
Setelah implementasi selesai, software akan diuji untuk memastikan bahwa itu berfungsi sesuai dengan persyaratan yang ditentukan sebelumnya. Pengujian meliputi pengujian fungsionalitas, pengujian kesalahan (bug), pengujian integrasi, dan pengujian kinerja. Tujuannya adalah untuk menemukan dan memperbaiki kesalahan yang mungkin ada sebelum perangkat lunak diperkenalkan kepada pengguna akhir.
· Deployment and Maintenance
Tahap pemeliharaan terjadi setelah software diluncurkan dan digunakan oleh pengguna. Ini melibatkan pemeliharaan rutin, pembaruan, dan perbaikan yang diperlukan untuk memastikan kinerja yang optimal dan kepatuhan dengan perubahan kebutuhan atau lingkungan yang terjadi seiring waktu.
Kelebihan dan Kekurangan Model Waterfall dalam Proyek Besar
· Kelebihan: Struktur yang jelas dan terdefinisi, departemenlisasi dan kontrol yang efektif, dokumentasi yang komprehensif, manajemen proyek yang terprediksi, dan mengurangi resiko kesalahan.
· Kekurangan: Kurang fleksibel, waktu pengembangan lama, resiko kebutuhan tidak sesuai harapan, keterbatasan dalam pengujian awal, dan ketergantungan pada dokumentasi.
· Kesimpulan: Untuk proyek besar model Waterfall adalah metode yang efektif karena memberikan kejelasan struktur dan pengelolaan yang baik. Namun, metode ini menjadi kurang ideal jika ada kemungkinan perubahan di tengah proyek atau jika proyek memerlukan respons cepat terhadap perubahan yang tidak terduga.
3. Perbedaan antara Architectural Design dan Detailed Design adalah sebagai berikut.
o Architectural Design:
§ Tahap perancangan yang menentukan struktur umum dari sistem perangkat lunak.
§ Architectural hanya sebatas menentukan komponen, hubungan antar komponen, dan bagaimana komponen tersebut bekerjan.
§ Hasil dari Architectural Design salah satu contohnya adalah Use Case Diagram.
o Detailed Design:
§ Tahap perancangan yang lebih spesifik terhadap komponen-komponen yang sebelumnya sudah ditentukan dari Architectural Design.
§ Detailed Design merancang algoritma, struktur data, antar muka, dan logika untuk setiap komponennya.
§ Hasil dari Detailed Design sudah berupa pseudocode yang sudah diterapkan algoritmanya.
Mengapa Kedua Jenis Desain Ini Diperlukan?
Architectural Design memastikan bahwa sistem memiliki fondasi yang kuat dan skalabel, memudahkan integrasi serta pemeliharaan di masa depan. Sedangkan Detailed Design memastikan setiap bagian dari sistem dirancang secara efisien, sehingga pengembangan kode lebih mudah dan sesuai spesifikasi.
4. Dalam studi kasus tersebut saya menggunakan Metode Waterfall sebagai tahapan pendekatan yang akan saya lakukan untuk merancang, membangun, dan menguji sistem tersebut. Berikut adalah tahapan-tahapannya.
· Requirement Analysis: Pada tahap pertama ini saya mengidentifikasi kebutuhan dari client sekaligus user yang akan menggunakan sistem perangkat lunak yang hendak dirancang. Pemilik bisnis membutuhkan sistem yang mampu menangani lonjakan transaksi di musim puncak, sementara pengguna memerlukan antarmuka yang mudah digunakan untuk membeli produk digital seperti foto, video, desain poster, dan ebook. Persyaratan fungsional mencakup manajemen produk, transaksi otomatis, pengelolaan pelanggan, pengiriman produk digital, dan pembuatan laporan penjualan. Sementara itu, persyaratan non-fungsional meliputi skalabilitas, keamanan, kinerja, reliabilitas, dan kompatibilitas.
· Design: Selanjutnya pada tahap Design, saya merancang komponen penting meliputi layanan untuk manajemen produk, pembayaran, pengiriman digital, autentikasi pengguna, dan laporan penjualan. Database dirancang dengan SQL untuk menjaga integritas data transaksi. Desain antarmuka menggunakan pendekatan Mobile-First Design agar mudah diakses melalui perangkat mobile. Infrastruktur mencakup penggunaan Load Balancer untuk membagi trafik, Content Delivery Network untuk mempercepat pengiriman konten, dan penerapan cloud seperti AWS atau Google Cloud untuk memastikan fleksibilitas dan skalabilitas.
· Implementation: Pada tahap ini saya mulai mengimplementasikan coding untuk membuat aplikasi. Saya menggunakan Laravel sebagai framework, MySQL sebagai basis data, dan Midtrans sebagai payment gateway. Selain itu saya juga menggunakan git sebagai control version untuk memudahkan kolaborasi dalam tim.
· Testing: Pada tahap Testing, dilakukan berbagai pengujian untuk memastikan kualitas sistem. Unit Testing memastikan setiap fungsi bekerja dengan baik, sementara Integration Testing memastikan microservices terintegrasi secara lancar. Load Testing dilakukan untuk mensimulasikan lonjakan trafik, dan Security Testing memastikan sistem aman dari serangan. Setelah itu, User Acceptance Testing (UAT) melibatkan pemilik bisnis untuk memvalidasi sistem sesuai kebutuhan.
· Deployment and Maintenance: Saya mulai mendeploy aplikasi menggunakan CI/CD Pipeline untuk otomatisasi dan ditempatkan di cloud dengan fitur auto-scaling untuk menangani lonjakan trafik. Selama pemeliharaan, sistem dimonitor dengan alat seperti New Relic atau Prometheus untuk memantau kinerja. Bug diperbaiki secara berkala, dan pembaruan dilakukan untuk menyesuaikan dengan perubahan kebutuhan bisnis dan teknologi. Dengan pendekatan ini, sistem e-commerce yang dihasilkan akan mampu menangani lonjakan transaksi dengan baik, sambil memastikan kinerja, keamanan, dan reliabilitas yang optimal.
Komentar
Posting Komentar