(2) Memahami Siklus Hidup Perkembangn Perangkat Lunak SDLC

 SDLC atau Software Development Life Cycle merupakan proses pengembangan atau mengubah suatu system perangkat lunak dengan menggunakan atau mengubah suatu system perangkat lunak dengan menggunakan model-model dan metodologi yang digunakan orang untuk mengembangkan system perangkat lunak. SDLC juga merupakan pola yang diambil untuk mengembangkan sistem perangkat lunak, yang terdiri dari tahaptahap: rencana(planning), analisis (analysis), desain (design), implementasi (implementation), uji coba (testing) dan pengelolaan (maintenance).

1. Model Waterfall 

Model Waterfall atau Model air terjun adalah pendekatan klasik dalam pengembangan perangkat lunak yang menggambarkan metode pengembangan linier dan berurutan. Ini terdiri dari lima hingga tujuh fase, setiap fase didefinisikan oleh tugas dan tujuan yang berbeda, di mana keseluruhan fase menggambarkan siklus hidup perangkat lunak hingga kepengirimannya. Setelah fase selesai, langkah pengembangan selanjutnya mengikuti dan hasil dari fase sebelumnya mengalir ke fase berikutnya. 



2. Model Iiteratif  dan Spiral
  a. Model Iiteratif 
           Metode yang merupakan metode ini merupakan prototyping model dan digunakan ketika requiretment dari software akan terus berkembang dalam tahapantahapan pengembangan aplikasi tersebut. iterative model dimulai dengan implementasi sederhana dari subset persyaratan perangkat lunak dan secara iterative (berulang) meningkatkan versinya hinggga sistem keseluruhan siap diimplementasikan. Pada setiap iterasi, modifikasi desain yang dibuat dan kemampuan fungsional baru ditambahkan. Ide dasar di balik metode ini adalah untuk mengembangkan sistem 4 melalui siklus berulang (iteratif) dan dalam porsi yang lebih kecil pada waktu (incremental). 

  b. Mode Spiral
Model spiral adalah metode pengembangan perangkat lunak yang menggabungkan model prototyping dan model waterfall. Model ini digunakan untuk mengelola risiko dalam proyek besar, mahal, dan rumit. Model spiral ini tidak merepresentasikan rangkaian tahapan dengan penelusuran balik (back-tracking), tidak ada fase-fase tahapan yang tetap seperti spesifikasi atau perancangan. Setiap untaian pada pada spiral menunjukkan fase software process. Model pengembangan perangkat lunak dengan metode spiral memiliki dua model yaitu prototyping dan waterfall. Model ini dikenal dengan sebutan Spiral Boehm.



3. Metodologi Agile (scrum, kanban, extreme programming)
  a. Scrum 
         Scrum adalah salah satu metodologi Agile yang menggunakan kerangka kerja berbasis sprint (periode pengembangan singkat, biasanya 1-4 minggu) untuk mengembangkan perangkat lunak secara bertahap. Tim dalam Scrum memiliki peran utama seperti Product Owner (bertanggung jawab atas visi produk), Scrum Master (memfasilitasi proses Scrum), dan Development Team (pengembang yang mengerjakan tugas sprint). Scrum sangat efektif dalam menangani proyek yang dinamis dan sering mengalami perubahan kebutuhan. 

  b. Kanban 
         Kanban adalah metode Agile yang berfokus pada visualisasi alur kerja dengan menggunakan papan tugas. Setiap tugas dipindahkan dari satu tahap ke tahap berikutnya sesuai dengan kapasitas tim. Kanban memungkinkan pengembang mengatur prioritas pekerjaan tanpa sprint yang terikat waktu, sehingga lebih fleksibel untuk perubahan yang mendadak. 

  c. Extreme programing(XP) 
          Extreme Programming (XP) adalah metodologi Agile yang berfokus pada kualitas kode melalui praktik seperti pair programming (dua orang bekerja pada satu kode secara bersamaan), test-driven development (pengujian dilakukan sebelum 8 implementasi), dan continuous integration (pengujian serta penggabungan kode dilakukan terus-menerus). XP cocok untuk proyek yang membutuhkan kualitas perangkat lunak tinggi dengan iterasi yang cepat.
 
Perbandingan antara metode waterfall, iteratif & spiral serta Agile :
Metode waterfall, agile, spiral, dan iteratif adalah metode pengembangan perangkat lunak yang memiliki perbedaan dalam alur kerja, fleksibilitas, dan keterlibatan klien. 

Metode Waterfall 
-Metode tradisional yang berurutan dari awal hingga akhir
-Terstruktur dan cocok untuk proyek dengan spesifikasi yang jelas
-Keterlibatan klien terbatas pada awal dan akhir proyek
-Kelebihan: Kualitas sistem yang dihasilkan baik
-Kekurangan: Proses pengembangan lama dan biaya mahal

Metode Agile 
-Metode iterasi yang fleksibel dan berfokus pada kecepatan
-Keterlibatan klien secara terus-menerus
-Kelebihan: Mudah beradaptasi dengan kebutuhan yang berubah
-Cocok untuk proyek yang berkembang dinamis

Metode Spiral 
-Menggabungkan aspek linear dari metode Waterfall dengan iterasi dari metode prototyping
-Cocok untuk proyek besar dengan kompleksitas lebih tinggi
-Kelebihan: Menangani berbagai jenis risiko yang tidak terduga

Metode Iteratif Metode yang melibatkan siklus berulang.

(1) Rekayasa Perangkat Lunak

 Rekayasa Perangkat Lunak (RPL) adalah cabang ilmu komputer yang berfokus pada penerapan prinsip-prinsip rekayasa dalam pengembangan perangkat lunak. Rekayasa Perangkat Lunak (Software Engineering) didefinisikan sebagai pendekatan sistematis dalam pengembangan perangkat lunak dengan menerapkan prinsip-prinsip rekayasa untuk meningkatkan kualitas, efisiensi, dan keberlanjutan perangkat lunak.

Menurut IEEE (Institute of Electrical and Electronics Engineers), RPL mencakup proses analisis kebutuhan, perancangan, pengkodean, pengujian, dan pemeliharaan perangkat lunak.


Peran Rekayasa Perangkat Lunak dalam pengembangan perangkat lunak : 

1. Meningkatkan Kualitas Perangkat Lunak RPL berkontribusi dalam memastikan bahwa perangkat lunak memenuhi standar kualitas yang tinggi, baik dari segi fungsionalitas, keandalan, efisiensi, maupun keamanan. 

2. Mengoptimalkan Proses Pengembangan Dengan menerapkan metode pengembangan yang terstruktur, seperti Waterfall, Agile, Scrum, atau DevOps, RPL membantu dalam mengoptimalkan efisiensi pengembangan.

3. Mengelola Kompleksitas Proyek Pengembangan perangkat lunak sering kali melibatkan sistem yang kompleks dengan banyak komponen dan integrasi. 

4. Memudahkan Pemeliharaan dan Skalabilitas Salah satu tantangan utama dalam pengembangan perangkat lunak adalah pemeliharaan jangka panjang dan kebutuhan untuk melakukan pembaruan seiring dengan perkembangan teknologi dan kebutuhan pengguna. 

5. Mengurangi Risiko Kegagalan Proyek Banyak proyek perangkat lunak mengalami kegagalan akibat kurangnya perencanaan, perubahan kebutuhan yang tidak terkelola dengan baik, atau masalah teknis lainnya. 

6. Meningkatkan Keamanan Perangkat Lunak Keamanan perangkat lunak menjadi faktor krusial dalam pengembangan modern, terutama dengan meningkatnya ancaman siber. 


Contoh Perangkat Lunak Perangkat lunak dapat dikategorikan berdasarkan fungsinya. Beberapa contoh perangkat lunak yang umum digunakan meliputi: 

 Sistem Operasi (Operating System) → Contohnya Windows, macOS, Linux, Android, iOS. Berfungsi sebagai pengelola sumber daya perangkat keras dan menyediakan lingkungan bagi perangkat lunak lain untuk berjalan. 

 Perangkat Lunak Aplikasi (Application Software) → Contohnya Microsoft Office, Google Chrome, Adobe Photoshop, WhatsApp. Digunakan untuk menjalankan tugas spesifik bagi pengguna. 

 Perangkat Lunak Sistem (System Software) → Contohnya antivirus, driver perangkat keras, dan utilitas sistem yang membantu dalam pengelolaan sistem komputer. 

 Perangkat Lunak Basis Data (Database Software) → Contohnya MySQL, PostgreSQL, Microsoft SQL Server, yang digunakan untuk menyimpan, mengelola, dan mengakses data secara efisien. 

 Perangkat Lunak Pengembangan (Development Software) → Contohnya Visual Studio Code, Eclipse, Android Studio. Digunakan oleh pengembang untuk menulis, menguji, dan mengelola kode program. 


Agar perangkat lunak dapat berfungsi secara optimal dan memenuhi kebutuhan pengguna, ada beberapa kriteria yang harus dipenuhi: 

 Keandalan (Reliability) → Perangkat lunak harus dapat berfungsi dengan stabil tanpa sering mengalami kesalahan atau kegagalan sistem. 

 Efisiensi (Efficiency) → Perangkat lunak harus menggunakan sumber daya (CPU, memori, penyimpanan) secara optimal tanpa menyebabkan beban berlebih pada sistem. 

 Keamanan (Security) → Memiliki mekanisme perlindungan terhadap ancaman seperti virus, peretasan, atau akses yang tidak sah. 

 Kemudahan Penggunaan (Usability) → Antarmuka pengguna harus intuitif, mudah dipahami, dan mendukung pengalaman pengguna yang baik. 

 Portabilitas (Portability) → Mampu berjalan di berbagai sistem operasi atau perangkat tanpa perlu banyak perubahan. 

 Pemeliharaan (Maintainability) → Kode program harus mudah dipahami dan dimodifikasi untuk perbaikan bug, pembaruan fitur, atau peningkatan performa. 

 Fungsionalitas (Functionality) → Mampu menjalankan tugas sesuai dengan kebutuhan pengguna dan spesifikasi yang telah ditentukan. 

 Skalabilitas (Scalability) → Dapat menangani peningkatan jumlah pengguna atau data tanpa menurunkan kinerja secara signifikan. 

 Kompatibilitas (Compatibility) → Dapat berintegrasi dengan perangkat lunak atau sistem lain tanpa mengalami konflik.