Extreme Programming (XP), Pengertian, Manfaat, Tahapan

Extreme Programming (XP)

Extreme Programming (XP) Pengertian, Manfaat, Tahapan – kolonginfo.com. Masalah yang sering dihadapi oleh pengembang perangkat lunak adalah perubahan kebutuhan pengguna perangkat lunak yang terus bertambah/ berubah. Hal tersebut menjadi pemicu terbentuknya metode yang fleksibel sehingga dapat mengatasi masalah tersebut. Metode tersebut adalah Agile Methods. Salah satu agile methods adalah Extreme Programing (XP).

Pendahuluan

Perkembangan teknologi informasi yang semakin pesat, tentu saja diiringi dengan perkembangan perangkat lunak. Perangkat lunak ini digunakan dalam berbagai aspek teknologi informasi. Secanggih apapun suatu mesin, pasti ditunjang oleh perangkat lunak yang baik pula. Perangkat lunak yang baik adalah perangkat lunak yang bisa memenuhi kebutuhan penggunanya. Agar kebutuhan pengguna dapat dipenuhi, maka diperlukan sistem yang baik dalam membangun perangkat lunak.

Masalah yang sering dihadapi oleh pengembang perangkat lunak adalah perubahan kebutuhan pengguna perangkat lunak yang terus bertambah/ berubah. Hal tersebut menjadi pemicu terbentuknya metode yang fleksibel sehingga dapat mengatasi masalah tersebut. Metode tersebut adalah Agile Methods. Salah satu agile methods adalah Extreme Programing (XP).

Sejarah Singkat

Pada tanggal 6 Maret 1996, Kent Beck, Ward Cunningham dan Ron Jeffries mencetuskan metode Extreme Programming, sebuah metode yang mengubah cara dalam merencanakan, membangun, dan menguji perangkat lunak oleh pengembang perangkat lunak pada umumnya. Extreme Programming (XP) adalah sebuah pendekatan pengembangan perangkat lunak yang mencoba meningkatkan efisiensi dan fleksibilitas dari sebuah proyek pengembangan perangkat lunak dengan mengkombinasikan berbagai ide sederhana

Value Pada Extreme Programming

Komunikasi (Communication)

Manajer, developer maupun klien saling berkomunikasi. Dengan komunikasi ini, maka developer dapat mengerti apa yang diingkan klien dan developer dapat mengimplementasikan ke dalam code

Umpan Balik  (Feedback)

Feedback diperlukan untuk mengetahui kemajuan proses dan kualitas dari aplikasi yang dibangun. Mengumpulkan informasi dalam interval waktu yang singkat secara konsisten agar saat terdapat masalah dalam pemrograman dapat diketahui sedini mungkin. Setiap feedback ditanggapi dengan melakukan test, unit test atau system integration. Sebaiknya jangan menunda karena akan membuang waktu dan tenaga, sehingga biaya membengkak.

 Kesederhanaan (Simplicity)

Metode extreme programing mencoba mencari solusi paling sederhana dan praktis. Metode extreme programing hanya akan mengeksekusi permintaan dari pelanggan tidak kurang dan tidak lebih. Hal ini dilakukan untuk menghindari fitur-fitur yang tidak diperlukan.

Keberanian (Courage)

Para anggota tim berani untuk mencoba ide baru. Para anggota tim pengembang lunak tidak takut akan kegalalan. Contoh dari courage adalah komitmen untuk segera melakukan coding untuk saat ini dan bukan untuk esok.

Respect 

Setiap orang saling menghormati baik hubungan antara pengembang software dengan dan pelanggan. Begitu juga setiap anggota tim saling menghargai meskipun hanya memberikan kontribusi yang sederhana

Baca Juga:  Belajar Investasi Kripto, Kenali Potensi Kejahatan

Pada XP memiliki beberapa tahap. Dalam tiap tahannya memiliki aspek-aspek yang diperhatikan dimana aspek dapat menjadi pedoman dalam siklus pembangunan perangkat lunak. Berikut merupakan tahapan dan aspeknya:

Perencanaan pada Extreme Programming

Terdapat aspek-aspek dalam perencaan pengembangan perangkat lunak:

Menulis User Story

User story digunakan sebagai dokumen yang berisi kebutuhan klien dan akan digunakan oleh pengembang untuk membangun perangkat lunak dan juga untuk menentukan waktu perangkat lunak akan rilis. User story nantinya akan dipakai dalam acceptance tests. Jika pengembang dibatasi dalam mengembangkan antarmuka, user story dapat dipakai sebagai skenario penggunaan perangkat lunak tersebut. User story seharusnya dibuat dengan detail yang cukup.

Pengembang/developer menentukan perkiraan waktu yang dibutuhkan untuk mengimplementasikan satu story ke dalam code. Idealnya, setiap story membutuhkan 1-3 minggu (Ideal Development Time) jika developer tau apa yang harus dilakukan, tidak ada halangan, dan tidak ada tugas lain. Jika lebih dari tiga minggu, maka story harus dipecah menjadi story yang lebih detail. Dan jika kurang dari seminggu berarti story tersebut terlalu detail, maka sebaiknya digabung dengan story lainnya. Idealnya terdapat sekitar 80 user story.

Developer sebaiknya menghindari rincian spesifik tentang teknologi yang digunakan, susunan basis data, dan algoritma. Developer seharusnya menjaga User story tetap fokus pada kebutuhan pengguna.

Release Planning Creates The Release Schedule

Setelah user story ditulis, developer dapat menggunakan release planning meeting untuk membuat sebuah release plan. Konsumer memilih user story yang akan dikerjakan / diimplementasikan ke dalam code pada iterasi berikutnya. Saat iterasi, story-story tersebut juga akan diterjemahkan ke dalam acceptance tests. Acceptance tests dilakukan saat iterasi untuk memverifikasi bila story sudah berhasil berjalan dengan baik, sehingga proses pun akan berjalan dengan baik. dengan begitu, waktu rilis akan terjadwal dengan.

Make Frequent Small Releases

Developer perlu merilis versi iterasi dari sistem yang telah dibuat dalam proses iterasi agar klien mengetahui proses yang telah dicapai oleh developer. Pada akhir iterasi, developer melakukan pengujian sehingga hasil tersebut kemudian dapat ditunjukkan kepada klien. Selanjutnya klien akan memutuskan apakah fungsi/sistem tersebut akan masuk produksi atau tidak. Dengan begitu, developer akan mendapatkan feedback dari klien tanpa harus menunggu lama. Semakin lama menunggu untuk menunjukkan fitur penting kepada klien, maka semakin sedikit pula waktu untuk memperbaikinya.

The project is divided into iterations

Developer harus membagi proyek mejadi beberapa iterasi. Ini adalah hal yang sang penting dari proyek. developer harus mengevaluasi proses kerja saat memasuki iterasi, jika diperkirakan tidak dapat menyelesaikan tugas ini, yang harus dilakukan adalah melakukan iteration planning meeting, merencanakan kembali tugas-tugas yang harus dikerjakan dalam iterasi, memperkirakan kembali, serta mengurangi beberapa tugas.Konsentrasikan pada usaha dalam menyelesaikan tugas yang dipilih oleh klien.

Iteration planning starts each iteration.

Perencanaan iterasi (iteration planning) dilakukan di awal iterasi untuk menentukan apa yang harus dikerjakan dalam iterasi ini. Klien memilih user story yang akan dikerjakan ataupun meminta untuk menyelesaikan story yang belum lolos acceptance tests. Hal ini dilakukan agar dapat memperkirakan kapan iterasi tersebut selesai dikerjakan.

*designing*

Designing pada Extreme Programming

Simplicity

Desain terlebih dahulu dibuat sesederhana mungkin (tidak menambahkan suatu fungsi)agar lebih cepat terselesaikan (Keep It Simple). Fungsi baru ditambahkan saat benar benar dibutuhkan.

System Metaphor

Sytem metaphor merupakan bentuk komunikasi dimana kedua pihak (pengembang dan klien) memahami proses design perangkat lunak yang akan dibangun. Jadi, pengembang dipandu oleh klien dalam mendesain peragkat lunak. Sytem metaphor akan menentukan mental model yang dimiliki anggota tim pengembang, dan akan membentuk logical architecture untuk sistem yang akan dibuat

Baca Juga:  Atmel AVR ATMega128

CRC Cards

Class, Responsibilities, and Collaboration (CRC) cards digunakan tim pengembang mengumpulkan ide (brainstorming) dalam membuat desain perangkat lunak. CRC card biasanya digunakan saat pertama kali menentukan class apa yang diperlukan.(1) CRC cards digunakan agar setiap anggota tim dapat berpartisipasi dalam pembuatan desain. Semakin banyak yang berpartisipasi, maka semakin banyak pula ide bagus yang didapat.

Spike Solution

Tujuan dari membuat Spike Solution adalah untuk memcahkan masalah teknis atau masalah dalam mendesain. Saat menemui masalah teknis, dapat menempatkan dua developer untuk menyelesaikan masalah itu untuk mengurangi resiko kegagalan.

Never Add Functionality Early

Seseorang biasanya berfikiran untuk segera menambahkan fungsi-fungsi tambahan yang mungkin dikarenakan mudahnya fungsi tersebut atau memperkirakan fungsi tersebut akan berguna kelak. Seorang programer harus mengingatkan dirinya sendiri untuk tidak terburu-buru menambahkan fungsi tambahan karena itu akan membuang waktu. Program dibuat siap untuk ditambahkan fungsi-fungsi setelah program tersebut selesai.

Refactoring

mengijinkan programer melakukan perbaikan-perbaikan pada kode program walaupun hal tersebut tidak direncanakan dalam desain. Perbaikan pada proses Refactoring pada umumnya ditujukan untuk optimalisasi kualitas kode program (contoh: modularitas, efisiensi, reusability, kompleksitas, dan maintainability) dengan persyaratan utama tidak mengubah konsistensi output dan proses dari perangkat lunak tersebut  

Coding pada Extreme Programming

Customer is always available:

Pelanggan dengan pengembang proyek selalu melakukan komunikasi agar dapat membantu tim pengembang software. Setidaknya terdapat 1 orang dari pelanggan yang menjadi bagian dari dalam tim. Sehingga diharapkan semua permintaan pelanggan terpenuhi sesuai dengan keinginan

Code must be written to agreed standards

Kode harus menggunakan format yang telah di persetujui oleh tim. Sehingga format penulisan kode menjadi konsisten dan mudah untuk dipahami oleh seluruh tim. Diharapkan dengan format yang telah di tetapkan tersebut dapat menekan kesalahan yang mungkin terjadi.

Code the unit test first

Pada metode extreme programming sebelum melakukan proses coding. Langkah pertama adalah membuat sebuah unit test terlebih dahulu. Sehingga proses pengerjaan menjadi lebih cepat dan mudah. Unit test berfungsi untuk menjelaskan apa yang harus dibuat. Setelah unit tes selesai maka proses selanjutnya adalah membuat code. Lalu dibuat unit test selanjutnya baru membuat codenya.

All production code is pair programmed

Cara kerja pair programming adalah dua orang programmer bekerja bersama memecahkan sebuah masalah dalam 1 komputer. Sehingga  menghasilkan code yang lebih berkualitas karena hasil kombinasi dua pemikiran yang mengerjakan tugas bersama-sama.

Only one pair integrates code at a time

Pada metode extreme programming untuk menggabungkan code yang di buat oleh berbagai tim dibentuk satu pasang tim khusus. Tim tersebut diharapkan dapat menyelesaikan permasalahan saat proses penggabungan code, karena kemungkinan terjadinya ketidak cocok kode yang telah dibuat oleh tim lainnya. Pengembang perangkat lunak sebaiknya melakukan penggabungan code dari banyak tim sesering mungkin. Hal tersebut diharapkan mengurangi kesalahan sejak awal sehingga masih cepat/mudah untuk diperbaiki. Memperbaiki kesalahan sejak awal penggabungan code berbeda ketika code sudah banyak lalu digabungkan.

Set up a dedicated integration computer

Menggunakan satu komputer yang digunakan untuk mengontrol hasil rilis dari pengembang program. Jika program yang telah rilis tidak mengalami kesalahan dan sesuai dengan keinginan pelanggan, maka progam akan disimpan, namun jika masih ada kekurangan maka program akan dikembalikan lagi.

Use collective ownership

Seluruh tim pengembang mempunyai hak untuk memberikan kontribusi terhadap proyek yang sedang dikerjakan. Hal tersebut diharapkan dapat meningkatkan kualitas perangkat lunak yang dikembangkan. Pada metode extreme programming tidak ada anggapan bahwa terdapat salah seorang yang menjadi kepala arsitek yang mengatur proyek secara keseluruhan.

Testing pada Extreme Programming

All code must pass all the unit test

Kode yang dibuat oleh developer harus memiliki unit test. Unit test adalah pengujian yang dilakukan oleh developer dengan cara membagi-bagi kode menjadi bagian-bagian tertentu dan sehingga dapat dengan mudah memperbaiki program jika terjadi kesalahan atau ketika terjadi perubahan permintaan dari pelanggan. Program yang akan dirilis adalah program yang secara keseluruhan sudah lulus melalui tahap pengujian.

Baca Juga:  Komunikasi Bagian dari Kompetensi Manajerial

When a bug is found

Saat bug ditemukan, maka programmer fokus pada bug tersebut dan memperbaiki code. Sehingga perlu melakukan unit test kembali. Hal tersebut diulang kembali jika code masih belum benar.

Acceptance test

Pengujian dilakukan berdasarkan permintaan dari customer. Apakah program sesuai dengan apa yang diminta oleh customer. Jika masih terdapat bug atau ketidaksesuaian dengan permintaan customer maka proses akan kembali ke tahap planning / perencanaan kembali.

All production code is pair programmed

Cara kerja pair programming adalah dua orang programmer bekerja bersama memecahkan sebuah masalah dalam 1 komputer. Sehingga  menghasilkan code yang lebih berkualitas karena hasil kombinasi 2 pemikiran yang mengerjakan tugas bersama-sama.

Manage pada Extreme Programming

Manage yang dimaksud adalah memperhitungkan hal-hal diluar dari proses pengerjaan secara langsung atau sarana prasarana sebagai penunjang untuk menyelesaikan proyek. Contohnya adalah penjadwalan, ruang kerja tim developer , meeting dll. Beberapa hal yang menjadi perhatian dalam tahap manage adalah :

Meeting

Tujuan dari meeting adalah mengkomunikasikan masalah yang dihadapi oleh tim, berdikusi untuk mendapatkan solusi, atau menyalurkan ide atau gagasan. Meeting dapat dilakukan dengan berdiri agar terciptakan suasana santai sehingga mengurangi kejenuhan. Selama meeting dapat membahas atau melaporkan apa yang telah diselesaikan kemarin, apa yang akan dikerjakan hari ini, atau apa masalah yang mungkin akan dihadapi.

Penjadwalan

Penjadwalan yang dimaksudkan adalah penjadwalan dalam rangka menentukan  deadline langkah kerja yang akan diselesaikan. Waktu kerja yang dibutuhkan oleh masing-masing tim developer tentunya berbeda-beda. Waktu kerja yang lama akan membuat sang programmer menjadi jenuh sehingga akan menurunkan tingkat produktifitas. Dengan menentukan langkah kerja dan memperhitungkan  jadwal deadline yang tepat maka sang programmer akan konsisten untuk mengerjakan tugasnya sesuai deadline. Hal ini akan memicu programmer untuk bekerja secara optimal.

Ruang kerja tim developer

Dengan mengatur tata letak meja, kursi, papan tulis dll dalam upaya menciptakan kondisi yang kondusif akan meningkatkan produktifitas tim developer. Ruang kerja yang luas mejadi tempat berkumpulnya tim-tim developer dengan memperhatikan jarak meja  komputer yang digunakan oleh masing-masing tim. Sehingga satu tim dengan tim yang lain tetap menjalin komunikasi yang baik.

Pergantian anggota tim

Pair programming merupakan teknik mengerjakan tugas secara berpasang-pasangan yang memungkinkan untuk saling bertukar anggota. Pergantian pasangan sangat perlu dilakukan untuk membuat tim menjadi fleksibel dalam perubahan. Pertukaran ini bertujuan untuk mengoptimalkan potensi dari tim.

Kekurangan dan atau Kelebihan Extreme Programing (XP)

Keunggulan:

– Dalam extreme programming, komunikasi dibangun dengan melakukan pemrograman berpasangan (pair programming). Developer didampingi oleh pihak klien saat coding maupun unit testing sehingga klien terlibat langsung dalam pemrograman. Selain itu, prakiraan beban tugas juga diperhitungkan.

– extremeprogramming mengutamakan kesederhanaan code. Membuat program sederhana lalu mengembangkannya bila diperlukan.

– Setiap feedback dari klien ditanggapi dengan melakukan test, unit test atau system integration.

– memiliki banyak ide dan berani untuk mencoba mengimplementasikan. Setiap menemui kesalahan, langsung diperbaiki.

– Saling menghargai antar developer

– Hasil pekerjaan lebih cepat didapatkan

– Tidak ada perubahan yang tak menentu

Kelemahan:

– Developer harus siap dengan perubahan karena akan selalu menerima perubahan

– Membutuhkan kedisiplinan tinggi

– baik saat digunakan pada proyek yang kecil

– membutuhkan lebih banyak input dari user

Demikian yang dapat kolonginfo bagikan, semoga bermanfaat.

Sumber: Diolah dari berbagai sumber

Be the first to comment

Leave a Reply

Your email address will not be published.


*