Mengembangkan Software yang Lebih Sederh
Mengembangkan Software yang Lebih Sederhana dengan
Extreme Programming (XP)
Dalam pengembangannya, sebuah software atau perangkat lunak
seperti halnya sebuah rumah, efisiensinya terletak pada terpenuhinya
semua kebutuhan - kebutuhan yang dibutuhkan oleh pemiliknya baik itu
dilihat
dari
segi
fungsinya
maupun
kenyamanan
pemiliknya
dalam
penggunaan semua sumber atau resources yang ada di dalamnya. Sebuah
software atau perangkat lunak tidaklah hanya dilihat berdasarkan tingkat
kepuasan penggunanya, tetapi bagaimana tingkatan pencapaian kebutuhan
penggunanya dalam menyelesaikan berbagai permasalahan yang dihadapi.
Dan untuk mendapatkan hal tersebut, maka sebuah perangkat lunak dalam
pengembangannya membutuhkan metode atau cara dan juga proses yang
tepat. Software process model adalah proses rangkaian penanganan sebuah
perangkat lunak yang didasari atas standar pertimbangan-pertimbangan
tertentu yang memungkinkan sebuah perangkat lunak dapat mencapai
kesempurnaan untuk memenuhi kebutuhan - kebutuhan pengguna dalam
menyelesaikan permasalahan - permasalahan yang dihadapi.
“Mengapa
dalam
pembuatan
software
atau
perangkat
lunak
membutuhkan proses?”.
Tentu saja untuk mendapatkan software atau perangkat lunak yang
berkualitas
tinggi
dan
handal
(reliable)
dalam
pengembangannya
membutuhkan metode dan proses untuk mendapatkan hasil yang sesuai
kebutuhan. Misalnya saja dalam pembuatan produk office tentunya sebuah
produk
tersebut
tidak
langsung
jadi
dengan
sendirinya,
dalam
pembuatannyapun membutuhkan proses yang sangat panjang dan rumit
serta memerlukan beberapa tahapan yang terencana, dari mulai spesifikasi
kebutuhan, perencanaan, pemodelan atau design, kontruksi dan pengujian,
serta pemeliharaan.
Hal tersebut ditegaskan oleh Tata Sutabri (2012, p56) bahwa
pengembangan
perangkat
lunak
atau
sistem
harus
terencana
menggambarkan tahapan-tahapan yang sering disebut sebagai pendekatan
System Development Life Cycle (SDLC).
Untuk membangun sistem perangkat lunak yang handal ( reliable)
tentunya dihadapkan pada kondisi terkini, perancangan sebuah perangkat
lunak ditentukan berdasarkan jenis perangkat lunak yang akan dibangun.
Perbedaan tahapan pembangunan perangkat lunak itu sendiri biasanya
disebut dengan Software Process Model.
Setiap software engineer harus memahami dan mengikuti tahapantahapan yang telah ditetapkan di dalam software engginering, sebagaimana
definisi yang dikeluarkan oleh IEEE Standard 610.12.
Software engineering is "(1) the application of a systematic,
disciplined,
quantifiable approach to the development, operation, and
maintenance of software, that is, the application of engineering to
software," and "(2) the study of approaches as in (1)."
Oleh karena itu dalam pengembangan sebuah sistem perangkat
lunak, setiap software engineer harus memilih model proses perangkat
lunak yang paling tepat sehingga seorang software engineer mendapatkan
kemudahan dalam mengelola dan mengendalikan proses pembangunan
sistem, tahap demi tahap yang akan dilakukan. Walaupun pada dasarnya
pembangunan sistem adalah pekerjaan tim, namun setiap anggota tim yang
lain juga harus paham bagaimana sebuah proses pembangunan sistem
tersebut berjalan sehingga dapat menempatkan posisinya sesuai dengan
tahapan yang sedang berjalan agar hasil yang dicapai juga maksimal.
Dalam membangun sebuah perangkat lunak atau software, Software
Process Model memberikan suatu standarisasi bagi seorang developer atau
pengembang bagaimana proses pembuatan perangkat lunak atau software
itu dimulai dan bagaimana pembuatan perangkat lunak itu harus diproses.
Setiap proses - proses yang diproses oleh seorang developer atau
pengembang mengantar developer untuk melakukan proses-proses yang
lainnya. Proses desain, konstruksi dan implementasi tidak akan terlaksana
jika proses penganalisaan permasalahan tidak ada, dan begitu juga
sebaliknya. Jadi, di setiap tahap proses dalam perancangan sebuah
perangkat lunak mengantar developer pada tahap-tahap proses selanjutnya,
setiap
informasi
-
informasi
yang
didapatkan
pada
tahap
-
tahap
sebelumnya akan menentukan informasi - infromasi yang akan diperoleh
developer pada tahap-tahap selanjutnya, hal ini membuktikan bahwa
keterkaitan setiap tahap proses dalam membuat sebuah perangkat lunak itu
memiliki hubungan yang sangat erat.
Model proses pengembangan perangkat lunak berawal dengan model
waterfall yang sangat linear dan sekuensial, hingga unified process yang
merupakan model pengembangan untuk sistem berorientasi objek. Semua
model tersebut masih memiliki kelemahan mendasar yaitu masih kurang
bisa mengatasai perubahan requirement atau kebutuhan yang begitu cepat
dari pihak client.
Software process model merupakan hal terpenting atau salah satu
aspek utama dalam proses pembuatan perangkat lunak yaitu pemodelan
sistem, tanpa adanya pemodelan sistem maka suatu sistem akan bisa jadi
gagal untuk di kembangkan karena tahap - tahapnya yang kurang terjadwal,
terencana, dan terkonsep atau terorganisir dengan baik dari segi biaya,
sumber daya, tenaga, maupun estimasi waktu proses pembuatan sistem
sehingga akan menimbulkan permasalahan.
Permasalahan
utama
yang
sering
muncul
dalam
sebuah
pengembangan proyek perangkat lunak adalah perubahan requirement atau
kebutuhan yang begitu cepat. Hal ini terjadi sebagai akibat perubahan perubahan yang muncul baik pada aspek bisnis maupun teknologi yang
berlangsung lebih cepat daripada proses pengembangan perangkat lunak
itu sendiri.
Untuk mengatasi masalah yang dipaparkan di atas muncullah yaitu
model proses pengembangan perangkat lunak yaitu Extreme Programming
(XP).
“Apa itu Extreme Progamming (XP)?”
Extreme Programming (XP) merupakan salah satu model proses dari
Agile Software Development yang merupakan salah satu model dalam
pengembaangan sistem berbasis Software Development Life Cycle (SDLC).
Extreme Programming (XP) ini digunakan untuk mengatasi masalah
requirement atau kebutuhan yang tidak jelas dan sering berubah-ubah dari
pihak pengguna. Extreme Programming dimunculkan untuk menangani
perubahan
-
perubahan
yang
biasanya
sering
terjadi
pada
saat
pengembangan berlangsung bahkan pada saat proses pengembangan
sudah hampir berakhir dan berhasil.
“Kapan model Extreme Programming ini tepat digunakan?”
Penggunaan sebuah model pengembangan perangkat lunak atau
sistem tidaklah sembarangan. Extreme Progamming itu sendiri tepat
digunakan jika: keperluan berubah sangat cepat hal ini biasanya dari pihak
pengguna, tingginya resiko terhadap perubahan, terdapat proyek dengan
tantangan baru, memiiki sedikit tim programmer yang hanya sekitar 2-10
orang
saja,
mampu
mengotomasikan
tes,
dan
adanya peran
serta
pelanggan secara langsung.
Menyinggung masalah Agile, terdapat suatu istilah yang disebut
Agility. Apa yang dimaksud dengan Agility itu?
Menurut Ivar Jacabson,
agility mengandung pengertian bahwa
perubahan (change) merupakan “hati” dan “jiwa” dari perangkat lunak.
Maksudnya adalah bahwa perubahan terhadap requirement pelanggan, silih
bergantinya
anggota
tim
dan
perubahan
kebutuhan
teknologi
yang
berimplikasi terhadap produk yang dihasilkan merupakan suatu hal yang
sangat wajar terjadi. Hampir semua proyek pengembangan perangkat lunak
pasti mengalami hal tersebut. Agile proses menekankan pada aktifitas
kontruksi (desain dan koding). Agile Process mengeliminasi sebagian besar
waktu untuk melakukan perencanaan sistem dan berusaha sebisa mungkin
mematuhi jadwal deliver sistem yang telah dijanjikan. Requirements yang
dibutuhkan secara langsung di-drive oleh pelanggan itu sendiri, dan apabila
terjadi perubahan terhadap requirements tersebut, pengembang dituntut
mampu beradaptasi dengan perubahan yang terjadi.
Extreme
Programming
(XP)
adalah
sebuah
pendekatan
pengembangan perangkat lunak yang mencoba meningkatkan software
atau perangkat lunak dengan mengkombinasikan berbagai ide sederhana.
Extreme Programming adalah sebuah model pengembangan sistem
yang menyederhanakan berbagai tahapan proses pengembangan tersebut
agar tercapainya peningkatan efisiensi dan fleksibilitas sebuah proyek
pengembangan perangkat lunak. Bahkan, menurut Shahriar Mohammadi,
Bahman Nikkhahan, dan Sahar Sohrabi (2009) dalam jurnalnya yang
berjudul Challenges of user Involvement in Extreme Programming projects ,
Extreme Programming merupakan model yang tangkas dan banyak dipakai
dalam
perusahaan
karena
praktik
Extreme
Programming
semuanya
dilakukan untuk kepuasan pelanggan. Extreme Programming tidak hanya
berfokus pada source code atau coding, tetapi meliputi seluruh area
pengembangan.
Fleksibilitas merupakan tuntutan pasar yang senantiasa menghendaki
perusahaan mampu menghasilkan produk dan jasa yang memenuhi
kebutuhan konsumen yang selalu mengalami perubahan dan perbaikan.
Kemampuan perusahaan untuk melakukan penyesuaian dengan cepat
setiap perubahan kebutuhan konsumen tersebut menjadi kunci yang
menentukan keberhasilan dalam menempatkan diri setapak lebih maju dari
perusahaan lain atau perusahaan pesaing.
Contoh
kasus
:
Misalkan
saja
kita
dihadapkan
pada
suatu
permasalahan yaitu sebagai seorang project leader atau pemimpin proyek
pada sebuah proyek pengembangan perangkat lunak. Setelah berbulan –
bulan mengembangkan sebuah perangkat lunak dan proyek yang kita
kembangkan sudah hampir selesai. Namun tiba - tiba saja di perusahaan
client kita terjadi perubahan kebijakan yang berimplikasi pada perangkat
lunak atau software yang kita bangun. Tentunya sebagai project leader dan
tim akan sangat frustasi. Namun dalam hal ini tentunya juga tidak bisa
menolak perubahan - perubahan yang diajukan oleh client karena sudah
menjalin kontrak sepakat dengan adanya perubahan-perubahan tersebut.
Hal tersebut seringkali terjadi disebabkan lamanya proses pengembangan
perangkat lunak. Proses pengembangan perangkat lunak yang kompleks
dapat menghabiskan waktu berbulan – bulan lamanya bahkan bisa sampai
bertahun – tahun sebelum perangkat lunak siap untuk digunakan. Padahal
seringkali dalam waktu tersebut terjadi perubahan besar pada situasi bisnis
maupun teknologi yang bisa membuat perangkat lunak menjadi tidak
relevan lagi. Extreme Programming (XP) mencoba menyederhanakan
berbagai
tahapan
dalam
proses
pengembangan
tersebut,
sehingga
perangkat lunak yang dikembangkan menjadi lebih adaptif dan juga
fleksibel. Dalam hal ini juga tim Extreme Progamming harus secara intensif
berhubungan dengan client sehingga apa yang diinginkan oleh client untuk
sistem atau perangkat lunak yang sedang dikembangkan sesuai dengan apa
yang
diinginkan
atau
ditentukan
client.
oleh
Sehingga
tujuan
pengembangan sistem atau perangkat lunak dapat diselesaikan dengan
cepat.
Extreme
Model
Programming
ini
mengedepankan
proses
pengembangan yang lebih responsive terhadap kebutuhan client (“agile”)
dibandingkan dengan model – model tradisional lainnya sambil membangun
suatu perangkat lunak dengan kualitas yang lebih baik.
Tujuan utama dari Extreme Programming (XP) adalah menurunkan
biaya
dari
adanya
perubahan
perangkat
lunak .
Dalam
model
pengembangan tradisional, kebutuhan sistem ditentukan pada tahap awal
pengembangan proyek dan bersifat fixed. Hal ini berarti biaya terhadap
adanya perubahan kebutuhan yang terjadi pada tahap selanjutnya akan
menjadi sangat mahal.
Extreme Programming (XP) diarahkan untuk
menurunkan biaya dari adanya perubahan dengan memperkenalkan nilainilai
basis
dasar,
prinsip
dan
praktis.
Dengan
menerapkan
XP,
pengembangan suatu sistem haruslah lebih fleksibel terhadap perubahan.
Extreme Programming (XP) muncul menawarkan sebuah disiplin baru
dalam pengembangan perangkat lunak secara agile. Nilai dasar yang
terkandung
di
dalam
Extreme
Programming
adalah
:
Komunikasi
(Communication), kesederhanaan (Simplicity), umpan balik (Feedback),
keberanian (Courage) dan Quality Work.
Komunikasi (Communication), komunikasi anatar developer dan
pengguna seringkali dipermasalahkan. Sehingga Extreme Programming
dibangun untuk mengatasi hal ini, Extreme Programming membentuk pair
programming atau pemrograman berpasangan. Penerapan ini dilakukan
untuk mencegah terjadinya hal-hal yang tidak diinginkan. Seperti apabila
terjadinya kecelakaan pada pihak developer yang satu sehingga data
informasi perangkat lunak yang dibangun semuanya hilang, maka masih
ada data yang lain pada pihak developer yang masih utuh. Modal utama
pair progamming adalah adanya kekompakan yang erat antar developer.
Kesederhanaan
(Simplicity),
Dengan
menggunakan
Extreme
Programming, artinya tim developer harus tetap melakukan semuanya
dengan sederhana, karena salah satu nilai dasar dari Extreme Programming
adalah mencoba untuk selalu mencari solusi yang paling sederhana dan
paling praktis. Gunakanlah method yang mudah, pendek atau tidak terlalu
rumit dalam pembuatan desain serta hilangkanlah fitur-fitur yang tidak
berguna.
Inilah
metodologi
yang
membedakan
pengembangan
sistem
Extreme
Programming
konvensional
lainnya.
dengan
Extreme
Programming berfokus pada kebutuhan saat ini dibandingkan kebutuhan
besok
Umpan balik (Feedback), yaitu memberikan umpan balik kepada
sesama
anggota
tim maupun
pihak-pihak
lain
yang
terlibat
dalam
pengembangan perangkat lunak. Dalam hal ini seharusnya mengutarakan
selalu pikiran dan mendiskusikan kesalahan-kesalahan yang muncul selama
proses pengembangan serta mendengarkan selalu pendapat rekan yang
lain, dengan adanya umpan balik inilah akan disadari bagian mana yang
salah atau bisa ditingkatkan lagi dari perangkat lunak yang dikembangkan.
Keberanian (Courage), Berani mencoba ide baru. Berani mengerjakan
kembali dan setiap kali kesalahan ditemukan, langsung diperbaiki. Contoh
dari courage adalah komitmen untuk selalu melakukan design dan coding
untuk saat ini dan bukan untuk esok. Ketika ada kode yang terlalu rumit,
sulit dibaca dan dipahami, tidak sesuai dengan kemauan pelanggan, dll
maka seharusnya kode program seperti itu di refactor (kalau perlu dibangun
ulang).
Hal
ini
menjadikan
pengembang
merasa
nyaman
dengan refactoring program ketika diperlukan. Ini berarti meninjau sistem
yang ada dan memodifikasi sehingga perubahan masa depan dapat
dilaksanakan dengan lebih mudah. Contoh lain dari keberanian adalah
mengetahui kapan harus membuang kode menjauh. Keberanian untuk
menghapus kode sumbe yang is obsolete, tidak peduli seberapa banyak
usaha yang digunakan untuk membuat kode sumber itu juga, keberanian
berarti ketekunan. Seorang programmer. Mungkin akan terjebak pada
masalah yang kompleks untuk satu hari, lalu memcahkan masalah dengan
cepat pada hari berikutnya, jika hanya mereka gigih.
Menghormati (Respect), Pentingnya respect terhadap anggota team
lainnya karena dengan siklus pendek dan integrasi continue, programmer
tidak boleh melakukan perubahan yang dapat merusak kompilasi dan
menyebabkan keberadaan unit uji gagal atau memperlambat kerja team.
Respects tiap individu akan selalu menghasilkan kualitas tinggi.
Penerapan
Extreame Programming bisa dilakukan di banyak
perusahaan atau organisasi. Sebuah organisasi misalnya seperti software
house atau pengembangan sebuah software atau perangkat lunak dapat
menerapkan
Extreme
Programming
karena
Extreme
Programming
mengedepankan Extreme Programming life cycle.
Extreme Programming sangat menghemat waktu untuk membangun
atau membuat sebuah sistem perangkat lunak. Dalam software house¸
penerapan Extreme Programming dapat dilakukan karena stuktur kerja dan
struktur organisasi yang menyerupai Extreme Programming. Pada organisasi
software house terdapat analis, desainer, programmer, dan tester. Oleh
karena
itu
Extreme
Programming
sangat
tepat
dan
cocok
di
implementasikan untuk software house.
Menurut
Presman
dalam
bukunya
yang
berjudul
Software
Engineering, edisi keenam, proses Extreme Programming memiliki kerangka
kerja yang terbagi menjadi empat konteks aktivitas utama. Empat konteks
tersebut adalah lanning, design, coding, dan testing. Keempat aktivitas
inilah yang akan menghasilkan sebuah perangkat lunak yang didasari
dengan konsep model Extreme Programming.
1
Planning, berfokus untuk mendapatkan gambaran fitur dan fungsi
dari perangkat lunak yang akan dibangun. Aktivitas planning dimulai
dengan membuat kumpulan gambaran atau cerita yang telah diberikan oleh
klien yang akan menjadi gambaran dasar dari perangkat lunak tersebut.
Setelah semua kebutuhan terpenuhi, tim XP akan menentukan alur dari
pengembangan aplikasi sebelum memulai pengembangan tugas. Namun
dokumentasi XP tersebut yang mengandalkan cerita user inilah yang
merupakan kelemahan bagi model ini. Terlepas dari semua hal tersebut,
Extreme Programming menjadi sebuah model
Tahap Design pada model proses Extreme Programming merupakan
2
panduan dalam membangun perangkat lunak yang didasari dari cerita klien
sebelumnya yang telah dikumpulkan pada tahap planning. Dalam XP,
proses design terjadi sebelum dan sesudah aktivitas coding berlangsung.
Artinya,
aktivitas
design terjadi secara terus-menerus selama proses
pengembangan aplikasi berlangsung.
3
Coding, Setelah menyelesaikan gambaran dasar perangkat lunak dan
menyelesaikan
design untuk
aplikasi
secara
keseluruhan,
XP
lebih
merekomendasikan tim untuk membuat modul unit tes terlebih dahulu yang
bertujuan untuk melakukan uji coba setiap cerita dan gambaran yang
diberikan oleh klien. Setelah berbagai unit tes selesai dibangun, tim barulah
melanjutkan aktivitasnya ke penulisan coding aplikasi. XP menerapkan
konsep Pair Programming dimana setiap tugas sebuah modul dikembangkan
oleh dua orang programmer. XP beranggapan, 2 orang akan lebih cepat dan
baik dalam menyelesaikan sebuah masalah. Selanjutnya, modul aplikasi
yang sudah selesai dibangun akan digabungkan dengan aplikasi utama.
4
Testing, Setelah semua modul selesai dan dikumpulkan ke dalam
sebuah sistem yang sempurna, maka tim XP akan melakukan pengujian
penerimaan atau acceptance test. Pada tahap ini, aplikasi akan langsung
diuji coba oleh user dan client agar mendapat tanggapan langsung
mengenai
penerapan
gambaran
dan
cerita
yang
telah
dilakukan
sebelumnya.
Dengan
Extreme
Programming
hubungan
antara
pengembang
perangkat lunak atau developer dengan client akan terjalin interaksi yang
baik. Komunikasi yang selalu besifat oral tanpa dokumentasi formal yang
mengandalkan cerita user inilah yang menjadi salah satu perbedaan
Extreme Programming dengan model pengembangan yang lain. Namun
dokumentasi
tersebut
yang
mengandalkan
cerita
user
inilah
yang
merupakan kelemahan bagi model ini. Terlepas dari semua hal tersebut,
Extreme Programming menjadi sebuah model pengembangan perangkat
lunak yang semi formal karena semua dilakukan dengan practice yang
sederhana. Semua ini karena XP mengacu pada proses pengembangan agile
mo=ethods yang memiliki prinsipprinsip kesederhanaan.
Extreme Programming mempermudah jembatan komunikasi antara
pihak user atau client dan pihak pengembang. Pihak user dapat langsung
memonitor proses pengembangan dengan onsite customer tanpa kekakuan,
dan pihak pengembang dapat lebih sering berkomunikasi langsung dengan
representasi dari pihak bisnis. selain itu Extreme Programming ini membuat
seorang developer tidak bekerja secara berlebihan. Sehingga Extreme
Progamming ini mempermudah pengembangan perangkat lunak dengan
lebih sederhana.
Sumber:
Mohammadi, S., B. Nikkahan, S. Sohrabi.
2009. Challenges of user
Involvement in Extreme Programming projects. International Journal of
Software Engineering and Its Applications. 3(1): 20.
R. Pressman, “Software Engineering: A Practitioner’s Approach”, 6 th edition,
McGraw-Hill, 2005.
Sutabri, Tata. (2012). Analisis Sistem Informasi. Yogyakarta : Andi Offset.
Extreme Programming (XP)
Dalam pengembangannya, sebuah software atau perangkat lunak
seperti halnya sebuah rumah, efisiensinya terletak pada terpenuhinya
semua kebutuhan - kebutuhan yang dibutuhkan oleh pemiliknya baik itu
dilihat
dari
segi
fungsinya
maupun
kenyamanan
pemiliknya
dalam
penggunaan semua sumber atau resources yang ada di dalamnya. Sebuah
software atau perangkat lunak tidaklah hanya dilihat berdasarkan tingkat
kepuasan penggunanya, tetapi bagaimana tingkatan pencapaian kebutuhan
penggunanya dalam menyelesaikan berbagai permasalahan yang dihadapi.
Dan untuk mendapatkan hal tersebut, maka sebuah perangkat lunak dalam
pengembangannya membutuhkan metode atau cara dan juga proses yang
tepat. Software process model adalah proses rangkaian penanganan sebuah
perangkat lunak yang didasari atas standar pertimbangan-pertimbangan
tertentu yang memungkinkan sebuah perangkat lunak dapat mencapai
kesempurnaan untuk memenuhi kebutuhan - kebutuhan pengguna dalam
menyelesaikan permasalahan - permasalahan yang dihadapi.
“Mengapa
dalam
pembuatan
software
atau
perangkat
lunak
membutuhkan proses?”.
Tentu saja untuk mendapatkan software atau perangkat lunak yang
berkualitas
tinggi
dan
handal
(reliable)
dalam
pengembangannya
membutuhkan metode dan proses untuk mendapatkan hasil yang sesuai
kebutuhan. Misalnya saja dalam pembuatan produk office tentunya sebuah
produk
tersebut
tidak
langsung
jadi
dengan
sendirinya,
dalam
pembuatannyapun membutuhkan proses yang sangat panjang dan rumit
serta memerlukan beberapa tahapan yang terencana, dari mulai spesifikasi
kebutuhan, perencanaan, pemodelan atau design, kontruksi dan pengujian,
serta pemeliharaan.
Hal tersebut ditegaskan oleh Tata Sutabri (2012, p56) bahwa
pengembangan
perangkat
lunak
atau
sistem
harus
terencana
menggambarkan tahapan-tahapan yang sering disebut sebagai pendekatan
System Development Life Cycle (SDLC).
Untuk membangun sistem perangkat lunak yang handal ( reliable)
tentunya dihadapkan pada kondisi terkini, perancangan sebuah perangkat
lunak ditentukan berdasarkan jenis perangkat lunak yang akan dibangun.
Perbedaan tahapan pembangunan perangkat lunak itu sendiri biasanya
disebut dengan Software Process Model.
Setiap software engineer harus memahami dan mengikuti tahapantahapan yang telah ditetapkan di dalam software engginering, sebagaimana
definisi yang dikeluarkan oleh IEEE Standard 610.12.
Software engineering is "(1) the application of a systematic,
disciplined,
quantifiable approach to the development, operation, and
maintenance of software, that is, the application of engineering to
software," and "(2) the study of approaches as in (1)."
Oleh karena itu dalam pengembangan sebuah sistem perangkat
lunak, setiap software engineer harus memilih model proses perangkat
lunak yang paling tepat sehingga seorang software engineer mendapatkan
kemudahan dalam mengelola dan mengendalikan proses pembangunan
sistem, tahap demi tahap yang akan dilakukan. Walaupun pada dasarnya
pembangunan sistem adalah pekerjaan tim, namun setiap anggota tim yang
lain juga harus paham bagaimana sebuah proses pembangunan sistem
tersebut berjalan sehingga dapat menempatkan posisinya sesuai dengan
tahapan yang sedang berjalan agar hasil yang dicapai juga maksimal.
Dalam membangun sebuah perangkat lunak atau software, Software
Process Model memberikan suatu standarisasi bagi seorang developer atau
pengembang bagaimana proses pembuatan perangkat lunak atau software
itu dimulai dan bagaimana pembuatan perangkat lunak itu harus diproses.
Setiap proses - proses yang diproses oleh seorang developer atau
pengembang mengantar developer untuk melakukan proses-proses yang
lainnya. Proses desain, konstruksi dan implementasi tidak akan terlaksana
jika proses penganalisaan permasalahan tidak ada, dan begitu juga
sebaliknya. Jadi, di setiap tahap proses dalam perancangan sebuah
perangkat lunak mengantar developer pada tahap-tahap proses selanjutnya,
setiap
informasi
-
informasi
yang
didapatkan
pada
tahap
-
tahap
sebelumnya akan menentukan informasi - infromasi yang akan diperoleh
developer pada tahap-tahap selanjutnya, hal ini membuktikan bahwa
keterkaitan setiap tahap proses dalam membuat sebuah perangkat lunak itu
memiliki hubungan yang sangat erat.
Model proses pengembangan perangkat lunak berawal dengan model
waterfall yang sangat linear dan sekuensial, hingga unified process yang
merupakan model pengembangan untuk sistem berorientasi objek. Semua
model tersebut masih memiliki kelemahan mendasar yaitu masih kurang
bisa mengatasai perubahan requirement atau kebutuhan yang begitu cepat
dari pihak client.
Software process model merupakan hal terpenting atau salah satu
aspek utama dalam proses pembuatan perangkat lunak yaitu pemodelan
sistem, tanpa adanya pemodelan sistem maka suatu sistem akan bisa jadi
gagal untuk di kembangkan karena tahap - tahapnya yang kurang terjadwal,
terencana, dan terkonsep atau terorganisir dengan baik dari segi biaya,
sumber daya, tenaga, maupun estimasi waktu proses pembuatan sistem
sehingga akan menimbulkan permasalahan.
Permasalahan
utama
yang
sering
muncul
dalam
sebuah
pengembangan proyek perangkat lunak adalah perubahan requirement atau
kebutuhan yang begitu cepat. Hal ini terjadi sebagai akibat perubahan perubahan yang muncul baik pada aspek bisnis maupun teknologi yang
berlangsung lebih cepat daripada proses pengembangan perangkat lunak
itu sendiri.
Untuk mengatasi masalah yang dipaparkan di atas muncullah yaitu
model proses pengembangan perangkat lunak yaitu Extreme Programming
(XP).
“Apa itu Extreme Progamming (XP)?”
Extreme Programming (XP) merupakan salah satu model proses dari
Agile Software Development yang merupakan salah satu model dalam
pengembaangan sistem berbasis Software Development Life Cycle (SDLC).
Extreme Programming (XP) ini digunakan untuk mengatasi masalah
requirement atau kebutuhan yang tidak jelas dan sering berubah-ubah dari
pihak pengguna. Extreme Programming dimunculkan untuk menangani
perubahan
-
perubahan
yang
biasanya
sering
terjadi
pada
saat
pengembangan berlangsung bahkan pada saat proses pengembangan
sudah hampir berakhir dan berhasil.
“Kapan model Extreme Programming ini tepat digunakan?”
Penggunaan sebuah model pengembangan perangkat lunak atau
sistem tidaklah sembarangan. Extreme Progamming itu sendiri tepat
digunakan jika: keperluan berubah sangat cepat hal ini biasanya dari pihak
pengguna, tingginya resiko terhadap perubahan, terdapat proyek dengan
tantangan baru, memiiki sedikit tim programmer yang hanya sekitar 2-10
orang
saja,
mampu
mengotomasikan
tes,
dan
adanya peran
serta
pelanggan secara langsung.
Menyinggung masalah Agile, terdapat suatu istilah yang disebut
Agility. Apa yang dimaksud dengan Agility itu?
Menurut Ivar Jacabson,
agility mengandung pengertian bahwa
perubahan (change) merupakan “hati” dan “jiwa” dari perangkat lunak.
Maksudnya adalah bahwa perubahan terhadap requirement pelanggan, silih
bergantinya
anggota
tim
dan
perubahan
kebutuhan
teknologi
yang
berimplikasi terhadap produk yang dihasilkan merupakan suatu hal yang
sangat wajar terjadi. Hampir semua proyek pengembangan perangkat lunak
pasti mengalami hal tersebut. Agile proses menekankan pada aktifitas
kontruksi (desain dan koding). Agile Process mengeliminasi sebagian besar
waktu untuk melakukan perencanaan sistem dan berusaha sebisa mungkin
mematuhi jadwal deliver sistem yang telah dijanjikan. Requirements yang
dibutuhkan secara langsung di-drive oleh pelanggan itu sendiri, dan apabila
terjadi perubahan terhadap requirements tersebut, pengembang dituntut
mampu beradaptasi dengan perubahan yang terjadi.
Extreme
Programming
(XP)
adalah
sebuah
pendekatan
pengembangan perangkat lunak yang mencoba meningkatkan software
atau perangkat lunak dengan mengkombinasikan berbagai ide sederhana.
Extreme Programming adalah sebuah model pengembangan sistem
yang menyederhanakan berbagai tahapan proses pengembangan tersebut
agar tercapainya peningkatan efisiensi dan fleksibilitas sebuah proyek
pengembangan perangkat lunak. Bahkan, menurut Shahriar Mohammadi,
Bahman Nikkhahan, dan Sahar Sohrabi (2009) dalam jurnalnya yang
berjudul Challenges of user Involvement in Extreme Programming projects ,
Extreme Programming merupakan model yang tangkas dan banyak dipakai
dalam
perusahaan
karena
praktik
Extreme
Programming
semuanya
dilakukan untuk kepuasan pelanggan. Extreme Programming tidak hanya
berfokus pada source code atau coding, tetapi meliputi seluruh area
pengembangan.
Fleksibilitas merupakan tuntutan pasar yang senantiasa menghendaki
perusahaan mampu menghasilkan produk dan jasa yang memenuhi
kebutuhan konsumen yang selalu mengalami perubahan dan perbaikan.
Kemampuan perusahaan untuk melakukan penyesuaian dengan cepat
setiap perubahan kebutuhan konsumen tersebut menjadi kunci yang
menentukan keberhasilan dalam menempatkan diri setapak lebih maju dari
perusahaan lain atau perusahaan pesaing.
Contoh
kasus
:
Misalkan
saja
kita
dihadapkan
pada
suatu
permasalahan yaitu sebagai seorang project leader atau pemimpin proyek
pada sebuah proyek pengembangan perangkat lunak. Setelah berbulan –
bulan mengembangkan sebuah perangkat lunak dan proyek yang kita
kembangkan sudah hampir selesai. Namun tiba - tiba saja di perusahaan
client kita terjadi perubahan kebijakan yang berimplikasi pada perangkat
lunak atau software yang kita bangun. Tentunya sebagai project leader dan
tim akan sangat frustasi. Namun dalam hal ini tentunya juga tidak bisa
menolak perubahan - perubahan yang diajukan oleh client karena sudah
menjalin kontrak sepakat dengan adanya perubahan-perubahan tersebut.
Hal tersebut seringkali terjadi disebabkan lamanya proses pengembangan
perangkat lunak. Proses pengembangan perangkat lunak yang kompleks
dapat menghabiskan waktu berbulan – bulan lamanya bahkan bisa sampai
bertahun – tahun sebelum perangkat lunak siap untuk digunakan. Padahal
seringkali dalam waktu tersebut terjadi perubahan besar pada situasi bisnis
maupun teknologi yang bisa membuat perangkat lunak menjadi tidak
relevan lagi. Extreme Programming (XP) mencoba menyederhanakan
berbagai
tahapan
dalam
proses
pengembangan
tersebut,
sehingga
perangkat lunak yang dikembangkan menjadi lebih adaptif dan juga
fleksibel. Dalam hal ini juga tim Extreme Progamming harus secara intensif
berhubungan dengan client sehingga apa yang diinginkan oleh client untuk
sistem atau perangkat lunak yang sedang dikembangkan sesuai dengan apa
yang
diinginkan
atau
ditentukan
client.
oleh
Sehingga
tujuan
pengembangan sistem atau perangkat lunak dapat diselesaikan dengan
cepat.
Extreme
Model
Programming
ini
mengedepankan
proses
pengembangan yang lebih responsive terhadap kebutuhan client (“agile”)
dibandingkan dengan model – model tradisional lainnya sambil membangun
suatu perangkat lunak dengan kualitas yang lebih baik.
Tujuan utama dari Extreme Programming (XP) adalah menurunkan
biaya
dari
adanya
perubahan
perangkat
lunak .
Dalam
model
pengembangan tradisional, kebutuhan sistem ditentukan pada tahap awal
pengembangan proyek dan bersifat fixed. Hal ini berarti biaya terhadap
adanya perubahan kebutuhan yang terjadi pada tahap selanjutnya akan
menjadi sangat mahal.
Extreme Programming (XP) diarahkan untuk
menurunkan biaya dari adanya perubahan dengan memperkenalkan nilainilai
basis
dasar,
prinsip
dan
praktis.
Dengan
menerapkan
XP,
pengembangan suatu sistem haruslah lebih fleksibel terhadap perubahan.
Extreme Programming (XP) muncul menawarkan sebuah disiplin baru
dalam pengembangan perangkat lunak secara agile. Nilai dasar yang
terkandung
di
dalam
Extreme
Programming
adalah
:
Komunikasi
(Communication), kesederhanaan (Simplicity), umpan balik (Feedback),
keberanian (Courage) dan Quality Work.
Komunikasi (Communication), komunikasi anatar developer dan
pengguna seringkali dipermasalahkan. Sehingga Extreme Programming
dibangun untuk mengatasi hal ini, Extreme Programming membentuk pair
programming atau pemrograman berpasangan. Penerapan ini dilakukan
untuk mencegah terjadinya hal-hal yang tidak diinginkan. Seperti apabila
terjadinya kecelakaan pada pihak developer yang satu sehingga data
informasi perangkat lunak yang dibangun semuanya hilang, maka masih
ada data yang lain pada pihak developer yang masih utuh. Modal utama
pair progamming adalah adanya kekompakan yang erat antar developer.
Kesederhanaan
(Simplicity),
Dengan
menggunakan
Extreme
Programming, artinya tim developer harus tetap melakukan semuanya
dengan sederhana, karena salah satu nilai dasar dari Extreme Programming
adalah mencoba untuk selalu mencari solusi yang paling sederhana dan
paling praktis. Gunakanlah method yang mudah, pendek atau tidak terlalu
rumit dalam pembuatan desain serta hilangkanlah fitur-fitur yang tidak
berguna.
Inilah
metodologi
yang
membedakan
pengembangan
sistem
Extreme
Programming
konvensional
lainnya.
dengan
Extreme
Programming berfokus pada kebutuhan saat ini dibandingkan kebutuhan
besok
Umpan balik (Feedback), yaitu memberikan umpan balik kepada
sesama
anggota
tim maupun
pihak-pihak
lain
yang
terlibat
dalam
pengembangan perangkat lunak. Dalam hal ini seharusnya mengutarakan
selalu pikiran dan mendiskusikan kesalahan-kesalahan yang muncul selama
proses pengembangan serta mendengarkan selalu pendapat rekan yang
lain, dengan adanya umpan balik inilah akan disadari bagian mana yang
salah atau bisa ditingkatkan lagi dari perangkat lunak yang dikembangkan.
Keberanian (Courage), Berani mencoba ide baru. Berani mengerjakan
kembali dan setiap kali kesalahan ditemukan, langsung diperbaiki. Contoh
dari courage adalah komitmen untuk selalu melakukan design dan coding
untuk saat ini dan bukan untuk esok. Ketika ada kode yang terlalu rumit,
sulit dibaca dan dipahami, tidak sesuai dengan kemauan pelanggan, dll
maka seharusnya kode program seperti itu di refactor (kalau perlu dibangun
ulang).
Hal
ini
menjadikan
pengembang
merasa
nyaman
dengan refactoring program ketika diperlukan. Ini berarti meninjau sistem
yang ada dan memodifikasi sehingga perubahan masa depan dapat
dilaksanakan dengan lebih mudah. Contoh lain dari keberanian adalah
mengetahui kapan harus membuang kode menjauh. Keberanian untuk
menghapus kode sumbe yang is obsolete, tidak peduli seberapa banyak
usaha yang digunakan untuk membuat kode sumber itu juga, keberanian
berarti ketekunan. Seorang programmer. Mungkin akan terjebak pada
masalah yang kompleks untuk satu hari, lalu memcahkan masalah dengan
cepat pada hari berikutnya, jika hanya mereka gigih.
Menghormati (Respect), Pentingnya respect terhadap anggota team
lainnya karena dengan siklus pendek dan integrasi continue, programmer
tidak boleh melakukan perubahan yang dapat merusak kompilasi dan
menyebabkan keberadaan unit uji gagal atau memperlambat kerja team.
Respects tiap individu akan selalu menghasilkan kualitas tinggi.
Penerapan
Extreame Programming bisa dilakukan di banyak
perusahaan atau organisasi. Sebuah organisasi misalnya seperti software
house atau pengembangan sebuah software atau perangkat lunak dapat
menerapkan
Extreme
Programming
karena
Extreme
Programming
mengedepankan Extreme Programming life cycle.
Extreme Programming sangat menghemat waktu untuk membangun
atau membuat sebuah sistem perangkat lunak. Dalam software house¸
penerapan Extreme Programming dapat dilakukan karena stuktur kerja dan
struktur organisasi yang menyerupai Extreme Programming. Pada organisasi
software house terdapat analis, desainer, programmer, dan tester. Oleh
karena
itu
Extreme
Programming
sangat
tepat
dan
cocok
di
implementasikan untuk software house.
Menurut
Presman
dalam
bukunya
yang
berjudul
Software
Engineering, edisi keenam, proses Extreme Programming memiliki kerangka
kerja yang terbagi menjadi empat konteks aktivitas utama. Empat konteks
tersebut adalah lanning, design, coding, dan testing. Keempat aktivitas
inilah yang akan menghasilkan sebuah perangkat lunak yang didasari
dengan konsep model Extreme Programming.
1
Planning, berfokus untuk mendapatkan gambaran fitur dan fungsi
dari perangkat lunak yang akan dibangun. Aktivitas planning dimulai
dengan membuat kumpulan gambaran atau cerita yang telah diberikan oleh
klien yang akan menjadi gambaran dasar dari perangkat lunak tersebut.
Setelah semua kebutuhan terpenuhi, tim XP akan menentukan alur dari
pengembangan aplikasi sebelum memulai pengembangan tugas. Namun
dokumentasi XP tersebut yang mengandalkan cerita user inilah yang
merupakan kelemahan bagi model ini. Terlepas dari semua hal tersebut,
Extreme Programming menjadi sebuah model
Tahap Design pada model proses Extreme Programming merupakan
2
panduan dalam membangun perangkat lunak yang didasari dari cerita klien
sebelumnya yang telah dikumpulkan pada tahap planning. Dalam XP,
proses design terjadi sebelum dan sesudah aktivitas coding berlangsung.
Artinya,
aktivitas
design terjadi secara terus-menerus selama proses
pengembangan aplikasi berlangsung.
3
Coding, Setelah menyelesaikan gambaran dasar perangkat lunak dan
menyelesaikan
design untuk
aplikasi
secara
keseluruhan,
XP
lebih
merekomendasikan tim untuk membuat modul unit tes terlebih dahulu yang
bertujuan untuk melakukan uji coba setiap cerita dan gambaran yang
diberikan oleh klien. Setelah berbagai unit tes selesai dibangun, tim barulah
melanjutkan aktivitasnya ke penulisan coding aplikasi. XP menerapkan
konsep Pair Programming dimana setiap tugas sebuah modul dikembangkan
oleh dua orang programmer. XP beranggapan, 2 orang akan lebih cepat dan
baik dalam menyelesaikan sebuah masalah. Selanjutnya, modul aplikasi
yang sudah selesai dibangun akan digabungkan dengan aplikasi utama.
4
Testing, Setelah semua modul selesai dan dikumpulkan ke dalam
sebuah sistem yang sempurna, maka tim XP akan melakukan pengujian
penerimaan atau acceptance test. Pada tahap ini, aplikasi akan langsung
diuji coba oleh user dan client agar mendapat tanggapan langsung
mengenai
penerapan
gambaran
dan
cerita
yang
telah
dilakukan
sebelumnya.
Dengan
Extreme
Programming
hubungan
antara
pengembang
perangkat lunak atau developer dengan client akan terjalin interaksi yang
baik. Komunikasi yang selalu besifat oral tanpa dokumentasi formal yang
mengandalkan cerita user inilah yang menjadi salah satu perbedaan
Extreme Programming dengan model pengembangan yang lain. Namun
dokumentasi
tersebut
yang
mengandalkan
cerita
user
inilah
yang
merupakan kelemahan bagi model ini. Terlepas dari semua hal tersebut,
Extreme Programming menjadi sebuah model pengembangan perangkat
lunak yang semi formal karena semua dilakukan dengan practice yang
sederhana. Semua ini karena XP mengacu pada proses pengembangan agile
mo=ethods yang memiliki prinsipprinsip kesederhanaan.
Extreme Programming mempermudah jembatan komunikasi antara
pihak user atau client dan pihak pengembang. Pihak user dapat langsung
memonitor proses pengembangan dengan onsite customer tanpa kekakuan,
dan pihak pengembang dapat lebih sering berkomunikasi langsung dengan
representasi dari pihak bisnis. selain itu Extreme Programming ini membuat
seorang developer tidak bekerja secara berlebihan. Sehingga Extreme
Progamming ini mempermudah pengembangan perangkat lunak dengan
lebih sederhana.
Sumber:
Mohammadi, S., B. Nikkahan, S. Sohrabi.
2009. Challenges of user
Involvement in Extreme Programming projects. International Journal of
Software Engineering and Its Applications. 3(1): 20.
R. Pressman, “Software Engineering: A Practitioner’s Approach”, 6 th edition,
McGraw-Hill, 2005.
Sutabri, Tata. (2012). Analisis Sistem Informasi. Yogyakarta : Andi Offset.