Model waterfall atau “metode air terjun” adalah salah satu model pengembangan perangkat lunak yang paling awal dan paling umum digunakan. Model ini terdiri dari serangkaian fase atau tahap yang saling berurutan, dimulai dari analisis kebutuhan, perencanaan, desain, pengkodean, pengujian, dan pemeliharaan.
Setiap fase dalam model waterfall harus selesai sebelum fase berikutnya dimulai. Artinya, tahap berikutnya hanya dimulai setelah tahap sebelumnya sudah selesai sepenuhnya. Model ini menekankan pada perencanaan yang matang, pengawasan yang ketat, dan dokumentasi yang rinci.
Kelebihan dari model waterfall adalah mudah dipahami, mudah diatur, dan menyediakan dokumen yang jelas untuk setiap fase pengembangan. Namun, model ini memiliki kelemahan dalam fleksibilitas dan kemampuan untuk menangani perubahan yang tidak terduga. Jika ada perubahan yang harus dilakukan di salah satu tahap, maka tahap sebelumnya harus diulang kembali dan hal ini dapat memakan waktu dan biaya yang cukup besar. Model ini kurang cocok untuk pengembangan perangkat lunak yang kompleks dan membutuhkan interaksi dan iterasi antara tim pengembangan dan pengguna.
Waterfall adalah salah satu dari sekian banyak model proses pengembangan aplikasi (alias SDLC atau Software Development Life Cycle). Model Waterfall ini merupakan metode kerja yang menekankan fase-fase yang berurutan dan sistematis. Disebut waterfall lantaran proses yang terjadi dalam mengembangkan sebuah perangkat lunak atau aplikasi mengalir satu arah “ke bawah” bak air terjun.
Gambar di bawah ini adalah contoh sederhana dari penerapan model Waterfall.
Pada model waterfall, setiap fase saling bergantung satu sama lain. Kita tak bisa lanjut ke fase berikutnya sebelum fase yang sedang dikerjakan saat ini benar-benar selesai. Misalnya, kita tak bisa melakukan pengujian (test) jika proses pengodean (code) dari keseluruhan aplikasi belum beres. Begitu juga dengan proses deploy, kita tidak bisa men-deploy aplikasi jika keseluruhan komponen belum lolos fase pengujian (test). Begitu seterusnya.
Bayangkan saja, kita harus menunggu keseluruhan kode aplikasi (fase Code) selesai terlebih dahulu sebelum akhirnya bisa lanjut ke tahap pengujian (fase Test). Lantas, bagaimana jika pengujiannya ternyata gagal? Ya harus balik lagi ke fase Code.
Ketahuilah bahwa proses perpindahan dari satu fase ke fase lainnya pun memakan waktu yang lama, salah satu penyebabnya adalah tim yang bertanggung jawab perlu menyesuaikan tools yang mereka gunakan terlebih dahulu.
Belum lagi jika di tengah-tengah proses pengembangan aplikasi tetiba ada perubahan kebutuhan, fitur, atau antarmuka; repotlah jadinya karena harus kembali ke fase awal, yakni penentuan persyaratan/kebutuhan (requirement).
Huft! Harus menunggu berapa lama hingga akhirnya aplikasi bisa dinikmati pengguna? Tentunya akan melelahkan dan menghabiskan banyak waktu. Itulah mengapa model waterfall ini terkenal lambat, kaku terhadap perubahan, dan punya siklus rilis yang panjang.
Mungkin sekarang Anda akan berpikir, “Mana ada sih perusahaan yang pakai model seperti ini?” Eits, jangan gegabah. Faktanya hingga saat ini model Waterfall masih banyak loh yang menggunakannya. Ada banyak alasan mengapa mereka tidak mau–atau mungkin tidak bisa–pindah dari model Waterfall, salah satunya karena kultur yang sudah mendarah daging sehingga tampaknya sukar sekali untuk lepas dari cengkeramannya. Utamanya lagi, dibutuhkan effort yang luar biasa besar untuk mengubah semua proses yang telah berlangsung lama itu.
Pada akhirnya, hanya inovasi dan persaingan pasarlah yang mampu mengubah kultur tersebut. Hmm, rasa-rasanya mirip seperti mitos yang mengatakan bahwa digigit tokek itu hanya bisa dilepas saat ada petir, ya?
Untuk itulah kita belajar DevOps di kelas ini untuk menghapus stigma bahwa pengembangan aplikasi itu kaku dan lama. Niscaya, setelah memahami DevOps, Anda serasa dibawa ke dunia yang berbeda.