- Metodologi
Extreme Programming
Pengertian
Extreme
Programming yang selanjutnya disingkat dengan XP merupakan salah satu dari
sekian banyaknya metodologi dalam rekayasa perangkat lunak dan juga merupakan
bagian dari metodologi pengembangan perangkat lunak agile. Secara
umum Extreme Programming (XP) dapat dijabarkan sebagai sebuah
pendekatan pengembangan perangkat lunak yang mencoba meningkatkan efisiensi dan
fleksibilitas dari sebuah proyek pengembangan perangkat lunak dengan
mengkombinasikan berbagai ide simpel/sederhana tanpa mengurangi kualitas
software yang akan dibagun. XP dikembangkan oleh Beck, Cunningham, dan
Jeffries
dan ini merupakan lightweight disciplinepengembangan
perangkat lunak berdasarkan empat core value.
Kelebihan
dan Kekurangan XP
Kelebihan
:
- Meningkatkan kepuasan kepada
klien
- Pembangunan system dibuat lebih
cepat
- Menjalin komunikasi yang baik
dengan client.
- Meningkatkan komunikasi dan
sifat saling menghargai antar developer.
Kekurangan
:
- User story kemungkinan besar
tidak lengkap sehingga Developer harus selalu siap dengan
perubahan karena perubahan akan selalu diterima.
- Tidak bisa membuat kode yang
detail di awal (prinsip simplicity dan juga anjuran untuk
melakukan apa yang diperlukan hari itu juga).
- XP tidak memiliki
dokumentasi formal yang dibuat selama pengembangan. Satu-satunya
dokumentasi adalah dokumentasi awal yang dilakukan oleh user.
- Adaptive Software Development (ASD)
Adaptive
Software Development merupakan pengembangan perangkat lunak proses yang tumbuh
dari kerja pengembangan aplikasi cepat oleh Jim Highsmith dan Sam Bayer. ASD
mewujudkan prinsip bahwa adaptasi yang berkesinambungan dari proses kerja di
tangan adalah urusan keadaan normal. Selama iterasi pengetahuan dikumpulkan
dengan membuat kesalahan-kesalahan kecil yang didasarkan pada asumsi yang salah
dan memperbaiki kesalahan-kesalahan, sehingga mengarah ke pengalaman yang lebih
besar dan akhirnya penguasaan dalam domain masalah.
Adaptive software
development (ASD) diajukan oleh Jim Highsmith sebagai teknik untuk membangun
software dan sistem yang kompleks. Filosofi yang mendasari adaptive software
development adalah kolaborasi manusia dan tim yang mengatur diri sendiri.
Sistem kerja adaptive software development yaitu collaboration dan
learning.
Collaboration adalah
orang-orang yang bermotivasi tinggi bekerja sama, saling melengkapi, rela
membantu, kerja keras, terampil di bidangnya, dan komunikasikan masalah untuk
menyelesikan masalah secara efektif. Learning adalah tim developer sering
merasa sudah tahu semua hal tentang proyek, padahal tidak selamanya begitu. Karena
itu proses ini membuat mereka belajar lebih tentang proyek melalui tiga cara:
Kelebihan Adaptive software
development (ASD) :
1. Fokus
grup, klien dan pengguna memberi masukan terhadap perangkat lunak.
2. Formal
Technique Reviews, tim ASD lengkap melakukan review.
3. Postmortems,
tim ASD melakukan instrospeksi pada kinerja dan proses.
- Dynamic Systems Development Method (DSDM)
DSDM
memusatkan pada proyek sistem informasi yang dicirikan oleh jadwal dan anggaran
yang ketat. DSDM berupaya mengatasi penyebab-penyebab kegagalan proyek, di
antaranya melebihi anggaran, terlambat dari jadwal, kurangnya keterlibatan
pengguna, dan lemahnya komitmen dari para pimpinan. Kerangka kerja DSDM
menyediakan dasar ideal bagi proses pengembangan dan penerapan sistem
informasi, meliputi orang (misal organisasi, staf, keahlian), teknologi
pendukung (misal teknologi informasi, otomatisasi kantor, komunikasi) dan
proses yang menyatukan keduanya (dalam rangkaian strategi bisnis).
Pada Dynamic System
Development Method menyajikan kerangka kerja (framework) untuk membangun dan
memelihara sistem dalam waktu yang terbatas melalui penggunaan prototip yang
incremental dalam lingkungan yang terkondisikan. Metode ini bisa membuat
pengerjaan software lebih cepat 80%.
Terdapat 9 prinsip mendasar dari DSDM,
yang menjadikan kekuatan dari DSDM, yaitu:
- Keterlibatan
pengguna adalah kunci utama dalam menjalankan proyek secara efisien dan
efektif. Pengguna dan pengembang saling bekerja sama sehingga keputusan
dapat diambil secara tepat dan akurat.
- Tim
pengembang proyek diberi wewenang untuk membuat keputusan yang penting
untuk kemajuan proyek, tanpa menunggu persetujuan dari tingkat di atasnya.
- Memusatkan
pada seringnya produk dihasilkan, dengan anggapan menghasilkan sesuatu
‘cukup baik’ lebih awal adalah lebih baik daripada menghasilkan
keseluruhan ‘sempurna’ pada akhirnya. Dengan seringnya penyampaian produk
pada tahap-tahap awal proyek, produk tersebut dapat diujicoba dan ditinjau
di mana hasilnya merupakan pertimbangan untuk maju ke putaran atau tahap berikutnya.
- Kesesuaian
dari tujuan bisnis merupakan kriteria utama dalam penerimaan hasil.
Menghasilkan suatu sistem yang memenuhi semua kemungkinan dari kebutuhan
bisnis adalah kurang penting dibanding memusatkan pada fungsi-fungsi yang
kritis.
- Pengembangan
secara berulang dan bertambah adalah penting, dilandasi masukan dari
pengguna untuk mencapai solusi bisnis yang efektif.
- Seluruh
perubahan yang terjadi dalam pengembangan dapat dikembalikan (reversible).
- Setiap
persyaratan dan kebutuhan harus sudah ditentukan sebelum proyek dimulai.
- Pengujian
dilakukan pada keseluruhan siklus hidup proyek. Dalam hal ini ujicoba
bukan kegiatan terpisah dalam pengembangan. Tinjauan dari pengembang dan
pengguna adalah penting untuk memastikan proyek berjalan baik dari sisi bisnis
maupun teknis.
- Kerjasama
yang efektif dan efisien dari setiap pihak yang berkepentingan adalah
penting.
- SCRUM
Diperkenalkan oleh Jeff Sutherland tahun awal
tahun 1990an. Pengembangan berikutnya dilakukan oleh Schwaber dan Beedle. Scrum
memiliki prinsip:
- ukuran tim yang
kecil melancarkan komunikasi, mengurangi biaya, dan
memberdayakan satu sama lain
- proses dapat
beradaptasi terhadap perubahan teknis dan bisnis
- proses
menghasilkan beberapa software increment
- pembangunan dan
orang yang membangun dibagi dalam tim yang kecil
- dokumentasi dan
pengujian terus menerus dilakukan setelah software dibangun
- proses scrum
mampu menyatakan bahwa produk selesai kapanpun diperlukan.
Scrum memiliki beberapa aktifitas seperti Backlog,
Sprints, Scrum Meetings dan Demo.
Aktifitas Backlog adalah daftar kebutuhan yang jadi prioritas klien, daftar
dapat bertambah. Aktifitas Sprints yaitu unit pekerjaan yang diperlukan untuk
memenuhi kebutuhan yang ditetapkan dalam backlog sesuai dengan waktu yang ditetapkan
dalam time-box (biasanya 30hari). Selama proses ini berlangsung backlog tidak
ada penambahan. Aktifitas Scrum Meeting
yaitu pertemuan 15 menit perhari untuk evaluasi apa yang dikerjakan, hambatan
yang ada, dan target penyelesaian untuk bahan meeting selanjutnya. Aktifitas Demo adalah penyerahan software
increment ke klien didemonstrasikan dan dievaluasi oleh klien.
5. Agile Development Methods
Agile Development Methods adalah sekelompok metodologi pengembangan
perangkat lunak yang didasarkan pada prinsip-prinsip yang sama atau
pengembangan sistem jangka pendek yang memerlukan adaptasi cepat dari
pengembang terhadap perubahan dalam bentuk apapun. Agile development methods merupakan salah satu dari Metodologi pengembangan perangkat
lunak yang digunakan dalam pengembangan perangkat lunak. Agile
memiliki pengertian bersifat cepat, ringan, bebas bergerak, dan waspada.[1]
Sehingga saat membuat perangkat lunak dengan menggunakan agile development methods diperlukan
inovasi dan responsibiliti yang baik antara tim pengembang dan klien agar
kualitas dari perangkat lunak yang dihasilkan bagus dan kelincahan dari tim
seimbang.
Tujuan agile
Secara garis besar tujuan
dirumuskannya agile development methods, yaitu :
- High-value
& working App system, diharapkan dengan
memakai agile development methods dapat dihasilkan perangkat lunak
yang mempunyai nilai jual yang tinggi, biaya pembuatan bisa di tekan dan
perangkat lunak bisa berjalan dengan baik.
- Iterative,
incremental, evolutionary, agile adalah
metode pengembangan perangkat lunak yang iteratif, selalu mengalami
perubahan, dan evolusioner. Tim harus bekerja dalam waktu yang
singkat(biasanya 1-3 minggu) dan juga selalu menambah fungsionalitas dari
perangkat lunak sesuai dengan kebutuhan klien. Agile dapat
dianalogikan ketika seseorang ingin pergi ke suatu kota dan dia tidak tahu
jalannya. Lalu bagaimana dia bisa sampai tujuan? Dengan sering bertanya
kepada orang yang dia temui dijalan hingga dia sampai di tempat tujuan.
- Cost
control & value-driven development,
salah satu tujuan dari agile yaitu pengembangan perangkat lunak
disesuaikan dengan kebutuhan pengguna, tim bisa dengan cepat merespon
kebutuhan yang diinginkan pengguna sehingga waktu dan biaya pembuatan
perangkat lunak bisa dikontrol.
- High-quality
production, walaupun biaya pembuatan perangkat
lunak bisa ditekan dan proses pembuatan bisa dipercepat , tetapi kualitas
dari perangkat lunak yang dibuat harus tetap dijaga. Dengan melakukan tes
setiap fungsionalitas perangkat lunak setelah selesei dibuat berarti agile
juga mengakomodir kebutuhan ini.
- Flexible
& risk management, jika kita menggunakan
metode pembuatan yang biasanya dipakai, jika ingin mengubah fungsionalitas
dari wireframe yang telah dibuat di butuhkan proses yang rumit.
Mulai dari pertemuan dengan sistem analis untuk mengubah sistem perangkat
lunak, perubahan rencana rilis produk hingga perubahan biaya produksi.
Pertemuan dengan klien untuk melakukan tes perangkat lunak juga sering
dilakukan sehingga fungsionalitas perangkat lunak mudah diubah dan
akhirnya kegagalan perangkat lunakpun bisa diminimalisir.
- Collaboration,
dengan menggunakan agile, tim pengembang diharuskan sering bertemu
untuk membahas perkembangan proyek dan feedback dari klien yang nantinya
akan ditambahkan dalam perangkat lunak, sehingga tim bisa berkolaborasi
dengan maksimal.
- Self-organizing,
self-managing teams, rekrut orang terbaik,
beri dan dukung kebutuhan mereka lalu biarkan mereka bekerja. Itulah
perbedaan agile dan SDM lainnya. Dengan agile, developer
dapat memanajemen dirinya sendiri, sedangkan manajer tim hanya bertugas
mengkolaborasikan developer perangkat lunak dengan klien. Sehingga
terciptalah tim yang solid.
Kelebihan dari Agile Modeling :
- Interaksi
dan personel lebih penting dari pada proses dan
alat, di dalam agile interaksi antar anggota tim sangatlah penting,
karena tanpa adanya interaksi yang baik maka proses pembuatan perangkat
lunak tidak akan berjalan sesuai rencana.
- Perangkat
lunak yang berfungsi lebih penting daripada
dokumentasi yang lengkap, saat melakukan proses demonstrasi kepada klien,
perangkat lunak yang berfungsi dengan baik akan lebih berguna daripada
dokumentasi yang lengkap.
- Kolaborasi
dengan klien lebih penting dari pada negosiasi
kontrak, salah satu ciri dari agile adalah klien menjadi bagian dari tim
pengembangan perangkat lunak. Kolaborasi yang baik dengan klien saat
proses pembuatan perangkat lunak sangatlah penting ketika menggunakan
agile. Karena fungsi-fungsi dari perangkat lunak yang dikembangkan harus
terus menerus dibicarakan dan diimprovisasi disesuaikan dengan keinginan
klien.
- Respon
terhadap perubahan lebih penting daripada mengikuti
rencana, agile development methods berfokus terhadap kecepatan
respon tim ketika klien menginginkan perubahan saat proses pembuatan
perangkat lunak. Dua belas prinsip tersebut menjadi suatu dasar bagi tim
agar sukses menerapkan agile development methods. Dengan
prinsip-prinsip tersebut agile berusaha untuk menyiasati tiga
masalah yang biasanya dihadapi saat proses pembuatan perangkat lunak,
yaitu:
Kekurangan dari Agile Modeling:
- Kebutuhan
perangkat lunak 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.
- Agile
tidak akan berjalan dengan baik jika komitmen tim kurang.
- Tidak
cocok dalam skala tim yang besar (>20 orang).
- Perkiraan
waktu release dan harga perangkat lunak sulit ditentukan.