Apakah yang dimaksud dengan Agile software Development ?

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.

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 (Scrum.co.id).

Apakah yang dimaksud dengan Agile software Development ?

Agile software Development adalah salah satu metodologi dalam pengembangan sistem perangkat lunak (software). Kata Agile berarti bersifat cepat, ringan, bebas bergerak, waspada. Kata ini digunakan sebagai kata yang menggambarkan konsep model proses yang berbeda dari konsep model-model proses yang sudah ada.

Konsep Agile software Development dicetuskan oleh Kent Beck dan 16 rekannya dengan menyatakan bahwa Agile Software Development adalah cara membangun software dengan melakukannya dan membantu orang lain membangunnya sekaligus (Ambler, An Introducation to Agile Modeling, 2001-2008).

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 (sumber: Wikipedia).

Salah satu ciri dari Agile Software Development adalah tim yang tanggap terhadap perubahan karena perubahan adalah hal yang utama dalam membangun software: perubahan kebutuhan software, perubahan anggota tim, perubahan teknologi dll. Selain itu Agile Software Development juga melihat pentingnya komunikasi antara anggota tim, antara orang-orang teknis dan businessmen, antara developer dan manajernya. Ciri lain adalah klien menjadi bagian dari tim pembangun software. Ciri- ciri ini didukung oleh 12 prinsip yang diterapkan oleh Agile Alliance.

Menurut Agile Alliance, terdapat 12 prinsip yang harus dipenuhi bagi mereka yang ingin berhasil dalam penerapan Agile Software Development. Prinsip-prinsip tersebut antara lain :

  1. Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus.

  2. Menerima perubahan kebutuhan, sekalipun diakhir pengembangan.

  3. Penyerahan hasil/software dalam hitungan waktu dua minggu sampai dua bulan.

  4. Bagian bisnis dan pembangun kerja sama tiap hari selama proyek berlangsung.

  5. Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukung dan yang dipercaya untuk dapat menyelesaikan proyek.

  6. Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan efisien.

  7. Software yang berfungsi adalah ukuran utama dari kemajuan proyek.

  8. Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan.

  9. Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile.

  10. Kesederhanaan sangat penting.

  11. Arsitek. Kebutuhan dan desain yang bagus muncul dari tim yang mengatur dirinya sendiri.

  12. 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. Dengan prinsip-prinsip tersebut agile process model berusaha untuk menyiasati 3 asumsi penting tentang proyek software pada umumnya :

  1. Penentuan kebutuhann perangkat lunak sulit diprediksi dari awal karena akan selalu berubah. Selain itu, prioritas klien juga akan mengalami perubahan sering dengan berjalannya proyek.

  2. Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan

  3. Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.

Beberapa jenis proses permodelan yang termasuk kedalam metode Agile Software Development antara lain : Extreme Programming (XP), Adaptive Software Development (ASD), Dynamic System Development Method (DSDM), Scrum, Feature Driven Development (FDD), Agile Modeling (AM).

Kelebihan Agile development antara lain :

  1. Meningkatkan kepuasan kepada klien
  2. Pembangunan system dibuat lebih cepat
  3. Mengurangi resiko kegagalan implementasi software dari segi non-teknis
  4. 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:

Agile Work Cycle
Gambar Agile Work Cycle Sumber: http://tech.pristine.io/

1. 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.

2. Sprint planning meeting

Merupakan meeting untuk product owner, scrum team dan orang-orang yang berkepentingan. Dalam meeting ini bertujuan untuk menentukan sprint goal yaitu tujuan yang ingin dicapai pada scrum sprint berikutnya (30 hari kedepan). Sprint goal biasanya adalah kebutuhan fungsionalitas minimum yang harus dicapai.

Jika sprint goal tidak dicapai maka dilakukan abnormal termination. Dalam sprint planning meeting ini juga dilakukan pembuata sprint backlog yaitu list dari pekerjaan yang akan dilakukan selama proses sprint. Sprint backlog merupakan bagian dari produck backlog yang didetailkan.

Sprint backlog dikuantisasi waktunya berdasarkan jam (bukan hari yaitu antara 1-16). Sprint backlog harus transparan untuk semua orang dalam tim.

Proses meeting ini dilakukan tidak lebih dari atau selama 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.

3. 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 pengembang (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 :

  1. Apa yang sudah kamu lakukan kemarin (selama 24 jam kebelakang)?
  2. Apa yang akan dikerjakan pada esok hari (24 jam mendatang)?
  3. Hal apa yang bisa menghentikan pekerjaan besok hari (kendala)?

4. 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 yang dibutuhkan untuk menyelesaikan pekerjaan (task)

5. 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. Beberapa alasan yang menyebabkan produk atau proyek tidak sukses antara lain :

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

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:

Tabel Faktor yang Mempengaruhi Kesuksesan Agile Software Development

Kategori Faktor
Organizational - Management Commitment
- Organizational Environment
- Team Environment
People - Team Capability
- Customer Involvement
Process - Project Management Process
- Project Definition Process
Technical - Agile Software Techniques
- Delivery Strategy

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:

Tabel Faktor Kinerja Tim Agile

Kategori Utama Faktor
Team Composition - Peran
- Komposisi Tim
- Individualitas
Team Support - Sumber Daya
- Moral
- Kepercayaan
- Fun
- Komitmen
Team Management & Structure - Manajemen Konflik
- Goal
- Kinerja Target
- Pendekatan Pekerjaan
Team Communication - Komunikasi
- Feedback