ETS - KPPL (E) - Farrel Akmalazmi Nugraha - 5025221138
Nama : Farrel Akmalazmi Nugraha
Kelas : KPPL E
NRP : 5025221138
ETS KPPL E
1. Mengapa perangkat lunak cenderung menjadi lebih kompleks seiring dengan perkembangannya? Jelaskan dua faktor utama yang menyebabkannya.
Penambahan Fitur Baru: Seiring dengan permintaan pengguna yang berkembang, perangkat lunak sering kali perlu ditingkatkan dengan fitur-fitur baru. Penambahan fitur ini memperluas logika dan interaksi antar komponen, yang secara alami meningkatkan kompleksitas sistem. Setiap kali fitur baru ditambahkan, pengembang perlu memastikan bahwa fitur-fitur baru ini berfungsi dengan baik tanpa mengganggu fitur yang sudah ada.
Perubahan dan Pemeliharaan: Perangkat lunak harus terus dipelihara untuk memperbaiki bug, meningkatkan performa, atau menyesuaikan dengan teknologi baru. Setiap perubahan ini dapat menyebabkan kode menjadi lebih kompleks, terutama jika perubahan tersebut tidak direncanakan dengan baik. Kode lama yang tidak dihapus atau diperbaiki dengan benar juga dapat menumpuk dan menciptakan apa yang dikenal sebagai "teknologi utang" (technical debt), yang pada akhirnya membuat perangkat lunak semakin sulit untuk dikelola.
2. Apa yang dimaksud dengan software reusability, dan mengapa hal ini penting dalam pengembangan perangkat lunak modern?
Software reusability adalah konsep dalam pengembangan perangkat lunak di mana komponen, kode, modul, atau fungsi perangkat lunak yang sudah ada dapat digunakan kembali dalam proyek atau aplikasi lain, tanpa harus menulis ulang dari awal. Reusability memungkinkan pengembang untuk memanfaatkan solusi yang sudah terbukti efisien dan bekerja dengan baik, sehingga menghemat waktu dan upaya dalam proses pengembangan.
Pentingnya reusability dalam pengembangan perangkat lunak modern:
- Penghematan Waktu dan Biaya: Mengurangi waktu dan biaya dengan menggunakan kode yang sudah ada.
- Konsistensi dan Kualitas: Memastikan kualitas lebih baik karena kode sudah diuji dan terstandar.
- Kemudahan Pemeliharaan: Pemeliharaan lebih efisien karena perbaikan di satu tempat berlaku di seluruh sistem.
- Skalabilitas dan Fleksibilitas: Memudahkan pengembangan sistem yang lebih besar dan fleksibel.
- Mengurangi Duplikasi Usaha: Menghindari pengulangan kerja, sehingga fokus pada inovasi.
3. Apa peran pengujian perangkat lunak (software testing) dalam siklus hidup pengembangan perangkat lunak, dan sebutkan dua jenis pengujian yang umum dilakukan.
Peran pengujian perangkat lunak (software testing) dalam siklus hidup pengembangan perangkat lunak adalah untuk memastikan bahwa perangkat lunak berfungsi sesuai dengan spesifikasi, bebas dari bug, dan memenuhi kebutuhan pengguna. Pengujian membantu mendeteksi masalah sejak dini dalam proses pengembangan, sehingga mengurangi biaya perbaikan dan meningkatkan kualitas produk akhir. Selain itu, pengujian juga memastikan keandalan, performa, keamanan, dan kompatibilitas perangkat lunak sebelum dirilis ke pengguna.
Dua jenis pengujian yang umum dilakukan:
- Pengujian Fungsional (Functional Testing): Pengujian yang memastikan bahwa setiap fungsi perangkat lunak bekerja sesuai dengan spesifikasi yang ditetapkan.
- Pengujian Non-Fungsional (Non-Functional Testing): Pengujian yang fokus pada aspek seperti performa, keamanan, dan skalabilitas perangkat lunak, yang tidak terkait langsung dengan fungsionalitas spesifik.
4. Sebutkan dan jelaskan tiga komponen utama dari struktur proses perangkat lunak.
Framework Activities: Ini adalah aktivitas inti yang terdapat di setiap model proses pengembangan perangkat lunak. Framework activities mencakup tahapan dasar yang harus dilakukan dalam pengembangan perangkat lunak, seperti:
- Communication: Komunikasi dengan pelanggan atau pengguna untuk memahami kebutuhan dan tujuan.
- Planning: Perencanaan tentang bagaimana perangkat lunak akan dikembangkan, termasuk jadwal, sumber daya, dan estimasi biaya.
- Modeling: Pembuatan desain perangkat lunak, baik arsitektur maupun rinciannya.
- Construction: Implementasi dan pengujian perangkat lunak.
- Deployment: Pengiriman perangkat lunak kepada pengguna dan penerapan perangkat lunak dalam lingkungan operasional.
Umbrella Activities: Ini adalah aktivitas yang mendukung dan berjalan di seluruh framework activities. Umbrella activities memastikan kualitas dan manajemen selama siklus hidup perangkat lunak, termasuk:
- Project Management: Mengelola proyek perangkat lunak, termasuk waktu, sumber daya, dan risiko.
- Quality Assurance: Menjamin bahwa produk memenuhi standar kualitas yang ditetapkan.
- Configuration Management: Mengelola versi dan perubahan perangkat lunak selama pengembangannya.
- Risk Management: Mengidentifikasi dan mengurangi risiko yang mungkin terjadi selama pengembangan.
- Documentation: Pembuatan dan pemeliharaan dokumen yang dibutuhkan untuk pengembangan dan pemeliharaan perangkat lunak.
Task Set: Task set adalah kumpulan tugas atau kegiatan spesifik yang dilakukan dalam setiap framework activity. Task set dapat bervariasi tergantung pada proyek, tetapi biasanya mencakup tugas-tugas seperti:
- Mengidentifikasi kebutuhan pengguna selama Communication.
- Membuat jadwal dan estimasi biaya selama Planning.
- Mendesain diagram UML atau arsitektur sistem selama Modeling.
- Melakukan pengujian unit atau integrasi selama Construction.
- Menyusun panduan pengguna atau prosedur instalasi selama Deployment.
Ketiga komponen ini bekerja secara harmonis untuk memastikan bahwa perangkat lunak dikembangkan dengan cara yang terstruktur dan dapat dikelola dengan baik.
5. Bagaimana manajemen konflik dapat berperan dalam keberhasilan tim rekayasa perangkat lunak, dan sebutkan dua teknik untuk menangani konflik dalam tim pengembangan ?
Manajemen konflik berperan penting dalam keberhasilan tim rekayasa perangkat lunak karena konflik yang tidak dikelola dengan baik dapat mengganggu produktivitas, merusak hubungan antar anggota tim, dan memperlambat pencapaian tujuan proyek. Di sisi lain, konflik yang dikelola dengan baik dapat menghasilkan solusi kreatif, meningkatkan kolaborasi, dan mendorong peningkatan kualitas produk. Oleh karena itu, manajemen konflik membantu menciptakan lingkungan kerja yang positif, di mana anggota tim dapat fokus pada tujuan bersama, menghindari ketegangan, dan menjaga produktivitas tetap tinggi.
Dua teknik untuk menangani konflik dalam tim pengembangan:
Kolaborasi (Collaboration): Teknik ini berfokus pada kerja sama antara pihak-pihak yang terlibat dalam konflik untuk menemukan solusi yang memuaskan semua pihak. Dengan mengidentifikasi kepentingan utama masing-masing pihak dan bekerja sama untuk mencapai kesepakatan, tim dapat menemukan solusi yang saling menguntungkan dan menjaga hubungan yang baik di antara anggota tim. Kolaborasi sering kali menghasilkan solusi inovatif dan meningkatkan rasa memiliki terhadap keputusan yang diambil.
Kompromi (Compromise): Dalam teknik ini, kedua pihak yang terlibat dalam konflik memberikan beberapa konsesi untuk mencapai kesepakatan. Kompromi memungkinkan setiap pihak mendapatkan sebagian dari apa yang mereka inginkan, meskipun tidak semuanya. Teknik ini efektif untuk menyelesaikan konflik dengan cepat, terutama ketika waktu atau sumber daya terbatas, meskipun hasil akhirnya mungkin tidak selalu optimal bagi semua pihak.
6. Studi Kasus: Sebuah perusahaan startup teknologi ingin mengembangkan aplikasi e-commerce yang akan digunakan oleh jutaan pengguna di seluruh dunia. Mereka memiliki tim pengembang keil yang berpengalaman, namun mereka tidak memiliki pengalaman sebelumnya dalam membangun aplikasi berskala besar. Jelaskan tantangan yang dihadapi startup tersebut terkait dengan sifat perangkat lunak (Nature of Software) yang berkembang secara terus menerus. Bagaimana mereka harus mempersiapkan diri untuk menghadapi tantangan-tantangan ini ?
Tantangan Terkait dengan Sifat Perangkat Lunak:
- Kompleksitas yang Terus Bertambah: Aplikasi yang digunakan oleh jutaan pengguna di seluruh dunia akan sangat kompleks. Penambahan fitur, skalabilitas, integrasi dengan sistem eksternal (seperti payment gateway atau layanan logistik), serta penanganan data besar akan membuat sistem semakin rumit. Pengelolaan dependensi dan modul harus dilakukan dengan hati-hati untuk menghindari kerusakan atau malfungsi saat aplikasi berkembang.
- Evolusi Berkelanjutan (Continuous Evolution): Aplikasi e-commerce harus terus diadaptasi untuk memenuhi kebutuhan pasar yang dinamis. Ini berarti aplikasi harus berkembang seiring dengan perubahan teknologi, permintaan pengguna, dan regulasi di berbagai wilayah. Startup harus mampu melakukan pembaruan secara berkala tanpa mengganggu layanan yang sudah berjalan.
- Reliability dan Kinerja (Reliability and Performance): Dengan jutaan pengguna, aplikasi harus dapat diandalkan dan berkinerja tinggi. Masalah seperti downtime, bug, dan kinerja lambat bisa menyebabkan pengguna meninggalkan platform. Perusahaan harus mampu menjamin bahwa aplikasi mereka dapat menangani beban pengguna yang besar tanpa mengalami penurunan performa.
- Keamanan (Security): Aplikasi e-commerce mengelola data sensitif seperti informasi pembayaran dan detail pengguna. Startup harus mempersiapkan sistem keamanan yang kuat untuk melindungi data dari serangan siber, kebocoran informasi, atau akses yang tidak sah.
- Skalabilitas (Scalability): Saat aplikasi tumbuh, sistem harus mampu menangani peningkatan jumlah pengguna dan transaksi. Aplikasi harus dirancang untuk bisa di-scale secara horizontal (penambahan server) maupun vertikal (peningkatan kapasitas server) agar dapat mengakomodasi peningkatan beban tanpa downtime atau penurunan performa.
Cara Startup Memersiapkan Diri untuk Menghadapi Tantangan Ini:
- Arsitektur yang Skalabel dan Modular: Startup harus memilih arsitektur yang mendukung skalabilitas, seperti microservices atau arsitektur berbasis cloud. Arsitektur ini memungkinkan penambahan dan pengubahan fitur tanpa mengganggu keseluruhan sistem. Penggunaan layanan cloud seperti Google Cloud Platform (GCP) atau AWS dapat membantu menangani skalabilitas secara lebih fleksibel dan cepat.
- Praktik DevOps: Menerapkan metode DevOps memungkinkan tim untuk melakukan deployment dan pembaruan secara cepat dan efisien, sehingga aplikasi bisa berkembang terus tanpa downtime. CI/CD pipeline (Continuous Integration/Continuous Deployment) akan membantu dalam otomatisasi pengujian, pengiriman, dan implementasi perubahan perangkat lunak.
- Pengujian yang Mendalam (Thorough Testing): Startup harus memprioritaskan pengujian menyeluruh, termasuk pengujian fungsional, non-fungsional, dan keamanan. Pengujian beban (load testing) juga diperlukan untuk memastikan bahwa aplikasi dapat menangani jutaan pengguna secara simultan. Unit testing dan pengujian otomatis juga harus diterapkan untuk memastikan kualitas aplikasi tetap terjaga seiring dengan berkembangnya sistem.
- Keamanan yang Ketat: Startup harus mempersiapkan langkah-langkah keamanan yang komprehensif sejak awal, termasuk enkripsi data, autentikasi multi-faktor, serta compliance dengan standar keamanan seperti PCI DSS (untuk transaksi pembayaran). Selain itu, rutin melakukan audit keamanan dan uji penetrasi dapat mengidentifikasi celah keamanan sebelum digunakan oleh peretas.
- Peningkatan Kapasitas Tim: Meskipun tim pengembang startup ini berpengalaman, mereka mungkin perlu merekrut atau melibatkan ahli yang memiliki spesialisasi dalam aplikasi berskala besar. Konsultasi dengan pakar di bidang infrastruktur cloud, keamanan siber, atau manajemen proyek perangkat lunak skala besar bisa membantu mempercepat proses pengembangan.
- Monitoring dan Maintenance yang Proaktif: Menggunakan alat monitoring yang kuat untuk terus memantau performa aplikasi secara real-time penting untuk mencegah masalah sebelum berdampak pada pengguna. Startup juga harus siap melakukan maintenance rutin untuk mengatasi bug, melakukan patching keamanan, dan meningkatkan performa.
Komentar
Posting Komentar