SOAL EVALUASI TENGAH SEMESTER KPPL (E) - 23/10/2024
Nama : Tarisha Falah Basuki
NRP : 5025231043
Kelas : KPPL (E)
1. Mengapa perangkat lunak cenderung menjadi lebih kompleks seiring dengan perkembangannya? jelaskan 2 faktor utama yang menyebabkannya!
jawab:
perangkat lunak cenderung lebih kompleks seiring dengan perkembangannya disebabkan oleh berbagai alasan. 2 faktor utama yang menyebabkan yaitu sebagai berikut.
1) Penambahan Fitur dan Fungsi : seiring berjalannya waktu, kebutuhan setiap pengguna di berbagai aspek semakin meluas dan berkembang sehingga diperlukan untuk memperbaharui atau menambahkan fitur - fitur baru yang dapat memenuhi kebutuhan setiap pengguna. Setiap kali fitur atau fungsi baru ditambahkan, interaksi antar komponen menjadi lebih rumit, dan hal ini bisa memperburuk kompleksitas sistem secara keseluruhan. Setiap fitur baru memerlukan kode tambahan, konfigurasi, pengujian, dan pemeliharaan, yang semuanya memperbesar ukuran dan kesulitan pengelolaan perangkat lunak.
2) Teknik Pengelolaan Kode dan Teknologi Warisan (Legacy Systems) : walaupun terus berkembang selama bertahun - tahun, proyek - proyek perangkat lunak masih banyak yang menggunakan teknologi, kode, atau arsitektur lama (legacy). teknologi tersebut sering kali tidak kompatibel dengan teknologi terbaru yang sudah ada, namun tidak bisa dengan mudah dihilangkan atau digantikan sebab dapat berpengaruh besar kepada sistem yang sejak dari awal masih menggunakan teknologi lama. pengembang sering kali harus bekerja di atas kode yang sudah ada, yang mungkin tidak terdokumentasi dengan baik atau memiliki desain yang tidak optimal, sehingga menambah beban kompleksitas. kombinasi teknologi lama dan baru menciptakan tantangan tambahan dalam pengelolaan dan pengembangan perangkat lunak.
2. apa yang dimaksud dengan software reusability, dan mengapa hal ini penting dalam pengembangan perangkat lunak modern?
jawab:
software reusability (penggunaan kembali perangkat lunak) adalah kemampuan untuk menggunakan kembali perangkat lunak yang sudah ada untuk membangun komponen baru sehingga dapat digunakan kembali dalam berbagai aplikasi atau proyek lain tanpa perlu membuatnya dari awal. dengan kata lain, komponen tersebut dapat dipakai ulang dalam situasi yang berbeda.
software reusability penting dalam pengembangan perangkat lunak modern sebab software reusability merupakan salah satu kualitas perangkat lunak yang dapat membantu mengurangi waktu, biaya, dan sumber daya manusia. software reusability juga memiliki beberapa keuntungan yang mempermudah pekerjaan manusia antara lain:
1) efisiensi waktu dan biaya : Menggunakan kembali komponen perangkat lunak yang sudah ada mengurangi waktu yang diperlukan untuk menulis, menguji, dan memelihara kode baru. Ini membantu tim pengembang menghemat sumber daya, mengurangi biaya proyek, dan mempercepat siklus pengembangan perangkat lunak.
2) kualitas yang lebih baik : Komponen yang telah digunakan berulang kali di berbagai proyek biasanya sudah teruji dan lebih stabil. Dengan menggunakan kembali kode yang sudah mapan, pengembang dapat mengurangi kemungkinan bug atau kesalahan, sehingga meningkatkan keandalan dan kualitas perangkat lunak secara keseluruhan.
3) konsistensi : Reusability memastikan bahwa komponen yang sama digunakan di berbagai tempat, menciptakan konsistensi dalam aplikasi yang dikembangkan. Ini membuat pemeliharaan kode lebih mudah karena tidak perlu ada implementasi yang berbeda untuk fungsi yang sama di bagian-bagian yang berbeda dari sistem.
4) pemeliharaan yang mudah: Ketika komponen perangkat lunak dapat digunakan kembali, perbaikan atau pembaruan pada satu modul secara langsung dapat diterapkan pada semua proyek atau aplikasi yang menggunakan modul tersebut. Ini mempermudah pengelolaan pembaruan dan perbaikan bug, sehingga membuat proses pemeliharaan lebih efisien.
3. apa peran pengujian perangkat lunak(software testing) dalam siklus hidup pengembangan perangkat lunak, dan sebutkan 2 jenis pengujian yg umum dilakukan.
jawab:
pengujian perangkat lunak atau software testing memiliki peran penting dalam siklus hidup pengembangan perangkat lunak atau SDLC. tujuan software testing sendiri adalah untuk menemukan dan memperbaiki kesalahan yang mungkin ada sebelum perangkat lunak diperkenalkan kepada pengguna akhir. berikut adalah beberapa peran penting software testing dalam siklus hidup pengembangan perangkat lunak atau SDLC.
1) memastikan kualitas dan keandalan perangkat lunak : pengujian bertujuan untuk mendeteksi bug, kesalahan, atau masalah lainnya dalam perangkat lunak sebelum produk dirilis sehingga pengujian dapat membantu menjaga kualitas produk dan mengidentifikasi adanya potensi risiko yang mempengaruhi keandalan dan kinerja sistem.
2) menjamin pemenuhan kebutuhan dan spesifikasi : pengujian membantu memastikan bahwa perangkat lunak sesuai dengan persyaratan yang ditetapkan pada awal proyek, mencakup uji validasi untuk memastikan bahwa perangkat lunak memenuhi kebutuhan pengguna serta uji verifikasi untuk memastikan perangkat lunak dikembangkan dengan benar menurut spesifikasi yang ada.
3) mendukung proses pemeliharaan dan evolusi perangkat lunak : saat perangkat lunak diperbarui atau dikembangkan lebih lanjut, pengujian regresi (regression testing) memastikan bahwa perubahan atau penambahan baru tidak merusak fungsi-fungsi yang sudah ada sebelumnya.
berikut adalah 2 contoh dari jenis pengujian yang umum dilakukan.
1) unit testing : dilakukan oleh pengembang untuk memastikan bahwa setiap bagian kecil dari kode (biasanya fungsi atau metode) bekerja dengan benar. Pengujian ini biasanya dilakukan di awal siklus pengembangan, bertujuan untuk memeriksa dan menguji setiap unit atau komponen perangkat lunak secara individual.
2) integration testing : menguji interaksi antara modul-modul atau komponen yang berbeda untuk memverifikasi bahwa kombinasi mereka berfungsi seperti yang diharapkan, bertujuan memastikan bahwa modul atau komponen perangkat lunak yang telah diuji secara individual dapat bekerja bersama dengan baik.
4. sebutkan dan jelaskan tiga komponen utama dari struktur proses perangkat lunak framework activities, umbrella activities, task set.
jawab:
a. framework activites
Framework activities ini merupakan bagian dari Software Development Life Cycle (SDLC) atau siklus hidup pengembangan perangkat lunak, yang membantu memastikan pengembangan dilakukan secara sistematis dan terstruktur. tiga komponen utama dari framework activities adalah sebagai berikut.
1) komunikasi : pengembang dan pemangku kepentingan berkomunikasi untuk memahami kebutuhan dan tujuan sistem yang akan dibangun
2) perencanaan : tim proyek menentukan bagaimana pekerjaan akan dilakukan. perencanaan melibatkan pembuatan jadwal, alokasi sumber daya, anggaran, serta pengelolaan risiko. tujuannya adalah menyusun rencana pengembangan yang realistis dan terorganisir.
3) pemodelan : melibatkan pembuatan representasi sistem melalui diagram dan dokumen teknis. pada tahap ini, arsitektur sistem, desain antarmuka, dan rincian teknis lainnya ditentukan. pemodelan ini membantu dalam visualisasi solusi yang akan dikembangkan.
b. umbrella activities
umbrella activities yaitu aktivitas menyeluruh adalah serangkaian langkah atau prosedur yang diikuti oleh tim pengembangan perangkat lunak untuk menjaga kemajuan, kualitas, perubahan, dan risiko tugas pengembangan yang lengkap. tiga komponen utama dari umbrella activities adalah sebagai berikut.
1) manajemen konfigurasi perangkat lunak (software configuration management - SCM) : aktivitas yang mengelola perubahan dalam proyek perangkat lunak. SCM mencakup pengendalian versi, pelacakan perubahan, serta pengelolaan berbagai konfigurasi produk perangkat lunak, seperti kode sumber, dokumen, dan artefak lainnya, bertujuan memastikan bahwa setiap perubahan yang dilakukan terdokumentasi dengan baik dan tidak menyebabkan kekacauan dalam pengembangan.
2) jaminan kualitas perangkat lunak (software quality assurance - SQA) : memastikan bahwa perangkat lunak yang dikembangkan memenuhi standar kualitas yang telah ditetapkan. SQA melibatkan pengujian, audit, dan evaluasi proses pengembangan untuk menemukan dan memperbaiki kesalahan atau bug, untuk menjaga agar perangkat lunak bekerja dengan benar, sesuai spesifikasi, dan handal saat digunakan.
3) manajemen risiko (risk management) : potensi risiko yang dapat mempengaruhi pengembangan perangkat lunak diidentifikasi, dianalisis, dan ditangani. Manajemen risiko meliputi pemantauan dan mitigasi risiko yang terkait dengan waktu, biaya, teknis, dan kebutuhan klien; bertujuan meminimalisir dampak negatif yang dapat mempengaruhi proyek dan menjaga agar proyek tetap berada di jalur yang tepat.
c. task set
task set adalah kumpulan tugas, tonggak pencapaian. dan hasil akhir yang harus dipenuhi untuk menyelesaikan proyek perangkat lunak. tiga komponen utama dari task set adalah sebagai berikut.
1) pekerjaan spesifik (specific tasks) : aktivitas yang harus dilakukan untuk menyelesaikan sebuah tahap atau kegiatan dalam pengembangan perangkat lunak, bertugas agar tim dapat memahami langkah-langkah yang diperlukan untuk menyelesaikan pekerjaan tertentu.
2) produk kerja (work products) : output yang dihasilkan dari tugas-tugas yang dilakukan. contohnya, dokumen persyaratan, diagram arsitektur, kode sumber, dan laporan pengujian merupakan produk kerja yang dihasilkan dari aktivitas dalam pengembangan perangkat lunak. setiap task set akan memiliki hasil atau artefak yang dihasilkan selama proses pengerjaan
3) mekanisme dukungan (milestones, verifikasi, dan validasi) : mencakup alat, teknik, atau prosedur yang mendukung pelaksanaan tugas. termasuk di dalamnya adalah pencapaian milestone sebagai penanda progres, serta proses verifikasi dan validasi untuk memastikan bahwa produk kerja sesuai dengan standar dan memenuhi kebutuhan yang diharapkan. proses ini membantu memastikan kualitas dan kepatuhan terhadap tujuan proyek.
5. studi kasus: sebuah perusahaan startup teknologi ingin mengembangkan aplikasi e-commerce yang akan digunakan oleh jutaan pengguna di seluruh dunia. mereka memiliki tim pengembangan kecil yang berpengalaman, namun mereka tidak memilki pengalaman sebelumnya dalam membangun aplikasi berskala besar. jelaskan tantangan yang dihadapi startup tersebut terkait sifat perangkat lunak (Nature of Software) yang berkembang secara terus menerus. bagaimana mereka harus mempersiapkan diri untuk menghadapi tantangan - tantangan ini?
jawab :
Membangun aplikasi e-commerce berskala besar adalah tantangan yang kompleks, terutama bagi startup dengan tim kecil yang belum berpengalaman dalam proyek berskala besar. Tantangan-tantangan yang mereka hadapi terkait dengan sifat perangkat lunak yang terus berkembang dapat dikaitkan dengan beberapa aspek berikut:
1) kompleksitas yang berkembang : seiring dengan bertambahnya pengguna, fitur, dan integrasi, aplikasi akan menjadi semakin kompleks. pengelolaan dependensi, modul, dan interaksi antar sistem akan menjadi lebih rumit. kesalahan kecil dalam satu bagian sistem bisa berdampak besar di bagian lain, terutama jika tidak ada mekanisme yang tepat untuk menangani perubahan atau bug.
2) evolusi kebutuhan dan fitur : perangkat lunak terus berkembang seiring dengan perubahan kebutuhan pengguna dan pasar. Fitur yang dianggap penting di awal mungkin akan berubah seiring waktu. Hal ini dapat menyebabkan peningkatan kompleksitas dalam menjaga konsistensi antar fitur lama dan baru, serta memastikan bahwa sistem tetap berjalan dengan lancar.
3) ketidakpastian dan perubahan teknologi : dunia teknologi berkembang sangat cepat, dengan alat dan framework baru yang muncul secara teratur. Startups bisa kesulitan dalam memilih teknologi yang tepat, terutama karena teknologi yang populer saat ini mungkin tidak lagi relevan dalam beberapa tahun ke depan.
4) manajemen performa dan skalabilitas : aplikasi yang melayani jutaan pengguna akan menghadapi masalah performa seperti latency, bottleneck pada server, serta traffic spikes. Tanpa arsitektur yang dirancang untuk skala besar, aplikasi mungkin akan gagal menangani beban pengguna yang besar.
5) keamanan : dengan data jutaan pengguna, terutama data sensitif seperti informasi pembayaran, risiko cybersecurity menjadi sangat besar. ancaman seperti data breaches, DDoS attacks, dan fraudulent activities harus diantisipasi.
Comments
Post a Comment