Deni Murdiani, S.Kom, M.Kom

Deni MurdianiBlog

Mengenal Agile Development Software

Deni Murdiani Mar 15, 2022 13:29 604
Mengenal Agile Development Software

Oleh : Deni Murdiani

Agile yang berarti "tangkas" adalah sebuah kata yang paling representative dengan sifat adaptif dan responsiveterhadap perubahan. Kata agile dipilih oleh orang-orang yang merupakan para perintis dari berbagai macam framework  pada pertemuan yang diikuti oleh 17 orang di Snow Bird Utah, tanggal 11-13 Februari 2001. Dari 17 orang tersebut turut hadir diantaranya Kent Beck, Ron Jeffries, dan Martin Fowler yang merintis eXtreme Programming (XP),  selain itu ada  Ken Schwaber, Jeff Sutherland, dan Mike Beedle yang merintis Scrum, dan juga Alistair Cockburn yang merintis Crystal. Agile dirintis atas dasar adanya persamaan persepsi terhadap proses pengembangan software yang dianggap ada yang salah (Syaiful, 2015)

Salah satu proses pengembanagan yang dianggap salah pada saat itu adalah Waterfall Model. Dalam Walterfalljeda waktu yang panjang antara penentuan requirement dan product delivery dapat berujung ada pembatalan project karena proses yang lama. Kebutuhan user yang berubah-ubah pada jangka waktu tersebut membuat projek tidak memenuhi requirement (Syaiful, 2015).

Dalam pertemuan yang dilaksanakan di Snow Bird Utah pada tanggal 11-13 Februari 2001 yang diikuti oleh 17 orang perintis berbagai macam framework, mereka juga menyepakati nilai-nilai dari pengembangan software yang agile, nilai-nilai tersebut mereka namankan sebagai agile manifesto (Syaiful, 2015). Nilai-nilai tersebut merupakan hal yang mendasari dalam berlangsungnya penggunaan Agile Development Software. Agile Manifesto seperti yang terdapat pada website agilemanifesto.org  (Agilemanifesto.org, 2019) adalah sebagai berikut:

1.     Individuals and Interactions Over Processes and Tools

Individu dan interkasi antar individu pelaku development lebih diutamakan dibandingkan prosesnya, karena yang merespon terhadap kebutuhan klien adalah individu, bukan proses, sehingga individu lah yang menyetir development yang berlangsung. Dengan demikian, development akan lebih responsif terhadap kebutuhan klien. Selain itu, jika individu sebagai penyetir development, komunikasi antar individu dapat berlangsung dengan fleksibel, misalnya ketika dibutuhkan sesuatu dan perlu dikomunikasikan. Sedangkan jika disetir oleh proses, bisa jadi komunikasi antar anggota harus terstruktur, terjadwal, dan kontennya spesifik. Selain individu itu sendiri, interaksi antar individu juga penting. Pentingnya interaksi juga menandakan bahwa developer tidak boleh “masa bodoh” dengan pekerjaan developer lain.

2.     Working Software Over Comprehensive Documentation

Dulu, banyak waktu yang dialokasikan untuk membuat dokumentasi produk untuk melakukan development maupun delivery. Misalnya penjabaran berbagai spesifikasi produk, requirement, desain interface, dan sebagainya yang ditulis secara detail sehingga menghasilkan dokumen yang cukup banyak. Kemudian dokumen-dokumen tersebut juga memerlukan persetujuan pihak terkait agar development dapat dilaksanakan. Hal ini menyebabkan waktu development semakin panjang (menambah delay untuk delivery). Pada agile, lebih diutamakan working produk yang terdeliver ke klien dengan cepat, sehingga hal-hal terkait dokumentasi tersebut dikurangi. Pada Agile, dokumentasi-dokumentasi requirement diwujudkan sebagai user stories, dan itu sudah cukup untuk developer untuk memulai megimplementasikan fungsi yang diinginkan. Namun, agile tetap memperhatikan dokumentasi meskipun working software lebih diutamakan.

3.     Customer Collaboration Over Contract Negotiation

Pada agile, iterasi yang dilengkapi dengan kolaborasi dengan klien akan lebih efektif untuk development. Klien dapat memberikan feedback terhadap hasil yang telah dibuat pada setiap iterasi sehingga dapat diperbaiki maupun ditambahkan. Ini menguntungkan kedua pihak, developer dan klien. Developer diuntungkan karena spesifikasi produk menjadi lebih jelas dan mengeliminasi adanya fitur yang kurang feasible dan klien juga diuntungkan karena mendapatkan produk yang lebih sesuai dengan keinginannya. Sedangkan pada Waterfall, klien bernegosiasi dengan development terkait requirement produk secara detail sebelum development dimulai. Klien hanya terlibat sebelum proses dimulai, bukan ketika proses berjalan. Ini akan lebih menyulitkan developer untuk melakukan implementasi sesuai kebutuhan klien. Agile berusaha memastikan produk sesuai atau sedekat mungkin dengan apa yang klien inginkan sebenarnya.

4.     Responding to Change Over Following a Plan

Model development tradisional seperti Waterfall tidak fleksibel terhadap perubahan, sehingga sekarang banyak dihindari. Model tersebut menekankan proses development yang sesuai dengan perencanaan dan secara detail serta sesuai urutan yang telah ditetapkan dengan fitur-fitur yang sudah pasti, tidak dapat berubah-ubah. Pada Agile, development lebih fleksibel terhadap perubahan. Agile menggunakan iterasi yang pendek dan fitur baru dapat ditambahkan pada iterasi berikutnya jika diperlukan fitur baru. Menurut Agile, fleksibilitas terhadap perubahan dapat meningkatkan kualitas project sehingga diperoleh nilai lebih pada hasil akhirnya.

Dari keempat nilai Agile Manifesto diatas, dapat diuraikan ke dalam 12 prinsip sebagai Agile Principles. Berikut adalah prinsip-prinsip tersebut yang dikutip dari website agilemanifesto.org.

1.     Memprioritaskan kepuasan klien dengan menghasilkan output perangkat lunak yang mempunyai nilai.

2.     Proses Agile memanfaatkan perubahan untuk keuntungan klien.

3.     Dalam menghasilkan sebuah perangkat lunak, memprioritaskan pengerjaan dengan waktu yang singkat.

4.     Seluruh Tim dan orang-orang yang berkaitan dengan proyek terus berkolaborasi selama pengerjaan proyek.

5.     Lingkungan pengembang proyek memiliki suasana yang motivatif. 

6.     Melakukan komunikasi langsung antar Tim untuk lebih efektif dan efisien dalam berbagi informasi.

7.     Tolak ukur perkembangan Tim adalah adanya perangkat lunak yang berkerja.

8.     Perhatian terhadap detail-detail teknis dan desain akan meningkatkan agility.

9.     Kesederhanaan adalah hal yang sangat penting.

10.  Self-organizing team mendukung arsitektur, kebutuhan, dan rancangan perangkat lunak yang baik.

11.  Tim pengembang secara rutin terus berkomunikasi untuk mendiskusikan sistem kerja yang lebih efektif.