Ekstensi Fakultas Ilmu Komputer Universitas Indonesia Sejarah XP Pertengahan tahun 1980, Kent Beck dan Ward Cunningham yang merupakan penemu metodlogy Extreme Programming (XP) bekerja di bagian research di perusahaan Tektronix. Ide awal tentang XP mereka temukan ketika membangun Smalltalk systems di tahun 1980 s/d 1990-an. Kemudian ditahun di awal tahun 1990, mereka berdua membuat rangkuman dari setiap proyek- proyek yang mereka kerjakan,dan mengembangkannya menjadi metode pengembangan aplikasi/software. Kent Beck terus melanjutkan untuk mengembangkan idenya ketika mengerjakan proyek C3 (Chrysler Comprehensive Compensation) dari Chrysler. Proyek tersebut terancam gagal karena kerumitan sistem saat pembangunan dan mengalamai kegagalan saat melakukan testing aplikasi. Kent Beck, seorang ahli software engineering bersama rekannya Ron Jeffries yang disewa oleh Chrysler untuk menyelematkan proyek tersebut diberikan kewenangan untuk membuat perubahan pada proyek C3. Pada akhirnya, proyek tersebut berhasil dikerjakan sesuai permintaan Chrysler. Dan proyek tersebut dikenal sebagai proyek yang menciptakan lahirnya metode pengembangan XP. Istilah extreme programming mulai digunakan sejak tahun 1997.
Gambaran Umum Extreme Programming XP lebih mengutamakan kepuasan customer, dan hal inilah yang membuat XP populer. XP menekankan bahwa manager, kustomer, pengembang berada pada kedudukan yang sama di dalam tim. Dalam pengembangan proyek (perangkat lunak), terdapat lima kunci utama pada XP yang menyebabkan XP efisien. Antara lain communication, simplicity, feedback, respect, and courage.
Communication Komunikasi merupakan hal yang sangat penting pada metodologi XP. Komunikasi perlu untuk mendiskusikan setiap perubahan dan solusi terhadap masalah. Komunikasi tidak hanya di internal pengembang, tetapi juga dengan kustomer. Pada XP, komunikasi yang baik dianggap lebih efisien dibandingkan dengan dokumentasi proyek.
Simplicity Hal yang kompleks akan dipecah-pecah pada XP. Hal yang tidak penting akan dibuang. Demikian juga untuk desain dan hal lain, diusahakan sederhana. Dengan demikian, pengerjaan lebih mudah dan yang sederhana-sederhana tersebut nantinya akan digabung kembali. Feedback Pada XP, feedback didapat dengan mengadakan testing terhadap delivery dari pengembang. Aplikasi diberikan secepat mungkin dan setiap perubahan akan diimplementasikan sesuai permintaan.
Respect XP menganggap kesuksesan didapat dari kombinasi kontribusi-kontribusi kecil dari setiap anggota tim. Sehingga setiap pekerjaan, pada XP akan diberikan respect. Courage Setiap anggota tim harus selalu komitmen dan memiliki integritas terhadap tujuan bersama. Dalam situasi dengan kemungkinan perubahan yang tinggi, komitmen ini harus terus dijaga dan setiap anggota tim harus saling percaya.
Tahapan/Fase pada Extreme Programming 1. Exploration Phase Merupakan fase awal pengembangan proyek (software). Hal yang dikerjakan pada fase ini adalah pembuatan tim beserta role masing-masing anggota tim. 2. Planning Phase Fase untuk mendapatkan requirement atau sering disebut user story. Kemudian masing- masing requirement ditentukan prioritas sehingga jelas urutan pengerjaan setiap masing- masing requirement tersebut. 3. Iteration to Release Phase Merupakan tahap implementasi. Kemudian dilakukan pembuatan kode dan pengujian kode yang disesuaikan dengan prioritas masing-masing requirement. Ditahap ini akan dilakukan beberapa iterasi sampai dinyatakan sepakat. 4. Productionizing Phase Fase yang berfokus kepada demo kepada klien, mendapatkan feedback atau masukkan dari klien untuk selanjutnya menjadi bahan revisi pada iterasi berikutnya. 5. Maintenance Phase Mengerjakan perubahan yang diperlukan pada kode program untuk meningkatkan kualitas dari aplikasi tersebut. 6. Death Phase Fase pertanda berakhirnya proyek tersebut.
Pada implementasinya, fase diatas dilaksanakan dengan menggunakan beberapa teknik (practices) yang sebenarnya terdapat juga pada metologi secara umum. Namun XP menekankan beberapa diantaranya yang membedakan XP dengan metodologi lain. Sebernya terdapat 28 teknik, tetapi kemudian dirangkumkan menjadi 12 teknik. Teknik-teknik tersebut adalah : 1. User stories (planning) Permintaan pengguna (User stories) dilihat sebagai versi yang lebih kecil dari use case. Dengan cara ini, pengguna mendefinisikan sesingkat mungkin spesifikasi aplikasi baru (fitur, nilai, prioritas). Permintaan-permintaan ini akan menjadi dasar bagi tim proyek untuk melakukan estimasi biaya dan manajemen proyek.
2. Small releases (building blocks) XP memecah semua requirement aplikasi menjadi bagian-bagian kecil. Bagian-bagian ini dikerjakan dan menjadi versi pembaharuan. Aplikasi dikerjakan per-bagian dan sering di- update. Setiap requirement yang baru akan ditambahkan pada versi berikutnya. 3. Metaphor (standardized naming schemes) Developers dan programmer harus mengikuti standar penamaan kelas, method, atau penamaan lain yang telah disepakati. 4. Collective ownership Pada metodologi XP, semua kode program adalah milik semua anggota tim. Dengan demikian, semua kode juga di-review oleh semua anggota tim. 5. Coding standard Format, aturan, dan model kode program setiap anggota tim harus sama sehingga setiap kode kompatibel dengan yang lain. 6. Simple design Dengan memecah requirement, desain dan implementasi dilakukan sesederhana mungkin. 7. Refactoring Setiap pekerjaan harus dikomunikasikan dengan baik sehingga tidak terdapat duplikasi pekerjaan. 8. Testing Setiap rilis versi yang dikeluarkan harus lolos testing dengan baik sehingga tidak menggangu rilis versi berikutnya. Keunikan pada XP yaitu metode testing dibuat diawal kemudian kode program dibangun dan harus lulus test tersebut yang telah dibuat. 9. Pair programming Programmer XP bekerja secara berpasangan. Setiap kode program yang dibuat, ditulis oleh dua programmer yang bekerja bersamaan. Hal ini dilakukan karena metode ini dianggap akan meningkatkan kualitas kode program yang dibuat. 10. Continuous integration Aplikasi yang dibangun berdasarkan bagian-bagian kecil hasil pemecahan semua requirement, sehingga sering melakukan build aplikasi. Sehingga perlu integrasi berkelanjutan guna mencegah fragmentasi. 11. 40-hour workweek Menurut Beck, bekerja 8 jam satu hari dan 5 hari satu minggu efisien untuk programmer guna menjaga konsentrasi, kondisi mental, dan fisik tetap baik.
12. On-site customer Pengguna harus dilihat sebagai bagian integral dari proyek. Pengguna diminta untuk tersedia setiap saat untuk memastikan bahwa proyek dikerjakan sesuai dengan permintaan dan kebutuhan pengguna.
Proses yang terdapat pada XP dapat digambarkan seperti diagram berikut:
Gambar 1. Diagram proses pada metodologi XP
Perbandingan Fase pada Extreme Programming dengan Tahapan pada Generic Framework Activities
Berdasarkan penjelasan tahapan dan teknik XP diatas, berikut pembandingan aktivitas pada XP dengan aktivitas metodologi pengembangan aplikasi secara umum.
Generic XP Penjelasan aktivitas pada XP Communication Exploration Phase Merupakan pertemuan antara dua pihak, yaitu pihak developer dan pengguna untuk membicarakan project yang akan dibangun. Planning Planning Phase Hampir sama dengan metodologi pada umumnya. Bertujuan untuk mendapatkan requirement pengguna atau pada XP disebut user story. Modeling Planning Phase Pada XP fase ini menjadi dari planning phase yaitu dengan membuat arsitektur perangkat lunak pada proses metaphor. Implementasi/ Construction Iteration to Release Phase, Productionizing Phase Pembuatan kode program dilakukan berpasangan pada XP. Untuk demo kepada pengguna, terdapat productionizing phase dan untuk menerapkan perubahan dilakukan pada proses refactoring. Deployment Maintenance Phase dan Death Phase Untuk tahap deployment aplikasi, pada XP dilakukan pada fase Maintenance Phase dan Death Phase untuk menandakan proyek tersebut telah selesai.
Meskipun metodologi XP dapat dianggap lebih efisien, lebih mudah diprediksi, dan lebih fleksibel, namun XP juga memiliki kelemahan seperti : 1. Kesulitan dalam mengkoordinasi tim yang besar 2. Dapat mengakibatkan proyek tidak pernah berakhir jika tidak dikelola dengan baik 3. Dokumentasi yang kurang baik 4. Sulitnya memprediksi fitur/fungsi, waktu penyelesaian, dan kesesuain anggaran
Metodologi XP baik diterapkan pada proyek-proyek yang memiliki karakteristik seperti: 1. Proyek yang menggunakan teknologi baru atau teknologi prototype yang masih berkembang. Karena dengan demikian proyek akan banyak mengalami perubahan dan banyak masalah implementasi belum terprediksi dengan baik. 2. Sering rilis (rilis kecil-kecil) 3. Proyek-proyek untuk tujuan penelitian 4. Proyek skala kecil yang lebih mudah dikelola dengan metode informal.
Berikut merupakan diagram kondisi yang baik untuk menerapkan XP
Gambar 2. Kondisi yang Cocok untuk Agile Daftar Pustaka
Scott Withrow, Extreme Programming: Do these 12 practices make perfect? , http://articles.techrepublic.com.com/5100-22_11-1046488.html
B. Rumpe, P. Scholz, Scaling the Management of Extreme Programming Projects, Projects & Profits Special Issue on Management of Extreme Programming Projects, Vol. III (8), pp. 11- 18. ICFAI Press,Hyderabat, August 2003.
Awad ,M. A, A Comparison between Agile and Traditional Software Development Methodologies, 2005