scrum Berawal dari rasa pingin tau tentang Agile yang merupakan salah satu Metodologi yang biasanya di gunakan dalam pengembangan perangkat lunak akhirnya menuntun saya untuk (mencoba) memahaminya melalui Scrum Framework. Hasil catatan-catatan saya terkait Scrum yang saya dapatkan dari berbagai sumber akan saya coba Share disini. Semoga Bermanfaat.

SCRUM adalah salah satu metode rekayasa perangkat lunak dengan menggunakan prinsip-prinsip pendekatan AGILE, yang bertumpu pada kekuatan kolaborasi tim, incremental product dan proses iterasi untuk mewujudkan hasil akhir.

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.

scrum2Komponen utama di dalam SCRUM Framework adalah :

  • The Tree Roles: Scrum Master, Scrum Product Owner & Scrum Development Team
  • Backlog yang di prioritaskan yang berisi kebutuhan customer (end Users)
  • Sprints
  • Scrum Events: Sprint Planning Meeting (WHAT-Meeting, HOW-Meeting), Daily Scrum Meeting, Sprint Review Meeting, Sprint Retrospective Meeting

Komponen utama tersebut selanjutnya akan di jelaskan dibawah :

  1.  The Tree roles juga di namakan sebagai Scrum Teams yang idealnya hanya berukuran 7 +/- 2 Orang saja.
  • The Scrum Product Owner: Mewakili suara customer dan bertanggung jawab untuk memaksimal kan nilai produk dan hasil kerja Tim Pengembang. Dan yang menciptakan “APA” yang harus dimiliki oleh aplikasi. PO bertugas untuk menuliskan semua item yang harus dimiliki oleh aplikasi. Item-item tersebut memiliki “story” dan juga bertanggung jawab untuk memberikan prioritas kepada setiap story, sehingga seluruh anggota tim SCRUM mengetahui apa yang sebaiknya harus dibuat pada setiap iterasi.

– Product owner menentukan fitur produk dan tanggal release (Release Management).

– Berhak merubah prioritas dan merubah fitur di stiap sprint

– Berhak menyetujui ataupun menolak hasil kerja team

  • The Scrum Master: Menjadi Pembicara, negosiator dan fasilitatior adalah tugas utama dari Scrum Master seperti layaknya seorang project manager.

– Scrum Master juga harus memastikan bahwa tim Scrum mematuhi Scrum teori, praktek dan aturan.

– Scrum Master juga merupakan bagian dari scrum team, melayani dan bukan memerintah (servant leadership). Sehinggal idealnya Scrum Team yang memilih/menentukan siapa yang akan menjadi Scrum Master (Walaupun pada realitanya pihak Management yang memilih/menunjuk langsung siapa yang akan menjadi Scrum Master

– Scrum master ini yang akan menjaga Scrum team dari gangguan luar, hambatan, bertanggungjawab atas kemajuan pengembangan produk memastikan komunikasi antara Scrum Team dgn Product Owner serta memfasilitasi berbagai macam Scrum Event

  • The Scrum Development Team: Sekumpulan individu yang bekerja secara bersama untuk menyelesaikan product increment yang telah disepakati.

– Mengatur diri mereka sendiri untuk menentukan cara terbaik dalam menyelesaikan pekerjaannya. 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.

– Tidak mengenal adanya sub-tim yang dikhususkan untuk bidang tertentu seperti pengujian atau analisa bisnis.

– Mendemokan kemajuan (increment) produk di setiap akhir sprint kepada Product Owner dan pihak lain yang berkepentingan atas proyek

– Tim berfungsi antar lintas. Semua anggota tim bekerja sama untuk menghasilkan produk akhir.

Komponen Pada SCRUM

  • Product Backlog (PB): Sederhananya dapat di definisikan sebagai sebuah daftar semua hal yang perlu dilakukan dalam proyek. Pemilik dari Product Backlog adalah Scrum Product Owner. PO bertanggung-jawab terhadap Product Backlog, termasuk isinya, ketersediaannya, dan urutannya.

Product Backlog Item (PBI) 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. Item Product Backlog dapat diperbarui kapanpun juga oleh Product Owner–atau siapapun atas arahan Product Owner–kapanpun ia mau.

PB terdiri dari kumpulan PB item (PBI). Cukup satu PB untuk satu software (Project). Karena PB adalah representasi dari software itu sendiri. Kondisi software saat ini bisa dilihat dari PBI yang ditandai selesai. Proyeksi software ke depannya bisa dilihat dari PBI yang belum selesai (wishlist).

User Story contains mengandung : Peran (Story), Fitur (acceptance criteria) & Nilai (Effort/Priority)

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.

Ada empat elemen wajib dalam setiap PBI; description, order, estimation, & business value. Elemen lain bisa saja ditambah jika dirasa perlu.

  • Sprint: merupakan jantung dari SCRUM, yaitu unit pekerjaan yang diperlukan untuk memenuhi kebutuhan yang ditetapkan dalam backlog sesuai dengan waktu yang ditetapkan dalam time-box (normalnya 2-4 minggu) di mana sebuah Inkremen yang “Selesai”, berfungsi, berpotensi untuk dirilis dikembangkan. Sehingga setiap Sprint juga bisa di katakan sebuah Project. Selama proses ini berlangsung backlog tidak ada penambahan. Sprint yang baru, langsung dimulai setelah Sprint yang sebelumnya berakhir.

Sprint dapat dibatalkan sebelum batasan waktu Sprint selesai. Hanya Product Owner yang dapat

membatalkan Sprint, walaupun keputusan yang dia buat mungkin saja dipengaruhi oleh para stakeholder, Scrum Development Team, ataupun Scrum Master.

Pada saat Sprint:

  • Tidak boleh ada perubahan yang dapat membahayakan tercapainya Sprint Goal
  • Kualitas dari Sprint Goal tidak boleh menurun
  • Scope dapat diklarifikasikan dan dinegosiasikan ulang diantara Product Owner dan Tim Pengembang seiring dengan bertambahnya pengetahuan.

scrum3scrum4Aktifitas Sprint sendiri terdiri dari Sprint Planning, Daily Scrum, pengembangan, Sprint Review dan Sprint Retrospective.

  • Scrum Events

Sprint Planning : Dilakukan di awal Sprint, tim berdiskusi dengan Product Owner mengenai Product Backlog item yang dimasukkan ke dalam Sprint. Planning dilakukan berdasarkan fitur bukan aktifitas, Tim membahas ukuran(size) dari Product Backlog dengan story points yang akan menghasilkan Sprint Backlog.

Di akhir Sprint Planing, Tim Pengembang sudah harus dapat menjelaskan kepada Product Owner ataupun Scrum Master, bagaimana mereka berencana untuk bekerja sebagai tim yang mengatur dirinya sendiri untuk menyelesaikan Sprint Goal, dan membuat Inkremen yang telah diantisipasi.

Sprint Planning harus dapat menjawab pertanyaan-pertanyaan berikut:

  • Apa goal dari Sprint?

  • Apa yang dapat dihantarkan di dalam Inkremen sebagai hasil dari Sprint yang sedang berjalan?

  • Apa yang perlu dilakukan untuk dapat menghantarkan Inkremen tersebut?

Sprint Goal adalah sekumpulan tujuan yang akan dicapai dalam satu Sprint sepanjang pengimplementasian Product Backlog.

Kita sudah mengetahui tentang Sprint Backlog & Sprint Goal. Kedua hal tersebut menjadi panduan untuk pengembangan di iterasi ini. Jika pengembangan berjalan seperti yang diharapkan maka diakhir iterasi akan ada potongan produk yang “done” yang disebut Increment.

“Done” yang dimaksud adalah memenuhi kriteria “Definition of Done” (DoD). DoD umumnya berupa daftar checklist yang bisa berbeda-beda di tiap organisasi. Jika tidak ada arahan dari organisasi, DoD ditentukan sendiri oleh para developer. Di DoD terlihat kualitas dari software yang dihasilkan dan siap digunakan.

scrum5Daily Scrum Meeting / Daily Stand-up Meeting: Merupakan meeting dengan durasi pendek yang di lakukan secara harian, idealnya sebelum pekerjaan dimulai. Setiap anggota tim yang bekerja pada penyelesaian sprint harus turut berpartisipasi. Scrum Master memastikan bahwa hanya anggota Tim Pengembang yang berpartisipasi pada saat Daily Scrum. Dalam pertemuan ini, setiap anggota tim harus secara singkat memberikan jawaban dari tiga pertanyaan berikut :

  • Kemajuan apa yang telah ia capai sejak daily scrum meeting terakhir…?
  • Apa yang ingin ia capai dalam Scrum meeting berikutnya…?
  • Hambatan apa yang ia dapatkan dalam menyelesaikan tugasnya…?

scrum6Meeting ini didesain untuk dilakukan secara singkat, jika ada sesuatu yang detail, anggota tim bisa berdiskusi lebih detail diluar meeting ini dengan orang-orang terkait. Sehingga pertemuan ini adalah kunci dari proses peninjauan dan pengadaptasian.

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: Diadakan di akhir Sprint untuk meninjau Inkremen dan merubah Product Backlog bila diperlukan. Pada saat Sprint Review, Tim Scrum dan stakeholder berkolaborasi untuk membahas apa yang telah dikerjakan dalam Sprint yang baru usai.

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.

Sprint Retrospective: 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.

Dengan adanya meeting ini, diharapkan hubungan antar tim akan semakin baik, kolaborasi menjadi lebih efektif dan optimal serta pengetahuan akan product akan semakin bertambah sehingga memudahkan sprint-sprint berikutnya.

scrum7