Extreme Programming
Published: 2023-10-04 04:04:27

## Definisi Extreme Programming

Extreme programming adalah salah satu metodologi dari pendekatan agile software Development yang berfokus pada coding sebagai aktivitas utama disemua tahap pada siklus pengembangan yang lebih responsif terhadap kebutuhan customer dan membangun suatu software dengan kualitas yang lebih baik pula.

Menurut Pratama (2017, hlm. 93) Extreme Programming (XP) adalah sebuah pendekatan atau model pengembangan perangkat lunak yang mencoba menyederhanakan berbagai tahapan dalam proses pengembangan tersebut sehingga menjadi lebih adaptif dan fleksibel.

Sementara itu, menurut Prabowo (2013, hlm. 2) Extreme programming merupakan sebuah proses rekayasa perangkat lunak yang cenderung menggunakan pendekatan berorientasi objek dan sasaran dari metode ini adalah tim yang dibentuk dalam skala kecil sampai medium serta metode ini juga sesuai jika tim dihadapkan dengan requirement yang tidak jelas maupun terjadi perubahan-perubahan requirement yang sangat cepat.

## Tahapan Extreme Programming

Terdapat empat kerangka kegiatan dalam tahapan pelaksanaan extreme programming. Empat kerangka kegiatan dari tahapan extreme programming adalah sebagai berikut.

1. Planning
   Kegiatan planning atau perencanaan dimulai dengan mengumpulkan berbagai requirement dari perangkat yang akan dikembangkan. Hal ini dilakukan agar anggota tim memahami konteks bisnis perangkat lunak dan untuk mendapatkan pandangan umum terhadap output dan fungsi utama dari perangkat lunak. Hal ini akan mengarah ke penciptaan suatu “story” atau kisah kebutuhan pengguna untuk mendeskripsikan ouput, fitur, dan fungsi dari aplikasi yang akan dikembangkan.

2. Design
   Proses desain pada metodologi XP mengikuti prinsip KIS (keep it simple). Desain yang sederhana selalu dipilih dibandingkan dengan desain yang kompleks. Berbagai desain fungsi tambahan yang tidak diperlukan namun developer merasa nantinya akan diminta oleh pengguna tidak boleh dibuat. Hal ini karena XP menerapkan penggunaan CRC (class responsibility card) sebagai mekanisme yang efektif untuk memikirkan mengenai software dalam konteks berorientasi objek. CRC akan mengidentifikasi dan mengorganisasikan class berorientasi objek yang sesuai dengan peningkatan software. Artinya, berbagai desain fitur tambahan tersebut lebih dikembangkan ketika memang dibutuhkan (ketika diminta). Jika terjadi masalah dalam pembuatan desain story pengguna, maka dalam XP akan direkomendasikan suatu solusi yang disebut sebagai spike solution. Spike solution adalah pembuatan segera suatu prototype operasional dari sebagian desain yang mengalami masalah.

3. Coding
   Setelah story pengguna dan desain kerangka kerja wal selesai, tim XP tidak akan segera melanjutkan ke tahap coding, melainkan mengembangkan serangkaian tes unit yang akan dijalankan pada setiap story yang akan dibuat. Saat unit tes telah dibuat, developer akan lebih fokus pada apa yang harus dibuat untuk melewati tes tersebut. XP merekomendasikan konsep Pair Programming atau pemrograman berpasangan, yakni dua orang bekerja bersama dalam penulisan kode atau program untuk satu story. Hal ini memberikan kesempatan lebih besar pada pemecahan masalah yang lebih cepat karena kolaborasi dari dua programmer yang menulis coding yang sama.

4. Testing
   Setelah tahapan pengkodean selesai maka dilakukan tahapan pengujian sistem untuk mengetahui berbagai kesalahan yang timbul saat aplikasi sedang berjalan serta untuk memastikan apakah perangkat lunak yang dibangun telah sesuai dengan story kebutuhan pengguna.

## Kelebihan dan Kekurangan Metode XP

Berikut adalah beberapa kelebihan dan kekurangan dari metode extreme programming.

## Kelebihan

1. Jika pair programming dilakukan, maka developer berpotensi untuk didampingi langsung oleh pihak klien dalam melakukan coding dan unit testing, sehingga klien terlibat langsung serta menghilangkan miskomunikasi antara klien (pengguna) dan programmer.

2. Karena mengutamakan kesederhanaan, maka metodologi XP akan membangun komunikasi yang lebih lancar serta menyederhanakan penjelasan-penjelasan yang dibutuhkan dalam proses pengerjaan perangkat lunak.

3. Setiap feedback langsung ditanggapi dengan melakukan test, sehingga tidak akan terjadi pembengkakan tenaga, biaya, dan waktu yang terbuang percuma karena kesalahan penangkapan feedback dari klien.

4. Memberikan banyak ide baru dan keberanian untuk mencobanya.

## Kekurangan

1. Developer harus selalu siap dengan perubahan, karena xp merupakan metodologi yang selalu menerima perubahan, termasuk perubahan yang tiba-tiba di waktu yang terbatas.

2. Tidak dapat membuat kode yang detail sedari awal karena prinsip simplicity memberikan anjuran untuk melakukan apa yang diperlukan pada saat itu juga, tidak boleh lebih awal atau lebih lambat.


## Referensi
https://serupa.id/extreme-programming-xp-definisi-nilai-tahapan/