Extreme Programming merupakan salah satu dari sekian banyak metodologi pengembangan sistem. Extreme Programming ditujukan kepada mereka yang melakukan pengembangan sistem secara cepat. Extreme Programming merupakan salah satu cara untuk mengatasi perubahan situasi dan kondisi yang cepat. Extreme Programming merupakan salah satu model proses dari Agile Software Development yang merupakan salah satu metodologi dalam pengembangan sistem berbasis Software Development Life Cycle (SDLC). Extreme Programming atau
yang dikenal sebagai XP adalah sebuah model pengembangan sistem yang
menyederhanakan berbagai tahapan proses pengembangan tersebut agar
tercapainya peningkatan efisiensi dan fleksibelitas sebuah proyek
pengembangan perangkat lunak. Extreme Programming tidak hanya berfokus pada source code atau coding, tetapi meliputi seluruh area pengembangan.

About
Extreme Programming
Perkembangan teknologi informasi yang pesat membawa
pengaruh yang sangat berarti pada kehidupan manusia dewasa ini.
Teknologi informasi memiliki berbagai unsur yang membangunnya menjadi
kesatuan yang kokoh. Salah satu unsur teknologi informasi adalah
perangkat lunak. Perangkat lunak merupakan
kumpulan objek yang membentuk kon gurasi yang dapat berupa program,
dokumen, atau data. Perangkat lunak adalah sesuatu yang dikembangkan,
bukan dibuat secara pabrikan seperti perangkat keras. Pengembangan
perangkat lunak memerlukan langkah-langkah yang tepat, efektif dan e
sien untuk menjamin terpenuhinya kebutuhan user. Untuk itulah berkembang
berbagai metodologi pengembangan perangkat lunak. Sebelum era 2000-an
kita mengenal metodologi waterfall, spiral model, Rapid Application
Development, dan masih banyak beberapa lainnya. Semua metodologi
tersebut merupakan metodologi yang formal, dalam arti seluruhnya
berjalan mengikuti aturan-aturan baku yang telah ditetapkan. Pada era
2000-an mulai berkembang metodologi baru yang sangat eksibel, yaitu Agile Methods.
Agile methods merupakan salah satu dari beberapa metode yang digunakan
dalam pengembangan sooftware. Agile method adalah jenis pegembangan
sistem jangka pendek yang memerlukan adaptasi cepat dan pengembang
terhadap perubahan dalam bentuk apapun. Dalam Agile Software Development
interaksi dan personel lebih penting dari pada proses dan alat,
software yang berfungsi lebih penting daripada dokumentasi yang lengkap,
kolaborasi dengan klien lebih penting dari pada negosiasi kontrak, dan
sikap tanggap terhadap perubahan lebih penting daripada mengikuti
rencana. Agile Method juga dapat diartikan sekelompok metodologi
pengembangan software yang didasarkan pada prinsip-prinsip yang sama
atau pengembangan system jangka pendek yang memerlukan adaptasi cepat
dari pengembang terhadap perubahan dalam bentuk apapun. Agile Software
Development juga melihat pentingnya komunikasi antara anggota tim,
antara orang-orang teknis dan businessmen, antara developer dan
managernya. Ciri lain adalah klien menjadi bagian dari tim pembangun
software. Ciri-ciri ini didukung oleh 12 prinsip yang ditetapkan oleh
Agile Alliance. Menurut Agile Alliance, 12 prinsip ini adalah bagi
mereka yang ingin berhasil dalam penerapan Agile Software Development:- Kepuasan klien adalah prioritas utama dengan menghasilkan produk lebih awal dan terus menerus.
- Menerima perubahan kebutuhan, sekalipun diakhir pengembangan.
- Penyerahan hasil/software dalam hitungan waktu beberapa minggu sampai beberapa bulan.
- Pihak bisnis dan pengembang harus bekerja sama setiap hari selama pengembangan berjalan.
- Membangun proyek dilingkungan orang-orang yang bermotivasi tinggi yang bekerja dalam lingkungan yang mendukun dan yang dipercaya untuk dapat menyelesaikan proyek.
- Komunikasi dengan berhadapan langsung adalah komunikasi yang efektif dan e fisien
- Software yang berfungsi adalah ukuran utama dari kemajuan proyek
- Dukungan yang stabil dari sponsor, pembangun, dan pengguna diperlukan untuk menjaga perkembangan yang berkesinambungan
- Perhatian kepada kehebatan teknis dan desain yang bagus meningkatkan sifat agile
- Kesederhanaan penting
- Arsitektur, kebutuhan dan desain yang bagus muncuk dari tim yang mengatur dirinya sendiri
- Secara periodik tim evaluasi diri dan mencari cara untuk lebih efektif dan segera melakukannya.
- Kebutuhan software sulit diprediksi dari awal dan selalu akan berubah. Selain itu, prioritas klien juga sering berubah seiring berjalannya proyek.
- Desain dan pembangunan sering tumpang tindih. Sulit diperkirakan seberapa jauh desain yang diperlukan sebelum pembangunan.
- Analisis, desain, pembangunan dan testing tidak dapat diperkirakan seperti yang diinginkan.
- Meningkatkan kepuasan kepada klien
- Pembangunan system dibuat lebih cepat
- Mengurangi resiko kegagalan implementasi software dari segi non-teknis
- Jika pada saat pembangunan system terjadi kegagalan,kerugian dar segi materi relative kecil.
- eXtreme Programming (XP)
- Scrum Methodology
- Crystal Family
- Dynamic Systems Development Method (DSDM)
- Adaptive Software Development (ASD)
- Feature Driven Development (FDD)
- Sejarah Extreme Programming
- Asal Extreme Programming
- Latar Belakang Extreme Programming
- Pengertian Extreme Programing
- Komunikasi: Nilai ini berfokus pada membangun orang-ke – orang,saling pengertian dari lingkungan
- masalah melalui minimal resmi dokumentasi dan melalui interaksi tatap muka maksimal . Praktek XP
- dirancang untuk mendorong interaksi , pengembang – to- developer dan pengembang – ke-pelanggan .
– Tanggapan : Dalam extreme programming team mendapatkan umpan balik dengan menguji perangkat lunak mereka,memberikan sistem ke pelanggan sedini mungkin dan mengimplementasikan perubahan dan prioritas seperti yang disarankan oleh umpan balik dari pelanggan .
– Keberanian : Pengembang sering mengutip tekanan untuk kapal produk buggy. Itu Dibutuhkan keberanian untuk menolak tekanan ini. Beck juga menyatakan bahwa tim harus berani dan bersedia untuk membuat perubahan di akhir proyek atau bahkan membuang kode dan mulai dari awal lagi.
– Menghormati : Jika anggota tim tidak peduli satu sama lain dan pekerjaan mereka , ada metodologi dapat bekerja . Anda harus menghormati kepada rekan-rekan Anda dan kontribusi mereka , untuk organisasi Anda , untuk orang-orang yang hidupnya tersentuh oleh sistem. Beck mengatakan Praktek adalah bukti dari nilai-nilai Tugas yang dapat dijatuhkan jika kita mendapatkan kendala . Dengan cara ini akan tetap margin keamanan dan memecahkan kasus masalah.
– Seluruh : Tim tim harus terdiri dari anggota dengan semua keterampilan dan perspektif yang dibutuhkan untuk proyek untuk berhasil . Mereka harusmemiliki rasa yang kuat milik , dan harus membantu satu sama lain . Informatif Workspace : ruang kerja harus dilengkapi dengan poster informatif dan hal-hal lain , memberikan informasi tentang status proyek dan pada tugas-tugas yang akan dilakukan.
– Kerja : Berenergi pengembang harus di-refresh , sehingga dapat fokus pada pekerjaan mereka dan menjadi produktif . Akibatnya setiap orang bisa menghabiskan waktu untuk nya atau kehidupan pribadinya sendiri . praktek ini dalam versi lama XP disebut “kecepatan berkelanjutan ” .
– Pair : Programming : kode selalu ditulis oleh dua programmer di salah satu mesin . Praktek ini keluar pada extrme programming asli .
– Tambahan : Desain extreme programming menentang menghasilkan desain yang lengkap di depan .Tim pengembangan menghasilkan kode sesegera mungkin dalam rangka untuk mendapatkan umpan balik dan memperbaiki sistem terus menerus. Desain diperlukan untuk mendapatkan kode yang baik Pertanyaannya adalah ketika merancang XP menyarankan untuk melakukannya secara bertahap selama coding . Cara membantu memperoleh ini adalah untuk menghilangkan duplikasi dalam kode.
– Pemrograman Test- Pertama : sebelum memperbarui dan menambahkan kode perlu untuk menulis tes untuk memveri kasi kode. Hal ini memecahkan empat masalah :
- Cowboy coding yaitu sangat mudah untuk mendapatkan,dapat dibawa pergi dengan program cepat dan menempatkan semuanya dalam pikiran serta dalam kode. Tes membantu kita fokus pada masalah yang dihadapi dan dapat membuktikan bahwa desain kami adalah benar.
- Coupling dan kohesi yaitu jika tidak mudah untuk menulis tes , ini berarti bahwa anda memiliki masalah desain , bukan dari pengujian atau coding
- Kepercayaan yaitu jika Anda menulis kode dokumen dengan tes otomatis , rekan kerja Anda akan mempercayai Anda .
- Rhythm yaitu mudah untuk tersesat dan mengembara selama berjam-jam ketika kita coding . Jika kita membiasakan diri dengan: tes, kode ,refactor , tes, kode , refactor , itu tidak akan terjadi .
- Tujuan Extreme Programming
- Kelebihan dan Kelemahan Extreme Programing
- Menjalin komunikasi yang baik dengan klien. (Planning Phase)
- Menurunkan biaya pengembangan (Implementation Phase)
- Meningkatkan komunikasi dan sifat saling menghargai antar developer. (Implementation Phase)
- XP merupkan metodologi yangsemi formal. (Planning Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima, atau dengan
- kata lain eksibel. (Maintenance Phase)
- Tidak bisa membuat kode yang detail di awal (prinsip simplicity dan juga anjuran untuk melakukan
- Prinsip Dasar Extreme Programming
- Aliran umpan balik (Rapid Feedback)
- Asumsi kesederhanaan (Asume Simplicity)
- Penambahan perubahan (Incremental Change)
- Pemelukan pekerjaan (Embrace Work)
- Kualitas kerja (Quality Work)
- Teach Learning
- Small initial investment
- Play to win
- Cncrete experiments
- Open, honest communication
- Work with people’s instinct not against them
- Accepted responsibility
- Local adaptation
- Travel light
- Honest measurement
Dalam extreme programming menggambarkan empat kegiatan dasar yang dilakukan dalam proses pengembanganperangkat lunak yaitu :
– Coding : Pendukung XP berpendapat bahwa satu-satunya benar-benar produk yang penting dari proses pengembangan sistem kode instruksi perangkat lunak komputer dapat menafsirkan. Tanpa kode, tidak ada produk kerja.Coding juga dapat digunakan untuk mengetahui solusi yang paling cocok. Sebagai contoh, XP akan menganjurkan bahwa dihadapkan dengan beberapa alternatif untuk masalah pemrograman, satu kode hanya perlu semua solusi dan menentukan dengan tes yang otomatis solusi yang paling sesuai. Coding juga dapat membantu untuk mengkomunikasikan pikiran tentang masalah pemrograman. Seorang pemrogram berurusan dengan masalah pemrograman yang kompleks dan sulit untuk menjelaskan solusi untuk sesama programer mungkin kode ini dan gunakan kode untuk menunjukkan apa yang dia berarti. Kode, mengatakan para pendukung posisi ini, selalu jelas dan ringkas dan tidak dapat ditafsirkan dengan lebih dari satu cara. Pemrogram lain dapat memberikan umpan balik kode ini oleh juga pengkodean pikiran mereka.
– Pengujian : Satu tidak bisa memastikan bahwa fungsi bekerja kecuali satu tes itu. Desain bug dan masalah kesalahan yang meresap dalam pengembangan software. Extreme Programming Pendekatan adalah bahwa jika sedikit pengujian dapat menghilangkan beberapa kekurangan, banyak pengujian dapat menghilangkan banyak kelemahan. Unit tes menentukan apakah tur yang diberikan bekerja sebagaimana dimaksud. Seorang pemrogram menulis sebagai banyak tes otomatis mereka bisa memikirkan yang dapat memecahkan kode; jika semua tes berjalan dengan sukses, maka pengkodean selesai. Setiap potongan kode yang tertulis diuji sebelum pindah ke tur berikutnya. * Tes Penerimaan memveri kasi bahwa persyaratan sebagaimana yang dipahami oleh para programer memenuhi persyaratan pelanggan yang sebenarnya. Ini terjadi pada tahap eksplorasi perencanaan rilisSebuah testathon adalah sebuah peristiwa ketika programmer bertemu untuk melakukan tes kolaboratif menulis, semacam brainstorming relatif terhadap pengujian perangkat lunak.
– Mendengarkan : Programmer harus mendengarkan apa yang pelanggan membutuhkan sistem untuk melakukan, apa yang logika bisnis diperlukan. Mereka harus memahami kebutuhan-kebutuhan ini cukup baik untuk memberikan umpan balik pelanggan tentang aspek teknis bagaimana masalah bisa dipecahkan, atau tidak dapat dipecahkan. Pemahaman masalah nya. Komunikasi antara pelanggan dan pemrogram adalah dibahas lebih lanjut dalam The Perencanaan Game.
– Merancang : Dari sudut pandang kesederhanaan, orang bisa mengatakan bahwa pengembangan sistem tidak membutuhkan lebih dari coding, pengujian dan mendengarkan. Jika kegiatan tersebut dilakukan dengan baik, hasilnya harus selalu menjadi sistem yang bekerja. Dalam prakteknya, ini tidak akan bekerja. Satu dapat datang jauh tanpa merancang tetapi pada waktu tertentu seorang pun akan terjebak. Sistem menjadi terlalu kompleks dan dependensinya di dalam sistem berhenti menjadi jelas. Satu dapat menghindari hal ini dengan menciptakan sebuah desain struktur yang mengatur logika dalam sistem. Desain yang baik akan menghindari banyak dependensi dalam sistem ini berarti bahwa mengubah salah satu bagian dari sistem tidak akan mempengaruhi bagian lain dari sistem.