ETS KPPL

Nama : Kadek Fajar Pramartha Yasodana

NRP : 5025231185

Kelas : KPPL E


ETS KPPL

1. Mengapa perangkat lunak cenderung menjadi lebih kompleks seiring dengan perkembangannya? Jelaskan dua faktor utama yang menyebabkannya.

Ada beberapa faktor yang membuat perangkat lunak menjadi lebih kompleks

  • Codebase Semakin Banyak : Salah satu faktor utama yang menyebabkan perangkat lunak cenderung lebih kompleks adalah karena code dari perangkat lunak itu sendiri yang lebih banyak. Seiring perkembangannya tentu terdapat beberapa penambahan fitur, perbaikan bug, atau refactoring. Hal-hal tersebut pastinya akan menambah jumlah kode dari setiap versi ke versi yang lebih baru. Hal ini menyebabkan kode dari perangkat lunak tersebut semakin membludak dan banyak. Jika diiringi dengan penambahan code yang tidak reusable dan tidak efisien, tentunya penambahan code itu lagi akan semakin banyak. Semakin banyaknya code, maka semakin banyak pula sesuatu yang harus di monitor dan di test agar perangkat lunak berjalan seperti sebelumnya dengan penambahan fitur atau hal lain tersebut. Maka dari itu dengan penambahan waktu untuk melakukan monitoring, testing, dan memahami code, menyebabkan pengembangan perangkat lunak menjadi lebih rumit.
  • Tidak Adanya Rencana yang Terstruktur : Jika tidak adanya rencana yang terstruktur, tentunya pengembangan perangkat lunak yang codebasenya semakin besar akan lebih rumit lagi. Jika tidak adanya rencana yang terstruktur akan menyebabkan mengembangkan sebuah perangkat lunak yang rumit menjadi kacau dan tidak terorganisir. Hal ini menyebabkan terdapat banyak waktu yang terbuang sia sia untuk memikirkan hal apa yang selanjutnya yang harus dilakukan. Ditambah dengan codebase yang rumit, tentunya pemikiran untuk hal apa yang harus dilakukan selanjutnya menjadi lebih rumit

2. Apa yang dimaksud dengan software reusability, dan mengapa hal ini penting dalam pengembangan perangkat lunak modern?

Software reusability dalam pengembangan perangkat lunak adalah sebuah konsep dimana code yang telah dibuat dalam sebuah perangkat lunak atau library, bisa digunakan kembali untuk membuat sebuah perangkat lunak yang baru ataupun untuk menambahkan fitur yang baru dalam perangkat lunak yang sudah ada. Jika dilihat dari sisi perangkat lunak yang ada (yang saat ini dikembangkan), software reusability juga berarti kemampuan kita untuk menggunakan kembali kode dan resource yang sudah dibuat pada perangkat lunak tersebut untuk mengurangi kompleksitas dan banyaknya kode.

Hal ini penting dalam pengembangan perangkat lunak karena dengan menggunakan kembali sebuah komponen atau code dalam perangkat lunak, kita bisa mengurangi beban kerja untuk membuat sebuah fitur baru dan juga akan membuat perangkat lunak kita menjadi efisien. Mengakibatkan proses pengembangan perangkat lunak menjadi lebih cepat dan berkualitas.

3. Apa peran pengujian perangkat lunak (software testing) dalam siklus hidup pengembangan perangkat lunak, dan sebutkan dua jenis pengujian yang umum dilakukan.

Pengujian dalam perangkat lunak merupakan suatu alur dalam pengembangan perangkat lunak yang dimana software akan dilakukan testing agar software yang dibuat sudah memenuhi standar persyaratan dan berjalan dengan baik. Pengujian meliputi fungsionalitas, kesalahan (bug), pengujian integrasi, dan pengujian kinerja. Sehingga tujuannya adalah untuk menemukan dan memperbaiki kesalahan yang mungkin ada sebelum perangkat lunak diperkenalkan kepada pengguna akhir.

Dua jenis pengujian yang paling umum dilakukan adalah sebagai berikut:

  • Unit Testing : Unit testing merupakan pengujian perangkat lunak (software) yang berfokus pada pengujian unit-unit terkecil dalam sebuah sistem perangkat lunak. Biasanya, unit testing mencakup pengujian function, method, dan class. Unit testing juga merupakan bagian dari functional testing, Functional testing adalah pengujian perangkat lunak untuk memastikan bahwa setiap fitur berfungsi sesuai dengan persyaratan perangkat lunak dan kebutuhan pengguna. functional testing bisa dilakukan dengan. Selain itu Unit testing juga berada dalam kategori white box testing, karena kita melakukan pengujian dalam unit-unit terkecil yang membuat kita perlu menganalisa kode kita.
  • Integration Testing : Integration testing merupakan sebuah pengujian yang memverifikasi bahwa setiap modul/service yang berbeda yang dipakan dalam aplikasi yang dibuat bekerja dengan apa yang diharapkan. Contohnya adalah melakukan testing dari applikasi kita dengan sistem basis data, yang dimana applikasi dan sistem basis data merupakan dua service yang berbeda.
4. Sebutkan dan jelaskan tiga komponen utama dari struktur proses perangkat lunak Framework Activites, Umbrella Activities, Task Set
  • Framework Activites : adalah sebuah komponen dimana dilakukannya definisi dari software engineering process, seperti komunikasi, planning, modelling, construction, dan deployment.
  • Umbrella Activites : adalah sebuah aktivitas yang dilakukan dalam software development process untuk membantu menjaga kualitas, progress, perubahan, dan risiko. Bagian bagian umbrella activities antara lain : Software Project Tracking and Control, Risk Management, Re-usability Management, Document Preparation and Production, dll.
  • Task Sets : adalah sebuah aktivitas yang terdiri dari beberapa koleksi seperti software engineering work task, milestone dan deliverables yang harus diselesaikan dalam sebuah project software
5. Bagaimana manajemen konflik dapat berperan dalam keberhasilan tim rekayasa perangkat lunak, dan sebutkan dua teknik untuk menangani konflik dalam tim pengembangan?
Manajemen konflik memainkan peran penting dalam keberhasilan tim rekayasa perangkat lunak karena dapat membantu menjaga suasana kerja yang positif, meningkatkan kolaborasi, dan memfasilitasi solusi yang inovatif. Terdapat beberapa teknik untuk menangani konflik seperti
  • Komunikasi Terbuka : Komunikasi terbuka sangatlah penting untuk menjaga transparansi antara tim. Setiap anggota harus didorong untuk mengungkapkan pendapat dan kekhawatiran mereka tanpa rasa takut dan konsekuensi. Hal ini akan mengurangi kesalah pahaman dan mewujudkan tim yang solid. 
  • Mediasi : Adalah sebuah alternatif dengan menggunakan sebuah mediator, baik itu anggota tim yang netral atau seorang manajer. Mediator dapat memfasilitasi keresahan dari setiap lawan dan menemukan solusi yang terbaik untuk mempersatukan tim dan menyelesaikan masalah.
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 kecil yang berpengalaman, tetapi 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 tersebut?
Tantangan yang mereka hadapi tentunya adalah cara untuk melakukan scalability dan hal lainnya dari perangkat lunak yang mereka buat, tentunya sesuai dari studi kasus walaupun tim berpengalaman dalam membuat software, tetapi mereka masih belum berpengalaman dalam membuat software yang scalanya sangat besar. Terdapat beberapa tantangan yang perlu diperhatikan tim yaitu
  • Skalabilitas : Aplikasi harus mampu menangani lonjakan pengguna, terutama pada periode tertentu (misalnya, saat promo atau hari besar).
  • Reliability : Pengguna mengharapkan aplikasi selalu tersedia dan dapat diandalkan. Gangguan dapat menyebabkan kehilangan pendapatan dan reputasi.
  • Security : Aplikasi e-commerce rentan terhadap ancaman keamanan, seperti serangan siber dan pencurian data.
Hal ini diperburuk dengan sifat perangkat lunak yang akan lebih rumit dan sulit untuk dikontrol jika sudah dalam codebase yang besar dan scala yang besar karena harus melakukan monitoring, testing, dan pemahaman kode yang lebih baik dan efisien

Cara mereka untuk mepersiapkan diri adalah sebagai berikut
  • Menentukan Software Development Life Cycle : Menentukan SDLC sangatlah penting agar rencana dalam pembuatan software bisa lebih terstruktur mengingat skala aplikasi yang besar. Untuk aplikasi yang besar direkomendasikan menggunakan metode Agile karena mengingat kebutuhan juga bisa berubah ubah seiring dilakukannya testing dan lainnya.
  • Membangun Prototipe : Membuat prototipe awal dari aplikasi untuk mengidentifikasi masalah potensial lebih awal dan mendapatkan umpan balik dari pengguna awal.
  • Mencari Mentor : Dengan adanya mentor yang berpengalaman dalam pengembangan aplikasi berskala besar dapat memberikan wawasan dan bimbingan untuk tim yang kurang berpengalaman.


Comments

Popular posts from this blog

Pertemuan 6 KPPL - Implementasi Web ChatBot Tech Support System, Web & Prototipe & Metodologi

Pertemuan 13 OOP - Abstraksi & Simulasi Fox & Rabit

Pertemuan 7 KPPL - Studi Kasus Pembuatan Aplikasi dengan Agile