Model inkremental

**Model inkremental** adalah pendekatan pengembangan perangkat lunak yang membagi produk menjadi beberapa bagian kecil, sehingga produk tersebut dirancang, diimplementasikan, dan diuji secara bertahap hingga produk selesai. Model ini menggabungkan elemen-elemen model waterfall dengan filosofi iteratif dari *[[Pembuatan purwarupa perangkat lunak|prototyping]]*. Ada banyak situasi saat kebutuhan perangkat lunak awal didefinisikan dengan cukup baik, tetapi ruang lingkup keseluruhan dari upaya pengembangan menghalangi proses yang murni linier. Selain itu, terkadang ada kebutuhan mendesak untuk segera menyediakan sebagian kecil fungsionalitas perangkat lunak kepada pengguna. Hal ini memungkinkan pengguna mulai memanfaatkan perangkat lunak tersebut lebih awal, sementara pengembang terus memperbaiki dan menambahkan fitur baru dalam rilis-rilis berikutnya. Dalam kasus seperti itu, model yang dibutuhkan adalah model inkremental.

Model inkremental menggabungkan elemen proses linier dan paralel, memungkinkan pendekatan yang fleksibel dalam pengembangan perangkat lunak. Setiap tahap pengembangan mengikuti urutan linier berdasarkan jadwal tertentu. Proses ini menghasilkan *"increment"*, yaitu unit perangkat lunak yang dapat dirilis kepada pengguna.  Increment tersebut serupa dengan hasil bertahap yang dihasilkan oleh model proses evolusioner, karena setiap iterasi memberikan versi perangkat lunak yang lebih lengkap dan fungsional. Misalnya, perangkat lunak pengolah kata yang dikembangkan menggunakan model inkremental dapat memberikan fungsi dasar berupa manajemen file, pembuatan, dan pengeditan dokumen dalam *increment* pertama; Pembuatan dan pengeditan dokumen yang lebih canggih dalam *increment* kedua; pengejaan dan tata bahasa di *increment* ketiga; dan kemampuan mengatur tata letak halaman di *increment* keempat. Perlu dicatat bahwa aliran proses untuk setiap *increment* dapat memasukkan paradigma *prototyping**.*

Ketika model inkremental diterapkan, *increment* pertama biasanya berfungsi sebagai produk inti yang mencakup kebutuhan dasar. Produk ini hanya menyelesaikan fitur utama, sementara berbagai fitur tambahan, baik yang sudah diketahui maupun yang belum, dibiarkan untuk ditangani di tahap berikutnya. Produk inti kemudian digunakan oleh pelanggan atau diuji secara menyeluruh untuk mendapatkan masukan. Berdasarkan hasil penggunaan atau evaluasi ini, rencana untuk *increment* berikutnya disusun. Rencana tersebut mencakup revisi pada produk inti agar lebih sesuai dengan kebutuhan pelanggan serta penambahan fitur dan fungsi baru. Siklus ini terus berulang dengan setiap *increment* hingga produk lengkap berhasil diselesaikan.

Model proses inkremental menekankan pengiriman produk yang dapat digunakan pada setiap tahap *increment*. *Increment* pertama, meskipun belum menjadi produk akhir, adalah versi awal yang dapat digunakan oleh pengguna dan memberikan dasar untuk evaluasi lebih lanjut. Pendekatan ini sangat bermanfaat dalam situasi saat sumber daya manusia terbatas dan ada tenggat waktu bisnis yang ketat. *Increment* awal memungkinkan pengembangan dilakukan oleh tim kecil, sementara tambahan tenaga kerja dapat disiapkan untuk *increment* berikutnya jika produk inti mendapat respons positif dari pengguna. Selain itu, increment juga dapat dirancang untuk mengurangi risiko teknis. Misalnya, dalam kasus di mana pengembangan sistem utama bergantung pada ketersediaan  perangkat keras baru dengan jadwal pengiriman yang belum pasti, *increment* awal dapat dirancang tanpa memanfaatkan perangkat keras tersebut. Dengan strategi ini, sebagian fungsionalitas dapat disampaikan kepada pengguna tanpa harus menunggu seluruh sistem selesai, sehingga menghindari penundaan yang signifikan.

## Model
Tahapan ini berlaku umum untuk semua model.

# Komunikasi *(communication)* : membantu memahami tujuan.
# Perencanaan *(planning)*: diperlukan karena banyak orang (tim perangkat lunak) bekerja pada proyek yang sama tetapi fungsinya berbeda pada saat yang sama.
# Pemodelan *(modelling)*: melibatkan pemodelan bisnis, pemodelan data, dan pemodelan proses.
# Konstruksi *(construction)*: melibatkan penggunaan kembali komponen perangkat lunak dan kode otomatis (proses pembuatan program).
# Penyebaran *(deployment*): integrasi semua *increment**.*

## Kelebihan dan kekurangan
Kelebihan-kelebihan dari model inkremental, yaitu menghasilkan perangkat lunak yang berfungsi dengan cepat dan lebih awal selama siklus hidup perangkat lunak, lebih fleksibel dan lebih murah untuk mengubah ruang lingkup dan kebutuhan, sehingga menurunkan biaya pengiriman awal. Selanjuntnya model ini lebih mudah untuk melakukan pengujjian dan *debug* selama iterasi yang lebih kecil. Kemudian pelanggan dapat merespons masing-masing *build.* Yang terakhir adanya kemudahan untuk mengelola risiko karena potongan berisiko diidentifikasi dan ditangani selama iterasi. Adapun kelemahan dari model inkremental ini, antara lain membutuhkan desain dan rencana yang baik, membutuhkan definisi keseluruhan sistem yang lengkap sebelum dipecah menjadi beberapa *increment,* dan total biayanya lebih banyak dari pada model *waterfall**.*

## Referensi