Pengertian Metode Agile Software Development – Istilah Agile sendiri terdiri dari dua pengertian, yaitu: pertama pengertian dari segi filosofi, dan kedua pengertian dari segi pedoman pengembangan perangkat lunak. Dari segi filosofi, agile mempunyai arti antara lain: mendorong demi terciptanya kepuasan pelanggan; mempercepat delivery perangkat lunak secara bertahap (incremental); tim proyek yang ramping dan mempunyai motifasi yang sangat tinggi; minimasi pekerjaan; serta menyederhanakan (birokrasi) keseluruhan proses pembangunan perangkat lunak. Sedangkan dari segi pedoman pengambangan perangkat lunak, agile mempunyai pengertian, bahwa secara aktif dan berkesinambungan, antara pengembang dengan pelanggan harus senantiasa menjalin kerjasama dan komunikasi dengan baik.
Agile Software Development merupakan salah satu dari beberapa metode yang digunakan dalam pengembangan software. Agile Software Development adalah jenis pengembangan sistem jangka pendek yang memerlukan adaptasi cepat dan pengembang terhadap perubahan dalam bentuk apapun. Dalam Agile Software Development interaksi dan personel lebih penting dari pada proses dan alat, software yang berfungsi lebih penting daripada dokumentasi yang lengkap, kolaborasi dengan klien lebih penting dari pada negosiasi kontrak, dan sikap tanggap terhadap perubahan lebih penting daripada mengikuti rencana.
Agile Software Development juga dapat diartikan sekelompok metodologi pengembangan software yang didasarkan pada prinsip-prinsip yang sama atau pengembangan system jangka pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk apapun.
Prinsip Agile
Agile Software Development juga melihat pentingnya komunikasi antara anggota tim, antara orang-orang teknis dan businessmen, antara developer dan managernya. Ciri lain adalah klien menjadi bagian dari tim pembangun software. Ciri-ciri ini didukung oleh 12 prinsip yang ditetapkan oleh Agile Alliance, yaitu:
- Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus.
- Menerima perubahan kebutuhan, sekalipun diakhir pengembangan.
- Penyerahan hasil/software dalam hitungan waktu beberapa minggu sampai beberapa bulan.
- Pihak bisnis dan pengembang harus bekerja sama setiap hari selama pengembangan berjalan.
- Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukun dan yang dipercaya untuk dapat menyelesaikan proyek.
- Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien
- Software yang berfungsi adalah ukuran utama dari kemajuan proyek
- Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan
- Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile
- Kesederhanaan penting
- Arsitektur, kebutuhan dan desain yang bagus muncul dari tim yang mengatur dirinya sendiri
- Secara periodik tim evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.
Kedua belas prinsip tersebut menjadi suatu dasar bagi model-model proses yang punya sifat agile. Beberapa jenis proses permodelan yang termasuk kedalam metode Agile Software Development : Extreme Programming (XP), Adaptif Software Development (ASD), Dynamic System Development Method (DSDM), Scrum, Crystal, Feature Driven Development (FDD), Agile Modeling (AM).
Kelebihan Agile
Adapun kelebihan dari metode Agile ini dapat dilihat pada penjelasan di bawah ini.
- Meningkatkan kepuasan kepada klien
- Pembangunan system dibuat lebih cepat
- Mengurangi resiko kegagalan implementasi software dari segi non-teknis
- Jika pada saat pembangunan system terjadi kegagalan,kerugian dari segi materi relative kecil.
Proses Agile
Agile Process merupakan sekelompok aktifitas pembangunan perangkat lunak secara iteratif yang menekankan pada aktifitas konstruksi (desain dan koding). Agile Process mengeliminasi sebagian besar waktu untuk melakukan perencanaan sistem dan berusaha sebisa mungkin mematuhi jadwal delivery sistem yang telah dijanjikan. Requirements yang dibutuhkan secara langsung di-drive oleh pelanggan itu sendiri, dan apabila terjadi perubahan terhadap requirements tersebut, pengembang dituntut mampu beradaptasi dengan perubahan yang terjadi. Berikut merupakan salah satu proses dari model Agile Software Development, yaitu scrum:
First meeting
Proses scrum diawali dengan pembuatan tujuan yang akan dicapai dan penentuan product backlog. Product backlog dikuantisasi waktu dengan satuan hari (antara 1-20 hari). Product backlog merupakan kombinasi antara story-based work (pekerjaan yang berbasis use case/product feature) dan task-based work. Misalnya, “Tambahkan validasi pada semua form”. Product backlog diprioritaskan oleh product owner. Product backlog berisi list yang diprioritaskan dari fitur-fitur atau perubahan yang akan ada pada produk.
Sprint planning meeting
Merupakan meeting untuk product owner, scrum team dan orang-orang yang berkepentingan. Dalam meeting ini menentukan sprint goal yaitu tujuan yang ingin dicapai pada scrum sprint berikutnya (30 hari kedepan). Sprint goal biasa adalah minimum fungsionalitas yang harus dicapai. Jika sprint goal tidak dicapai maka dilakukan abnormal termination. Dalam sprint planning meeting ini juga membuat sprint backlog yaitu list dari pekerjaan yang akan dilakukan selama sprint. Sprint backlog merupakan bagian produck backlog yang didetailkan. Sprint backlog dikuantisasi waktu berdasarkan jam (bukan hari yaitu antara 1-16).
Sprint backlog harus transparan untuk semua orang dalam tim. Meeting ini tidak lebih dari atau 8 jam saja. Dengan 4 jam pertama adalah waktu yang digunakan untuk Product Owner menjelaskan atau presentasi tentang prioritas dari product backlog. Kemudian tanya jawab dari tim tetang isi, maksud, tujuan dari item yang ada di product backlog. Empat jam berikutnya adalah sesi untuk tim merencanakan Sprint. Fokusnya pada melakukan pekerjaan bukan berfikir mengenai bagaimana mengerjakannya.
Daily Scrum meeting (Inspect and adapt cycle)
Meeting ini merupakan meeting harian selama tidak lebih dari 15 menit yang di dalamnya hanya sekedar sharing apa yang sudah dilakukan kemarin, sekarang dan rencana untuk besok. Yang boleh bicara dalam tim ini adalah scrum master dan anggota tim (developer). Orang lain yang bekepentingan dapat ikut dalam tim tetapi tidak boleh berkomunikasi (berbicara). Biasanya Scrum master menanyakan 3 pertanyaan dari kepada anggota tim. Pertanyaannya adalah sebagai berikut :
- Apa yang sudah kamu lakukan kemarin (selama 24 jam kebelakang)?
- Apa yang akan dikerjakan pada esok hari (24 jam mendatang)?
- Hal apa yang bisa menghentikan pekerjaan besok hari (kendala)?
Sprint review meeting
Meeting ini merupakan meeting setelah aktivitas selama 2 minggu atau 1 bulanan (Sprint) berakhir, yang kemudian diikuti oleh sprint planning meeting untuk Sprint berikutnya. Meeting ini mereview atas Sprint yang sudah dilaksanakan kemudian memperbarui (update) sprint backlog yang merefleksikan berapa lama waktu yg dibutuhkan untuk menyelesaikan pekerjaan (task)
Sprint retrospective meeting
Meeting ini merupakan meeting setelah sprint review meeting dan sebelum sprint planning meeting berikutnya. Meeting ini merupakan meeting yang dihadiri Scrum Master dan tim developer untuk merevisi proses dan cara kerja Scrum, proses development agar Sprint berikutnya lebih efektif dan enjoyable.
Mengapa agile dibutuhkan?
Sebelum mengetahui mengapa agile penting dalam proyek pengembangan perangkat lunak, kita perlu mengetahui beberapa alasan mengapa banyak proyek yang tidak sukses. Seperti sudah disebutkan pada latar belakang masalah adalah alasan pertama yakni sedikitnya keterlibatan user atau customer dalam proyek. Dalam beberapa kasus yang menggunakan metode pengembangan waterfall, user hanya terlibat pada fase analisis dan testing saja. Sehingga, kebanyakan user terkadang menerima begitu saja hasil yang diberikan oleh developer dengan sedikit sekali testing terhadap perangkat lunaknya.
Alasan kedua yakni requirement yang ’buruk’. Beberapa hal yang mungkin perlu kita jadikan catatan bahwa mustahil untuk mengumpulkan requirement yang tepat di awal-awal project dan semua requirement yang telah berhasil dikumpulkan tidak bisa dijamin untuk tidak berubah. Alasan lain yang menyebabkan buruknya requirement adalah karena user atau customer kadang tidak tahu apa yang mereka butuhkan.
Alasan ketiga yakni schedule atau jadwal yang tidak realistis, terkadang jadwal tidak disepakati dari pihak- pihak yang terlibat dalam pengembangan, seperti tim yang menganalisa project terkadang memutuskan jadwal proyek akan selesai dalam waktu tertentu yang terkadang menjadi beban bagi tim yang mengembangkan perangkat lunaknya(tim developer). Tim developer terkadang tidak memiliki cukup waktu untuk mengembangkan perangkat lunak sehingga kadang membuat keterlambatan dalam penyerahan perangkat lunak yang jadi.
Alasan keempat yakni sedikitnya testing. Pada banyak metode klasik, testing dilakukan di akhir-akhir fase, sehingga sangat sedikit testing yang dilakukan. Sedikitnya testing ini bisa mengakibatkan kemungkinan ditemukannya bug dan perbaikan dalam sistem sangatlah kecil. Hal ini mungkin menguntungkan bagi Developer, akan tetapi bisa berakibat buruk pada masa perawatan system setelah system diproduksi.
Alasan kelima yakni minimnya adaptasi dengan perubahan requirement. Terkadang rencana bisa berubah di tengah jalan, rencana yang tadinya seharusnya lurus bisa jadi berliku-liku seiring dengan berubahnya permintaan customer. Apa yang seharunya dikerjakan nanti belakangan, terkadang ditemukan penyelesaiannya terlebih dahulu. Serta masih banyak lagi alasan-alasan lainnya yang sering membuat sebuah project mengalami kegagalan.
Apa hubungannya dengan agile? Secara teori agile dapat menanggulangi masalah-masalah ini berdasarkan dari prinsip-prinsip agile di atas.
Beberapa keunggulan agile:
- Proses Iterative dan Incremental.
- Requirement dapat berubah sewaktu-waktu.
- Pelacakan requirement dengan melihat Backlog produk.
- Adanya keterlibatan user secara aktif.
- Rilis yang lebih cepat dan berkala, fungsi dirilis setiap akhir iterasi.
- Testing dilakukan setiap saat.
Terdapat beberapa faktor yang dapat mempengaruhi kesuksesan sebuah proyek dengan metode agile. Menurut Tsun dan Dac-Buu (2007) Menyatakan bahwa faktor kesuksesan proyek agile dibagi dalam 4 kategori, yaitu Organizational, People, Process dan Technical. Dimana faktor-faktornya dapat dilihat sebagai berikut:
Faktor-faktor ini berhubungan dengan bagaimana orang- orang yang terlibat di dalamnya menjalani proses proyek itu selama proses agile itu berjalan.
Dalam metode agile kolaborasi sebuah tim merupakan hal yang penting dalam mencapai kesuksesan proyek. Kolaborasi itu sendiri memerlukan suatu kinerja tim yang baik selama proyek berjalan. Faktor baik atau tidaknya kinerja tim agile itu sendiri dibagi menjadi empat kategori utama, yaitu Team Composition, Team Support, Team Management and Structure dan Team Communication (Ecless, dkk, 2010), dimana faktor-faktornya dapat dilihat pada tabel berikut:
Demikian ulasan singkat tentang Pengertian Metode Agile Software Development semoga dapat menjadi referensi bagi anda. Jika postingan ini dirasa bermanfaat bagi anda silahkan bagikan postingan ini. Terima kasih telah berkunjung.