MODEL Extreme Programming
Extreme Programming
(berikutnya akan disingkat sebagai XP) adalah sebuah pendekatan atau model
pengembangan perangkat lunak yang mencoba menyederhanakan berbagai tahapan
dalam proses pengembangan tersebut sehingga menjadi lebih adaptif dan
fleksibel. XP bukan hanya berfokus pada coding tetapi meliputi seluruh area
pengembangan perangkat lunak. XP mengambil pendekatan ‘ekstrim’ dalam iterative
development.
Sejarah XP
Proyek pengembangan
perangkat lunak yang dianggap sebagai yang pertama kali menerapkan extreme
programming adalah C3 (Chrysler Comprehensive Compensation) Project dari Chrysler. Proyek ini adalah proyek penggajian
10.000 karyawan Chrysler, terdiri dari kira-kira 2000 classdan 30.000 method. Proyek yang
dimulai pertengahan dekade 90-an ini terancam gagal karena rumitnya sistem yang
dibangun dan kegagalan pada saat testing. Chrysler kemudian menyewa Kent Beck,
seorang pakar software engineering yang
di kemudian hari dikenal sebagai pencetus awal dari XP, untuk menyelamatkan
proyek tersebut. Beck bersama rekannya Ron Jeffries dengan kewenangan yang
diberikan oleh Chrysler melakukan berbagai perubahan di C3 Project untuk
membuatnya lebih efisien, adaptif, dan fleksibel. Hal yang paling penting bagi
mereka adalah harus mampu memenuhi permintaan utama dari Chrysler, untuk
melakukan launchingperangkat lunak tersebut dalam waktu tidak
lebih dari dua tahun sejak saat Beck dikontrak.
Beck dan Jeffries
pada akhirnya berhasil menyelesaikan target Chrysler dengan menerapkan berbagai
metode dalam proses pengembangan perangkat lunak tersebut. Kumpulan metode
inilah yang kemudian dikenal sebagai model atau pendekatan XP dalam
pengembangan perangkat lunak. Begitu sederhananya metode-metode tersebut
sehingga bagi orang yang belum menerapkan, XP terlihat sebagai kumpulan ide
lama yang terlalu sederhana dan tidak akan memberikan efek apapun pada sebuah
proyek pengembangan perangkat lunak.
Kent Beck sendiri
mengakui dan menegaskan bahwa XP tidak selalu cocok untuk setiap proyek
pengembangan perangkat lunak. Kelebihan XP adalah sesuai untuk digunakan pada proyek
yang memiliki dynamic requirements. Proyek semacam ini memerlukan
adaptasi cepat dalam mengatasi perubahan-perubahan yang terjadi selama proses
pengembangan perangkat lunak. XP juga cocok untuk proyek dengan jumlah anggota
tim tidak terlalu banyak (sekitar 10-20 orang) dan berada pada lokasi yang
sama.
Nilai-nilai Dasar XP
Berikut adalah nilai-nilai mendasar yang menjadi roh dari XP pada setiap
tahapan proses pengembangan perangkat lunak:
1. Communication
XP mengfokuskan pada
hubungan komunikasi yang baik antar anggota tim. Para anggota tim harus
membangun saling pengertian, mereka juga wajib saling berbagi pengetahuan dan
keterampilan dalam mengembangkan perangkat lunak. Ego dari para programer yang
biasaanya cukup tinggi harus ditekan dan mereka harus membuka diri untuk
bekerjasama dengan programer lain dalam menuliskan kode program.
2. Courage
Para anggota tim dan
penanggungjawab pengembangan perangkat lunak harus selalu memiliki keyakinan
dan integritas dalam melakukan tugasnya. Integritas ini harus selalu dijaga
bahkan dalam kondisi adanya tekanan dari situasi sekitar (misalnya oleh klien
atau pemilik perusahaan). Untuk dapat melakukan sesuatu dengan penuh integritas
terlebih dahulu para anggota tim harus terlebih dahulu memiliki rasa saling
percaya. Rasa saling percaya inilah yang coba dibangun dan ditanamkan oleh XP
pada berbagai aspeknya.
3. Simplicity
Lakukan semua dengan
sederhana. Hal tersebut adalah salah satu nilai dasar dari XP. Gunakan method yang pendek dan simpel, jangan terlalu
rumit dalam membuat desain, hilangkan fitur yang tidak ada gunanya, dan
berbagai proses penyederhanaan lain akan selalu menjadi nilai utama dari setiap
aspek XP.
4. Feedback
Berikan selalu feedback kepada sesama anggota tim maupun
pihak-pihak lain yang terlibat dalam pengembangan perangkat lunak. Utarakan
selalu pikiran anda dan diskusikan kesalahan-kesalahan yang muncul selama
proses pengembangan. Dengarkan selalu pendapat rekan yang lain, dengan adanya feedback inilah seringkali kita menyadari
bagian mana yang salah atau bisa ditingkatkan lagi dari perangkat lunak yang
dikembangkan.
5. Quality Work
Semua nilai di atas
berujung pada sebuah kondisi di mana kita melakukan pekerjaan dengan
berkualitas. Dengan proses yang berkualitas maka implikasinya akan muncul pula
perangkat lunak yang berkualitas sebagai hasil akhirnya.
Aspek Dasar XP
Aspek dasar XP
terdiri dari berbagai teknik atau metode yang diterapkan Beck dan Jeffries pada C3 Project.
Teknik-teknik tersebut dapat diamati pada gambar berikut ini:
1. The Planning Game
Pendekatan XP dalam
perencanaan sangat mirip dengan metode yang diterapkan pada RAD (Rapid Application
Development). Proses pendek dan cepat, mengutamakan aspek teknik,
memisahkan unsur bisnis dengan unsur teknis dan pertemuan intensif antara klien
dengan developer. Pada XP proses ini menggunakan
terminologi “game” karena Beck menyarankan untuk menggunakan teknik score card dalam menentukan requirements.
Semakin sulit aspek teknis yang dibutuhkan semakin tinggi pula skor pada kartu
rencana tersebut.
2. Small Releases
Setiap release dilakukan dalam lingkup sekecil
mungkin pada XP. Setiap developermenyelesaikan sebuah unit atau bagian dari
perangkat lunak maka hasil tersebut harus segera dipresentasikan dan
didiskusikan dengan klien. Jika memungkinkan untuk menerapkan unit tersebut
pada perusahaan, hal itu juga dapat dilakukan sekaligus sebagai tes awal dari
penerapan keseluruhan sistem. Kendati demikian hal ini tidak selalu perlu
dilakukan karena harus dihitung terlebih dahulu sumberdaya yang dibutuhkan.
Apakah lebih menguntungkan langsung melakukan tes terhadap unit tersebut atau
melakukan tes setelah unit tersebut terintegrasi secara sempurna pada sistem.
3. Metaphor
Metaphor pada dasarnya sama dengan arsitektur
perangkat lunak. Keduanya menggambarkan visi yang luas terhadap tujuan dari
pengembangan perangkat lunak. Beck sendiri seperti para penandatangan Agile
Manifesto lainnya bercita-cita menyederhanakan proses pengembangan perangkat
lunak yang saat ini sudah dianggap terlalu rumit. Arsitektur yang saat ini
banyak berisi diagram dan kode semacam UML dianggap terlalu rumit untuk
dimengerti, terutama oleh klien. Metaphor, walaupun mirip dengan arsitektur lebih
bersifat naratif dan deskriptif. Dengan demikian diharapkan komunikasi antara
klien dengan developer akan
berlangsung lebih baik dan lancar dengan penggunaan metaphor.
4. Simple Design
Sebagai salah
seorang penandatangan Agile Manifesto, Beck adalah seorang yang tidak menyukai
desain yang rumit dalam sebuah pengembangan perangkat lunak. Tidak heran jika
dia memasukkan Simple Design sebagai
salah satu unsur XP. Pada XP desain dibuat dalam lingkup kecil dan sederhana.
Tidak perlu melakukan antisipasi terhadap berbagai perubahan di kemudian hari.
Dengan desain yang simpel apabila terjadi perubahan maka membuat desain baru
untuk mengatasi perubahan tersebut dapat dengan mudah dilakukan dan resiko
kegagalan desain dapat diperkecil.
5. Refactoring
Refactoring adalah salah satu aspek paling khas
dari XP. Refactoring seperti
didefinisikan oleh Martin Fowler adalah ”Melakukan perubahan pada kode program
dari perangkat lunak dengan tujuan meningkatkan kualitas dari struktur program
tersebut tanpa mengubah cara program tersebut bekerja”. Refactoring sendiri sangat sesuai untuk menjadi
bagian XP karena Refactoringmengusung konsep penyederhanaan dari proses
desain maupun struktur baris kode program. Dengan Refactoring tim pengembang dapat melakukan
berbagai usaha untuk meningkatkan kualitas program tanpa kembali
mengulang-ulang proses desain. Fowler adalah salah satu kolega dekat dari Kent
Beck karena itu tidak mengherankan bahwa cara berpikir mereka terhadap proses
pengembangan perangkat lunak sangat mirip satu dengan lainnya.
6. Testing
XP menganut
paradigma berbeda dalam hal tes dengan model pengembangan perangkat lunak
lainnya. Jika pada pengembangan perangkat lunak lainnya tes baru dikembangkan
setelah perangkat lunak selesai menjalani proses coding maka pada XP tim pengembang harus
membuat terlebih dahulu tes yang hendak dijalani oleh perangkat lunak. Berbagai
model tes yang mengantisipasi penerapan perangkat lunak pada sistem
dikembangkan terlebih dahulu. Saat proses coding selesai
dilakukan maka perangkat lunak diuji dengan model tes yang telah dibuat
tersebut. Pengetesan akan jauh lebih baik apabila dilakukan pada setiap unit
perangkat lunak dalam lingkup sekecil mungkin daripada menunggu sampai seluruh
perangkat lunak selesai dibuat. Dengan memahami tahap ini kita dapat melihat
bahwa siklus pada XP adalah requirement analysis à test à code à design. Sekilas terlihat
hal ini tidak mungkin dilakukan tetapi pada kenyataannya memang gambaran inilah
yang paling dapat menjelaskan tentang XP.
7. Pair Programming
Pair programming adalah melakukan proses menulis program
dengan berpasangan. Dua orang programer saling bekerjasama di komputer yang
sama untuk menyelesaikan sebuah unit. Dengan melakukan ini maka keduanya selalu
dapat berdiskusi dan saling melakukan koreksi apabila ada kesalahan dalam
penulisan program. Aspek ini mungkin akan sulit dijalankan oleh para programer
yang memiliki ego tinggi dan sering tidak nyaman untuk berbagi komputer bersama
rekannnya.
8. Collective Ownership
Tidak ada satupun
baris kode program yang hanya dipahami oleh satu orang programer. XP menuntut
para programer untuk berbagi pengetahuan untuk tiap baris program bahkan
beserta hak untuk mengubahnya. Dengan pemahaman yang sama terhadap keseluruhan
program, ketergantungan pada programer tertentu ataupun berbagai hambatan
akibat perbedaan gaya menulis program dapat diperkecil. Pada level yang lebih
tinggi bahkan dimungkinkan para programer dapat bertukar unit yang dibangunnya.
9. Coding Standards
Pair programming dan collective ownership hanya akan dapat berjalan dengan baik
apabila para programer memiliki pemahaman yang sama terhadap penulisan kode
program. Dengan adanya coding standards yang
telah disepakati terlebih dahulu maka pemahaman terhadap program akan menjadi
mudah untuk semua programer dalam tim. Hal ini dapat diterapkan sebagai contoh
pada penamaan variabel dan penggunaan tipe data yang sama untuk tiap elemen
semua record atau array pada
program.
10. Continous Integration
Melakukan build setiap hari kerja menjadi
sebuah model yang disukai oleh berbagai tim pengembang perangkat lunak. Hal ini
terutama didorong oleh keberhasilan penerapan sistem ini oleh Microsoft dan
telah sering dipublikasikan. Dengan melakukan build sesering
mungkin berbagai kesalahan pada program dapat dideteksi dan diperbaiki secepat
mungkin. Apabila banyak tim pengembang perangkat lunak meyakini bahwa build sekali sehari adalah minimum maka pada
XP hal tersebut adalah maksimum. Pada XP tim disarankan untuk melakukan buildsesering
mungkin misalnya setiap 4 jam atau bahkan lebih cepat lagi.
11. 40-hours Week
Beck berpendapat
bekerja 8 jam sehari dan 5 hari seminggu adalah maksimal untuk tiap programer.
Lebih dari itu programer akan cenderung membuat berbagai error pada baris-baris kode programnya
karena kelelahan.
12. On-Site Customer
Sebuah pendekatan
klasik, di mana XP menganjurkan bahwa ada anggota dari klien yang terlibat pada
proses pengembangan perangkat lunak. Yang lebih penting lagi ia harus ada di
tempat pemrogaman dan turut serta dalam proses build dan test yang dilakukan.
Apabila ada kesalahan dalam pengembangan diharapkan klien dapat segera
memberikan masukan untuk koreksinya.
Kelebihan dan Kekurangan XP
Kelebihan :
- Meningkatkan kepuasan kepada klien
- Pembangunan system dibuat lebih
cepat
- Menjalin komunikasi yang baik dengan
client.
- Meningkatkan komunikasi dan sifat
saling menghargai antar developer.
Kekurangan :
- User story kemungkinan besar tidak
lengkap sehingga Developer harus selalu siap dengan perubahan
karena perubahan akan selalu diterima.
- Tidak bisa membuat kode yang detail
di awal (prinsip simplicity dan juga anjuran untuk melakukan apa
yang diperlukan hari itu juga).
- XP tidak memiliki dokumentasi
formal yang dibuat selama pengembangan. Satu-satunya dokumentasi adalah
dokumentasi awal yang dilakukan oleh user.
Referensi
http://ganiamanda.blog.widyatama.ac.id/2016/02/13/extreme-programming-xp-model/
No comments:
Post a Comment