Apa yang dimaksud dengan Extreme Programming?

Extreme Programming (XP) adalah model pengembangan perangkat lunak yang mencoba menyederhanakan berbagai tahapan dalam proses pengembangan tersebut sehingga menjadi lebih adaptif dan fleksibel.

Apa yang dimaksud dengan Extreme Programming ?

Sumber : http://www.extremeprogramming.org/map/project.html

Latar Belakang

Seiring berkembangnya jaman, teknologi informasi juga ikut berkembang. Perkembangan teknologi informasi sangat berpengaruh pada kehidupan manusia saat ini. Perkembangan teknologi informasi tidak bisa lepas dari perkembangan ilmu pengetahuan. Perkembangan ilmu pengetahuan yang tinggi membuat para pembuat perangkat lunak menciptakan berbagai macam variasi perangkat lunak, dikarenakan permintaan para pengguna yang tinggi. Untuk menjamin terpenuhinya kebutuhan para pengguna, pengemabangan perangkat lunak memerlukan langkah-langkah yang tepat, efektif, dan efisien. Untuk itulah berkembang berbagai metodologi pengembangan perangkat lunak. Salah satunya yaitu ekstrim pemrograman (XP). Ekstrim pemrograman (XP) adalah metodologi pengembangan perangkat lunak untuk meningkatkan kualitas perangkat lunak dan responsif terhadap perubahan kebutuhan pelanggan.

Kegiatan Dasar

Ada empat kegiatan dasar mengenai XP untuk proses pengembangan perangkat lunak :

1. Merancang

Iterasi pemrograman XP dimulai dengan merancang. Prinsip-prinsip dari tahap ini adalah:

  • Dorongan pada kesederhanaan dengan mengekspresikan hal hanya sekali dan tidak menambahkan fungsi antisipasi.

  • Menggunakan sistem metafora atau standar pada nama, nama kelas dan metode, dan menyepakati gaya seragam dan format untuk memastikan kompatibilitas antara kerja anggota tim yang berbeda.

  • Menggunakan Tanggung Jawab Software Class dan Kolaborasi (CRC) Kartu yang memungkinkan untuk keberangkatan dari pola pikir prosedural tradisional dan membuat teknologi berorientasi objek mungkin. kartu tersebut memungkinkan semua anggota tim proyek untuk menyumbangkan ide-ide, dan menyusun ide-ide terbaik dalam desain.

  • Menciptakan solusi lonjakan atau program sederhana yang mengeksplorasi solusi potensial untuk masalah tertentu, mengabaikan semua masalah lain, untuk mengurangi risiko.

2. Coding

Coding merupakan fase paling penting dalam siklus hidup Programming Extreme. pemrograman XP memberikan prioritas kepada coding yang sebenarnya atas semua tugas-tugas lain seperti dokumentasi untuk memastikan bahwa pelanggan menerima sesuatu yang substansial dalam nilai pada akhir hari. Standar terkait dengan coding meliputi:

  • Mengembangkan kode berdasarkan metafora dan standar yang telah disepakati, dan mengadopsi kebijakan kepemilikan kode kolektif.

  • Pasangan pemrograman atau kode berkembang oleh dua programer bekerja sama pada satu mesin, yang bertujuan untuk menghasilkan kode berkualitas tinggi dengan biaya yang sama atau kurang.

  • Kepatuhan yang ketat untuk 40 jam workweeks tanpa lembur. Hal ini memastikan para pengembang bekerja di puncak kemampuan mental dan fisik mereka.

  • Integrasi sering kode ke repositori khusus, hanya dengan satu pasangan mengintegrasikan pada suatu waktu untuk mencegah konflik, dan optimasi di akhir.

3. Pengujian

Program ekstrim terintegrasi pengujian dengan tahap pengembangan daripada di akhir tahap pengembangan. Semua kode memiliki unit test untuk menghilangkan bug, dan kode melewati semua tes unit tersebut sebelum rilis.

Tes kunci lain adalah tes penerimaan pelanggan, berdasarkan spesifikasi pelanggan. tes penerimaan dijalankan pada penyelesaian coding, dan pengembang menyediakan pelanggan dengan hasil tes penerimaan bersama dengan demonstrasi.

4. Mendengarkan

Dasar pemrograman ekstrim adalah mekanisme berkelanjutan keterlibatan pelanggan melalui umpan balik dalam tahap pengembangan. Terlepas dari pelanggan, pengembang juga menerima umpan balik dari manajer proyek.

Dasar dari umpan balik adalah tes penerimaan pelanggan. Setiap umpan balik dari pelanggan yang menentukan persyaratan revisi menjadi dasar dari desain baru, dan proses desain-coding-tes-mendengarkan berulang. Jika pelanggan tetap puas dengan hasil tes iterasi berakhir di sana, dan desain untuk iterasi baru dimulai, yang lagi-lagi mengikuti siklus desain-coding-testing-mendengarkan. [1]

Peraturan dan Praktek

Dalam XP empat aktivitas dasar ini diterapkan dengan menggunakan praktek-praktek rekayasa perangkat lunak tradisional tetapi ditinggikan untuk mewujudkan dan mendorong nilai-nilai XP.

Meskipun benar-benar ada 28 peraturan dan praktik Extreme Programing [2] mereka dapat dipadatkan menjadi dua belas aturan sederhana [3] [4]:

  1. Cerita Pengguna (perencanaan) : Cerita Pengguna dapat dilihat sebagai versi yang lebih kecil dari kasus penggunaan. Dengan cara ini, pelanggan menentukan sesingkat mungkin spesifikasi aplikasi baru (fitur, nilai, prioritas). Cerita-cerita ini akan menjadi dasar bagi tim proyek untuk melakukan estimasi biaya dan manajemen proyek.

  2. Rilis Kecil (blok bangunan) : XP menekankan pada versi kecil, sederhana namun sering update dari aplikasi. Setiap persyaratan baru ditambahkan akan langsung dimasukkan dan sistem ini dirilis ulang.

  3. Metafora (skema penamaan standar) : Pengembang dan programmer harus mematuhi standar pada nama, nama kelas dan metode.

  4. Kepemilikan kolektif : Dalam metodologi XP, semua kode dianggap dimiliki oleh seluruh tim dan bukan milik perorangan. Oleh karena itu, semua kode ditinjau dan diperbarui oleh semua orang.

  5. Coding standar : Gaya dan format coding harus sama untuk memungkinkan kompatibilitas antara anggota tim. Pendekatan ini menghasilkan kolaborasi yang lebih cepat.

  6. Desain sederhana : Selalu mencari implementasi sistem yang semudah mungkin pelaksanaan sistem belum memenuhi semua fungsi yang diperlukan.

  7. Refactoring : Aplikasi harus terus disesuaikan dan ditingkatkan oleh semua anggota tim. Ini membutuhkan komunikasi yang sangat baik antara anggota untuk menghindari duplikasi pekerjaan.

  8. Pengujian : Setiap rilis kecil (disebut blok bangunan) harus lulus tes sebelum dibebaskan. Keunikan XP dalam aspek ini adalah bahwa tes diciptakan pertama dan kemudian kode aplikasi dikembangkan untuk memenuhi dan lulus cahllenges dari mereka tes pra-ditulis.

  9. Pemrograman Pair : programmer XP bekerja berpasangan. Semua kode dikembangkan oleh dua programmer yang bekerja bersama-sama di satu mesin. Harapannya adalah bahwa pasangan pemrograman menghasilkan kode berkualitas tinggi dengan biaya yang sama atau kurang.

  10. Integrasi berkelanjutan : Software membangun selesai beberapa kali sehari. Dengan cara ini semua pengembang dapat menghindari fragmentasi pekerjaan karena mereka terus-menerus melepaskan dan mengintegrasikan kode bersama-sama.

  11. 40-jam kerja seminggu : Jaga kondisi mental dan fisik harus bangun dan berjalan dengan tidak bekerja lebih dari apa yang tubuh dapat menangani.

  12. Customer On-site : Pelanggan harus dilihat sebagai bagian integral dari proyek. Pelanggan harus diatur akan tersedia setiap saat untuk memastikan bahwa proyek ini di jalur yang benar.

Kelemahan dan Tantangan

Meskipun metodologi XP dapat menghasilkan suatu perbaikan proses yang lebih efisien, lebih dapat diprediksi, lebih fleksibel dan lebih menyenangkan [5], [6] tetapi juga memiliki beberapa kelemahan seperti :

  • Kesulitan koordinasi tim yang lebih besar
  • Bisa menghasilkan sebuah proyek yang tidak pernah berakhir jika tidak dikelola dengan baik
  • Kecenderungan untuk tidak mendokumentasikan secara menyeluruh
  • Memprediksi fitur yang tepat untuk diselesaikan dalam waktu yang tetap / anggaran.

Referensi
  1. http://www.brighthubpm.com/methods-strategies/88996-the-extreme-programming-life-cycle/
  2. www.extremeprogramming.org
  3. Scott Withrow, Extreme Programming: Do these 12 practices make perfect?, http://articles.techrepublic.com.com/5100-22_11-1046488.html
  4. 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.
  5. http://positivesharing.com/2006/01/extreme-projects
  6. John Noll, Darren C. Atkinson, Comparing Extreme Programming to Traditional Development for Student Projects: A Case Study, Department of Computer Engineering Santa Clara University, year unknown

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.

XP Pertama kali diusulkan oleh Kent Beck dan Ward Cunningham pada bulan Maret 1996, asal mula XP digunakan karena pada saat itu permintaan dari customer yang sering berubah dengan cepat sehingga mengakibatkan putaran kehidupan metode pengembangan perangkat lunak tradisional menjadi lebih pendek dan tidak selaras dengan metode tradisional karena pada umumnya memerlukan desain yang luas dan itu mengakibatkan perubahan desain yang terjadi dan tentu saja memerlukan biaya yang lebih tinggi. Tujuan XP adalah meminimalisir biaya yang diperlukan jika ada perubahan dalam pengembangan perangkat lunak.


  • Whole TeamSeluruh kontributor dalam proyek yang menggunakan pendekatan XP duduk bersama sebagai suatu tim. Tim ini terdiri beberapa peran, antara lain programmer, penguji,orang yang mengerti bisnis, analis, manajer, dan lain-lain. Setiap peran yang ada tidak mutlak menjadi peran dari satu orang saja. Tim terbaik dalam XP tidak harus memiliki pakar, hanya kontributor umum dengan keterampilan khusus saja. Semua orang di tim XP memberikan kontribusi dengan cara apapun yang mereka dapat lakukan.

    • Planning gamePerencanaan dalam XP mengemukakan dua pertanyaan kunci dalam pengembangan perangkat lunak, yaitu memprediksi apa yang akan dicapai pada waktu tertentu, dan menentukan apa yang harus dilakukan setelah itu. Ada dua langkah kunci dalam perencanaan XP, yang menangani dua pertanyaan tersebut:
    1. Release Planning yaitu praktek dimana Customer mengutarakan fitur yang diinginkannya ke programer, dan programer memperkirakan tingkat kesulitannya. Dengan estimasi biaya di tangan, dan dengan pengetahuan tentang pentingnya fitur yang diinginkan, Pelanggan meletakkan satu rencana untuk proyek tersebut. Rencana rilis awal yang selalu tepat: baik prioritas maupun perkiraan yang benar-benar solid, dan sampai tim mulai bekerja, kita tidak akan tahu seberapa cepat mereka akan pergi. Bahkan rencana rilis pertama cukup akurat untuk pengambilan keputusan, namun, dan tim XP melakukan revisi terhadap rencana rilis secara teratur.2. Iteration Planning adalah praktek di mana tim diberikan petunjuk atau arahan setiap beberapa minggu sekali. Tim XP membangun perangkat lunak dalam “iterasi” dua minggu, memberikan menjalankan perangkat lunak yang berguna pada setiap akhir iterasi. Selama Iteration Planning, Customer mengutarakan fitur yang diinginkan selama dua minggu ke depan. Para programer memecahnya ke dalam pekerjaan yang lebih kecil, dan memperkirakan biaya yang diperlukan.
  • Customer Tests sebagai bagian dari presentasi masing-masing fitur yang diinginkan, Customer XP mendefinisikan satu atau lebih tes penerimaan otomatis untuk menunjukkan bahwa fitur tersebut bekerja dengan baik. Tim membangun tes ini dan menggunakannya untuk membuktikan pada kepada Customer bahwa fitur ini telah diimplementasikan dengan benar. Tes secara otomatis ini penting karena dalam XP hanya diberikan waktu yang singkat sehingga tes manual tidak akan digunakan karena memakan waktu yang lama.

    • Small Release Pada setiap Iterasi, tim mengerjakan sebuah unit atau bagian dari perangkat lunak, melakukan tes terhadap unit perangkat lunak yang dibangun, kemudian di akhir iterasi perangkat lunak yang dibangun diberikan kepada Customer. Oleh customer, perangkat lunak ini bisa dijadikan bahan evaluasi maupun langsung dirilis kepada end user. Bisa juga tim XP langsung merilis ke end user secara rutin.
    • Simple Design Tim XP membangun perangkat lunak dengan desain yang sederhana. Dimulai dengan desain yang sederhana, kemudian melalui pengujian program dan perbaikan desain. Desain yang dibuat harus benar-benar cocok untuk fungsi saat ini dari sistem sehingga tidak ada yang sia-sia dan perangkat lunak siap dikembangkan lagi selanjutnya. Namun, pembuatan desain dalam XP tidak dilakukan hanya sekali. Tahapan desain dalam Extreme Programming yang menghasilkan desain yang bagus dianggap sangat penting, sehingga selama proses development banyak difokuskan ke tahapan desain.
    • Pair Programming ,Semua perangkat lunak yang dibangun dengan pendekatan XP dibangun oleh dua orang programmer. Keduanya duduk berdampingan di satu komputer yang sama. Seorang programmer akan membuat code dan programmer yang lainnya akan mengoreksinya. Praktik seperti ini mungkin kelihatan tidak efisien. Namun dari segi hasil dari pair programming, desain akan lebih baik, pengujian lebih baik, dan code yang dihasilkan pun akan lebih baik.
    • Test-Driven Development XP begitu terobsesi dengan umpan balik, dan dalam pengembangan perangkat lunak, umpan balik yang baik mensyaratkan pengujian yang baik pula. Test-Driven Development bergantung pada pengulangan siklus development yang sangat pendek. Pertama tim XP akan menuliskan automated test case yang mendefinisikan perbaikan yang diinginkan atau fungsi baru. Kemudian dari test case tersebut dihasilkan jumlah minimal code yang harus dituliskan untuk lulus tes tersebut. Setelah itu melakukan refactoring code baru agar memenuhi standar baru.
    • Design Improvement XP berfokus pada memberikan nilai bisnis dalam setiap perulangan. Agar dapat mencapai tujuan tersebut selama proyek berlangsung, perangkat lunak harus dirancang dengan baik. XP menggunakan proses perbaikan desain secara terus menerus dengan Refactoring. Proses refactoring berfokus pada penghapusan duplikasi dari code yang telah dibuat. Disamping itu, proses refactoring didukung dengan pengujian yang komprehensif utnuk memastikan bahwa desain yang dibuat berkembang dan tiidak ada yang rusak.
    • Continuous Integration,Beberapa kali dalam sehari, tim XP akan menggabungkan seluruh salinan pekerjaan tim menjadi satu dalam jaringan utama. Sehingga tim XP harus menjaga tim agar terintegrasi setiap saat.
    • Collective Code Ownership,Pada proyek XP, setiap pasang programmer dapat meningkatkan code apapun setiap saat. Semua code yang ada dimiliki secara kolektif oleh tim. Manfaatnya setiap code akan mendapat perhatian dari banyak orang, sehingga dapat meningkatkan kualitas code dan mengurangi cacat. Selain itu dapat mengurangi duplikasi code yang sama walaupun dibuat oleh pasangan programmer yang berbeda.
    • Coding Standard,Setiap anggota tim XP harus mengikuti standar coding yang umum, sehingga semua code dalam sistem seolah-olah tampak dibuat oleh satu orang yang sangat kompeten. Selain itu hal ini sangat mendukung Collective Code Ownership.
    • MetaphorTim XP akan membuat suatu deskripsi umum bagaimana program yang mereka kembangkan bekerja dengan benar.
    • Sustainable PaceTim XP akan bekerjasama dalam jangka waktu lama. Mereka bekerja keras dengan kecepatan tertentu tanpa batas waktu. Tim XP akan bekerja lembur pada hari efektif dan memaksimalkan produktivitas setiap minggunya. Hal ini perlu diperhatikan dengan baik, karena akan mengurangi produktivitas atau sebaliknya menghasilkan perangkat lunak yang berkualitas.
Referensi

https://www.it-jurnal.com/apa-itu-extreme-programming/