You are on page 1of 3

Dalam era ekonomi modern seperti sekarang ini, seringkali kita mengalami kesulitan pada saat

memprediksi, bagaimana sih sebaiknya bentuk sistem informasi yang diperlukan sesuai kebutuhan
saat ini dan juga kebutuhan di masa mendatang. Hal itu terjadi karena kondisi pasar yang sangat
cepat berubah, termasuk labilnya perubahan kebutuhan pengguna, dan juga serangan dari kompetitor
baru yang datang tanpa peringatan. Pada saat tertentu, kita tidak mudah mendefinisikan
keseluruhan requirements sebelum proyek mulai berjalan, sehingga menyebabkan
terjadinya requirements yang tidak menggambarkan kebutuhan pengguna sistem informasi yang
sesungguhnya, bahkan sering terjadi scope creep (cakupanrequirements yang terlalu melebar). Untuk
mengatasi hal tersebut, diperlukan suatu cara pendekatan pembangunan perangkat lunak yang
mampu segera me-respons gejolak ketidakstabilan requirementsbisnis. Salah satu pendekatan yang
dimaksud adalah Agile Process.
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.
Menyinggung masalah Agile, terdapat suatu istilah yang disebut dengan Agility. Apa sih yang
dimaksud Agility itu ? Menurut Ivar Jacobson, agility mengandung pengertian bahwa perubahan
(change) merupakan "hati" dan "jiwa" dari perangkat lunak. Maksudnya adalah, bahwa perubahan
terhadap requirements pelanggan, silih bergantinya anggota tim, dan perubahan kebutuhan teknologi
yang berimplikasi terhadap produk yang dihasilkan merupakan suatu hal yang sangat wajar terjadi.
Hampir semua proyek pengambangan perangkat lunak pasti mengalami hal tersebut. Sedangkan
menurut Goldman et al,agility merupakan sesuatu yang dinamis, mempunyai kontent yang spesifik,
menaggapi perubahan secara agresif, dan beroriantasi pada pertumbuhan.
Dari definisi menurut Ivar Jacobson dan Goldman et al, di atas dapat ditarik kesimpulan
bahwa Agility merupakan suatu kemampuan atau "jiwa" yang harus dimiliki oleh tim pengambangan
perangkat lunak. Kemampuan tersebut antara lain berupa: kemampuan segera menindaklanjuti
terjadinya perubahan secara efektif; kemampuan berkomunikasi antar stakeholders secara efektif;
menganggap bahwa pelanggan merupakan pihak yang berada di dalam tim yang sama; kemampuan
mengorganisasikan tim (memberikan motivasi) agar mampu meningkatkan performa kinerja tim;
secara tepat waktu dan berkesinambungan dapat men-deliver perangkat lunak yang telah
dijadwalkan.
Setelah membahas mengenai Agile dan Agility, kemudian apa sih yang dimaksud dengan istilah Agile
Process itu ? 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
jadwaldeliver sistem yang telah dijanjikan. Requirements yang dibutuhkan secara langsung didrive oleh pelanggan itu sendiri, dan apabila terjadi perubahan terhadap requirements tersebut,
pengembang dituntut mampu beradaptasi dengan perubahan yang terjadi.
Terus, sifat anggota tim yang bagaimana sih agar pendekatan Agile ini berhasil diterapkan ?. Tim
yang agile harus memiliki sifat-sifat sebagai berikut: Pertama, dari segi kompetensi, anggota tim
harus mempunyai bakat dan keterampilan yang berhubungan dengan pengembangan perangkat
lunak di bidangnya masing-masing, terutama yang berkaitan dengan konstruksi perangkat lunak
(desain dan pemrograman). Kedua, dari segi fokus perhatian, anggota tim harus berkonsentrasi pada
ketepatan deliver produk yang telah dijanjikan dan dilakukan secara bertahap. Ketiga, dari segi
kolaborasi, anggota tim harus mampu saling bekerjasama, baik itu dengan pelanggan maupun dengan
manajer bisnis-nya. Keempat, dari segi kemampuan dalam berdiskusi, anggota tim senantiasa
mendiskusikan isu-isu yang terjadi (apabila terjadi masalah, sesegera mungkin
didiskusikan). Kelima, dari segi kemampuan menyelesaikan masalah, anggota tim harus terbiasa
dengan ambiguitas dan mencari solusi yang tepat. Keenam, harus terjalin rasa saling
percaya. Ketujuh, dari segi kesadaran keorganisasian, seorang anggota tim harus mampu bekerja
dengan giat demi selesainya tugas sesuai dengan jadwal yang dialokasikan.

Selanjutnya, saya akan membahas mengenai langkah-langkah dalam pengembangan perangkat lunak
menggunakan pendekatan Agile. Secara mendasar, aktifitas-aktifitas umum dalam kerangka
kerja agileantara lain: komunikasi dengan pelanggan, perencanaan, pemodelan, konstruksi,
pengiriman (delivery), dan melakukan evaluasi. Kemudian aktifitas akan berulang, terutama untuk
perencanaan deliverberikutnya. Semua aktifitas tersebut di buat seminimal mungkin, lebih
memfokuskan dan konsentrasi pada konstruksi serta delivery.
Kemudian, seperti apa saja sih bentuk dari pendekatan Agile ini ? Terdapat banyak model pendekatan
yang tergolong dalam Agile Process, namun tidak semua model saya bahas pada tulisan ini, saya
hanya menjelaskan dua model yaitu: Extreme Programming (XP), danAdaptive Software
Development (ASD).
1. Extreme Programming (XP)
XP merupakan suatu model yang tergolong dalam pendekatan agileyang diusulkan oleh Kent Back.
Menurut penjelasan dia, definisi XP adalah sebagai berikut: "Extreme Programming (XP) is a
lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop software".
Model ini cenderung menggunakan pendekatanObject-Oriented. Tahapan-tahapan yang harus dilalui
antara lain:Planning, Design, Coding, dan Testing.

XP Process (Pressman, 2005)


Pada saat perencanaan, dimulai dengan membuat semacam "user strories" yang ditempatkan index
card. User Story (cerita) merupakan deskripsi fitur-fitur fungsional yang akan disediakan perangkat
lunak yang akan dibuat. Dari cerita-cerita yang telah dibuat, pelanggan memberikan semacam nilai
(misalnya: prioritas). Kemudian tim XP mengkaji semua cerita tadi dan menentukan rincian biaya
serta memperkirakan waktu yang dibutuhkan untuk membangun sistem. Apabila waktu yang
dibutuhkan untuk mengimplementasikan cerita tersebut lebih dari tiga minggu, maka tim XP
meminta pelanggan memecah cerita tersebut menjadi cakupan yang lebih kecil. Cerita-cerita yang
telah dibuat dikelompokkan, sehingga dapat diperkirakan untuk melakukan deliverable increments.
Meskipun telah dikelompokkan dan proses pembangunan perangkat lunak telah dimulai, pelanggan
masih bisa menambah, merubah, memecah dan menghapus cerita-cerita tersebut, namun tentunya
harus sesuai dengan persetujuan bersama.
Keuntungan dari model XP antara lain adalah: Pertama, dapat merepresentasikan situasi nyata yang
sering terjadi, sehingga sistem yang akan dibuat mendukung sebagian besar operasional
pengguna.Kedua, memudahkan pengguna memahami dan memberikan masukan terhadap cerita
tersebut. Ketiga, dapat merepresentasikan fitur-fitur fungsional secara bertahap (incremental).
Sedangkan kekurangan dari model XP antara lain adalah: Pertama, cerita-cerita yang menunjukkan
requirements tersebut kemungkinan besar tidak lengkap. Kedua, user strories lebih fokus kepada

kebutuhan fungsional dari pada fokus kepada kebutuhan non fungsional. Ketiga, hubungan antara
arsitektur sistem dengan user strories tidak jelas, sehingga perancangan arsitektur juga lebih sulit.
2. Adaptive Software Development (ASD)
ASD merupakan suatu model yang tergolong dalam pendekatan agileyang diusulkan oleh Jim
Highsmith. ASD menekankan pada pengorganisasian tim secara mandiri, kolaborasi antarperseorangan, dan terus belajar, baik secara individu maupun secara tim. ASD
menggunakan tools yang disebut "time-boxing" - yaitu berupa aktifitas yang menentukan jangka
waktu tertentu yang dialokasikan untuk menyelesaikan berbagai macam tugas. Apabila waktu yang
ditentukan tersebut selesai, maka pembangunan sistem akan pindah ke tugas berikutnya, dengan
harapan bahwa sebagian besar dari critical worktelah berhasil diselesaikan sebelum waktu
keseluruhan tugas berakhir. Terdapat tiga tahapan pada model ASD,
yaitu: Speculation,Collaboration, dan Learning.

Adaptive Software Development (Pressman, 2005)


Pada tahap Speculation, proyek dimulai dan adaptive cycle planningdiselenggarakan. Pada tahapan
ini, didefinisikan visi dan misi pengguna terhadap sistem yang akan dibuat, selanjutnya
mendefinisikan project constraints, misalnya: waktu deliver. dan selanjutnya mendefinisikan satu set
dari requirements yang akan dikerjakan dalam suatu cycle. Pada tahap Collaboration, pada tahap ini
diorganisasikan tim kerja untuk membangun sistem. Direkomendasikan menggunakan model Joint
Application Development (JAD). Pada tahap Learning, terdapat tiga aktifitas yaitu: pelanggan atau
end-user menyediakan feedback terhadap hasil incremental delivery, tim ASD melakukan review
terhadap komponen perangkat lunak untuk memperbaiki dan meningkatkan kualitas perangkat lunak
yang sedang dibuat.

You might also like