Model Spiral

Model spiral adalah generator model proses berbasis risiko yang digunakan untuk memandu rekayasa perangkat lunak bersama berbagai pemangku kepentingan dari sistem intensif. Model ini memiliki dua fitur pembeda utama. Salah satunya adalah pendekatan siklis untuk menumbuhkan tingkat definisi dan implementasi sistem secara bertahap sambil mengurangi tingkat risikonya. Yang lainnya adalah serangkaian tonggak jangkar poin untuk memastikan komitmen pemangku kepentingan untuk solusi sistem yang layak dan saling memuaskan. Model spiral awalnya diusulkan oleh Barry Boehm, model spiral adalah model proses perangkat lunak evolusioner yang memadukan sifat iteratif dari prototyping dengan aspek terkontrol dan sistematis dari model waterfall. Hal ini memberikan potensi untuk pengembangan versi perangkat lunak yang semakin lengkap.

Model spiral adalah pendekatan realistis untuk pengembangan sistem dan perangkat lunak skala besar. Karena perangkat lunak berkembang seiring proses berlangsung, pengembang dan pelanggan lebih memahami dan bereaksi terhadap risiko di setiap tingkat evolusi. Model spiral menggunakan prototyping sebagai mekanisme pengurangan risiko tetapi, yang lebih penting, memungkinkan untuk menerapkan pendekatan prototyping pada setiap tahap dalam evolusi produk. Ini mempertahankan pendekatan bertahap sistematis yang disarankan oleh siklus hidup klasik (classic life cycle) tetapi menggabungkannya ke dalam kerangka berulang yang lebih realistis yang mencerminkan dunia nyata. Model spiral menuntut pertimbangan langsung risiko teknis di semua tahap proyek dan, jika diterapkan dengan benar, harus mengurangi risiko sebelum menjadi masalah. Tapi seperti paradigma lain, model spiral bukanlah obat mujarab. Mungkin sulit untuk meyakinkan pelanggan (terutama dalam situasi kontrak) bahwa pendekatan evolusi dapat dikontrol. Ini menuntut keahlian penilaian risiko yang cukup dan bergantung pada keahlian tersebut untuk sukses. Jika risiko utama tidak terungkap dan dikelola, masalah pasti akan terjadi.

Aplikasi otentik dari model spiral didorong oleh siklus yang selalu menampilkan enam karakteristik. Boehm mengilustrasikan masing-masing dengan contoh "hazardous spiral look-alike" yang melanggar invarian, berikut merupakan 6 karakteristik model spiral:

 Mendefinisikan artifak secara bersamaan
 Melakukan 4 aktivitas dasar pengembangan perangkat lunak pada setiap siklusnya (lihat Gambar)
 Risiko menentukan tingkat usaha
 Risiko menentukan tingkat detail
 Menggunakan titik tombak jangkar 
 Fokus pada sistem dan siklus hidupunya

Sejarah 
Model ini pertama kali dijelaskan oleh Barry Boehm dalam makalahnya tahun 1986 "A Spiral Model of Software Development and Enhancement". Pada tahun 1988 Boehm menerbitkan makalah yang serupa kepada khalayak yang lebih luas. Makalah-makalah ini memperkenalkan diagram yang telah direproduksi dalam banyak publikasi berikutnya yang membahas model spiral. Makalah-makalah awal ini menggunakan istilah "model proses" untuk merujuk pada model spiral serta untuk pendekatan incremental, waterfall, prototyping, dan lainnya. Namun, pencampuran yang didorong oleh risiko model spiral dari fitur model proses lainnya sudah ada.

Dalam publikasi selanjutnya, Boehm menggambarkan model spiral sebagai "generator model proses", di mana pilihan berdasarkan risiko proyek menghasilkan model proses yang sesuai untuk proyek tersebut. Dengan demikian, model incremental, waterfall, prototyping, dan proses lainnya adalah kasus khusus dari model spiral yang sesuai dengan pola risiko proyek tertentu. Boehm juga mengidentifikasi sejumlah kesalahpahaman yang timbul dari penyederhanaan berlebih dalam diagram model spiral asli. Boehm mengatakan kesalahpahaman yang paling berbahaya ini adalah:

 Bahwa spiral hanyalah urutan dari model waterfall yang bersifat incremental
 Bahwa semua kegiatan proyek mengikuti urutan spiral tunggal
 Bahwa setiap aktivitas dalam diagram harus dilakukan, dan dalam urutan yang ditunjukkan

Sementara kesalahpahaman ini mungkin cocok dengan pola risiko beberapa proyek, mereka tidak benar untuk sebagian besar proyek. Dalam laporan Dewan Riset Nasional [4] model ini diperluas untuk mencakup risiko yang terkait dengan pengguna manusia.

Model 
Menggunakan model spiral, perangkat lunak dikembangkan dalam serangkaian rilis evolusioner. Selama iterasi awal, rilis mungkin berupa model atau prototipe. Selama iterasi berikutnya, versi yang semakin lengkap dari sistem akan diproduksi. Model spiral dibagi menjadi satu set kegiatan kerangka kerja yang didefinisikan oleh tim rekayasa perangkat lunak. Ketika proses evolusi ini dimulai, tim perangkat lunak melakukan aktivitas yang tersirat oleh sirkuit di sekitar spiral dalam arah yang searah jarum jam, dimulai dari pusat. Risiko dipertimbangkan setiap kali revolusi dibuat. Tonggak titik jangkar — kombinasi work product dan kondisi yang dicapai di sepanjang jalur spiral — dicatat untuk setiap lintasan evolusi.

Sirkuit pertama di sekitar spiral dapat menghasilkan pengembangan spesifikasi produk; lintasan-lintasan berikutnya di sekitar spiral dapat digunakan untuk mengembangkan suatu protoipe dan kemudian versi perangkat lunak yang semakin canggih. Setiap melewati wilayah perencanaan (planning) akan menghasilkan penyesuaian rencana proyek. Biaya dan jadwal disesuaikan berdasarkan umpan balik yang berasal dari pelanggan setelah penyampaian produk. Selain itu, manajer proyek menyesuaikan jumlah iterasi yang direncanakan untuk menyelesaikan perangkat lunak.

Tidak seperti model proses lain yang berakhir ketika perangkat lunak disampaikan, model spiral dapat diadaptasi untuk diterapkan sepanjang masa pakai perangkat lunak komputer. Oleh karena itu, rangkaian pertama di sekitar spiral mungkin mewakili "konsep proyek pengembangan" yang dimulai pada inti spiral dan berlanjut untuk beberapa iterasi hingga konsep pengembangan selesai. Jika konsep ingin dikembangkan menjadi produk yang sebenarnya, proses berjalan keluar dari spiral dan "proyek pengembangan produk baru" dimulai. Produk baru akan berkembang melalui sejumlah iterasi di sekitar spiral. Kemudian, sirkuit di sekitar spiral dapat digunakan untuk mewakili "proyek peningkatan produk." Pada dasarnya, spiral, ketika dicirikan dengan cara ini, tetap beroperasi sampai perangkat lunak dihentikan. Ada saat-saat proses tidak aktif, tetapi setiap kali perubahan dimulai, proses dimulai pada titik masuk yang sesuai.