Metode SCRUM pada Pendekatan Rekayasa Perangkat Lunak AGILE

Scrum sendiri bukan satu-satunya metode yang menggunakan pendekatan
AGILE. Mungkin kita juga pernah mendengar metode Extreme Programming
(XP) yang juga menggunakan pendekatan AGILE dalam rekayasa perangkat
lunak. Masing-masing metode memiliki fokus atau penekanan yang berbeda
yang tentu saja dapat dikombinasika untuk menghasilkan proses yang
optimal.
Jika metode XP lebih berfokus kepada framework yang memberikan kerangka
mengenai praktek-praktek teknis dalam membangun program menggunakan
pendekatan AGILE, seperti para programmer yang diharapkan untuk bekerja
pada station yang sama sehingga dapat menggunakan library yang sama dan
lain sebagainya.
Sedangkan metode SCRUM lebih berfokus kepada project management yang
memberikan kerangka kerja bagaimana mengelola sebuah proyek yang
berbasis AGILE. Metode ini memberikan pola "ceromony" apa saja yang
harua dilaksanakan, "role" apa saja yang ada dalam SCRUM termasuk tugas
yang harus diperankannya dan masih banyak hal lainnya. Tulisan ini akan
mencoba untuk mengupas metode SCRUM ini.
Di dalam setiap iterasi scrum, semua anggota tim saling berkolaborasi
untuk menyelesaikan setiap incremental product yang telah direncanakan
dan disepakati bersama. Dalam proses, setiap iterasi juga akan melakukan
kegiatan analisis, merencanakan desain dan selanjutnya program siap
untuk dikembangkan. Setelah program selesai, program juga akan diuji
melalui proses testing yang telah direncanakan oleh tim, sehingga
akhirnya program tersebut menjadi sebuah incremental product yang siap
untuk di-deploy dan di-integrasi-kan dengan semua program yang telah
dibuat sebelumnya.
Semua kegiatan diatas akan dilakukan oleh tim dengan konsep
self-organizing, artinya semua anggota tim akan bekerja sama untuk
mengelola kerja mereka sesuai dengan kesepakatan mereka. Mereka
bertanggung jawab untuk menghasilkan incremental product dengan membagi
tugas secara bersama dan berdiskusi tanpa ada hirarki. Seorang yang
berpengalaman testing, sangat dimungkinkan untuk berkonstribusi ditahap
analisa dan desain. Atau seorang programmer akan membantu aktifitas
testing. Secara sederhana, anggota tim akan merencanakan tugas secara
bersama dan melakukannya secara bersama sebagai sebuah kolaborasi tim.
ROLE (Fungsi) dalam Scrum
Scrum akan berjalan pada tim dengan jumlah orang yang tidak terlalu
banyak, kira-kira berjumlah lebih kurang 7 orang. Setiap orang dalam tim
scrum akan memiliki role atau fungsi tertentu. Dan hanya dikenal 3 role
atau fungsi dalam menjalankan proyek berbasis scrum :
Product Owner
Product owner adalah orang yang bertanggung jawab terdapat definisi
produk yang akan dibuat. Dengan kata lain, product owner adalah tim yang
menciptakan "APA" yang harus dimiliki oleh aplikasi. Mereka bertugas
untuk menuliskan semua item yang harus dimiliki oleh aplikasi. Item-item
tersebut memiliki "story" yang akan disampaikan oleh product owner.
Product owner, juga bertanggung jawab untuk memberikan prioritas kepada
setiap story, sehingga seluruh anggota tim SCRUM mengetahui apa yang
sebaiknya harus dibuat pada setiap iterasi.
Sebagai representatif dari pengguna, product owner akan menjadi kunci
apakah hasil dari sebuah iterasi dapat di-deploy atau diimplementasikan.
Scrum Master
Ini adalah seseorang yang akan berperan sebagai fasilitator dalam setiap
proses atau ceremony yang ada dalam scrum seperti layaknya seorang
project manager.
Scrum Development Team
Tim inilah yang akan setiap iterasi menghasilkan suatu incremental
product yang telah disepakati bersama. Mereka bertanggung jawab untuk
membuat program dan menguji program tersebut(testing) sehingga hasil
dari setiap iterasi dapat digunakan dan diimplementasikan.
Tim ini harus mengatur dirinya sendiri (self-organized), dari proses
analisa, design, coding dan akhirnya diujikan. Mereka harus
berkolaborasi bersama sehingga keluaran dari setiap iterasi adalah
sebuah program yang benar-benar teruji dan sesuai dengan harapan product
owner.
Proses Membangun Incremental Product
Product Backlog Item
Adalah list dari 'user story' untuk menggambarkan fungsi atau feature
apa saja yang harus tersedia di dalam aplikasi. Product Owner akan
membuat user story untuk selanjutnya dibawa dalam sebuah diskusi bersama
untuk melihat lebih detail terkait dengan skala prioritas dan
acceptance criteria.
Beberapa contoh user story pada Product Backlog Item
- Jika user mencoba 3 kali password secara salah, maka user akan di lock.
- Menghasilkan report nilai semester mahasiswa.
- Report alokasi ruangan kelas dan mampu memberikan alert sehingga jadwal kuliah tidak konflik dengan jumlah ruangan yang ada.
Seluruh Story Form akan didiskusikan untuk selanjutkan diurutkan sebagai
Product Backlog Item, sekaligus sebagai urutan incremental product pada
setiap iterasi atau sprint. Di dalam scrum, kita akan lebih sering
menggunakan istilah sprint dibandingkan iterasi.
Sprint Backlog
Adalah sebuah hasil diskusi bersama berdasarkan skala prioritas untuk
melakukan mapping setiap Product Backlog Item(PBI) ke jadwal sprint.
Dengan adanya Sprint Backlog, maka semua member dalam scrum akan
mengetahui apa target pada setiap sprint atau setiap iterasi. Sangat
dimungkinkan sebuah PBI akan dipecah menjadi 2 bagian atau lebih menjadi
item yang lebih kecil sehingga dapat dikerjanan dalam sebuah sprint
atau iterasi. Pemecahan ini tetap menjalankan prinsip bahwa item
tersebut adalah independent dan testable.
Sprint Tasks
Team akan melakukan identifikasi pada setiap sprint backlog dan
berdiskusi bersama tugas-tugas apa saja yang harus dilakukan pada setiap
sprint atau iterasi. Misal, telah ditetapkan bahwa kita akan membuat
report nilai semester siswa pada sebuah sprint/iterasi tertentu.
Selanjutnya kita mulai melakukan identifikasi tugas-tugas yang harus
dikerjakan agar kita mampu menyesaikan iterasi tersebut. Contoh
tugas-tugas yang harus kita lakukan dalm iterasi tersebut adalah membuat
form report, menganalisa database, mendesain bagaimana layar user untuk
keperluan input, melakukan testing dan lain-lain.
Aktifitas Scrum
Kita juga dapat menyebut aktifitas scrum ini sebagai Scrum Ceremony.
Sebagaimana di awal tulisan ini, scrum berfokus kepada manajemen proyek
yang didalamnya terdapat framework tentang bagaimana mengelola dan
menjalankan proyek rekayasa perangkat lunak menggunakan prinsip agile.
Gambar di atas, menunjukan bagaimana proses rekayasa perangkat lunak menggunakan metode scrum akan berlangsung. Dimulai dengan kegiatan untuk melakukanidentifikasi backlog (atau user story) dan selanjutnya kegiatan akan bergerak dari satu iterasi ke iterasi selanjutnya guna membangun incremental product. Di dalam setiap iterasi, terdapat juga kegiatan harian yang akan dilakukan oleh semua anggota tim scrum.
Backlog Refinement Meeting
Semua proyek perangkat lunak selalu memiliki item yang akan digunakan
untuk membantu pengguna aplikasi dalam menjalankan kesehariannya.
Meeting ini digunakan bersama oleh seluruh tim scrum untuk mengetahui
feature atau fungsi apa saja yang akan terdapat pada aplikasi yang
sedang dikembangkan. Hasil dari meeting adalah sebuah Product Backlog
Item.
Meeting ini harus dilakukan sebelum tim mulai bekerja pada tahapan
iterasi atau sprint. Setiap list akan direview apakah scope-nya masih
terlalu luas atau perlu di-split atau dibagi-bagi lagi menjadi potongan
yang lebih kecil, sehingga dapat dengan mudah untuk di-mapping ke dalam
suatu iterasi/sprint.
Tim juga akan berdiskusi tingkat kesulitan dan prioritas dari
masing-masing item, sehingga tim bisa membuat schedule yang tepat untuk
melakukan mapping mengenai item yang akan dikerjakan lebih dahulu
sehingga tim memiliki perencanaan item apa saja yang akan dikerjakan
untuk setiap iterasi.
Dan tentu saja, pada tahap ini tim mencoba untuk menyamakan persepsi
mengenai acceptance criteria yaitu kriteria apa saja untuk mengatakan
bahwa iterasi dan incremental product yang dihasilkan adalah sesuai
harapan.
Sprint Planning Meeting
Meeting ini dijalankan pada hari pertama pada setiap sebuah iterasi akan
dimulai. Dengan menggunakan Product Backlog Item yang telah ditetapkan
pada saat Backlog Refinement Meeting, maka tim sudah mengetahui feature
apa yang akan mereka selesaikan pada iterasi. Dan tim
mulai melakukan identifikasi tugas atau task apa saja yang harus
dikerjakan guna menyelesaikan feature yang telah ditetapkan pada setiap
iterasi atau sprint. Selanjutnya tim mulai membagi tugas atau task
tersebut kepada seluruh anggota scrum.
Daily Scrum
Kini tiba saatnya sebuah iterasi dimulai. Semua anggota tim scrum sudah
bersepakat feature apa yang akan dihasilkan pada iterasi ini. Mereka
juga sudah memiliki rencana kolaborasi dan setiap anggota tim telah
sepakat dengan tugasnya masing-masing. Setiap hari, semua anggota tim
akan melakukan meeting lebih kurang 20 menit dan masing-masing anggota
harus melaporkan 3 point. Point-point tersebut adalah apa yang telah
dilakukan kemarin, apa yang akan dilakukan hari ini dan kendala yang
dihadapi untuk menyelesaikan tugas. Meeting ini didesain untuk dilakukan
secara singkat, jika ada sesuatu yang detail, anggota tim bisa
berdiskusi lebih detail diluar meeting ini dengan orang-orang terkait.
Setiap harinya, sprint backlog akan selalu mereflekasikan status dari
semua tugas yang telah ditetapkan pada setiap iterasi. Semua tugas yang
telah diidentifikasi, akan dimasukkan ke dalam kolom "Not Started".
Selanjutnya tugas-tugas tersebut akan mengalami progress dan
didiskusikan dalam daily meeting.
Sprint Review Meeting
Kini tiba saatnya akhir dari sebuah sprint, seluruh tim akan berdiskusi
lagi untuk melakukan final review untuk menyatakan apakah mereka telah
berhasil memenuhi ekspektasi yang ditetapkan oleh product owner. Product
Owner akan menjadi orang kunci yang akan menentukan apakah incremental
product yang telah dibuat dalam sprint tersebut dapat diterima atau
dinyatakan gagal sehingga perlu adanya diskusi lanjutan untuk menentukan
langkah selajutnya.
Meeting ini tidak lagi berdiskusi mengenai status, incremental product
yang telah dikembangkan selama satu periode sprint akan didemokan dan
diujikan sebagai final review untuk menyatakan bahwa sebuah user-story
atau sebuah product backlog item telah benar-benar selesai sesuai dengan
target sprint yang telah disepakati.
Jika sebuah user story telah dinyatakan gagal di dalam sebuah iterasi,
tim bisa saja memutuskan untuk menunda terlebih dahulu user-story ini,
untuk selanjutnya akan ditinjau kembali pada iterasi mendatang. Atau tim
juga bisa menentukan, jika user-story ini akan dilakukan kembali pada
iterasi selanjutnya sehingga jadwal user-story yang telah direncanakan
sebelumnya akan ditunda terlebih dahulu, untuk menyelesaikan user-story
yang masih belum yang belum berhasil.
Sebagaimana
karakteristik dari metode scrum, tim scrum adalah self-organization,
sehingga tim yang akan menentukan langkah yang paling tepat bagi mereka.
Sprint Restrospective Meeting
Ini adalah meeting untuk melakukan instropeksi dengan melihat kembali
perjalanan selama sprint berlangsung. Diskusi lebih berfokus kepada
upaya untuk membangun sebuah timyang efektif dan optimal guna
menyelesaikan sprint-sprint berikutnya. Mungkin perlu perbaikan dalam
pola komunikasi antar tim, atau terdapat sebuah proses yang mungkin bisa
dihilangkan karena justru menyulitkan tim tetapi efek terharap hasil
akhir tidak sesuai dengan effort yang dikeluarkan atau banyak hal
lainnya.
Tidak ada komentar:
Posting Komentar