Pemrograman ekstrem

**Pemrograman ekstrem** () adalah metodologi pengembangan perangkat lunak yang dimaksudkan untuk memperbagus mutu perangkat lunak dan ketanggapan untuk keperluan pelanggan yang terus berubah. Sebagai suatu jenis pengembangan perangkat lunak tangkas, pemrograman ekstrem menganjurkan rilis yang sering dalam daur pengembangan pendek, dimaksudkan untuk memperbagus keproduktifan dan memperkenalkan titik pengecekan () di mana keperluan pelanggan baru dapat diangkat.

Unsur lain pemrograman ekstrem termasuk pemrograman secara berpasangan atau melakukan peninjauan kode secara luas, pengujian unit pada semua kode, tidak memprogramkan fitur baru sampai memang dibutuhkan, struktur pengelolaan datar, kejelasan dan kesederhanaan kode, mengharapkan perubahan dalam keperluan pelanggan begitu waktu berlalu sehingga masalah dipahami lebih baik, dan komunikasi sering dengan pelanggan dan pemrogram sejawat. Metodologi ini memperoleh namanya dari gagasan bahwa praktik-praktik tradisional dari rekayasa perangkat lunak dapat dibawa unsur bermanfaatnya ke tahap yang "melampau". Misal, peninjauan kode dianggap praktik yang bermanfaat, dan bila dilaksanakan secara ekstrem, kode dapat ditinjau secara "berkesinambungan" (dengan kata lain, adalah praktik pemrograman berpasangan).

## Sejarah
Kent Beck mengembangkan pemrograman ekstrem selama pekerjaannya di proyek penggajian  (C3). Beck menjadi pemimpin proyek C3 pada Maret 1996. Dia mulai memperhalus metodologi yang digunakan dalam proyeknya dan menulis sebuah buku tentang metodologinya, berjudul , yang diterbitkan pada Oktober 1999. Chrysler membatalkan proyek C3 pada Februari 2000, setelah tujuh tahun, ketika Daimler-Benz mengambil alih perusahaan. Dalam pengembangan metodologi ini juga, Ward Cunningham menjadi salah satu yang turut memberi pengaruh.

Banyak praktik yang terkait pemrograman ekstrem telah ada sejak lama, sebab dalam gagasannya metodologi ini membawa praktik-praktik terbaik ke tahap melampau. Misal, "praktik pengembangan, perencanaan, dan penulisan pengujian terlebih dahulu sebelum setiap peningkatan mikro" telah digunakan sejak Proyek Merkurius NASA, pada awal tahun 1960-an. Untuk mempersingkat waktu pengembangan secara keseluruhan, beberapa dokumen uji formal (seperti untuk pengujian penerimaan) telah dikembangkan secara sejalan dengan (atau sesaat sebelum) perangkat lunak yang siap diuji. Sehingga misal, sebuah kelompok penguji mandiri dari NASA dapat menulis tata cara pengujian, berdasarkan persyaratan formal dan batasan logis, sebelum pemrogram menulis perangkat lunak dan menyatupadukannya dengan perangkat keras. XP membawa konsep ini ke tingkat yang ekstrem, termasuk memprogrtamkan pengujian otomatis (terkadang di dalam modul perangkat lunak) yang mengabsahkan pengoperasian bahkan bagian kecil dari pengodean perangkat lunak, alih-alih hanya menguji fitur yang lebih besar.

### Asal-usul
Pada tahun 1990-an, terdapat dua pengaruh besar yang membentuk pengembangan perangkat lunak:
* Dari dalam, pemrograman berorientasi objek menggantikan pemrograman prosedural sebagai paradigma pemrograman yang disukai oleh beberapa pengembang.
* Dari luar, munculnya Internet dan ledakan dot-com () menekankan kecepatan masuk pasar dan pertumbuhan perusahaan sebagai faktor bisnis yang bersaing.

Dari sinilah pada dunia komputer, muncul keperluan pelanggan yang terus berubah dalam waktu singkat, yang membuat metode tradisional pengembangan perangkat lunak kurang efisien. Keperluan demikian menuntut daur hidup produk yang lebih pendek.

 (C3) dimulai untuk menentukan cara terbaik memakai teknologi objek dengan digunakannya sistem  oleh  sebagai objek penelitan, dengan  sebagai bahasa dan GemSyone sebagai lapisan akses data. Chrysler mendatangkan Kent Beck, seorang pelaksana Smalltalk terkemuka, untuk melakukan penyetelan kinerja pada sistem, tetapi perannya meluas saat dia mencatat beberapa masalah dengan proses pengembangan. Dia memanfaatkan kesempatan ini untuk mengusulkan dan menerapkan beberapa perubahan dalam praktik pengembangan - berdasarkan hasil karyanya dengan seorang pekerja sejawatnya, Ward Cunningham. Beck menguraikan pengonsepanbawal metode ini (diterjemakan dari bahasa Inggris):

Beck mengundang Ron Jeffries ke proyek untuk membantu mengembangkan dan menyempurnakan metodologi mereka. Jeffries kemudian bertindak sebagai pelatih untuk menanamkan praktik-praktik tersebut sebagai kebiasaan dalam tim C3.

Informasi mengenai landasan dan tata laksana di balik XP disebarluaskan ke seluruh dunia, melalui perbincangan di WikiWikiWeb milik Cunningham (yang merupakan wiki pertama yang diterbitkan). Berbagai kontributor memperbincangkan dan mengembangkan gagasan tersebut, dan dari situlah muncul beberapa metodologi hasil sampingan . Selain itu, konsep XP telah dijelaskan, selama beberapa tahun, menggunakan peta sistem hiperteks di situs web XP pada http://www.extremeprogramming.org .

Beck menyunting serangkaian buku tentang XP, dimulai dengan bukunya sendiri  (1999, ), yang menyebarkan gagasannya ke khalayak yang jauh lebih luas.

### Keadaan terkini
XP menarik minat besar di kalangan komunitas perangkat lunak pada akhir tahun 1990-an dan awal 2000-an dengan adanya penerimaan metodologi tersebut di sejumlah lingkungan yang sangat berbeda dari asalnya.

Tata tertib tinggi yang dituntut oleh praktik-praktik asli XP seringkali terlupakan yang menyebabkan beberapa diantaranya sering terlipakan, seperti praktik-praktik yang dianggap terlalu kaku, ditinggalkan atau dikurangi, atau bahkan dibiarkan tak selesai, di situs-situs individu. Misal, praktik uji integrasi di penghujung hari untuk proyek tertentu dapat diubah ke jadwal akhir pekan, atau cukup dikurangi bebannya menjadi pengujian pada tanggal yang disetujui bersama. Jadwal yang lebih longgar demikian dapat menghindari orang-orang merasa terdesak membuat rintisan setengah-setengah hanya demi lulus pengujian di penghujung hari. Jadwal yang kurang kaku malahan memungkinkan pengembangan fitur-fitur kompleks selama beberapa hari.

Sementara itu, praktik pengembangan tangkas lainnya tidak tinggal diam, dan  XP terus berkembang, menyerap lebih banyak pelajaran dari pengalaman di lapangan, untuk digunakan dalam praktik lain. Dalam edisi kedua  (November 2004), lima tahun setelah edisi pertama, Beck menambahkan lebih banyak nilai dan praktik serta membedakan antara praktik utama dan praktik pelengkap.

## Praktik

Pemrograman ekstrem dapat diterangkan memiliki 12 praktik, dikelompokkan menjadi empat jenis:

### Umpan balik skala halus
* Pemrograman berpasangan
* Permainan perencanaan
* Pengembangan berbasis pengujian
* Tim menyeluruh

### Proses berkesinambungan
* Integrasi berkesinambungan
* Pemfaktoran ulang atau perbaikan rancangan
* Rilis kecil-kecilan

### Pemahaman bersama
* Standar kode
* Kepemilikan kode kolektif
* Rancangan sederhana
* Metafora sistem

### Kesejahteraan pemrogram
* Kecepatan berkelanjutan

## Kritikan
Omongan awal tentang pemrograman ekstrem dan landasan kontroversialnya, macam pemrograman berpasangan dan rancangan berkesinambungan, telah mendapat kecaman tertentu, seperti yang datang dari McBreen, Boehm and Turner, Matt Stephens dan Doug Rosenberg. Namun, sebagian besar kecaman tersebut diyakini oleh pelaksana tangkas sebagai kesalahpahaman tentang cara pengembangan tangkas dikerjakan.

Secara khusus, pemrograman ekstrem telah ditinjau dan dikritik oleh  karya Matt Stephens dan Doug Rosenberg.

## Referensi

## Bacaan lebih lanjut
* Ken Auer and Roy Miller. *Extreme Programming Applied: Playing To Win*, Addison–Wesley.
* 
* Kent Beck: *Extreme Programming Explained: Embrace Change*, Addison–Wesley. First edition, 1999. Second edition, with Cynthia Andres, 2004.
* Kent Beck and Martin Fowler: *Planning Extreme Programming*, Addison–Wesley.
* Alistair Cockburn: *Agile Software Development*, Addison–Wesley.
* Martin Fowler: *Refactoring: Improving the Design of Existing Code*.With Kent Beck, John Brant, William Opdyke, and Don Roberts (1999). Addison-Wesley.
* Harvey Herela (2005). Case Study: The Chrysler Comprehensive Compensation System. Galen Lab, U.C. Irvine.
* Jim Highsmith. *Agile Software Development Ecosystems*, Addison–Wesley.
* Ron Jeffries, Ann Anderson and Chet Hendrickson (2000), *Extreme Programming Installed*, Addison–Wesley.
* 
* Matt Stephens and Doug Rosenberg (2003). *Extreme Programming Refactored: The Case Against XP*, Apress.
* Waldner, JB. (2008). "Nanocomputers and Swarm Intelligence". In: ISTE, 225–256.

## Pranala luar
* A gentle introduction
* Industrial eXtreme Programming
* Problems and Solutions to XP implementation
* Using an Agile Software Process with Offshore Development – ThoughtWorks' experiences with implementing XP in large distributed projects