Daftar Isi ⇅
show
Agile merupakan prinsip atau pola pikir yang diterapkan dalam suatu proyek pengembangan perangkat lunak yang mengedepankan beberapa nilai dan manifestonya seperti mengedepankan adaptasi terhadap perubahan yang terjadi dari pada hanya terikat pada rencana, serta mementingkan fungsionalitas aplikasi dari pada malah sibuk menyusun buku manual atau dokumen, dsb.
Kata Agile sendiri berarti bersifat cepat, ringan, bebas bergerak, waspada. Dari kata tersebut saja, kita sudah bisa mendapatkan gambaran dari model ini. Konsep Agile Software Development dicetuskan oleh Kent Beck dan 16 rekannya dengan menyatakan bahwa Agile Software Development adalah cara membangun software dengan cara melakukannya serta membantu orang lain yang membangunnya secara bersamaan. Artinya, Agile tidak hanya membantu satu pihak, melainkan seluruh pihak yang terlibat dalam proyek pengembangan perangkat lunak.
Pada intinya, Agile adalah model atau prinsip pengembangan perangkat lunak yang lebih mengusung adaptasi terhadap perubahan dengan cara meningkatkan interaksi antartim dan pengguna sehingga perangkat lunak dapat dikembangkan dengan lebih cepat, efektif, dan efisien serta sesuai dengan kebutuhannya.
Prinsip Agile sering disamakan dengan Scrum yang sebetulnya merupakan salah satu metode penerapannya saja. Banyak yang malah menggunakan istilah Agile untuk mewakili Scrum, padahal terdapat banyak metode lain selain Scrum dalam menerapkan prinsip atau pola pikir Agile. Hanya saja, Scrum adalah metode yang paling banyak digunakan di industri pengembangan software.
Mengapa ada prinsip atau pola pikir Agile dalam pengerjaan proyek perangkat lunak? Pada awalnya prinsip Agile dikembangkan untuk mempercepat proses pengembangan perangkat lunak yang dinilai selalu memakan waktu yang tidak sedikit. Namun untuk mengetahui mengapa tercetuskan model Agile dalam pengembangan aplikasi, kita juga harus sedikit menoleh ke belakang pada sejarahnya.
Mengapa Agile?
Pada awalnya model pengembangan perangkat lunak yang umum digunakan adalah model Waterfall. Waterfall adalah model pengembangan proyek yang membagi pengerjaan proyek pengembangan aplikasi menjadi beberapa fase. Beberapa fase tersebut meliputi : pengonsepan, perancangan, pengembangan, kemudian pengetesan.
Sebetulnya tidak ada yang salah dengan model ini, hanya saja beberapa fase tersebut sangat mengikat. Artinya, pengembangan tidak dapat dilakukan sebelum pengonsepan dan perancangannya selesai, dan bisa jadi memakan waktu yang sangat lama. Belum lagi, setelah pengembangan (coding/programming) telah dilakukan, belum tentu rancangan yang telah dibuat sesuai dengan keinginan user atau klien.
Model ini tidak memungkinkan berbagai perubahan yang terjadi seiring dengan berjalannya proyek. Padahal kenyataan di lapangan menunjukkan bahwa perubahan keinginan klien selalu terjadi karena apa yang mereka rencanakan di awal proyek biasanya tidak sesuai dengan kenyataan yang terjadi setelah fase pengembangan selesai.
Tentunya model Waterall juga dapat menerima perubahan, namun demikian model ini baru dapat melakukannya setelah suatu kebutuhan minimum sistem telah dipenuhi dan fungsi yang dibutuhkan benar-benar selesai sesuai dengan rencana yang telah dirancang. Hal ini berdampak pada birokrasi yang rumit dan waktu yang tidak sedikit bahkan untuk perubahan yang minor saja.
Agile VS Waterfall
Berbeda dengan waterfall yang harus meluncur terus ke bawah tanpa adanya perubahan dalam pengerjaannya, Agile mengharuskan pengembang untuk menyerap berbagai perubahan yang terjadi bahkan ketika suatu fungsi masih dalam tahap pengembangan.
Sejatinya, fase yang dilakukan dalam Agile masih sama dengan waterfall, yaitu perancangan, pengembangan, dan pengetesan. Namun, Agile melakukannya secara sirkuler dan dapat mengulangi berbagai perubahan yang terjadi kembali ke tahap perancangan dan pengembangan, dan berulang terus seperti itu tanpa adanya hambatan “accepted by design” atau diterima sesuai rancangan karena terpaksa, meskipun desain tersebut ternyata tidak sesuai dengan kebutuhan di lapangan.
Tentunya Agile juga bukan berarti pengembang harus mau dan mampu untuk mengikuti berbagai perubahan yang terjadi tanpa adanya konsekuensi. Waktu adalah hal konkret yang tidak dapat diubah, setiap perubahan akan tetap menambah waktu pengerjaan. Beberapa perubahan juga mungkin akan membutuhkan rancangan ulang baru karena perubahannya terlalu radikal.
Perbedaan utamanya adalah tidak adanya sistem kaku yang menghalangi dan menghambat perubahan seperti pada model Waterfall. Caranya, Agile akan menerapkan metrik untuk setiap pengerjaan dan definisi yang lebih rinci dari apa yang disebut dengan selesai (definition of done). Melalui metrik tersebut, suatu pekerjaan memiliki alokasi waktu dan resources dalam suatu sesi pengerjaan yang bisa jadi berubah di tengah pengerjaannya. Jika waktunya tidak cukup, maka akan dibuat sesi tambahan untuk menyelesaikannya, yang artinya mengeluarkan man day atau biaya tambahan pula.
Keunggulan Agile
Perlu menjadi catatan pula bahwa Waterfall yang kaku sebetulnya sudah lama ditinggalkan. Beberapa perusahaan yang masih menggunakan model waterfall sebetulnya kebanyakan telah mengaplikasikan Agile secara tidak langsung. Kebanyakan, perusahaan sekarang telah mampu menampung perubahan di tengah pengerjaan proyeknya. Hanya saja, waterfall yang kaku ini sempat menjadi momok besar di industri perangkat lunak karena telah menghambat banyak perusahaan besar dalam menyelesaikan aplikasinya dengan lebih cepat di masa lalu.
Tingkat keberhasilan proyek perangkat lunak juga terhitung sangatlah rendah sebelum Agile dikumandangkan, yakni hanya sekitar 15-30% saja. Agile telah berhasil meningkatkan angka keberhasilan tersebut sebanyak empat kali lipat.
Chaos Report memberikan pandangan statistik terkait hal tersebut. Dari 10.000 proyek pengembangan perangkat lunak yang telah dikerjakan, ditemukan bahwa proyek Agile memiliki hampir empat kali lipat tingkat keberhasilan jika dibandingkan dengan Waterfall, sedangkan proyek Waterfall memiliki tiga kali tingkat kegagalan jika dibandingkan dengan Agile (The Standish Group International, 2015).
Nilai-Nilai Agile (Agile Value)
Agile memiliki manifesto yang harus menjadi pola pikir seluruh stake holder dalam pengerjaan proyek pengembangan perangkat lunak. Manifesto tersebut kemudian menelurkan beberapa nilai-nilai yang bersinggungan langsung dengan pola pikir dalam mengembangkan perangkat lunak yang lebih peka terhadap perubahan serta mengedepankan interaksi dan kolaborasi dibandingkan dengan paperwork atau formalitas semata. Nilai-nilai yang dijunjung oleh Agile tersebut adalah sebagai berikut.
- Interaksi dan Individu lebih penting daripada proses dan alat,
dalam model Agile, interaksi antar anggota tim amatlah penting, karena tanpa adanya interaksi yang baik maka proses pembuatan perangkat lunak tidak akan berjalan sesuai rencana. Personel juga diharapkan terlibat melalui interaksi yang humanis tanpa malah sibuk mengikuti proses atau alat evaluasi yang terlalu formal dan terstruktur sehingga menghilangkan esensi utama dari interaksinya. - Perangkat lunak yang berfungsi lebih penting daripada dokumentasi yang lengkap,
saat melakukan proses demonstrasi kepada klien, perangkat lunak yang berfungsi dengan baik akan lebih berguna daripada dokumentasi yang lengkap. Paperwork tidak boleh malah menghambat terciptanya perangkat lunak yang berfungsi dengan baik. - Kolaborasi dengan klien lebih penting daripada negosiasi kontrak,
salah satu ciri dari Agile adalah klien menjadi bagian dari tim pengembangan perangkat lunak. Kolaborasi yang baik dengan klien saat proses pembuatan perangkat lunak sangatlah penting ketika menggunakan Agile. Fungsi-fungsi dari perangkat lunak yang dikembangkan harus terus menerus dibicarakan dan diimprovisasi serta disesuaikan dengan keinginan dan kebutuhan klien ketika telah digunakan. - Respons terhadap perubahan lebih penting daripada mengikuti rencana,
Agile berfokus terhadap kecepatan respons tim ketika klien menginginkan perubahan saat proses pembuatan perangkat lunak. Dalam Agile, rencana hanyalah sketsa kasar sementara yang dapat dengan cepat dikembangkan atau diubah ketika dibutuhkan.
Agile Methodology
Seperti yang telah dijelaskan sebelumnya, Agile adalah model, pola pikir, atau prinsip dalam mengembangkan suatu perangkat lunak. Sebagai model, tentunya terdapat berbagai metode agile yang dapat digunakan untuk mengimplementasikan prinsipnya.
Beberapa Agile development methods di antaranya meliputi : Agile Modeling, Adaptive Software Development (ASD), Dynamic Systems Development Method (DSDM), Extreme Programming (XP), Feature Driven Development (FDD), dan Scrum (Proboyekti, 2008). Berikut adalah penjelasan beberapa metode-metode yang dapat digunakan untuk mengaplikasikan Agile tersebut.
Scrum
Schwaber (2017) menjelaskan konsep Scrum yaitu sebuah kerangka kerja dimana tim dapat mengatasi masalah kompleks secara adaptif, dan pada saat bersamaan mereka juga menghantarkan produk dengan nilai setinggi mungkin secara produktif dan kreatif. Scrum telah digunakan untuk mengelola pengembangan produk kompleks sejak awal tahun 1990- an. Scrum bukanlah sebuah proses, teknik, ataupun metodologi, namun sebuah kerangka kerja yang menggunakan bermacam proses dan teknik di dalamnya.
Kerangka kerja Scrum terdiri dari Scrum Team dan peran-peran, acara-acara, artefak-artefak dan aturan-aturan terkait. Setiap komponen di dalam kerangka kerja ini memiliki tujuan tertentu dan sangat penting bagi keberhasilan penggunaan Scrum.
Esensi dari Scrum adalah sebuah tim kecil yang terdiri dari beberapa orang. Tim ini bersifat sangat fleksibel dan mampu beradaptasi. Kekuatan ini terus berlanjut dalam satu tim, beberapa tim, banyak tim, maupun banyak tim yang berhubungan dalam mengembangkan, merilis, mengoperasikan dan menjaga pekerjaan; dan produk hasil pekerjaan. Mereka berkolaborasi dan saling berinteraksi melalui arsitektur pengembangan dan target lingkungan rilis produk yang mutakhir.
Scrum tidak dapat dijelaskan dalam beberapa paragraf. Penjelasan mengenai metode, atau kerangka kerja ini dapat disimak pada artikel di bawah ini.
Baca juga: Scrum : Definisi, Team, Event, Artefact, Kelebihan & Kekurangan
Extreme Programming
Extreme Programming (XP) adalah metodologi dikembangkan untuk proyek dengan skala tim kecil berjumlah 2 hingga 10 orang. XP diimplementasikan pada proyek yang memiliki kebutuhan samar dan mengalami banyak perubahan. XP mengutamakan komunikasi dan feedback, sehingga tidak cocok untuk digunakan pada proyek skala besar dan sulit mendapatkan feedback. Konsep dasar XP adalah menulis kode program dan pengujian. Terdapat 4 nilai utama yang mendasari XP, yakni:
- Communication,
Praktik XP menggunakan komunikasi sebagai nilai penting demi kesuksesan proyek. Pair programming, unit testing, dan estimating adalah contoh praktik XP yang memungkinkan programmer, klien, dan manajer berkomunikasi selama proyek untuk mendapat hasil sesuai kebutuhan. - Simplicity,
setiap tahap XP dibuat sederhana. Membuat setiap bagian fungsi aplikasi sesuai kebutuhkan saat ini, sehingga aplikasi selesai dalam waktu cepat. - Feedback,
XP membagi pengerjaan setiap fungsi dari aplikasi dan melakukan jadwal rilis jangka pendek untuk mendapat feedback dari klien lebih cepat. Jadwal rilis jangka pendek membuat klien dapat menguji program lebih cepat dan memberikan feedback dari hasil tersebut. - Courage,
Keberanian menjadi nilai penting XP dimana anggota tim berani dalam perbaikan kesalahan kode program dan defect. Termasuk dalam menghapus sebagian besar kode dan bekerja melebihi jam kerja untuk memperbaiki defect tersebut.
Agile Modeling
Menurut Ambler (2012) Agile Modeling atau disingkat AM adalah metodologi berbasis praktik untuk pemodelan dan dokumentasi yang efektif untuk pengembangan perangkat lunak. Singkatnya, AM adalah kumpulan dari nilai-nilai, prinsip-prinsip, dan praktik-praktik pemodelan perangkat lunak yang mengusung Agile. Nilai-nilai pada Agile modeling adalah sebagai berikut.
- Komunikasi,
dalam AM komunikasi yang efektif antara tim pengembang dan stake holder lainnya amatlah penting dan harus terus dijalankan dari awal hingga akhir proyek. - Kesederhanaan,
AM menuntut kita untuk terus berusaha mengambil solusi yang sesederhana mungkin agar tidak menimbulkan kejenuhan dalam praktiknya. - Umpan balik,
dalam AM umpan balik harus dilakukan dengan lebih cepat dan lebih sering antarstakeholder. - Keberanian,
keberanian untuk mencoba sesuatu teknik baru dan teguh pada pendirian ketika setelah mencobanya - Kerendahan hati,
seluruh tim dituntut untuk selalu sadar bahwa kita tidak selalu mengetahui segala sesuatunya, sehingga pihak lain dapat membantu menambahkan nilai pada proyek pengembangan yang sedang dikerjakan.
Referensi
- Muslim, M. A. 2014. Scientific Journal of Informatic. Implementasi Cloud Computing Menggunakan Metode Pengembangan Sistem Agile. Vol. 1, No. 1 : 30.
- Proboyekti, U. (2008). Bahan Ajar Rekayasa Perangkat Lunak Agile Software Development.
- The Standish Group International, I. (2015). CHAOS REPORT 2015. Retrieved from https://www.standishgroup.com/sample_research_files/CHAOSReport2015-Final.pdf